1 | //! Coverage rasterization for lines, quadratic & cubic beziers. |
2 | //! Useful for drawing .otf font glyphs. |
3 | //! |
4 | //! ``` |
5 | //! use ab_glyph_rasterizer::Rasterizer; |
6 | //! # let (width, height) = (1, 1); |
7 | //! let mut rasterizer = Rasterizer::new(width, height); |
8 | //! |
9 | //! // draw outlines |
10 | //! # let [l0, l1, q0, q1, q2, c0, c1, c2, c3] = [ab_glyph_rasterizer::point(0.0, 0.0); 9]; |
11 | //! rasterizer.draw_line(l0, l1); |
12 | //! rasterizer.draw_quad(q0, q1, q2); |
13 | //! rasterizer.draw_cubic(c0, c1, c2, c3); |
14 | //! |
15 | //! // iterate over the resultant pixel alphas, e.g. save pixel to a buffer |
16 | //! rasterizer.for_each_pixel(|index, alpha| { |
17 | //! // ... |
18 | //! }); |
19 | //! ``` |
20 | |
21 | #![cfg_attr (not(feature = "std" ), no_std)] |
22 | #[cfg (not(feature = "std" ))] |
23 | #[macro_use ] |
24 | extern crate alloc; |
25 | |
26 | #[cfg (all(feature = "libm" , not(feature = "std" )))] |
27 | mod nostd_float; |
28 | |
29 | #[cfg (not(any(feature = "libm" , feature = "std" )))] |
30 | compile_error!("You need to activate either the `std` or `libm` feature." ); |
31 | |
32 | mod geometry; |
33 | mod raster; |
34 | |
35 | pub use geometry::{point, Point}; |
36 | pub use raster::Rasterizer; |
37 | |