Helpers

Transform

Layer transform

Composition Diagram for Transform Transform Transform Shape
Attribute Type Title Description
a Position

Anchor Point

Anchor point: a position (relative to its parent) around which transformations are applied (ie: center for rotation / scale)

p Splittable Position

Position

Position / Translation

r Scalar

Rotation

Rotation in degrees, clockwise

s Vector

Scale

Scale factor, [100, 100] for no scaling

o Scalar

Opacity

Opacity

sk Scalar

Skew

Skew amount as an angle in degrees

sa Scalar

Skew Axis

Direction along which skew is applied, in degrees (0 skews along the X axis, 90 along the Y axis)

To make the anchor point properly line up with the center of location, p and a should have the same value.

Transforms the parent's coordinate system.

When calculating the final transform, properties MUST be applied as follows:

  1. Translate by a
  2. Scale by s100
  3. If sk0:
    1. Rotate by sa
    2. Skew x by tan(sk)
    3. Rotate by sa
  4. Rotate by r
  5. Translate by p

Steps that have no effect MAY be skipped.

Assuming a transform matrix with the following layout, with the labels equivalent to the CSS matrix transform:

(ab0cd0ef1)

The final transform is given by chaining transform matrices for each transform step:

(100010a.xa.y1)×(s.x100000s.y1000001)××(cos(sa)sin(sa)0sin(sa)cos(sa)0001)×(1tan(sk)0010001)×(cos(sa)sin(sa)0sin(sa)cos(sa)0001)××(cos(r)sin(r)0sin(r)cos(r)0001)×(100010p.xp.y1)

Note that if the transform matrix is transposed compared to the above:

(acebdf001)

The operations need to be chained using right multiplication instead of left multiplication.

Visual Object

Composition Diagram for Visual Object Visual Object Asset Precomposition Image Animation Layer Visual Layer Solid Layer Image Layer Precomposition Layer Null Layer Shape Layer Graphic Element Group Shape Style Fill Gradient Stroke Gradient Stroke Shape PolyStar Path Rectangle Ellipse Transform Shape Modifier Trim Path Stroke Dash
Attribute Type Title Description
nm string

Name

Human readable name, as seen from editors and the like

Marker

Defines named portions of the composition.

Attribute Type Title Description
cm string

Comment

Comment

tm number

Time

Time

dr number

Duration

Duration

Slots

Slots are a way to define a property value once and use the value in multiple properties. Slot definitions are in a dictionary, the slot definition key is the key that is used to match all properties with a sid field to the same key for replacement.

Slot

Defines a property value that will be set to all matched properties

Attribute Type Title Description
p

Property Value

Property Value

Slotabble Object

Object that may have its value replaced with a slot value

Composition Diagram for Slottable Object Slottable Object Image Slottable Property Vector Property Scalar Property Position Property Color Property
Attribute Type Title Description
sid string

Slot Id

Identifier to look up the slot

Slotabble Property

Property that may have its value replaced with a slot value

Composition Diagram for Slottable Property Slottable Property Slottable Object Vector Property Scalar Property Position Property Color Property
Attribute Type Title Description
sid string

Slot Id

Identifier to look up the slot

Mask

Mask for layer content.

Attribute Type Title Description
mode Mask Mode

Mode

Mode

o Scalar

Opacity

Mask opacity, as a percentage [0..100].

pt Bezier

Shape

Mask shape

Masks provide single-channel coverage information (alpha channel) that modulates the layer's content.

When multiple masks are specified, they are combined (blended) into a single coverage buffer, in order, based on the mode operator.

Masks are specified in terms of a Path plus additional properties. For a given mask path, the coverage Cpath is 1 inside the path, 0 outside the path, and possibly in the [0..1] range along the path edges (anti-aliasing).

The coverage for a given Mask is

C={Cpath·opacity,when inv=falseCpath1·opacity,when inv=true

and the cumulative coverage for all masks is

Ccumulative=k=1nCk

where the product operator is determined by mode. Then the final layer coverage (alpha channel) is

Clayer=Clayer·Ccumulative