From 4dba8c0de56e07aa4d21538fba7ad3c40df01004 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Sun, 20 Apr 2025 18:48:46 -0700 Subject: [PATCH] Break up cairo module. --- .../src/output/{cairo.rs => cairo/fsm.rs} | 106 +++--------------- rust/pspp/src/output/cairo/mod.rs | 94 ++++++++++++++++ 2 files changed, 110 insertions(+), 90 deletions(-) rename rust/pspp/src/output/{cairo.rs => cairo/fsm.rs} (90%) create mode 100644 rust/pspp/src/output/cairo/mod.rs diff --git a/rust/pspp/src/output/cairo.rs b/rust/pspp/src/output/cairo/fsm.rs similarity index 90% rename from rust/pspp/src/output/cairo.rs rename to rust/pspp/src/output/cairo/fsm.rs index b6cdeb922f..d4d12d9fa9 100644 --- a/rust/pspp/src/output/cairo.rs +++ b/rust/pspp/src/output/cairo/fsm.rs @@ -1,8 +1,6 @@ -use std::{ - borrow::Cow, cmp::min, f64::consts::PI, fmt::Write, ops::DerefMut, path::Path, sync::Arc, -}; +use std::{cmp::min, f64::consts::PI, fmt::Write, ops::DerefMut, sync::Arc}; -use cairo::{Context, PdfSurface, Surface}; +use cairo::{Context, Surface}; use enum_map::{enum_map, EnumMap}; use itertools::Itertools; use pango::{ @@ -12,16 +10,9 @@ use pango::{ use pangocairo::functions::show_layout; use smallvec::{smallvec, SmallVec}; -use crate::output::{ - driver::Driver, - page::Setup, - pivot::{Color, Coord2, FontStyle, HorzAlign, Stroke}, - render::{Device, DrawCell, Extreme, Params}, - table::Content, - Item, -}; - -use super::pivot::{Axis2, BorderStyle, Rect2}; +use crate::output::pivot::{Axis2, BorderStyle, Coord2, FontStyle, HorzAlign, Rect2, Stroke}; +use crate::output::render::{Device, DrawCell, Extreme, Params}; +use crate::output::{pivot::Color, table::Content}; /// Width of an ordinary line. const LINE_WIDTH: usize = LINE_SPACE / 2; @@ -47,7 +38,7 @@ fn pxf_to_xr(x: f64) -> usize { (x * (SCALE as f64 * 72.0 / 96.0)).round() as usize } -pub struct Style { +pub struct CairoFsmStyle { /// Page size. pub size: Coord2, @@ -76,7 +67,7 @@ pub struct Style { pub font_resolution: f64, } -impl Style { +impl CairoFsmStyle { fn new_layout(&self, context: &Context) -> Layout { let pangocairo_context = pangocairo::functions::create_context(context); pangocairo::functions::context_set_resolution(&pangocairo_context, self.font_resolution); @@ -84,14 +75,14 @@ impl Style { } } -pub struct CairoRenderer { - style: Arc