From 92a02c34628343153b33602eae00cef46e28d191 Mon Sep 17 00:00:00 2001 From: Minijackson Date: Thu, 22 Dec 2022 12:19:59 +0100 Subject: WIP --- cairo-renderer/src/drawing/cairo/mod.rs | 35 +++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 cairo-renderer/src/drawing/cairo/mod.rs (limited to 'cairo-renderer/src/drawing/cairo') diff --git a/cairo-renderer/src/drawing/cairo/mod.rs b/cairo-renderer/src/drawing/cairo/mod.rs new file mode 100644 index 0000000..09baa9c --- /dev/null +++ b/cairo-renderer/src/drawing/cairo/mod.rs @@ -0,0 +1,35 @@ +use super::Engine; +use crate::core::{shapes::Shape as CoreShape, types::DefinitelyBounded}; + +use cairo::Context; + +pub struct CairoEngine { + ctx: Context, +} + +impl Engine for CairoEngine { + fn new() -> Self { + let surface = cairo::SvgSurface::for_stream(200., 100., std::io::stdout()).unwrap(); + let ctx = cairo::Context::new(&surface); + + CairoEngine { ctx } + } + + fn draw(&mut self, shape: &DefinitelyBounded) { + let bounds = &shape.bounds; + + self.ctx.move_to(bounds.left, bounds.top); + + match &shape.shape { + CoreShape::Rectangle(_rectangle) => { + self.ctx + .rectangle(bounds.left, bounds.top, bounds.width, bounds.height); + self.ctx.stroke(); + } + CoreShape::Text(text) => { + // TODO: properly shape it, with font, etc. + self.ctx.show_text(&text.content); + } + } + } +} -- cgit v1.2.3