summaryrefslogtreecommitdiffstats
path: root/graphics/src/geometry.rs
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/src/geometry.rs')
-rw-r--r--graphics/src/geometry.rs33
1 files changed, 33 insertions, 0 deletions
diff --git a/graphics/src/geometry.rs b/graphics/src/geometry.rs
new file mode 100644
index 00000000..88997288
--- /dev/null
+++ b/graphics/src/geometry.rs
@@ -0,0 +1,33 @@
+//! Build and draw geometry.
+pub mod fill;
+pub mod path;
+pub mod stroke;
+
+mod style;
+mod text;
+
+pub use fill::Fill;
+pub use path::Path;
+pub use stroke::{LineCap, LineDash, LineJoin, Stroke};
+pub use style::Style;
+pub use text::Text;
+
+pub use crate::core::gradient::{self, Gradient};
+
+use crate::Primitive;
+
+/// A bunch of shapes that can be drawn.
+#[derive(Debug, Clone)]
+pub struct Geometry(pub Primitive);
+
+impl From<Geometry> for Primitive {
+ fn from(geometry: Geometry) -> Self {
+ geometry.0
+ }
+}
+
+/// A renderer capable of drawing some [`Geometry`].
+pub trait Renderer: crate::core::Renderer {
+ /// Draws the given layers of [`Geometry`].
+ fn draw(&mut self, layers: Vec<Geometry>);
+}