1 unstable release

new 0.5.0 Jun 6, 2026

#4 in WebAssembly

MIT/Apache

28KB
472 lines

WASM Canvas2D rendering backend for plotkit.

This crate provides WasmRenderer, a rendering backend that translates plotkit drawing primitives into HTML5 Canvas2D API calls via web-sys. It is designed to run in WebAssembly environments inside a browser.

Architecture

The renderer wraps a CanvasRenderingContext2d obtained from an HtmlCanvasElement. Each plotkit primitive (path fill, path stroke, text draw, clipping, image blit) maps directly to the corresponding Canvas2D method calls.

Helper functions for color conversion, font string construction, and affine transform decomposition are exposed as pure functions so they can be unit-tested without a browser environment.

Example (browser-side)

use plotkit_render_wasm::WasmRenderer;
use web_sys::CanvasRenderingContext2d;

let ctx: CanvasRenderingContext2d = /* obtain from canvas element */;
let mut renderer = WasmRenderer::new(ctx, 800, 600);
// ... use renderer via the Renderer trait ...
let _ = renderer.finalize();

Browser-targeted renderer implementation using web-sys.

Dependencies

~1–1.8MB
~30K SLoC