1//! Build and draw geometry.
2pub mod fill;
3pub mod frame;
4pub mod path;
5pub mod stroke;
67mod cache;
8mod style;
9mod text;
1011pub use cache::Cache;
12pub use fill::Fill;
13pub use frame::Frame;
14pub use path::Path;
15pub use stroke::{LineCap, LineDash, LineJoin, Stroke};
16pub use style::Style;
17pub use text::Text;
1819pub use crate::core::{Image, Svg};
20pub use crate::gradient::{self, Gradient};
2122use crate::cache::Cached;
23use crate::core::{self, Size};
2425/// A renderer capable of drawing some [`Self::Geometry`].
26pub trait Renderer: core::Renderer {
27/// The kind of geometry this renderer can draw.
28type Geometry: Cached;
2930/// The kind of [`Frame`] this renderer supports.
31type Frame: frame::Backend<Geometry = Self::Geometry>;
3233/// Creates a new [`Self::Frame`].
34fn new_frame(&self, size: Size) -> Self::Frame;
3536/// Draws the given [`Self::Geometry`].
37fn draw_geometry(&mut self, geometry: Self::Geometry);
38}
3940#[cfg(debug_assertions)]
41impl Renderer for () {
42type Geometry = ();
43type Frame = ();
4445fn new_frame(&self, _size: Size) -> Self::Frame {}
4647fn draw_geometry(&mut self, _geometry: Self::Geometry) {}
48}