From 7b0e215008c94c4a7ddb5f47b12c341d807ea062 Mon Sep 17 00:00:00 2001 From: Minijackson Date: Fri, 20 Jan 2023 16:03:25 +0100 Subject: tree-wide: properly set figure size --- cairo-renderer/src/lib.rs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'cairo-renderer') diff --git a/cairo-renderer/src/lib.rs b/cairo-renderer/src/lib.rs index 830e6bc..2a88379 100644 --- a/cairo-renderer/src/lib.rs +++ b/cairo-renderer/src/lib.rs @@ -10,15 +10,27 @@ pub struct CairoRenderer { impl CairoRenderer { pub fn new() -> Self { - // TODO: properly - let surface = cairo::SvgSurface::for_stream(1920., 1080., std::io::stdout()).unwrap(); + // HACK: a bit ugly, but text_extents requires a context, so we have to create a "dummy" + // surface + let surface = cairo::SvgSurface::for_stream(1920., 1080., std::io::sink()).unwrap(); let ctx = cairo::Context::new(&surface).unwrap(); Self { ctx } } } +impl Default for CairoRenderer { + fn default() -> Self { + Self::new() + } +} + impl Renderer for CairoRenderer { + fn set_size(&mut self, width: f64, height: f64) { + let surface = cairo::SvgSurface::for_stream(width, height, std::io::stdout()).unwrap(); + self.ctx = cairo::Context::new(&surface).unwrap(); + } + fn move_to(&mut self, x: f64, y: f64) { self.ctx.move_to(x, y) } -- cgit v1.2.3