iced-yoda/graphics/src/geometry.rs

49 lines
1.1 KiB
Rust
Raw Normal View History

//! Build and draw geometry.
pub mod fill;
2024-03-22 01:35:14 +01:00
pub mod frame;
pub mod path;
pub mod stroke;
2024-03-22 01:35:14 +01:00
mod cache;
mod style;
mod text;
2024-03-22 01:35:14 +01:00
pub use cache::Cache;
pub use fill::Fill;
2024-03-22 01:35:14 +01:00
pub use frame::Frame;
pub use path::Path;
pub use stroke::{LineCap, LineDash, LineJoin, Stroke};
pub use style::Style;
pub use text::Text;
2024-08-04 04:52:55 +02:00
pub use crate::core::{Image, Svg};
pub use crate::gradient::{self, Gradient};
use crate::cache::Cached;
use crate::core::{self, Size};
/// A renderer capable of drawing some [`Self::Geometry`].
pub trait Renderer: core::Renderer {
/// The kind of geometry this renderer can draw.
2024-03-22 01:53:48 +01:00
type Geometry: Cached;
/// The kind of [`Frame`] this renderer supports.
2024-03-22 01:35:14 +01:00
type Frame: frame::Backend<Geometry = Self::Geometry>;
2024-03-22 01:53:48 +01:00
/// Creates a new [`Self::Frame`].
fn new_frame(&self, size: Size) -> Self::Frame;
/// Draws the given [`Self::Geometry`].
fn draw_geometry(&mut self, geometry: Self::Geometry);
}
#[cfg(debug_assertions)]
impl Renderer for () {
type Geometry = ();
type Frame = ();
fn new_frame(&self, _size: Size) -> Self::Frame {}
fn draw_geometry(&mut self, _geometry: Self::Geometry) {}
}