diff options
author | Minijackson <minijackson@riseup.net> | 2022-12-29 01:40:08 +0100 |
---|---|---|
committer | Minijackson <minijackson@riseup.net> | 2022-12-29 01:40:08 +0100 |
commit | 9c15b76c5a6355902b2a105a7c6ee93f6b5016dc (patch) | |
tree | 44cacfe756169f7b3d3cc23f875864683ba2af74 /cairo-renderer/src | |
parent | 30f7d39ca2ed4590b5d356b1a4c024d11156a383 (diff) | |
download | diaphragm-9c15b76c5a6355902b2a105a7c6ee93f6b5016dc.tar.gz diaphragm-9c15b76c5a6355902b2a105a7c6ee93f6b5016dc.zip |
WIP v2: text works, primitives works in Lua
Diffstat (limited to 'cairo-renderer/src')
-rw-r--r-- | cairo-renderer/src/lib.rs | 45 |
1 files changed, 23 insertions, 22 deletions
diff --git a/cairo-renderer/src/lib.rs b/cairo-renderer/src/lib.rs index d912afc..df6f8fd 100644 --- a/cairo-renderer/src/lib.rs +++ b/cairo-renderer/src/lib.rs | |||
@@ -1,5 +1,5 @@ | |||
1 | use diaphragm_core::{ | 1 | use diaphragm_core::{ |
2 | styles::{Pattern, DefinedDashStyle}, | 2 | styles::{DefinedDashStyle, Pattern}, |
3 | text::{DefinedFontDescription, FontDescription}, | 3 | text::{DefinedFontDescription, FontDescription}, |
4 | Renderer, | 4 | Renderer, |
5 | }; | 5 | }; |
@@ -67,28 +67,29 @@ 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 | // Pango gives us integer back, so we lose some precision. We use this for that. | ||
71 | const TEST_ABSOLUTE_SIZE: f64 = 1_000_000.; | ||
72 | |||
70 | let layout = pangocairo::create_layout(&self.ctx); | 73 | let layout = pangocairo::create_layout(&self.ctx); |
71 | let font_desc = pango::FontDescription::from_string(&font.family); | 74 | let mut font_desc = pango::FontDescription::from_string(&font.family); |
75 | font_desc.set_absolute_size(TEST_ABSOLUTE_SIZE); | ||
72 | layout.set_font_description(Some(&font_desc)); | 76 | layout.set_font_description(Some(&font_desc)); |
73 | layout.set_markup(text); | 77 | layout.set_markup(text); |
74 | 78 | ||
75 | //let (extents, _) = layout.get_pixel_extents(); | ||
76 | //(extents.width as f64, extents.height as f64) | ||
77 | |||
78 | // TODO: get height from the baseline | 79 | // TODO: get height from the baseline |
79 | let mut layout_iter = layout.iter(); | 80 | // let mut layout_iter = layout.iter(); |
80 | let _height = loop { | 81 | // let _height = loop { |
81 | if layout_iter.at_last_line() { | 82 | // if layout_iter.at_last_line() { |
82 | break layout_iter.baseline(); | 83 | // break layout_iter.baseline(); |
83 | } | 84 | // } |
84 | 85 | // layout_iter.next_line(); | |
85 | layout_iter.next_line(); | 86 | // }; |
86 | }; | 87 | |
87 | 88 | let (_, extents) = dbg!(layout.pixel_extents()); | |
88 | // TODO: Probably should use the logical extents, but it has weird width | 89 | ( |
89 | let (_, extents) = layout.pixel_extents(); | 90 | extents.width() as f64 / TEST_ABSOLUTE_SIZE, |
90 | //let (extents, _) = layout.get_pixel_extents(); | 91 | extents.height() as f64 / TEST_ABSOLUTE_SIZE, |
91 | (extents.width() as f64, extents.height() as f64) | 92 | ) |
92 | 93 | ||
93 | //let (width, height) = layout.get_pixel_size(); | 94 | //let (width, height) = layout.get_pixel_size(); |
94 | //(width as f64, height as f64) | 95 | //(width as f64, height as f64) |
@@ -98,14 +99,14 @@ impl Renderer for CairoRenderer { | |||
98 | let layout = pangocairo::create_layout(&self.ctx); | 99 | let layout = pangocairo::create_layout(&self.ctx); |
99 | let mut font_desc = pango::FontDescription::from_string(&font.family); | 100 | let mut font_desc = pango::FontDescription::from_string(&font.family); |
100 | 101 | ||
101 | // TODO: I have no fucking idea why | 102 | font_desc.set_absolute_size(dbg!(font.size) as _); |
102 | font_desc.set_size((font.size * 600.) as _); | ||
103 | //font_desc.set_size((font.size * 700.) as _); | ||
104 | //font_desc.set_absolute_size(font.size * 800.); | ||
105 | layout.set_font_description(Some(&font_desc)); | 103 | layout.set_font_description(Some(&font_desc)); |
106 | layout.set_markup(text); | 104 | layout.set_markup(text); |
107 | 105 | ||
108 | //self.ctx.set_font_size(dbg!(font.size)); | 106 | //self.ctx.set_font_size(dbg!(font.size)); |
109 | pangocairo::show_layout(&self.ctx, &layout); | 107 | pangocairo::show_layout(&self.ctx, &layout); |
108 | |||
109 | dbg!(pangocairo::context_get_resolution(&layout.context())); | ||
110 | dbg!(layout.pixel_extents()); | ||
110 | } | 111 | } |
111 | } | 112 | } |