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 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();
// Create a new instance of AnnSrializeOptions and Hook to the SerializeObject event
AnnSerializeOptions serializeOptions = new AnnSerializeOptions();
serializeOptions.SerializeObject += serializeOptions_SerializeObject;
// Set it as our deserialize options
codecs.SerializeOptions = serializeOptions;
// Save the container
string destFileName = @"container.xml";
codecs.Save(destFileName, container, AnnFormat.Annotations, 1);
// delete the container
container = null;
// Load the container we just saved
container = codecs.Load(destFileName, 1);
// Show it
ShowContainer("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 inches
AnnContainer 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 2in
AnnPolylineObject 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 4in
AnnRectangleObject 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 container
showContainer("Before save", container);
// Create the codecs object to save and load annotations
AnnCodecs codecs = new AnnCodecs();
// Create a new instance of AnnSrializeOptions and Hook to the SerializeObject
// event
AnnSerializeOptions serializeOptions = new AnnSerializeOptions();
serializeOptions.addSerializeObjectListener(serializeOptions_SerializeObject);
// Set it as our deserialize options
codecs.setSerializeOptions(serializeOptions);
AnnContainer[] containers = new AnnContainer[1];
containers[0] = container;
// Save the container
String destFileName = combine(LEAD_VARS_IMAGES_DIR, "container.xml");
FileWriter writer = new FileWriter(destFileName);
// Write the xml data to destFileName
codecs.saveAll(writer, containers, AnnFormat.ANNOTATIONS);
// For testing correctness
AnnContainer savedContainer = container;
// Delete the container
container = 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 saved
container = codecs.load(xmlData, 1);
// Show it
showContainer("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() {
@Override
public 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