Class Annotation
- Namespace
- LMKit.Document.Annotations
- Assembly
- LM-Kit.NET.dll
One annotation record of the LM-Kit annotation standard - the canonical, format-agnostic
markup model (see Annotations/ANNOTATION-STANDARD.md, the single source of truth).
The same record annotates any supported medium - a document page, an image, a frame -
and never carries the vocabulary of a specific storage format: schema adapters load it
from and save it to concrete formats with perfect conversion, and the appearance engine
generates its visual form with full fidelity on every target.
Geometry is in unrotated content points with a TOP-LEFT origin (y grows downward). Rotation is degrees clockwise about the rect centre; the rect and point lists stay in the unrotated frame.
Properties an annotation kind does not use stay at their defaults and are omitted from the wire. Unknown kinds and unknown wire properties round-trip untouched (Subtype raw string + ExtensionJson).
public sealed class Annotation
- Inheritance
-
Annotation
- Inherited Members
Properties
- Author
Display author. Servers may overwrite with a resolved identity - the wire value is never trusted as authorship proof.
- BlendMode
Compositing mode of the mark's paint. Default Normal; Multiply is the text-highlight / highlighter-ink look.
- BorderStyle
Stroke pattern. Default solid; dashed uses
[3w, 3w].
- BorderWidth
Stroke width in points for stroked kinds. Default 1.
- Color
Stroke / text / icon colour as
#RRGGBB, or null for the kind's default.
- Contents
Text content: the FreeText body, the sticky-note comment, or the comment attached to any other mark.
- Created
Creation timestamp in the standard's compact form (
D:YYYYMMDDHHmmSS…). Producers set it once; adapters convert to their target's convention.
- Custom
Consumer-defined payload carried verbatim (serialized JSON). Never interpreted by LM-Kit.
- ExtensionJson
Unknown top-level wire properties, preserved verbatim as raw JSON keyed by property name - the standard's forward-compatibility guarantee. Null when none.
- Flags
Behavioral traits of the mark (printable, hidden, locked…). Combine freely; see AnnotationFlags.
- FontFamily
Font family of a FreeText mark.
- FontWeight
Font weight of a FreeText mark.
- Id
Stable identity of the record across edits and round-trips.
- InteriorColor
Fill colour as
#RRGGBB(Square, Circle, FreeText box, Redact burn), or null for no fill.
- Kind
The standard kind this record represents - the typed view over Subtype. Setting it rewrites Subtype (no-op for Unknown, which keeps the raw string).
- LineEnding
Decoration at the LAST point of a Line.
- LinePoints
The two endpoints of a Line.
- Opacity
Constant opacity of the whole mark in [0, 1]. Default 1.
- PageIndex
Zero-based index of the annotated unit: a page, an image frame…
- Rect
Bounding rectangle of the unrotated mark, or null when the record has no rect of its own (derived from points for Line/PolyLine/Ink when absent).
- Rotation
Rotation in degrees clockwise about the rect centre. Default 0. The rect and point lists stay in the unrotated frame; appearance generation bakes the rotation into the rendered form.
- SegmentRects
Per-segment marked regions - one rectangle per marked line of content (text markup, Redact, Link). Null when unused.
- Source
Provenance: "document" when loaded from the annotated file itself, "external" when it came from an external store. Assigned by loaders; never persisted into files.