pub struct LineLayout {
pub font_size: Pixels,
pub width: Pixels,
pub ascent: Pixels,
pub descent: Pixels,
pub runs: Vec<ShapedRun>,
pub len: usize,
}Expand description
A laid out and styled line of text
Fields§
§font_size: PixelsThe font size for this line
width: PixelsThe width of the line
ascent: PixelsThe ascent of the line
descent: PixelsThe descent of the line
runs: Vec<ShapedRun>The shaped runs that make up this line
len: usizeThe length of the line in utf-8 bytes
Implementations§
Source§impl LineLayout
impl LineLayout
Sourcepub fn paint(
&self,
origin: Point<Pixels>,
line_height: Pixels,
align: TextAlign,
align_width: Option<Pixels>,
decoration_runs: &[DecorationRun],
window: &mut Window,
cx: &mut App,
) -> Result<()>
pub fn paint( &self, origin: Point<Pixels>, line_height: Pixels, align: TextAlign, align_width: Option<Pixels>, decoration_runs: &[DecorationRun], window: &mut Window, cx: &mut App, ) -> Result<()>
Paint this layout to the window, using the given decoration runs to color glyphs and draw underlines and strikethroughs.
This is a lower-level alternative to ShapedLine::paint for callers that
hold a bare layout and track decorations themselves.
Sourcepub fn paint_background(
&self,
origin: Point<Pixels>,
line_height: Pixels,
align: TextAlign,
align_width: Option<Pixels>,
decoration_runs: &[DecorationRun],
window: &mut Window,
cx: &mut App,
) -> Result<()>
pub fn paint_background( &self, origin: Point<Pixels>, line_height: Pixels, align: TextAlign, align_width: Option<Pixels>, decoration_runs: &[DecorationRun], window: &mut Window, cx: &mut App, ) -> Result<()>
Paint the background of this layout to the window, using the given decoration runs to determine background colors.
This is a lower-level alternative to ShapedLine::paint_background for
callers that hold a bare layout and track decorations themselves.
Source§impl LineLayout
impl LineLayout
Sourcepub fn index_for_x(&self, x: Pixels) -> Option<usize>
pub fn index_for_x(&self, x: Pixels) -> Option<usize>
The index for the character at the given x coordinate
Sourcepub fn closest_index_for_x(&self, x: Pixels) -> usize
pub fn closest_index_for_x(&self, x: Pixels) -> usize
closest_index_for_x returns the character boundary closest to the given x coordinate (e.g. to handle aligning up/down arrow keys)
Sourcepub fn x_for_index(&self, index: usize) -> Pixels
pub fn x_for_index(&self, index: usize) -> Pixels
The x position of the character at the given index
Sourcepub fn font_id_for_index(&self, index: usize) -> Option<FontId>
pub fn font_id_for_index(&self, index: usize) -> Option<FontId>
The corresponding Font at the given index
Sourcepub fn split_at(&self, byte_index: usize) -> (LineLayout, LineLayout)
pub fn split_at(&self, byte_index: usize) -> (LineLayout, LineLayout)
Split this layout at a byte index, returning (prefix, suffix).
prefixcontains glyphs for bytes[0, byte_index)with original positions. Its width equals the x-advance up to the split point.suffixcontains glyphs for bytes[byte_index, len)with positions shifted left so the first glyph starts at x=0, and byte indices rebased to 0.font_size,ascent, anddescentare copied to both halves.
Trait Implementations§
Source§impl Debug for LineLayout
impl Debug for LineLayout
Source§impl Default for LineLayout
impl Default for LineLayout
Source§fn default() -> LineLayout
fn default() -> LineLayout
Auto Trait Implementations§
impl Freeze for LineLayout
impl RefUnwindSafe for LineLayout
impl Send for LineLayout
impl Sync for LineLayout
impl Unpin for LineLayout
impl UnsafeUnpin for LineLayout
impl UnwindSafe for LineLayout
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian().