summaryrefslogtreecommitdiffstats
path: root/graphics
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector0193@gmail.com>2023-05-02 03:30:06 +0200
committerLibravatar GitHub <noreply@github.com>2023-05-02 03:30:06 +0200
commit2d7d9a130ece3fb6fa4cd52f9b32b4abd7887cf5 (patch)
tree6acba55171f28af1a3c9c4e65a99ad10abc11c65 /graphics
parent57a276e16539d6aeca0619e0c5e36d0b1c1b5ef9 (diff)
parentedf3432bf5176be13437b9fd5d25b890ec9dbe69 (diff)
downloadiced-2d7d9a130ece3fb6fa4cd52f9b32b4abd7887cf5.tar.gz
iced-2d7d9a130ece3fb6fa4cd52f9b32b4abd7887cf5.tar.bz2
iced-2d7d9a130ece3fb6fa4cd52f9b32b4abd7887cf5.zip
Merge pull request #1822 from iced-rs/basic-shaping
`text::Shaping` strategy selection
Diffstat (limited to 'graphics')
-rw-r--r--graphics/src/backend.rs2
-rw-r--r--graphics/src/geometry/text.rs8
-rw-r--r--graphics/src/primitive.rs11
-rw-r--r--graphics/src/renderer.rs6
4 files changed, 20 insertions, 7 deletions
diff --git a/graphics/src/backend.rs b/graphics/src/backend.rs
index dd2888ab..0c2a6d30 100644
--- a/graphics/src/backend.rs
+++ b/graphics/src/backend.rs
@@ -48,6 +48,7 @@ pub trait Text {
size: f32,
font: Font,
bounds: Size,
+ shaping: text::Shaping,
) -> (f32, f32);
/// Tests whether the provided point is within the boundaries of [`Text`]
@@ -63,6 +64,7 @@ pub trait Text {
size: f32,
font: Font,
bounds: Size,
+ shaping: text::Shaping,
point: Point,
nearest_only: bool,
) -> Option<text::Hit>;
diff --git a/graphics/src/geometry/text.rs b/graphics/src/geometry/text.rs
index 0befd635..0f731e74 100644
--- a/graphics/src/geometry/text.rs
+++ b/graphics/src/geometry/text.rs
@@ -1,5 +1,6 @@
-use iced_core::alignment;
-use iced_core::{Color, Font, Point};
+use crate::core::alignment;
+use crate::core::text::Shaping;
+use crate::core::{Color, Font, Point};
/// A bunch of text that can be drawn to a canvas
#[derive(Debug, Clone)]
@@ -25,6 +26,8 @@ pub struct Text {
pub horizontal_alignment: alignment::Horizontal,
/// The vertical alignment of the text
pub vertical_alignment: alignment::Vertical,
+ /// The shaping strategy of the text.
+ pub shaping: Shaping,
}
impl Default for Text {
@@ -37,6 +40,7 @@ impl Default for Text {
font: Font::default(),
horizontal_alignment: alignment::Horizontal::Left,
vertical_alignment: alignment::Vertical::Top,
+ shaping: Shaping::Basic,
}
}
}
diff --git a/graphics/src/primitive.rs b/graphics/src/primitive.rs
index d6a2c4c4..db237035 100644
--- a/graphics/src/primitive.rs
+++ b/graphics/src/primitive.rs
@@ -1,7 +1,8 @@
-use iced_core::alignment;
-use iced_core::image;
-use iced_core::svg;
-use iced_core::{Background, Color, Font, Gradient, Rectangle, Size, Vector};
+use crate::core::alignment;
+use crate::core::image;
+use crate::core::svg;
+use crate::core::text;
+use crate::core::{Background, Color, Font, Gradient, Rectangle, Size, Vector};
use bytemuck::{Pod, Zeroable};
use std::sync::Arc;
@@ -26,6 +27,8 @@ pub enum Primitive {
horizontal_alignment: alignment::Horizontal,
/// The vertical alignment of the text
vertical_alignment: alignment::Vertical,
+ /// The shaping strategy of the text.
+ shaping: text::Shaping,
},
/// A quad primitive
Quad {
diff --git a/graphics/src/renderer.rs b/graphics/src/renderer.rs
index 23e594be..605286d6 100644
--- a/graphics/src/renderer.rs
+++ b/graphics/src/renderer.rs
@@ -138,8 +138,9 @@ where
size: f32,
font: Font,
bounds: Size,
+ shaping: text::Shaping,
) -> (f32, f32) {
- self.backend().measure(content, size, font, bounds)
+ self.backend().measure(content, size, font, bounds, shaping)
}
fn hit_test(
@@ -148,6 +149,7 @@ where
size: f32,
font: Font,
bounds: Size,
+ shaping: text::Shaping,
point: Point,
nearest_only: bool,
) -> Option<text::Hit> {
@@ -156,6 +158,7 @@ where
size,
font,
bounds,
+ shaping,
point,
nearest_only,
)
@@ -174,6 +177,7 @@ where
font: text.font,
horizontal_alignment: text.horizontal_alignment,
vertical_alignment: text.vertical_alignment,
+ shaping: text.shaping,
});
}
}