1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
//! //! `flo_canvas` provides an abstraction of a 2D vector canvas, and supporting methods to stream //! updates to implementations. //! //! The main features that this library supports are the set of primitives in the `Draw` enum, the //! `Canvas` type for streaming drawing instructions elsewhere, and the encoding and decoding //! functions that can be used to send canvas instructions over a byte stream. Encoding uses MIME64 //! characters, so it's easy to embed encoded canvases in other protocols. //! //! By itself, `flo_canvas` is an excellent way to describe how a 2D scene should be rendered without //! needing to depend on a system-specific library. //! //! FlowBetween comes with several implementations of the canvas for generating the final rendered //! results. Most notably, `flo_render_canvas` will convert between a stream of `Draw` instructions //! and a stream of instructions suitable for rendering with most graphics APIs. The accompanying //! `flo_render` can render these instructions to OpenGL or Metal and `flo_render_gl_offscreen` is //! available to generate bitmap images on a variety of systems. //! //! `canvas.js` provides a Javascript implementation that can render the instructions to a HTML //! canvas, and there are also Quartz and Cairo implementations of the canvas provided in FlowBetween's //! user interface layers. //! #![warn(bare_trait_objects)] #[macro_use] extern crate serde_derive; extern crate futures; extern crate flo_curves; extern crate desync; extern crate hsluv; mod gc; mod draw; mod color; mod canvas; mod encoding; mod decoding; mod transform2d; pub use self::gc::*; pub use self::draw::*; pub use self::color::*; pub use self::canvas::*; pub use self::encoding::*; pub use self::decoding::*; pub use self::transform2d::*;