Technical referenceAPI signaturesData shapes
Artwork types
Data shapes for artwork. See all type groups for other domains and shared units. Import public types from codeboard-studio; helper shapes are included to explain nested values.
ElementPlacement
interface ElementPlacement {
matrix?: AffineMatrix;
colorBindings?: Partial<Record<ColorChannel, ColorBinding>>;
}RasterStroke
export interface RasterStroke extends ElementPlacement {
/** Owner time domain (board global or shot local): blank at startFrame, complete at endFrame. */
reveal?: {
startFrame: number;
endFrame: number;
};
kind: "raster-stroke";
id: Id;
name?: string;
points: Point[];
brush: BrushPreset;
color: string;
opacity: number;
erase: boolean;
seed: number;
visible: boolean;
}PixelBuffer
export interface PixelBuffer {
width: number;
height: number;
pixels: Uint8Array;
}PixelSelection
export interface PixelSelection {
width: number;
height: number;
coverage: Uint8Array;
}PixelRegion
export interface PixelRegion {
x: number;
y: number;
width: number;
height: number;
}RasterSurface
/** Straight-alpha, sRGB RGBA8 pixels; matrix maps source pixels into layer coordinates. */
export interface RasterSurface extends PixelBuffer, ElementPlacement {
kind: "raster-surface";
id: Id;
name?: string;
matrix: AffineMatrix;
opacity: number;
visible: boolean;
}VectorStroke
export interface VectorStroke extends ElementPlacement {
kind: "vector-stroke";
id: Id;
name?: string;
points: Point[];
color: string;
width: number;
opacity: number;
taperStart: number;
taperEnd: number;
pressureSize: number;
closed: boolean;
fill?: string;
visible: boolean;
}VectorFill
export type VectorFill = string | {
kind: "linear";
from: {
x: number;
y: number;
};
to: {
x: number;
y: number;
};
stops: {
offset: number;
color: string;
}[];
} | {
kind: "radial";
from: {
x: number;
y: number;
radius: number;
};
to: {
x: number;
y: number;
radius: number;
};
stops: {
offset: number;
color: string;
}[];
};VectorPath
export interface VectorPath extends ElementPlacement {
kind: "vector-path";
id: Id;
name?: string;
commands: PathCommand[];
fill?: VectorFill;
stroke?: string;
strokeWidth: number;
opacity: number;
visible: boolean;
}TextElement
export interface TextElement extends ElementPlacement {
kind: "text";
id: Id;
name?: string;
x: number;
y: number;
text: string;
color: string;
font: string;
align: "left" | "center" | "right";
opacity: number;
visible: boolean;
}PathCommand
export type PathCommand = {
op: "M" | "L";
x: number;
y: number;
} | {
op: "C";
x1: number;
y1: number;
x2: number;
y2: number;
x: number;
y: number;
} | {
op: "Q";
x1: number;
y1: number;
x: number;
y: number;
} | {
op: "Z";
};DrawingElement
export type DrawingElement = RasterStroke | RasterSurface | VectorStroke | VectorPath | TextElement | Scene3DElement;NewDrawingElement
export type NewDrawingElement = (Omit<Scene3DElement, "id"> & {
id?: Id;
}) | (Omit<RasterStroke, "id"> & {
id?: Id;
}) | (Omit<RasterSurface, "id"> & {
id?: Id;
}) | (Omit<VectorStroke, "id"> & {
id?: Id;
}) | (Omit<VectorPath, "id"> & {
id?: Id;
}) | (Omit<TextElement, "id"> & {
id?: Id;
});StrokeOptions
export interface StrokeOptions {
reveal?: {
startFrame: number;
endFrame: number;
};
id?: Id;
name?: string;
color?: string;
opacity?: number;
erase?: boolean;
seed?: number;
}VectorStrokeOptions
export interface VectorStrokeOptions extends StrokeOptions {
width?: number;
taperStart?: number;
taperEnd?: number;
pressureSize?: number;
closed?: boolean;
fill?: string;
}Codeboard by Nonom Friedman
Explore Nonom Library