public class AnnCodecsInfo @interface LTAnnCodecsInfo : NSObject public class AnnCodecsInfo public:ref class AnnCodecsInfo
class AnnCodecsInfo: The AnnCodecsInfo contains information on a valid annotation file. To get the information of an annotation file, use GetInfo, GetInfoFromString.
This class contains the following members:
| Member | Description |
|---|---|
| Format |
Format of the annotation file. This will either be AnnFormat if the file contains valid LEADTOOLS Annotations data or AnnFormat.Unknown if the file does not contain valid LEADTOOLS Annotations data. |
| Version |
The version of the LEADTOOLS Annotation file. Currently this will be "1.0" if the file contains valid LEADTOOLS Annotations |
| Pages |
An array of integers that contain the pages numbers found in the file. |
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 inchesAnnContainer 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 2inAnnPolylineObject 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 4inAnnRectangleObject 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 containerShowContainer("Before save", container);// Create the codecs object to save and load annotationsAnnCodecs codecs = new AnnCodecs();// Save the containerstring destFileName = @"container.xml";codecs.Save(destFileName, container, AnnFormat.Annotations, 1);// delete the containercontainer = null;// Show information about the data we just savedAnnCodecsInfo 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 savedXmlDocument 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 savedcontainer = codecs.Load(destFileName, 1);// Show itShowContainer("After load", container);// delete the containercontainer = null;// Load the XML container just savedcontainer = codecs.LoadFromString(xmlDoc.OuterXml, 1);// Show itShowContainer("After load from string", container);// Save Active Layer using a Stream outputAnnLayer 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 outputAnnLayer layer2 = AnnLayer.Create("MyLayer2");container.ActiveLayer = layer2;codecs.SaveLayer("StringActiveLayer.xml", layer2, AnnFormat.Annotations, 1);// Save Layer to stringAnnLayer 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 stringAnnLayer 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 StringAnnContainer annContainer = codecs.LoadFromString(saveToString, 1);Debug.WriteLine($"{annContainer.PageNumber}");}private void ShowContainer(String message, AnnContainer container){string str = message + "\nContainer size: ";// Add the sizedouble inch = 720;double width = container.Size.Width / inch;double height = container.Size.Height / inch;str += width + " by " + height + " inches" + "\n";// Add the objectsstr += "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);}
import java.io.File;import java.io.IOException;import java.io.OutputStream;import java.io.FileOutputStream;import java.io.FileWriter;import java.util.Scanner;import org.junit.*;import org.junit.runner.JUnitCore;import org.junit.runner.Result;import org.junit.runner.notification.Failure;import static org.junit.Assert.*;import leadtools.*;import leadtools.annotations.engine.*;public void annCodecsAnnCodecs() throws IOException {final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images";// Create a new annotation container, 8.5 by 11 inchesAnnContainer container = new AnnContainer();// Size must be in annotation units (1/720 of an inch)container.setSize(LeadSizeD.create(8.5 * 720, 11 * 720));double inch = 720.0;// Add a red line object, from 1in 1in to 2in 2inAnnPolylineObject lineObj = new AnnPolylineObject();lineObj.getPoints().add(LeadPointD.create(1 * inch, 1 * inch));lineObj.getPoints().add(LeadPointD.create(2 * inch, 2 * inch));lineObj.setStroke(AnnStroke.create(AnnSolidColorBrush.create("Red"), LeadLengthD.create(1)));container.getChildren().add(lineObj);// Add a blue on yellow rectangle from 3in 3in to 4in 4inAnnRectangleObject rectObj = new AnnRectangleObject();rectObj.setRect(LeadRectD.create(3 * inch, 3 * inch, 1 * inch, 1 * inch));rectObj.setStroke(AnnStroke.create(AnnSolidColorBrush.create("Blue"), LeadLengthD.create(1)));rectObj.setFill(AnnSolidColorBrush.create("Yellow"));container.getChildren().add(rectObj);// Show the containershowContainer("Before save", container);// Create the codecs object to save and load annotationsAnnCodecs codecs = new AnnCodecs();AnnContainer[] containers = new AnnContainer[1];containers[0] = container;String xmlData;// Save the containerxmlData = codecs.saveAll(containers, AnnFormat.ANNOTATIONS);// Delete the containercontainer = null;// Show information about the data we just savedAnnCodecsInfo info = codecs.getInfo(xmlData);String message;if (info.getFormat() == AnnFormat.ANNOTATIONS) {message = "Version: ";message += info.getVersion();message += " No. of pages: ";message += info.getPages().length;message += " page nos: ";for (int i = 0; i < info.getPages().length; i++) {message += info.getPages()[i] + " ";}} elsemessage = "Invalid annotations data";System.out.println(message);// Show information about the XML data we just savedAnnCodecsInfo infoFromString = codecs.getInfo(xmlData);System.out.println("====================");System.out.println("Get Info From String");System.out.println("Format: " + infoFromString.getFormat());System.out.println("Version: " + infoFromString.getVersion());System.out.println("Pages: " + infoFromString.getPages().length);System.out.println("====================");// Load the container we just savedcontainer = codecs.load(xmlData, 1);// Show itshowContainer("After load", container);// For testing correctnessAnnContainer savedContainer = container;// Delete the containercontainer = null;// Load the XML container just savedcontainer = codecs.load(xmlData, 1);// Show itshowContainer("After load from string", container);// Save Active Layer using a Stream outputAnnLayer layer = AnnLayer.create("MyLayer");container.setActiveLayer(layer);String destFileName = combine(LEAD_VARS_IMAGES_DIR, "StreamActiveLayer.xml");File file = new File(destFileName);if (!file.exists()) {file.delete();}file.createNewFile();OutputStream stream = new FileOutputStream(file.getPath());codecs.saveLayer(stream, container.getActiveLayer(), AnnFormat.ANNOTATIONS, 1);// Save Active Layer using a File outputdestFileName = combine(LEAD_VARS_IMAGES_DIR, "FileActiveLayer.xml");FileWriter writer = new FileWriter(destFileName);AnnLayer layer2 = AnnLayer.create("MyLayer2");container.setActiveLayer(layer2);codecs.saveLayer(writer, layer2, AnnFormat.ANNOTATIONS, 1);// Save Layer to stringAnnLayer layer4 = AnnLayer.create("MyLayer4");String stringLayer = codecs.saveLayer(layer4, AnnFormat.ANNOTATIONS, xmlData);System.out.println("Layer:\n" + stringLayer);// Use SelectionObject, set ActiveLayer, Change Offset, Change PageNumber, and// Save to stringAnnLayer layer5 = AnnLayer.create("MyLayer5");AnnSelectionObject annSelectionObject = container.getSelectionObject();annSelectionObject.setSelected(true);container.setActiveLayer(layer5);container.setOffset(new LeadPointD(10, 10));container.setPageNumber(3);String saveToString = codecs.save(container, AnnFormat.ANNOTATIONS, xmlData, 1);System.out.println("Container:\n" + saveToString);// Load from StringAnnContainer annContainer = codecs.load(saveToString, 1);System.out.println(annContainer.getPageNumber());for (int i = 0; i < container.getChildren().size(); i++) {AnnObject annObj = container.getChildren().get(i);AnnObject savedAnnObj = savedContainer.getChildren().get(i);assertTrue("Check loaded and saved containers are equal",annObj.getFriendlyName().equals(savedAnnObj.getFriendlyName()));}assertTrue("File unsuccessfully saved", new File(destFileName).exists());System.out.printf("Command run, image saved to %s\n", destFileName);}private void showContainer(String message, AnnContainer container) {String str = message + "\nContainer size: ";// Add the sizedouble inch = 720;double width = container.getSize().getWidth() / inch;double height = container.getSize().getHeight() / inch;str += width + " by " + height + " inches" + "\n";// Add the objectsstr += "Contains " + container.getChildren().size() + " objects(s)\n";for (int i = 0; i < container.getChildren().size(); i++) {AnnObject annObj = container.getChildren().get(i);str += "Object: " + annObj.getFriendlyName() + " at ";for (int j = 0; j < annObj.getPoints().size(); j++) {LeadPointD pt = annObj.getPoints().get(j);double x = pt.getX() / inch;double y = pt.getY() / inch;str += "(" + x + ", " + y + ") ";}str += "\n";}System.out.println(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
