blob: 9029c8e9312b867158e6e585de46e7056b3c6243 [file] [log] [blame] [edit]
const RIVE_PLS_TYPE_NONE = 0;
const RIVE_PLS_TYPE_PIXEL_LOCAL_STORAGE = 1;
const RIVE_PLS_TYPE_SUBPASS_LOAD = 2;
const RIVE_LOAD_ACTION_CLEAR = 0;
const RIVE_LOAD_ACTION_PRESERVE = 1;
const RIVE_FIT_FILL = 0;
const RIVE_FIT_CONTAIN = 1;
const RIVE_FIT_COVER = 2;
const RIVE_FIT_FIT_WIDTH = 3;
const RIVE_FIT_FIT_HEIGHT = 4;
const RIVE_FIT_NONE = 5;
const RIVE_FIT_SCALE_DOWN = 6;
const RIVE_ALIGNMENT_TOP_LEFT = [-1.0, -1.0];
const RIVE_ALIGNMENT_TOP_CENTER = [0.0, -1.0];
const RIVE_ALIGNMENT_TOP_RIGHT = [1.0, -1.0];
const RIVE_ALIGNMENT_CENTER_LEFT = [-1.0, 0.0];
const RIVE_ALIGNMENT_CENTER = [0.0, 0.0];
const RIVE_ALIGNMENT_CENTER_RIGHT = [1.0, 0.0];
const RIVE_ALIGNMENT_BOTTOM_LEFT = [-1.0, 1.0];
const RIVE_ALIGNMENT_BOTTOM_CENTER = [0.0, 1.0];
const RIVE_ALIGNMENT_BOTTOM_RIGHT = [1.0, 1.0];
function RiveInitialize(device, queue, canvasWidth, canvasHeight, invertedY, pixelLocalStorageType)
{
Module._RiveInitialize(JsValStore.add(device),
JsValStore.add(queue),
canvasWidth,
canvasHeight,
invertedY,
pixelLocalStorageType);
}
function RiveLoadFile(bytes)
{
const wasmPtr = Module._malloc(bytes.length);
Module.HEAP8.subarray(wasmPtr, wasmPtr + bytes.length).set(bytes);
const nativePtr = Module._RiveLoadFile(wasmPtr, bytes.length);
Module._free(wasmPtr);
return nativePtr ? new File(nativePtr) : null;
}
function RiveBeginRendering(targetTextureView, loadAction, clearColor)
{
return new Renderer(Module._RiveBeginRendering(JsValStore.add(targetTextureView),
loadAction,
clearColor));
}
function RiveFlushRendering()
{
Module._RiveFlushRendering();
}
function File(nativePtr)
{
this.nativePtr = nativePtr;
this.artboardNamed = (name) => {
const artboardPtr = Module.ccall('File_artboardNamed',
'number',
['number', 'string'],
[this.nativePtr, name]);
return artboardPtr ? new ArtboardInstance(artboardPtr) : null;
};
this.artboardDefault = () => {
const artboardPtr = Module._File_artboardDefault(this.nativePtr);
return artboardPtr ? new ArtboardInstance(artboardPtr) : null;
};
this.destroy = () => Module._File_destroy(this.nativePtr);
}
function ArtboardInstance(nativePtr)
{
this.nativePtr = nativePtr;
this.width = () => Module._ArtboardInstance_width(this.nativePtr)
this.height = () => Module._ArtboardInstance_height(this.nativePtr)
this.stateMachineNamed = function(name) {
const stateMachinePtr = Module.ccall('ArtboardInstance_stateMachineNamed',
'number',
['number', 'string'],
[this.nativePtr, name]);
return stateMachinePtr ? new StateMachineInstance(stateMachinePtr) : null;
}
this.animationNamed = function(name) {
const animationPtr = Module.ccall('ArtboardInstance_animationNamed',
'number',
['number', 'string'],
[this.nativePtr, name]);
return animationPtr ? new LinearAnimationInstance(animationPtr) : null;
}
this.defaultStateMachine = function() {
const stateMachinePtr = Module._ArtboardInstance_defaultStateMachine(this.nativePtr);
return stateMachinePtr ? new StateMachineInstance(stateMachinePtr) : null;
}
this.align = function(renderer, frameBounds, fit, alignment) {
Module._ArtboardInstance_align(this.nativePtr,
renderer.nativePtr,
frameBounds[0],
frameBounds[1],
frameBounds[2],
frameBounds[3],
fit,
alignment[0],
alignment[1]);
};
this.destroy = () => Module._ArtboardInstance_destroy(this.nativePtr);
}
function StateMachineInstance(nativePtr)
{
this.nativePtr = nativePtr;
this.setBool = (inputName, value) =>
Module.ccall('StateMachineInstance_setBool', null,
['number', 'string', 'number'],
[this.nativePtr, inputName, value]);
this.setNumber = (inputName, value) =>
Module.ccall('StateMachineInstance_setNumber', null,
['number', 'string', 'number'],
[this.nativePtr, inputName, value]);
this.fireTrigger = (inputName) =>
Module.ccall('StateMachineInstance_fireTrigger', null,
['number', 'string'],
[this.nativePtr, inputName]);
this.pointerDown = (x, y) =>
Module._StateMachineInstance_pointerDown(this.nativePtr, x, y);
this.pointerMove = (x, y) =>
Module._StateMachineInstance_pointerMove(this.nativePtr, x, y);
this.pointerUp = (x, y) =>
Module._StateMachineInstance_pointerUp(this.nativePtr, x, y);
this.advanceAndApply = (elapsed) =>
Module._StateMachineInstance_advanceAndApply(this.nativePtr, elapsed);
this.draw = (renderer) => Module._StateMachineInstance_draw(this.nativePtr, renderer.nativePtr);
this.destroy = () => Module._StateMachineInstance_destroy(this.nativePtr);
}
function LinearAnimationInstance(nativePtr)
{
this.nativePtr = nativePtr;
this.advanceAndApply = (elapsed) =>
Module._LinearAnimationInstance_advanceAndApply(this.nativePtr, elapsed);
this.draw = (renderer) =>
Module._LinearAnimationInstance_draw(this.nativePtr, renderer.nativePtr);
this.destroy = () => Module._LinearAnimationInstance_destroy(this.nativePtr);
}
function Renderer(nativePtr)
{
this.nativePtr = nativePtr;
this.save = () => Module._Renderer_save(this.nativePtr);
this.restore = () => Module._Renderer_restore(this.nativePtr);
this.translate = (x, y) => Module._Renderer_translate(this.nativePtr, x, y);
this.transform = (xx, xy, yx, yy, tx, ty) =>
Module._Renderer_transform(this.nativePtr, xx, xy, yx, yy, tx, ty);
}