#canvas #graphics #user-interface #serialization


Library for describing graphics context drawing actions without requiring a specific implementation

2 unstable releases

0.2.0 Feb 17, 2021
0.1.0 Mar 17, 2018

#7 in Data formats

Used in 9 crates (8 directly)


2.5K SLoC

flo_canvas = "0.2"


flo_canvas is a library that provides a way to describe 2D drawings, without providing any concrete implementation of how those drawings should be rendered. It supports streaming updates to allow canvases to be displayed in any user interface library that understands the Draw instructions, and it provides a serialization and deserialization mechanism for sending canvas instructions to other applications.

This library was designed to support FlowBetween, an interactive animation editor. However, it has several implementations that make it useful outside that context. In particular, the flo_draw crate provides a straightforward way to render canvases into a window. flo_render and flo_render_canvas combine to provide a general-purpose way of rendering 2D canvases using modern 3D-accellerated graphics hardware: this includes the ability to render canvases off-screen to a bitmap on Linux, OS X and Windows systems.

FlowBetween itself has some implementations that are not quite so accessible but may still be of interest. In particular canvas.js provides an implementation of flo_canvas in javascript, suitable for rendering to a HTML canvas.


~61K SLoC