public enum AnnFormat
typedef NS_ENUM(NSInteger, LTAnnFormat){
LTAnnFormatUnknown,
LTAnnFormatAnnotations,
};
public enum AnnFormat
public:
enum class AnnFormat sealed
class AnnFormat(Enum):
Unknown = 0
Annotations = 1
PDFAnnotations = 2
TifTagAnnotations = 3
WangTagAnnotations = 4
LegacyAnnotations = 5
Value | Member | Description |
---|---|---|
0 | Unknown | The format is unknown, not annotations. |
1 | Annotations | Format is XML. This is a text-based format for storing LEAD annotations in the XML (Extensible Markup Language) format. |
2 | PDFAnnotations | Annotations within a PDF file. |
3 | TifTagAnnotations | Annotations tags within a TIFF file. |
4 | WangTagAnnotations | Annotations Wang tags within a TIFF file. |
5 | LegacyAnnotations | Legacy LEADTOOLS annotations. |
Use this enumeration with the AnnCodecs.Save or AnnCodecs.SaveToString method to specify the format to be used when saving the annotation objects.
For more information, refer to Annotation Files.
using Leadtools.Annotations.Automation;
using Leadtools.Annotations.Engine;
using Leadtools.Annotations.Rendering;
public void AnnCodecs_AnnCodecs()
{
// Create a new annotation container, 8.5 by 11 inches
AnnContainer container = new AnnContainer();
// Size must be in annotation units (1/720 of an inch)
container.Size = LeadSizeD.Create(8.5 * 720, 11 * 720);
double inch = 720.0;
// Add a red line object, from 1in 1in to 2in 2in
AnnPolylineObject lineObj = new AnnPolylineObject();
lineObj.Points.Add(LeadPointD.Create(1 * inch, 1 * inch));
lineObj.Points.Add(LeadPointD.Create(2 * inch, 2 * inch));
lineObj.Stroke = AnnStroke.Create(AnnSolidColorBrush.Create("Red"), LeadLengthD.Create(1));
container.Children.Add(lineObj);
// Add a blue on yellow rectangle from 3in 3in to 4in 4in
AnnRectangleObject rectObj = new AnnRectangleObject();
rectObj.Rect = LeadRectD.Create(3 * inch, 3 * inch, 1 * inch, 1 * inch);
rectObj.Stroke = AnnStroke.Create(AnnSolidColorBrush.Create("Blue"), LeadLengthD.Create(1));
rectObj.Fill = AnnSolidColorBrush.Create("Yellow");
container.Children.Add(rectObj);
// Show the container
ShowContainer("Before save", container);
// Create the codecs object to save and load annotations
AnnCodecs codecs = new AnnCodecs();
// Save the container
string destFileName = @"container.xml";
codecs.Save(destFileName, container, AnnFormat.Annotations, 1);
// delete the container
container = null;
// Show information about the data we just saved
AnnCodecsInfo info = codecs.GetInfo(destFileName);
string message;
if (info.Format == AnnFormat.Annotations)
{
message = "Version: ";
message += info.Version;
message += " No. of pages: ";
message += info.Pages.Length;
message += " page nos: ";
for (int i = 0; i < info.Pages.Length; i++)
{
message += info.Pages[i] + " ";
}
}
else
{
message = "Invalid annotations data";
}
Debug.WriteLine(message);
// Show information about the XML data we just saved
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(destFileName);
AnnCodecsInfo infoFromString = codecs.GetInfoFromString(xmlDoc.OuterXml);
Debug.WriteLine($"====================");
Debug.WriteLine($"Get Info From String");
Debug.WriteLine($"Format: {infoFromString.Format}");
Debug.WriteLine($"Version: {infoFromString.Version}");
Debug.WriteLine($"Pages: {infoFromString.Pages.Length}");
Debug.WriteLine($"====================");
// Load the container we just saved
container = codecs.Load(destFileName, 1);
// Show it
ShowContainer("After load", container);
// delete the container
container = null;
// Load the XML container just saved
container = codecs.LoadFromString(xmlDoc.OuterXml, 1);
// Show it
ShowContainer("After load from string", container);
// Save Active Layer using a Stream output
AnnLayer layer = AnnLayer.Create("MyLayer");
container.ActiveLayer = layer;
Stream stream = File.Create("StreamActiveLayer.xml");
codecs.SaveLayer(stream, container.ActiveLayer, AnnFormat.Annotations, 1);
// Save Active Layer using a File output
AnnLayer layer2 = AnnLayer.Create("MyLayer2");
container.ActiveLayer = layer2;
codecs.SaveLayer("StringActiveLayer.xml", layer2, AnnFormat.Annotations, 1);
// Save Layer to string
AnnLayer layer4 = AnnLayer.Create("MyLayer4");
string stringLayer = codecs.SaveLayerToString(layer4, AnnFormat.Annotations);
Debug.WriteLine($"{stringLayer}");
// Use SelectionObject, set ActiveLayer, Change Offset, Change PageNumber, and Save to string
AnnLayer layer5 = AnnLayer.Create("MyLayer5");
AnnSelectionObject annSelectionObject = container.SelectionObject;
annSelectionObject.IsSelected = true;
container.ActiveLayer = layer5;
container.Offset = new LeadPointD(10, 10);
container.PageNumber = 3;
string saveToString = codecs.SaveToString(container, AnnFormat.Annotations, 1);
Debug.WriteLine($"{saveToString}");
//Load from String
AnnContainer annContainer = codecs.LoadFromString(saveToString, 1);
Debug.WriteLine($"{annContainer.PageNumber}");
}
private void ShowContainer(String message, AnnContainer container)
{
string str = message + "\nContainer size: ";
// Add the size
double inch = 720;
double width = container.Size.Width / inch;
double height = container.Size.Height / inch;
str += width + " by " + height + " inches" + "\n";
// Add the objects
str += "Contains " + container.Children.Count + " objects(s)\n";
for (int i = 0; i < container.Children.Count; i++)
{
AnnObject annObj = container.Children[i];
str += "Object: " + annObj.FriendlyName + " at ";
for (int j = 0; j < annObj.Points.Count; j++)
{
LeadPointD pt = annObj.Points[j];
double x = pt.X / inch;
double y = pt.Y / inch;
str += "(" + x + ", " + y + ") ";
}
str += "\n";
}
Debug.WriteLine(str);
}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document