| #ifndef _RIVE_WASM_MODULE_RENDER_HPP_ |
| #define _RIVE_WASM_MODULE_RENDER_HPP_ |
| |
| #ifdef RIVE_WASM_MODULE |
| |
| #include "rive/refcnt.hpp" |
| |
| #include <memory> |
| #include <stdint.h> |
| |
| namespace rive |
| { |
| class Factory; |
| class Renderer; |
| class RenderImage; |
| namespace ore |
| { |
| class Context; |
| } |
| |
| /// The script module's handle-backed render factory; every object it makes |
| /// crosses to the host as a u32 handle through the rive_*_v1 imports. |
| Factory* wasmModuleFactory(); |
| |
| #if defined(RIVE_CANVAS) && defined(RIVE_ORE) |
| namespace ore |
| { |
| class TextureView; |
| } |
| namespace gpu |
| { |
| class RenderCanvas; |
| } |
| /// The module's ore context; factories realize against rive_gpu_v1 handles. |
| ore::Context* wasmModuleOreContext(); |
| |
| /// Module-side canvas pair over a host canvas handle: a RenderCanvas whose |
| /// target owns the handle, and a color view carrying real attachment |
| /// metadata for pass validation. |
| struct WasmModuleCanvas |
| { |
| rcp<gpu::RenderCanvas> canvas; |
| rcp<ore::TextureView> colorView; |
| }; |
| WasmModuleCanvas wasmModuleWrapCanvas(uint32_t canvasHandle); |
| /// Recreates the wrapped canvas at a new size through the host; empty on |
| /// failure. The canvas handle transfers to the returned wrap. |
| WasmModuleCanvas wasmModuleResizeCanvas(const rcp<gpu::RenderCanvas>& canvas, |
| uint32_t width, |
| uint32_t height); |
| /// Mints a fresh host image handle over the canvas's presentable image. |
| uint32_t wasmModuleCanvasImageHandle(const rcp<gpu::RenderCanvas>& canvas); |
| #endif |
| |
| /// Wraps a host renderer handle for one draw call. |
| std::unique_ptr<Renderer> makeWasmModuleRenderer(uint32_t handle); |
| |
| /// The host handle inside a module renderer. |
| uint32_t wasmModuleRendererHandle(Renderer* renderer); |
| |
| /// Wraps a host image handle; dimensions are fetched once at wrap time. |
| rcp<RenderImage> makeWasmModuleRenderImage(uint32_t handle); |
| |
| /// The host handle inside a module render image. |
| uint32_t wasmModuleImageHandle(RenderImage* image); |
| } // namespace rive |
| |
| #endif |
| #endif |