rive-js
Version:
Rive's web api.
304 lines (258 loc) • 7.4 kB
TypeScript
interface RiveOptions {
locateFile(file: string): string
}
declare function Rive(options: RiveOptions): Promise<RiveCanvas>;
export default Rive;
export interface RiveCanvas {
Alignment: AlignmentFactory;
CanvasRenderer: typeof CanvasRenderer;
LinearAnimationInstance: typeof LinearAnimationInstance;
StateMachineInstance: typeof StateMachineInstance;
SMIInput: typeof SMIInput;
renderFactory: CanvasRenderFactory;
BlendMode: typeof BlendMode;
FillRule: typeof FillRule;
Fit: typeof Fit;
RenderPaintStyle: typeof RenderPaintStyle;
StrokeCap: typeof StrokeCap;
StrokeJoin: typeof StrokeJoin;
load(buffer: Uint8Array): File;
makeRenderer(canvas: HTMLCanvasElement | OffscreenCanvas) : CanvasRenderer;
}
//////////////
// RENDERER //
//////////////
export declare class RendererWrapper {
save(): void;
restore(): void;
transform(tranform: Mat2D): void;
drawPath(path: RenderPath, paint: RenderPaint): void;
clipPath(path: RenderPath): void;
clear(): void;
flush(): void;
}
export declare class RenderPathWrapper {
reset(): void;
addPath(path: CommandPath, transform: Mat2D): void;
fillRule(value: FillRule): void;
moveTo(x: number, y: number): void
lineTo(x: number, y: number): void
cubicTo(ox: number, oy: number, ix: number, iy: number, x: number, y: number): void;
close(): void;
}
export declare class RenderPaintWrapper {
color(value: number): void;
thickness(value: number): void;
join(value: StrokeJoin): void;
cap(value: StrokeCap): void;
blendMode(value: BlendMode): void;
style(value: RenderPaintStyle): void;
linearGradient(sx: number, sy: number, ex: number, ey: number): void;
radialGradient(sx: number, sy: number, ex: number, ey: number): void;
addStop(color: number, stop: number): void;
completeGradient(): void;
}
export declare class Renderer extends RendererWrapper {
align(fit: Fit, alignment: Alignment, frame: AABB, content: AABB): void
}
export declare class CommandPath { }
export declare class RenderPath extends RenderPathWrapper { }
export declare class RenderPaint extends RenderPaintWrapper { }
/////////////////////
// CANVAS RENDERER //
/////////////////////
export declare class CanvasRenderer extends Renderer {
constructor(ctx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D);
}
export declare class CanvasRenderPaint extends RenderPaint {
draw(ctx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D, path: RenderPath): void;
}
export declare class CanvasRenderPath extends RenderPath { }
export interface CanvasRenderFactory {
makeRenderPaint(): CanvasRenderPaint;
makeRenderPath(): CanvasRenderPath;
}
//////////
// File //
//////////
export declare class File {
defaultArtboard(): Artboard;
artboardByName(name: string): Artboard;
artboardByIndex(index: number): Artboard;
artboardCount(): number;
}
export declare class Artboard {
get name(): string;
get bounds(): AABB;
instance(): Artboard;
// Deletes the backing wasm artboard instance
delete(): void;
advance(sec: number): any;
draw(renderer: CanvasRenderer): void;
animationByName(name: string): LinearAnimation;
animationByIndex(index: number): LinearAnimation;
animationCount(): number;
stateMachineByName(name: string): StateMachine;
stateMachineByIndex(index: number): StateMachine;
stateMachineCount(): number;
bone(name: string): Bone;
node(name: string): Node;
rootBone(name: string): RootBone;
transformComponent(name: string): TransformComponent;
}
export declare class Bone extends TransformComponent {
length: number;
}
export declare class RootBone extends Bone {
x: number;
y: number;
}
export declare class Node extends TransformComponent {
x: number;
y: number;
}
export declare class TransformComponent {
rotation: number;
scaleX: number;
scaleY: number;
}
///////////////
// Animation //
///////////////
export declare class LinearAnimation {
get name(): string;
get duration(): number;
get fps(): number;
get workStart(): number;
get workEnd(): number;
get loopValue(): number;
get speed(): number;
apply(artboard: Artboard, time: number, mix: number): void;
}
export declare class LinearAnimationInstance {
/** Time of the animation in seconds */
time: number;
didLoop: boolean;
constructor(animation: LinearAnimation);
advance(sec: number): any;
/**
* Apply animation on the artboard
* @param artboard the Artboard on which apply the frame.
* @param mix 0-1 the strength of the animation in the animations mix.
*/
apply(artboard: Artboard, mix: number): any;
// Deletes the backing Wasm animation instance
delete(): void;
}
export declare class StateMachine {
get name(): string;
}
export declare class StateMachineInstance {
constructor(stateMachine: StateMachine);
inputCount(): number;
input(i: number): SMIInput;
advance(artboard: Artboard, sec: number): any;
stateChangedCount(): number;
stateChangedNameByIndex(i: number): string;
// Deletes the backing Wasm state machine instance
delete(): void;
}
export declare class SMIInput {
static bool: number;
static number: number;
static trigger: number;
get name(): string;
get type(): number;
get value(): boolean | number | undefined;
set value(val: boolean | number | undefined);
fire(): void;
asBool(): SMIInput;
asNumber(): SMIInput;
asTrigger(): SMIInput;
}
export declare class SMIBool {
}
export declare class SMINumber {
}
export declare class SMITrigger {
}
///////////
// ENUMS //
///////////
export enum Fit {
fill,
contain,
cover,
fitWidth,
fitHeight,
none,
scaleDown,
}
export enum RenderPaintStyle {
fill,
stroke,
}
export enum FillRule {
nonZero,
evenOdd,
}
export enum StrokeCap {
butt,
round,
square,
}
export enum StrokeJoin {
miter,
round,
bevel,
}
export enum BlendMode {
srcOver = 3,
screen = 14,
overlay = 15,
darken = 16,
lighten = 17,
colorDodge = 18,
colorBurn = 19,
hardLight = 20,
softLight = 21,
difference = 22,
exclusion = 23,
multiply = 24,
hue = 25,
saturation = 26,
color = 27,
luminosity = 28,
}
///////////
// UTILS //
///////////
export declare class Alignment {
get x(): number;
get y(): number;
}
export declare class AlignmentFactory {
get topLeft(): Alignment;
get topCenter(): Alignment;
get topRight(): Alignment;
get centerLeft(): Alignment;
get center(): Alignment;
get centerRight(): Alignment;
get bottomLeft(): Alignment;
get bottomCenter(): Alignment;
get bottomRight(): Alignment;
}
export interface AABB {
minX: number;
minY: number;
maxX: number;
maxY: number;
}
export declare class Mat2D {
xx: number;
xy: number;
yx: number;
yy: number;
tx: number;
ty: number;
}