Closed Myriad-Dreamin closed 1 year ago
Break the canvas into small pieces and update them individually to shorten E2E latency.
To finish the task we need to implement the following function:
pub struct OpaqueCanvasState; pub fn update_canvas(&self, state: OpaqueCanvasState, canvas: web_sys::CanvasRenderingContext2d, frame: &typst::doc::Frame) -> OpaqueCanvasState;
image::Image::new
resvg::render
ttf_parser::Face::outline_glyph
sk::Path/Stroke
canvas.clip
canvas.fill(path)
canvas.drawImageData(bitmap)
Implemented all features
Proposal 3, Renderer: Fine-granular Canvas Update
Break the canvas into small pieces and update them individually to shorten E2E latency.
To finish the task we need to implement the following function:
image::Image::new
by canvas image rendering apiresvg::render
by canvas svg rendering apittf_parser::Face::outline_glyph
by unknown api, possible fillsk::Path/Stroke
operations by canvas apicanvas.clip
canvas.fill(path)
canvas.drawImageData(bitmap)