Normalized (0..1) location of position inside the box.
Geometry-box center in composition space (excludes contentPadding).
OptionalcontentPer-side visual extent beyond the geometry box (e.g. shape stroke/shadow), composition pixels.
Unrotated geometry-box height in composition pixels (always ≥ 0).
The clip's anchor point in composition space — the rotation/scale pivot.
Rotation in radians, applied around position.
Unrotated geometry-box width in composition pixels (always ≥ 0).
Visual stacking order among concurrently visible clips: the stage-level z-index of the clip's rendering container (its layer, kept in sync with the timeline layer order; the subtitles container always stacks above all layers). Comparable across clips.
Note this is NOT the clip's own style.getZIndex() — that value only orders clips within one
layer, and clips on a layer never overlap in time, so it is meaningless for host stacking. Read
it from the style directly if you need the serialized value.
Unified, host-facing bounding description of a clip in composition space.
All fields describe ONE box: the clip's interactive geometry (
width×height, always non-negative — flips are visible throughstyle.getScale()signs, not here). Visual extent beyond the geometry (e.g. a shape's centered stroke and drop shadow) is reported separately throughcontentPaddingand is NOT included inwidth/height/center, so toggling a shadow never moves selection handles, guidelines or the rotation pivot.Coordinate contract:
positionis the clip's anchor point (style.getPosition()semantics) and is the pivot that rotation (and any scale-from-anchor transform) happens around — NOTcenter. They coincide for all clip types withanchor(0.5, 0.5); do not rely on that.anchoris normalized (0..1): wherepositionsits inside the box. (0.5, 0.5) for most clips, (0.5, 1.0) for subtitles (bottom-center).centeris the geometry-box center, for layout, guidelines and snapping:center = [position[0] + (0.5 − anchor[0]) × width, position[1] + (0.5 − anchor[1]) × height].Deriving the unrotated box:
topLeft = [position[0] − anchor[0] × width, position[1] − anchor[1] × height]Corners are then rotated aroundposition(the anchor point) — NOT around the box center — byrotation.Deriving the visual (padding-inclusive) box when
contentPaddingis present: expand each side of the geometry box by its padding; that box's center iscenter + [(pad.right − pad.left) / 2, (pad.bottom − pad.top) / 2].Freshness contract: the returned values are derived from the clip's logical style state, which style setters update synchronously — reading immediately after
setScale/setWordWrapWidth/etc. reflects the change.