AnnContainer Object

Summary

Represents an annotation container.

Syntax
TypeScript
JavaScript
function lt.Annotations.Engine.AnnContainer 
class lt.Annotations.Engine.AnnContainer() 

Remarks

The annotation container is a rectangular area that holds related annotation objects (AnnObject). In typical applications, the container holds the annotation objects for a page in a document. The size of the container is the same of the page but in annotation units (1/720 of an inch).

AnnContainer contains the following members:

Member Description
Size, Offset and PageNumber Properties of the container: Size is the size of the container in annotation units (1/720 of an inch). Offset is an optional offset value (if the container does not start at 0,0) and PageNumber is the optional 1-based page number of the container

Mapper

The object responsible for converting display, container and image coordinates

Children

A collection of AnnObjects. These are the annotation objects that belong in this container. These objects will be rendered when the container is rendered and edited when the container is automated

SelectionObject

Special annotation object that is responsible for maintaining a list of the objects that are currently selected in the container

Layers

A collection of AnnLayers for logically grouping common annotation objects.
HitTestPoint and HitTestRect Helper method for performing hit-testing on the container and returning any object under a test point or rectangle.
IsVisible, Stroke and Fill Optional values (whether it is visible, border stroke, interior filling options) used when rendering this container.

IsEnabled

Optional value indicating whether this container is enabled. If a container is disabled, then it will be used by the automation and considered read-only.

Labels

Optional labels (for example, map legends) that can be used to overlay fixed text on top of the container.

Resize

Method for easily resizing a container to a desired size. Has options.

Example

This example creates a new container, adds a line object and a rectangle object to it, saves it and then loads it back.

TypeScript
JavaScript
example: function SiteLibrary_DefaultPage$example() { 
 
   var inch = 720.0; 
 
   // Create a new annotation container, 8.5 by 11 inches 
   var container = new lt.Annotations.Engine.AnnContainer(); 
   // Size must be in annotation units (1/720 of an inch) 
   container.set_size(lt.LeadSizeD.create(8.5 * inch, 11 * inch)); 
 
   // Add a red line object, from 1in 1in to 2in 2in 
   var lineObj = new lt.Annotations.Engine.AnnPolylineObject(); 
   lineObj.get_points().add(lt.LeadPointD.create(1 * inch, 1 * inch)); 
   lineObj.get_points().add(lt.LeadPointD.create(2 * inch, 2 * inch)); 
   lineObj.set_stroke(lt.Annotations.Engine.AnnStroke.create(lt.Annotations.Engine.AnnSolidColorBrush.create("red"), lt.LeadLengthD.create(1))); 
   container.get_children().add(lineObj); 
 
   // Add a blue on yellow rectangle from 3in 3in to 4in 4in 
   var rectObj = new lt.Annotations.Engine.AnnRectangleObject(); 
   rectObj.set_rect(lt.LeadRectD.create(3 * inch, 3 * inch, 1 * inch, 1 * inch)); 
   rectObj.set_stroke(lt.Annotations.Engine.AnnStroke.create(lt.Annotations.Engine.AnnSolidColorBrush.create("blue"), lt.LeadLengthD.create(1))); 
   rectObj.set_fill(lt.Annotations.Engine.AnnSolidColorBrush.create("yellow")); 
   container.get_children().add(rectObj); 
 
   // Show the container 
   this.showContainer("Before save", container); 
 
   // Create the codecs object to save and load annotations 
   var codecs = new lt.Annotations.Engine.AnnCodecs(); 
 
   // Save the container 
   var xmlData = codecs.save(container, lt.Annotations.Engine.AnnFormat.annotations, null, 1); 
 
   // delete the container 
   container = null; 
 
   // Show information about the data we just saved 
   var info = codecs.getInfo(xmlData); 
   var message; 
   if (info.get_format() == lt.Annotations.Engine.AnnFormat.annotations) { 
      message = "Version: "; 
      message += info.get_version(); 
      message += " No. of pages: "; 
      message += info.get_pages().length; 
      message += " page nos: "; 
      for (var i = 0; i < info.get_pages().length; i++) { 
         message += info.get_pages()[i] + " "; 
      } 
   } 
   else { 
      message = "Invalid annotations data"; 
   } 
 
   alert(message); 
 
   // Load the container we just saved 
   container = codecs.load(xmlData, 1); 
 
   // Show it 
   this.showContainer("After load", container); 
}, 
 
showContainer: function SiteLibrary_DefaultPage$showContainer(message, container) { 
   var str = message + "\nContainer size: "; 
 
   // Add the size 
   var inch = 720; 
   var width = container.get_size().get_width() / inch; 
   var height = container.get_size().get_height() / inch; 
   str += width + " by " + height + " inches" + "\n"; 
 
   // Add the objects 
   str += "Contains " + container.get_children().get_count() + " objects(s)\n"; 
   for (var i = 0; i < container.get_children().get_count(); i++) { 
      var annObj = container.get_children().get_item(i); 
 
      str += "Object: " + annObj.get_friendlyName() + " at "; 
      for (var j = 0; j < annObj.get_points().get_count(); j++) { 
         var pt = annObj.get_points().get_item(j); 
         var x = pt.get_x() / inch; 
         var y = pt.get_y() / inch; 
         str += "(" + x + ", " + y + ") "; 
      } 
 
      str += "\n"; 
   } 
 
   alert(str); 
 
}, 
private AnnContainerExample(): void { 
   const inch = 720.0; 
 
   // Create a new annotation container, 8.5 by 11 inches 
   let container: lt.Annotations.Engine.AnnContainer = new lt.Annotations.Engine.AnnContainer(); 
   // Size must be in annotation units (1/720 of an inch) 
   container.size = lt.LeadSizeD.create(8.5 * inch, 11 * inch); 
 
   const showContainer = (message, container) => { 
      let str = message + "\nContainer size: "; 
 
      // Add the size 
      const inch = 720; 
      const width: number = container.size.width / inch; 
      const height: number = container.size.height / inch; 
      str += width + " by " + height + " inches" + "\n"; 
 
      // Add the objects 
      str += "Contains " + container.children.count + " objects(s)\n"; 
      for (let i = 0; i < container.children.count; i++) { 
         const annObj = container.children.item(i); 
 
         str += "Object: " + annObj.get_friendlyName() + " at "; 
         for (let j = 0; j < annObj.get_points().get_count(); j++) { 
            const pt: lt.LeadPointD = annObj.points.item(j); 
            const x: number = pt.x / inch; 
            const y: number = pt.y / inch; 
            str += "(" + x + ", " + y + ") "; 
         } 
 
         str += "\n"; 
      } 
 
      alert(str); 
   } 
 
   // Add a red line object, from 1in 1in to 2in 2in 
   const lineObj: lt.Annotations.Engine.AnnPolylineObject = new lt.Annotations.Engine.AnnPolylineObject(); 
   lineObj.points.add(lt.LeadPointD.create(1 * inch, 1 * inch)); 
   lineObj.points.add(lt.LeadPointD.create(2 * inch, 2 * inch)); 
   lineObj.stroke = lt.Annotations.Engine.AnnStroke.create(lt.Annotations.Engine.AnnSolidColorBrush.create("red"), lt.LeadLengthD.create(1)); 
   container.children.add(lineObj); 
 
   // Add a blue on yellow rectangle from 3in 3in to 4in 4in 
   const rectObj: lt.Annotations.Engine.AnnRectangleObject = new lt.Annotations.Engine.AnnRectangleObject(); 
   rectObj.rect = lt.LeadRectD.create(3 * inch, 3 * inch, 1 * inch, 1 * inch); 
   rectObj.stroke = lt.Annotations.Engine.AnnStroke.create(lt.Annotations.Engine.AnnSolidColorBrush.create("blue"), lt.LeadLengthD.create(1)); 
   rectObj.fill = lt.Annotations.Engine.AnnSolidColorBrush.create("yellow"); 
   container.children.add(rectObj); 
 
   // Show the container 
   showContainer("Before save", container); 
 
   // Create the codecs object to save and load annotations 
   const codecs: lt.Annotations.Engine.AnnCodecs = new lt.Annotations.Engine.AnnCodecs(); 
 
   // Save the container 
   const xmlData: string = codecs.save(container, lt.Annotations.Engine.AnnFormat.annotations, null, 1); 
 
   // delete the container 
   container = null; 
 
   // Show information about the data we just saved 
   const info: lt.Annotations.Engine.AnnCodecsInfo = codecs.getInfo(xmlData); 
   let message: string; 
   if (info.format == lt.Annotations.Engine.AnnFormat.annotations) { 
      message = "Version: "; 
      message += info.version; 
      message += " No. of pages: "; 
      message += info.pages.length; 
      message += " page nos: "; 
      for (let i = 0; i < info.pages.length; i++) { 
         message += info.pages[i] + " "; 
      } 
   } 
   else { 
      message = "Invalid annotations data"; 
   } 
 
   alert(message); 
 
   // Load the container we just saved 
   container = codecs.load(xmlData, 1); 
 
   // Show it 
   showContainer("After load", container); 
} 

Requirements

Target Platforms

Help Version 20.0.2019.3.11
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2019 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Annotations.Engine Assembly