diff options
author | Minijackson <minijackson@riseup.net> | 2022-12-25 15:46:31 +0100 |
---|---|---|
committer | Minijackson <minijackson@riseup.net> | 2022-12-25 15:46:31 +0100 |
commit | 30f7d39ca2ed4590b5d356b1a4c024d11156a383 (patch) | |
tree | 115d8af6f02ec6d42e0a794ac57c391f3d10d6f7 /cairo-renderer/src/lib.rs | |
parent | 92a02c34628343153b33602eae00cef46e28d191 (diff) | |
download | diaphragm-30f7d39ca2ed4590b5d356b1a4c024d11156a383.tar.gz diaphragm-30f7d39ca2ed4590b5d356b1a4c024d11156a383.zip |
WIP before core rewrite
Diffstat (limited to 'cairo-renderer/src/lib.rs')
-rw-r--r-- | cairo-renderer/src/lib.rs | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/cairo-renderer/src/lib.rs b/cairo-renderer/src/lib.rs index 26ca089..d912afc 100644 --- a/cairo-renderer/src/lib.rs +++ b/cairo-renderer/src/lib.rs | |||
@@ -12,7 +12,7 @@ impl CairoRenderer { | |||
12 | pub fn new() -> Self { | 12 | pub fn new() -> Self { |
13 | // TODO: properly | 13 | // TODO: properly |
14 | let surface = cairo::SvgSurface::for_stream(1920., 1080., std::io::stdout()).unwrap(); | 14 | let surface = cairo::SvgSurface::for_stream(1920., 1080., std::io::stdout()).unwrap(); |
15 | let ctx = cairo::Context::new(&surface); | 15 | let ctx = cairo::Context::new(&surface).unwrap(); |
16 | 16 | ||
17 | Self { ctx } | 17 | Self { ctx } |
18 | } | 18 | } |
@@ -24,15 +24,15 @@ impl Renderer for CairoRenderer { | |||
24 | } | 24 | } |
25 | 25 | ||
26 | fn stroke(&mut self) { | 26 | fn stroke(&mut self) { |
27 | self.ctx.stroke(); | 27 | self.ctx.stroke().unwrap(); |
28 | } | 28 | } |
29 | 29 | ||
30 | fn fill(&mut self) { | 30 | fn fill(&mut self) { |
31 | self.ctx.fill(); | 31 | self.ctx.fill().unwrap(); |
32 | } | 32 | } |
33 | 33 | ||
34 | fn fill_preserve(&mut self) { | 34 | fn fill_preserve(&mut self) { |
35 | self.ctx.fill_preserve(); | 35 | self.ctx.fill_preserve().unwrap(); |
36 | } | 36 | } |
37 | 37 | ||
38 | fn set_pattern(&mut self, pattern: &Pattern) { | 38 | fn set_pattern(&mut self, pattern: &Pattern) { |
@@ -47,7 +47,7 @@ impl Renderer for CairoRenderer { | |||
47 | } | 47 | } |
48 | 48 | ||
49 | fn set_dash(&mut self, dash: &DefinedDashStyle) { | 49 | fn set_dash(&mut self, dash: &DefinedDashStyle) { |
50 | self.ctx.set_dash(&dash.dashes(), dash.offset()); | 50 | self.ctx.set_dash(dash.dashes(), dash.offset()); |
51 | } | 51 | } |
52 | 52 | ||
53 | fn clear_dash(&mut self) { | 53 | fn clear_dash(&mut self) { |
@@ -67,7 +67,7 @@ impl Renderer for CairoRenderer { | |||
67 | } | 67 | } |
68 | 68 | ||
69 | fn text_extents(&self, text: &str, font: &FontDescription) -> (f64, f64) { | 69 | fn text_extents(&self, text: &str, font: &FontDescription) -> (f64, f64) { |
70 | let layout = pangocairo::create_layout(&self.ctx).expect("Couldn't create layout"); | 70 | let layout = pangocairo::create_layout(&self.ctx); |
71 | let font_desc = pango::FontDescription::from_string(&font.family); | 71 | let font_desc = pango::FontDescription::from_string(&font.family); |
72 | layout.set_font_description(Some(&font_desc)); | 72 | layout.set_font_description(Some(&font_desc)); |
73 | layout.set_markup(text); | 73 | layout.set_markup(text); |
@@ -76,26 +76,26 @@ impl Renderer for CairoRenderer { | |||
76 | //(extents.width as f64, extents.height as f64) | 76 | //(extents.width as f64, extents.height as f64) |
77 | 77 | ||
78 | // TODO: get height from the baseline | 78 | // TODO: get height from the baseline |
79 | let mut layout_iter = layout.get_iter().unwrap(); | 79 | let mut layout_iter = layout.iter(); |
80 | let _height = loop { | 80 | let _height = loop { |
81 | if layout_iter.at_last_line() { | 81 | if layout_iter.at_last_line() { |
82 | break layout_iter.get_baseline(); | 82 | break layout_iter.baseline(); |
83 | } | 83 | } |
84 | 84 | ||
85 | layout_iter.next_line(); | 85 | layout_iter.next_line(); |
86 | }; | 86 | }; |
87 | 87 | ||
88 | // TODO: Probably should use the logical extents, but it has weird width | 88 | // TODO: Probably should use the logical extents, but it has weird width |
89 | let (_, extents) = layout.get_pixel_extents(); | 89 | let (_, extents) = layout.pixel_extents(); |
90 | //let (extents, _) = layout.get_pixel_extents(); | 90 | //let (extents, _) = layout.get_pixel_extents(); |
91 | (extents.width as f64, extents.height as f64) | 91 | (extents.width() as f64, extents.height() as f64) |
92 | 92 | ||
93 | //let (width, height) = layout.get_pixel_size(); | 93 | //let (width, height) = layout.get_pixel_size(); |
94 | //(width as f64, height as f64) | 94 | //(width as f64, height as f64) |
95 | } | 95 | } |
96 | 96 | ||
97 | fn show_text(&mut self, text: &str, font: &DefinedFontDescription) { | 97 | fn show_text(&mut self, text: &str, font: &DefinedFontDescription) { |
98 | let layout = pangocairo::create_layout(&self.ctx).expect("Couldn't create layout"); | 98 | let layout = pangocairo::create_layout(&self.ctx); |
99 | let mut font_desc = pango::FontDescription::from_string(&font.family); | 99 | let mut font_desc = pango::FontDescription::from_string(&font.family); |
100 | 100 | ||
101 | // TODO: I have no fucking idea why | 101 | // TODO: I have no fucking idea why |