public class AnnSerializeOptions @interface LTAnnSerializeOptions : NSObject public class AnnSerializeOptions public:ref class AnnSerializeOptions
class AnnSerializeOptions: This class is used as the type for AnnCodecs.SerializeOptions and contains the following members:
| Member | Description |
|---|---|
| SerializeObject |
Event to trigger for each annotation object being saved. Allows you to monitor and skip any object. |
| SaveLockPassword |
Controls whether AnnObject.Password of locked annotation objects is saved in the annotation file. |
This example will create a container, adds a line and rectangle objects to it. Then skip the line object during save.
using Leadtools.Annotations.Automation;using Leadtools.Annotations.Engine;using Leadtools.Annotations.Rendering;public void AnnCodecs_AnnSerializeOptions(){// 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();// Create a new instance of AnnSrializeOptions and Hook to the SerializeObject eventAnnSerializeOptions serializeOptions = new AnnSerializeOptions();serializeOptions.SerializeObject += serializeOptions_SerializeObject;// Set it as our deserialize optionscodecs.SerializeOptions = serializeOptions;// Save the containerstring destFileName = @"container.xml";codecs.Save(destFileName, container, AnnFormat.Annotations, 1);// delete the containercontainer = null;// Load the container we just savedcontainer = codecs.Load(destFileName, 1);// Show itShowContainer("After load", container);}void serializeOptions_SerializeObject(object sender, AnnSerializeObjectEventArgs e){AnnObject annObj = e.AnnObject;if (annObj.Id == AnnObject.PolylineObjectId){Debug.WriteLine("skipping a polyline during save");e.SkipObject = true;}}
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 annCodecsAnnSerializeOptions() 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();// Create a new instance of AnnSrializeOptions and Hook to the SerializeObject// eventAnnSerializeOptions serializeOptions = new AnnSerializeOptions();serializeOptions.addSerializeObjectListener(serializeOptions_SerializeObject);// Set it as our deserialize optionscodecs.setSerializeOptions(serializeOptions);AnnContainer[] containers = new AnnContainer[1];containers[0] = container;// Save the containerString destFileName = combine(LEAD_VARS_IMAGES_DIR, "container.xml");FileWriter writer = new FileWriter(destFileName);// Write the xml data to destFileNamecodecs.saveAll(writer, containers, AnnFormat.ANNOTATIONS);// For testing correctnessAnnContainer savedContainer = container;// Delete the containercontainer = null;// Load the xml data from the file// You can do this or String xmlData = codecs.saveAll(containers,// AnnFormat.ANNOTATIONS);File file = new File(destFileName);Scanner scanner = new Scanner(file);String xmlData = "";while (scanner.hasNext()) {xmlData += scanner.nextLine();}scanner.close();System.out.println("Raw data from file:\n" + xmlData);// Load the container we just savedcontainer = codecs.load(xmlData, 1);// Show itshowContainer("After load", container);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 NOT equal - note the skipped object in the listener",!annObj.getFriendlyName().equals(savedAnnObj.getFriendlyName()));assertTrue("Command run, image saved", new File(destFileName).exists());System.out.printf("Command run, image saved to %s\n", destFileName);}}AnnSerializeObjectListener serializeOptions_SerializeObject = new AnnSerializeObjectListener() {@Overridepublic void serializeObject(AnnSerializeObjectEvent e) {AnnObject annObj = e.getAnnObject();if (annObj.getId() == AnnObject.POLYLINE_OBJECT_ID) {System.out.println("skipping a polyline during save");e.setSkipObject(true);}}};
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
