summaryrefslogtreecommitdiffstats
path: root/native/src/text.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2021-11-04 18:28:06 +0700
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2021-11-04 18:28:06 +0700
commit343f9b7e2e594bd1fef1ed511d71e81f9c44e3d9 (patch)
tree6c46efe785fa68318a835479e3db1e5626d764cd /native/src/text.rs
parentef5a731e4bd17f763b1697c7f0ac595928e91e58 (diff)
downloadiced-343f9b7e2e594bd1fef1ed511d71e81f9c44e3d9.tar.gz
iced-343f9b7e2e594bd1fef1ed511d71e81f9c44e3d9.tar.bz2
iced-343f9b7e2e594bd1fef1ed511d71e81f9c44e3d9.zip
Merge `iced_core::text` with `iced_native::text`
Diffstat (limited to '')
-rw-r--r--native/src/text.rs31
1 files changed, 28 insertions, 3 deletions
diff --git a/native/src/text.rs b/native/src/text.rs
index f112a8f3..81419481 100644
--- a/native/src/text.rs
+++ b/native/src/text.rs
@@ -1,7 +1,5 @@
use crate::alignment;
-use crate::{Color, Point, Rectangle, Size};
-
-pub use iced_core::text::Hit;
+use crate::{Color, Point, Rectangle, Size, Vector};
#[derive(Debug, Clone, Copy)]
pub struct Text<'a, Font> {
@@ -14,6 +12,33 @@ pub struct Text<'a, Font> {
pub vertical_alignment: alignment::Vertical,
}
+/// The result of hit testing on text.
+#[derive(Debug, Clone, Copy, PartialEq)]
+pub enum Hit {
+ /// The point was within the bounds of the returned character index.
+ CharOffset(usize),
+ /// The provided point was not within the bounds of a glyph. The index
+ /// of the character with the closest centeroid position is returned,
+ /// as well as its delta.
+ NearestCharOffset(usize, Vector),
+}
+
+impl Hit {
+ /// Computes the cursor position corresponding to this [`HitTestResult`] .
+ pub fn cursor(self) -> usize {
+ match self {
+ Self::CharOffset(i) => i,
+ Self::NearestCharOffset(i, delta) => {
+ if delta.x > f32::EPSILON {
+ i + 1
+ } else {
+ i
+ }
+ }
+ }
+ }
+}
+
pub trait Renderer: crate::Renderer {
/// The font type used.
type Font: Default + Copy;