blob: 0088dff7f780e8be2a3b229b8fec848f89db2723 [file]
// Generated by src/wasm/idl/generate.py from bindings.py. Do not edit.
//
// The runtime import object for script modules executing on the
// browser engine. Scalars forward straight into the host call
// table; str/buf/pod params stage through the host heap because
// the host cannot dereference module memory. `addr` ops throw
// until their per-op audit lands.
//
// host contract:
// calls per-op host entry points (native-pointer convention)
// heapU8() Uint8Array over the host heap (refresh per call)
// stackAlloc(size) -> host heap ptr valid until stackReset()
// stackReset()
// moduleMemory: late-bound accessor for the script module memory,
// set after instantiation.
export function createRiveModuleImports(host, moduleMemory) {
const calls = host.calls;
const stackReset = host.stackReset;
const stageIn = (ptr, len) => {
const dst = host.stackAlloc(len);
host.heapU8().set(
new Uint8Array(moduleMemory().buffer, ptr, len),
dst
);
return dst;
};
const copyOut = (src, ptr, len) => {
new Uint8Array(moduleMemory().buffer, ptr, len).set(
host.heapU8().subarray(src, src + len)
);
};
const unsupported = (name) => () => {
throw new Error('web lane does not carry ' + name + ' yet');
};
return {
rive_rt_v1: {
log: (level, message, length) => {
stackReset();
const message_p = stageIn(message, length);
calls.rive_rt_log(level, message_p, length);
},
mark_needs_update: calls.rive_rt_mark_needs_update,
budget_exceeded: calls.rive_rt_budget_exceeded,
debug_enter: calls.rive_rt_debug_enter,
debug_line: calls.rive_rt_debug_line,
debug_leave: calls.rive_rt_debug_leave,
utc_offset: calls.rive_rt_utc_offset,
is_dst: calls.rive_rt_is_dst,
zone_name: (epochSeconds, buffer, capacity) => {
stackReset();
const buffer_p = stageIn(buffer, capacity);
const ret = calls.rive_rt_zone_name(epochSeconds, buffer_p, capacity);
copyOut(buffer_p, buffer, capacity);
return ret;
},
},
rive_data_v1: {
view_model: calls.rive_data_view_model,
root_view_model: calls.rive_data_root_view_model,
global_view_model: (object, name, nameLength) => {
stackReset();
const name_p = stageIn(name, nameLength);
const ret = calls.rive_data_global_view_model(object, name_p, nameLength);
return ret;
},
global_view_model_names: (object, buffer, capacity) => {
stackReset();
const buffer_p = stageIn(buffer, capacity);
const ret = calls.rive_data_global_view_model_names(object, buffer_p, capacity);
copyOut(buffer_p, buffer, capacity);
return ret;
},
context: calls.rive_data_context,
context_parent: calls.rive_data_context_parent,
context_view_model: calls.rive_data_context_view_model,
context_release: calls.rive_data_context_release,
has_view_model: (name, nameLength) => {
stackReset();
const name_p = stageIn(name, nameLength);
const ret = calls.rive_data_has_view_model(name_p, nameLength);
return ret;
},
new_view_model: (name, nameLength, templateName, templateLength) => {
stackReset();
const name_p = stageIn(name, nameLength);
const templateName_p = stageIn(templateName, templateLength);
const ret = calls.rive_data_new_view_model(name_p, nameLength, templateName_p, templateLength);
return ret;
},
vmi_release: calls.rive_data_vmi_release,
vmi_number: (vmi, name, length) => {
stackReset();
const name_p = stageIn(name, length);
const ret = calls.rive_data_vmi_number(vmi, name_p, length);
return ret;
},
vmi_boolean: (vmi, name, length) => {
stackReset();
const name_p = stageIn(name, length);
const ret = calls.rive_data_vmi_boolean(vmi, name_p, length);
return ret;
},
vmi_string: (vmi, name, length) => {
stackReset();
const name_p = stageIn(name, length);
const ret = calls.rive_data_vmi_string(vmi, name_p, length);
return ret;
},
vmi_trigger: (vmi, name, length) => {
stackReset();
const name_p = stageIn(name, length);
const ret = calls.rive_data_vmi_trigger(vmi, name_p, length);
return ret;
},
vmi_color: (vmi, name, length) => {
stackReset();
const name_p = stageIn(name, length);
const ret = calls.rive_data_vmi_color(vmi, name_p, length);
return ret;
},
vmi_view_model: (vmi, name, length) => {
stackReset();
const name_p = stageIn(name, length);
const ret = calls.rive_data_vmi_view_model(vmi, name_p, length);
return ret;
},
vmi_property: (vmi, name, length, kindOut, kindCount) => {
stackReset();
const name_p = stageIn(name, length);
const kindOut_p = stageIn(kindOut, kindCount * 4);
const ret = calls.rive_data_vmi_property(vmi, name_p, length, kindOut_p, kindCount);
copyOut(kindOut_p, kindOut, kindCount * 4);
return ret;
},
vmi_instance: (vmi, name, nameLength) => {
stackReset();
const name_p = stageIn(name, nameLength);
const ret = calls.rive_data_vmi_instance(vmi, name_p, nameLength);
return ret;
},
vmi_symbol_index: calls.rive_data_vmi_symbol_index,
vmi_equal: calls.rive_data_vmi_equal,
view_model_get: calls.rive_data_view_model_get,
vmi_list: (vmi, name, length) => {
stackReset();
const name_p = stageIn(name, length);
const ret = calls.rive_data_vmi_list(vmi, name_p, length);
return ret;
},
vmi_enum: (vmi, name, length) => {
stackReset();
const name_p = stageIn(name, length);
const ret = calls.rive_data_vmi_enum(vmi, name_p, length);
return ret;
},
vmi_image: (vmi, name, length) => {
stackReset();
const name_p = stageIn(name, length);
const ret = calls.rive_data_vmi_image(vmi, name_p, length);
return ret;
},
vmi_font: (vmi, name, length) => {
stackReset();
const name_p = stageIn(name, length);
const ret = calls.rive_data_vmi_font(vmi, name_p, length);
return ret;
},
vmi_blob: (vmi, name, length) => {
stackReset();
const name_p = stageIn(name, length);
const ret = calls.rive_data_vmi_blob(vmi, name_p, length);
return ret;
},
image_get: calls.rive_data_image_get,
image_set: calls.rive_data_image_set,
font_get: calls.rive_data_font_get,
font_set: calls.rive_data_font_set,
font_release: calls.rive_data_font_release,
blob_present: calls.rive_data_blob_present,
blob_get: (property, buffer, capacity) => {
stackReset();
const buffer_p = stageIn(buffer, capacity);
const ret = calls.rive_data_blob_get(property, buffer_p, capacity);
copyOut(buffer_p, buffer, capacity);
return ret;
},
blob_name: (property, buffer, capacity) => {
stackReset();
const buffer_p = stageIn(buffer, capacity);
const ret = calls.rive_data_blob_name(property, buffer_p, capacity);
copyOut(buffer_p, buffer, capacity);
return ret;
},
blob_set: (property, bytes, byteCount) => {
stackReset();
const bytes_p = stageIn(bytes, byteCount);
calls.rive_data_blob_set(property, bytes_p, byteCount);
},
blob_clear: calls.rive_data_blob_clear,
enum_get: (property, buffer, capacity) => {
stackReset();
const buffer_p = stageIn(buffer, capacity);
const ret = calls.rive_data_enum_get(property, buffer_p, capacity);
copyOut(buffer_p, buffer, capacity);
return ret;
},
enum_set: (property, value, length) => {
stackReset();
const value_p = stageIn(value, length);
calls.rive_data_enum_set(property, value_p, length);
},
enum_values: (property, buffer, capacity) => {
stackReset();
const buffer_p = stageIn(buffer, capacity);
const ret = calls.rive_data_enum_values(property, buffer_p, capacity);
copyOut(buffer_p, buffer, capacity);
return ret;
},
prop_release: calls.rive_data_prop_release,
trigger_fire: calls.rive_data_trigger_fire,
list_length: calls.rive_data_list_length,
list_push: calls.rive_data_list_push,
list_pop: calls.rive_data_list_pop,
list_shift: calls.rive_data_list_shift,
list_clear: calls.rive_data_list_clear,
list_swap: calls.rive_data_list_swap,
list_insert: calls.rive_data_list_insert,
list_remove: calls.rive_data_list_remove,
list_remove_at: calls.rive_data_list_remove_at,
list_remove_all_of: calls.rive_data_list_remove_all_of,
list_get: calls.rive_data_list_get,
view_model_set: calls.rive_data_view_model_set,
color_get: calls.rive_data_color_get,
color_set: calls.rive_data_color_set,
number_get: calls.rive_data_number_get,
number_set: calls.rive_data_number_set,
boolean_get: calls.rive_data_boolean_get,
boolean_set: calls.rive_data_boolean_set,
string_get: (property, buffer, capacity) => {
stackReset();
const buffer_p = stageIn(buffer, capacity);
const ret = calls.rive_data_string_get(property, buffer_p, capacity);
copyOut(buffer_p, buffer, capacity);
return ret;
},
string_set: (property, value, length) => {
stackReset();
const value_p = stageIn(value, length);
calls.rive_data_string_set(property, value_p, length);
},
watch: calls.rive_data_watch,
unwatch: calls.rive_data_unwatch,
convert_result: (kind, number, booleanValue, color, value, length) => {
stackReset();
const value_p = stageIn(value, length);
calls.rive_data_convert_result(kind, number, booleanValue, color, value_p, length);
},
},
rive_artboard_v1: {
release: calls.rive_artboard_release,
advance: calls.rive_artboard_advance,
draw: calls.rive_artboard_draw,
instance: calls.rive_artboard_instance,
data: calls.rive_artboard_data,
width: calls.rive_artboard_width,
height: calls.rive_artboard_height,
set_width: calls.rive_artboard_set_width,
set_height: calls.rive_artboard_set_height,
frame_origin: calls.rive_artboard_frame_origin,
set_frame_origin: calls.rive_artboard_set_frame_origin,
bounds: (artboard, out, outCount) => {
stackReset();
const out_p = stageIn(out, outCount * 4);
calls.rive_artboard_bounds(artboard, out_p, outCount);
copyOut(out_p, out, outCount * 4);
},
pointer_event: calls.rive_artboard_pointer_event,
animation: (artboard, name, length) => {
stackReset();
const name_p = stageIn(name, length);
const ret = calls.rive_artboard_animation(artboard, name_p, length);
return ret;
},
animation_release: calls.rive_artboard_animation_release,
animation_duration: calls.rive_artboard_animation_duration,
animation_advance: calls.rive_artboard_animation_advance,
animation_set_time: calls.rive_artboard_animation_set_time,
node: (artboard, name, length) => {
stackReset();
const name_p = stageIn(name, length);
const ret = calls.rive_artboard_node(artboard, name_p, length);
return ret;
},
node_release: calls.rive_artboard_node_release,
node_transform: (node, out, outCount) => {
stackReset();
const out_p = stageIn(out, outCount * 4);
calls.rive_artboard_node_transform(node, out_p, outCount);
copyOut(out_p, out, outCount * 4);
},
node_set: calls.rive_artboard_node_set,
node_world_transform: (node, out, outCount) => {
stackReset();
const out_p = stageIn(out, outCount * 4);
calls.rive_artboard_node_world_transform(node, out_p, outCount);
copyOut(out_p, out, outCount * 4);
},
node_set_world_transform: (node, values, floatCount) => {
stackReset();
const values_p = stageIn(values, floatCount * 4);
calls.rive_artboard_node_set_world_transform(node, values_p, floatCount);
},
node_decompose: (node, values, floatCount) => {
stackReset();
const values_p = stageIn(values, floatCount * 4);
calls.rive_artboard_node_decompose(node, values_p, floatCount);
},
node_path_verbs: (node, out, outCount) => {
stackReset();
const out_p = stageIn(out, outCount);
const ret = calls.rive_artboard_node_path_verbs(node, out_p, outCount);
copyOut(out_p, out, outCount);
return ret;
},
node_path_points: (node, out, outCount) => {
stackReset();
const out_p = stageIn(out, outCount * 4);
const ret = calls.rive_artboard_node_path_points(node, out_p, outCount);
copyOut(out_p, out, outCount * 4);
return ret;
},
node_paint: (node, out, outCount) => {
stackReset();
const out_p = stageIn(out, outCount * 4);
const ret = calls.rive_artboard_node_paint(node, out_p, outCount);
copyOut(out_p, out, outCount * 4);
return ret;
},
node_children: (node, out, outCount) => {
stackReset();
const out_p = stageIn(out, outCount * 4);
const ret = calls.rive_artboard_node_children(node, out_p, outCount);
copyOut(out_p, out, outCount * 4);
return ret;
},
node_parent: calls.rive_artboard_node_parent,
property_key: (artboard, name, length) => {
stackReset();
const name_p = stageIn(name, length);
const ret = calls.rive_artboard_property_key(artboard, name_p, length);
return ret;
},
draw_visit: calls.rive_artboard_draw_visit,
draw_modulated: calls.rive_artboard_draw_modulated,
drawable_draw: calls.rive_artboard_drawable_draw,
drawable_value: (drawable, key, out, outCount) => {
stackReset();
const out_p = stageIn(out, outCount * 4);
const ret = calls.rive_artboard_drawable_value(drawable, key, out_p, outCount);
copyOut(out_p, out, outCount * 4);
return ret;
},
drawable_string: (drawable, key, out, outCount) => {
stackReset();
const out_p = stageIn(out, outCount);
const ret = calls.rive_artboard_drawable_string(drawable, key, out_p, outCount);
copyOut(out_p, out, outCount);
return ret;
},
drawable_properties: (drawable, out, outCount) => {
stackReset();
const out_p = stageIn(out, outCount);
const ret = calls.rive_artboard_drawable_properties(drawable, out_p, outCount);
copyOut(out_p, out, outCount);
return ret;
},
},
rive_audio_v1: {
source: (object, name, nameLength) => {
stackReset();
const name_p = stageIn(name, nameLength);
const ret = calls.rive_audio_source(object, name_p, nameLength);
return ret;
},
source_release: calls.rive_audio_source_release,
source_duration: calls.rive_audio_source_duration,
source_sample_rate: calls.rive_audio_source_sample_rate,
source_channels: calls.rive_audio_source_channels,
play: calls.rive_audio_play,
play_at_time: calls.rive_audio_play_at_time,
play_in_time: calls.rive_audio_play_in_time,
play_at_frame: calls.rive_audio_play_at_frame,
play_in_frame: calls.rive_audio_play_in_frame,
time: calls.rive_audio_time,
time_frame: calls.rive_audio_time_frame,
sample_rate: calls.rive_audio_sample_rate,
sound_release: calls.rive_audio_sound_release,
sound_play: calls.rive_audio_sound_play,
sound_pause: calls.rive_audio_sound_pause,
sound_resume: calls.rive_audio_sound_resume,
sound_stop: calls.rive_audio_sound_stop,
sound_seek: calls.rive_audio_sound_seek,
sound_seek_frame: calls.rive_audio_sound_seek_frame,
sound_completed: calls.rive_audio_sound_completed,
sound_time: calls.rive_audio_sound_time,
sound_time_frame: calls.rive_audio_sound_time_frame,
sound_volume: calls.rive_audio_sound_volume,
sound_set_volume: calls.rive_audio_sound_set_volume,
},
rive_path_v1: {
new: calls.rive_path_new,
update: (path, verbs, verbCount, points, floatCount, fillRule) => {
stackReset();
const verbs_p = stageIn(verbs, verbCount);
const points_p = stageIn(points, floatCount * 4);
calls.rive_path_update(path, verbs_p, verbCount, points_p, floatCount, fillRule);
},
release: calls.rive_path_release,
effect_result: (verbs, verbCount, points, floatCount) => {
stackReset();
const verbs_p = stageIn(verbs, verbCount);
const points_p = stageIn(points, floatCount * 4);
calls.rive_path_effect_result(verbs_p, verbCount, points_p, floatCount);
},
},
rive_measure_v1: {
path_new: (verbs, verbCount, points, floatCount) => {
stackReset();
const verbs_p = stageIn(verbs, verbCount);
const points_p = stageIn(points, floatCount * 4);
const ret = calls.rive_measure_path_new(verbs_p, verbCount, points_p, floatCount);
return ret;
},
contours_new: (verbs, verbCount, points, floatCount) => {
stackReset();
const verbs_p = stageIn(verbs, verbCount);
const points_p = stageIn(points, floatCount * 4);
const ret = calls.rive_measure_contours_new(verbs_p, verbCount, points_p, floatCount);
return ret;
},
contour_next: calls.rive_measure_contour_next,
length: calls.rive_measure_length,
is_closed: calls.rive_measure_is_closed,
pos_tan: (measure, distance, out, outCount) => {
stackReset();
const out_p = stageIn(out, outCount * 4);
calls.rive_measure_pos_tan(measure, distance, out_p, outCount);
copyOut(out_p, out, outCount * 4);
},
warp: (measure, x, y, out, outCount) => {
stackReset();
const out_p = stageIn(out, outCount * 4);
calls.rive_measure_warp(measure, x, y, out_p, outCount);
copyOut(out_p, out, outCount * 4);
},
extract: calls.rive_measure_extract,
extract_read: (measure, verbs, verbCount, points, floatCount) => {
stackReset();
const verbs_p = stageIn(verbs, verbCount);
const points_p = stageIn(points, floatCount * 4);
const ret = calls.rive_measure_extract_read(measure, verbs_p, verbCount, points_p, floatCount);
copyOut(verbs_p, verbs, verbCount);
copyOut(points_p, points, floatCount * 4);
return ret;
},
release: calls.rive_measure_release,
},
rive_paint_v1: {
new: calls.rive_paint_new,
release: calls.rive_paint_release,
style: calls.rive_paint_style,
color: calls.rive_paint_color,
thickness: calls.rive_paint_thickness,
join: calls.rive_paint_join,
cap: calls.rive_paint_cap,
blend_mode: calls.rive_paint_blend_mode,
feather: calls.rive_paint_feather,
shader: calls.rive_paint_shader,
},
rive_canvas_v1: {
new: calls.rive_canvas_new,
release: calls.rive_canvas_release,
width: calls.rive_canvas_width,
height: calls.rive_canvas_height,
resize: calls.rive_canvas_resize,
image: calls.rive_canvas_image,
begin_frame: calls.rive_canvas_begin_frame,
end_frame: calls.rive_canvas_end_frame,
},
rive_gpu_v1: {
features: (out, outCount) => {
stackReset();
const out_p = stageIn(out, outCount * 4);
const ret = calls.rive_gpu_features(out_p, outCount);
copyOut(out_p, out, outCount * 4);
return ret;
},
canvas_new: calls.rive_gpu_canvas_new,
canvas_release: calls.rive_gpu_canvas_release,
canvas_color_view: (canvas, props, propCount) => {
stackReset();
const props_p = stageIn(props, propCount * 4);
const ret = calls.rive_gpu_canvas_color_view(canvas, props_p, propCount);
copyOut(props_p, props, propCount * 4);
return ret;
},
canvas_image: calls.rive_gpu_canvas_image,
canvas_resize: (canvas, width, height, props, propCount) => {
stackReset();
const props_p = stageIn(props, propCount * 4);
const ret = calls.rive_gpu_canvas_resize(canvas, width, height, props_p, propCount);
copyOut(props_p, props, propCount * 4);
return ret;
},
pass_begin: (desc, descByteCount, colors, colorByteCount) => {
stackReset();
const desc_p = stageIn(desc, descByteCount);
const colors_p = stageIn(colors, colorByteCount * 32);
const ret = calls.rive_gpu_pass_begin(desc_p, descByteCount, colors_p, colorByteCount);
return ret;
},
pass_set_pipeline: calls.rive_gpu_pass_set_pipeline,
pass_set_vertex_buffer: calls.rive_gpu_pass_set_vertex_buffer,
pass_set_index_buffer: calls.rive_gpu_pass_set_index_buffer,
pass_set_bind_group: (pass, groupIndex, bindGroup, dynamicOffsets, dynamicOffsetByteCount) => {
stackReset();
const dynamicOffsets_p = stageIn(dynamicOffsets, dynamicOffsetByteCount * 4);
calls.rive_gpu_pass_set_bind_group(pass, groupIndex, bindGroup, dynamicOffsets_p, dynamicOffsetByteCount);
},
pass_set_viewport: calls.rive_gpu_pass_set_viewport,
pass_set_scissor: calls.rive_gpu_pass_set_scissor,
pass_set_stencil_reference: calls.rive_gpu_pass_set_stencil_reference,
pass_set_blend_color: calls.rive_gpu_pass_set_blend_color,
pass_draw: calls.rive_gpu_pass_draw,
pass_draw_indexed: calls.rive_gpu_pass_draw_indexed,
pass_finish: calls.rive_gpu_pass_finish,
pass_release: calls.rive_gpu_pass_release,
image_view: calls.rive_gpu_image_view,
buffer_new: (usage, sizeInBytes, immutable, data, dataCount) => {
stackReset();
const data_p = stageIn(data, dataCount);
const ret = calls.rive_gpu_buffer_new(usage, sizeInBytes, immutable, data_p, dataCount);
return ret;
},
buffer_update: (buffer, dstOffset, data, dataCount) => {
stackReset();
const data_p = stageIn(data, dataCount);
calls.rive_gpu_buffer_update(buffer, dstOffset, data_p, dataCount);
},
buffer_release: calls.rive_gpu_buffer_release,
texture_new: (desc, descByteCount) => {
stackReset();
const desc_p = stageIn(desc, descByteCount);
const ret = calls.rive_gpu_texture_new(desc_p, descByteCount);
return ret;
},
texture_upload: (texture, region, regionByteCount, data, dataCount) => {
stackReset();
const region_p = stageIn(region, regionByteCount);
const data_p = stageIn(data, dataCount);
calls.rive_gpu_texture_upload(texture, region_p, regionByteCount, data_p, dataCount);
},
texture_release: calls.rive_gpu_texture_release,
sampler_new: (desc, descByteCount) => {
stackReset();
const desc_p = stageIn(desc, descByteCount);
const ret = calls.rive_gpu_sampler_new(desc_p, descByteCount);
return ret;
},
sampler_release: calls.rive_gpu_sampler_release,
texture_view_new: (texture, desc, descByteCount) => {
stackReset();
const desc_p = stageIn(desc, descByteCount);
const ret = calls.rive_gpu_texture_view_new(texture, desc_p, descByteCount);
return ret;
},
texture_view_release: calls.rive_gpu_texture_view_release,
shader_target: calls.rive_gpu_shader_target,
shader_asset_bytes: (object, name, nameLength, out, outCount) => {
stackReset();
const name_p = stageIn(name, nameLength);
const out_p = stageIn(out, outCount);
const ret = calls.rive_gpu_shader_asset_bytes(object, name_p, nameLength, out_p, outCount);
copyOut(out_p, out, outCount);
return ret;
},
shader_asset_id: (object, name, nameLength) => {
stackReset();
const name_p = stageIn(name, nameLength);
const ret = calls.rive_gpu_shader_asset_id(object, name_p, nameLength);
return ret;
},
shader_module_new: (desc, descByteCount, blob, blobCount) => {
stackReset();
const desc_p = stageIn(desc, descByteCount);
const blob_p = stageIn(blob, blobCount);
const ret = calls.rive_gpu_shader_module_new(desc_p, descByteCount, blob_p, blobCount);
return ret;
},
shader_module_release: calls.rive_gpu_shader_module_release,
bind_group_layout_new: (groupIndex, entries, entryByteCount) => {
stackReset();
const entries_p = stageIn(entries, entryByteCount * 48);
const ret = calls.rive_gpu_bind_group_layout_new(groupIndex, entries_p, entryByteCount);
return ret;
},
bind_group_layout_release: calls.rive_gpu_bind_group_layout_release,
bind_group_layout_from_shader: (shaderModule, groupIndex, dynamicUBOs, dynamicUBOCount) => {
stackReset();
const dynamicUBOs_p = stageIn(dynamicUBOs, dynamicUBOCount * 4);
const ret = calls.rive_gpu_bind_group_layout_from_shader(shaderModule, groupIndex, dynamicUBOs_p, dynamicUBOCount);
return ret;
},
bind_group_new: (layout, ubos, uboByteCount, textures, textureByteCount, samplers, samplerByteCount) => {
stackReset();
const ubos_p = stageIn(ubos, uboByteCount * 16);
const textures_p = stageIn(textures, textureByteCount * 8);
const samplers_p = stageIn(samplers, samplerByteCount * 8);
const ret = calls.rive_gpu_bind_group_new(layout, ubos_p, uboByteCount, textures_p, textureByteCount, samplers_p, samplerByteCount);
return ret;
},
bind_group_release: calls.rive_gpu_bind_group_release,
pipeline_new: (desc, descByteCount, blob, blobCount) => {
stackReset();
const desc_p = stageIn(desc, descByteCount);
const blob_p = stageIn(blob, blobCount);
const ret = calls.rive_gpu_pipeline_new(desc_p, descByteCount, blob_p, blobCount);
return ret;
},
pipeline_release: calls.rive_gpu_pipeline_release,
},
rive_buffer_v1: {
new: calls.rive_buffer_new,
update: (buffer, bytes, byteCount) => {
stackReset();
const bytes_p = stageIn(bytes, byteCount);
calls.rive_buffer_update(buffer, bytes_p, byteCount);
},
release: calls.rive_buffer_release,
},
rive_blob_v1: {
asset_bytes: (object, name, nameLength, out, outCount) => {
stackReset();
const name_p = stageIn(name, nameLength);
const out_p = stageIn(out, outCount);
const ret = calls.rive_blob_asset_bytes(object, name_p, nameLength, out_p, outCount);
copyOut(out_p, out, outCount);
return ret;
},
},
rive_image_v1: {
from_asset: (object, name, length) => {
stackReset();
const name_p = stageIn(name, length);
const ret = calls.rive_image_from_asset(object, name_p, length);
return ret;
},
width: calls.rive_image_width,
height: calls.rive_image_height,
release: calls.rive_image_release,
decode: (bytes, byteCount, token) => {
stackReset();
const bytes_p = stageIn(bytes, byteCount);
const ret = calls.rive_image_decode(bytes_p, byteCount, token);
return ret;
},
decode_cancel: calls.rive_image_decode_cancel,
},
rive_shader_v1: {
linear: unsupported('rive_shader_linear'),
radial: unsupported('rive_shader_radial'),
release: calls.rive_shader_release,
},
rive_renderer_v1: {
save: calls.rive_renderer_save,
restore: calls.rive_renderer_restore,
transform: calls.rive_renderer_transform,
draw_path: calls.rive_renderer_draw_path,
clip_path: calls.rive_renderer_clip_path,
modulate_color: calls.rive_renderer_modulate_color,
draw_image: calls.rive_renderer_draw_image,
draw_image_mesh: calls.rive_renderer_draw_image_mesh,
},
};
}