pub trait PlatformParagraphLayout: Send + Sync {
// Required methods
fn source(&self) -> &str;
fn font_size(&self) -> Pixels;
fn size(&self) -> Size<Pixels>;
fn runs(&self) -> &[ShapedRun];
fn hit_test(&self, point: Point<Pixels>) -> Result<ParagraphPosition>;
fn caret_bounds(
&self,
position: ParagraphPosition,
) -> Result<Bounds<Pixels>>;
fn move_visual(
&self,
position: ParagraphPosition,
direction: VisualDirection,
) -> Result<ParagraphPosition>;
fn selection_bounds(
&self,
anchor: ParagraphPosition,
focus: ParagraphPosition,
) -> Result<Vec<Bounds<Pixels>>>;
}Expand description
Immutable paragraph paint and interaction data, all in paragraph-local pixels.
Glyph positions include their line baseline, measured from the paragraph top. Glyph indices remain logical UTF-8 offsets even when paint order is visual.
Required Methods§
Sourcefn runs(&self) -> &[ShapedRun]
fn runs(&self) -> &[ShapedRun]
Resolved faces/glyphs in visual paint order; never requested descriptor IDs.
Sourcefn hit_test(&self, point: Point<Pixels>) -> Result<ParagraphPosition>
fn hit_test(&self, point: Point<Pixels>) -> Result<ParagraphPosition>
Find a logical boundary at a local point.
Sourcefn caret_bounds(&self, position: ParagraphPosition) -> Result<Bounds<Pixels>>
fn caret_bounds(&self, position: ParagraphPosition) -> Result<Bounds<Pixels>>
A one-pixel caret; invalid positions return an error.
Sourcefn move_visual(
&self,
position: ParagraphPosition,
direction: VisualDirection,
) -> Result<ParagraphPosition>
fn move_visual( &self, position: ParagraphPosition, direction: VisualDirection, ) -> Result<ParagraphPosition>
Move to a neighboring visual cluster boundary.
Sourcefn selection_bounds(
&self,
anchor: ParagraphPosition,
focus: ParagraphPosition,
) -> Result<Vec<Bounds<Pixels>>>
fn selection_bounds( &self, anchor: ParagraphPosition, focus: ParagraphPosition, ) -> Result<Vec<Bounds<Pixels>>>
Possibly discontiguous selection rectangles.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".