Support configurable LineHeight in text widgets

This commit is contained in:
Héctor Ramón Jiménez 2023-05-04 13:00:16 +02:00
parent 8e8808f0e1
commit 9499a8f9e6
No known key found for this signature in database
GPG key ID: 140CC052C94F138E
24 changed files with 337 additions and 42 deletions

View file

@ -46,6 +46,7 @@ pub trait Text {
&self,
contents: &str,
size: f32,
line_height: text::LineHeight,
font: Font,
bounds: Size,
shaping: text::Shaping,
@ -62,6 +63,7 @@ pub trait Text {
&self,
contents: &str,
size: f32,
line_height: text::LineHeight,
font: Font,
bounds: Size,
shaping: text::Shaping,

View file

@ -1,5 +1,5 @@
use crate::core::alignment;
use crate::core::text::Shaping;
use crate::core::text::{LineHeight, Shaping};
use crate::core::{Color, Font, Point};
/// A bunch of text that can be drawn to a canvas
@ -20,6 +20,8 @@ pub struct Text {
pub color: Color,
/// The size of the text
pub size: f32,
/// The line height of the text.
pub line_height: LineHeight,
/// The font of the text
pub font: Font,
/// The horizontal alignment of the text
@ -37,6 +39,7 @@ impl Default for Text {
position: Point::ORIGIN,
color: Color::BLACK,
size: 16.0,
line_height: LineHeight::Relative(1.2),
font: Font::default(),
horizontal_alignment: alignment::Horizontal::Left,
vertical_alignment: alignment::Vertical::Top,

View file

@ -19,8 +19,10 @@ pub enum Primitive {
bounds: Rectangle,
/// The color of the text
color: Color,
/// The size of the text
/// The size of the text in logical pixels
size: f32,
/// The line height of the text
line_height: text::LineHeight,
/// The font of the text
font: Font,
/// The horizontal alignment of the text

View file

@ -136,17 +136,26 @@ where
&self,
content: &str,
size: f32,
line_height: text::LineHeight,
font: Font,
bounds: Size,
shaping: text::Shaping,
) -> (f32, f32) {
self.backend().measure(content, size, font, bounds, shaping)
self.backend().measure(
content,
size,
line_height,
font,
bounds,
shaping,
)
}
fn hit_test(
&self,
content: &str,
size: f32,
line_height: text::LineHeight,
font: Font,
bounds: Size,
shaping: text::Shaping,
@ -156,6 +165,7 @@ where
self.backend().hit_test(
content,
size,
line_height,
font,
bounds,
shaping,
@ -173,6 +183,7 @@ where
content: text.content.to_string(),
bounds: text.bounds,
size: text.size,
line_height: text.line_height,
color: text.color,
font: text.font,
horizontal_alignment: text.horizontal_alignment,