Struct Buffer
pub struct Buffer {
pub lines: Vec<BufferLine>,
/* private fields */
}Expand description
A buffer of text that is shaped and laid out
Fields§
§lines: Vec<BufferLine>BufferLines (or paragraphs) of text in the buffer
Implementations§
§impl Buffer
impl Buffer
pub fn new_empty(metrics: Metrics) -> Buffer
pub fn new_empty(metrics: Metrics) -> Buffer
Create an empty Buffer with the provided Metrics.
This is useful for initializing a Buffer without a FontSystem.
You must populate the Buffer with at least one BufferLine before shaping and layout,
for example by calling Buffer::set_text.
If you have a FontSystem in scope, you should use Buffer::new instead.
§Panics
Will panic if metrics.line_height is zero.
pub fn new(font_system: &mut FontSystem, metrics: Metrics) -> Buffer
pub fn new(font_system: &mut FontSystem, metrics: Metrics) -> Buffer
Create a new Buffer with the provided FontSystem and Metrics
§Panics
Will panic if metrics.line_height is zero.
pub fn borrow_with<'a>(
&'a mut self,
font_system: &'a mut FontSystem,
) -> BorrowedWithFontSystem<'a, Buffer>
pub fn borrow_with<'a>( &'a mut self, font_system: &'a mut FontSystem, ) -> BorrowedWithFontSystem<'a, Buffer>
Mutably borrows the buffer together with an FontSystem for more convenient methods
pub fn shape_until_cursor(
&mut self,
font_system: &mut FontSystem,
cursor: Cursor,
prune: bool,
)
pub fn shape_until_cursor( &mut self, font_system: &mut FontSystem, cursor: Cursor, prune: bool, )
Shape lines until cursor, also scrolling to include cursor in view
pub fn shape_until_scroll(&mut self, font_system: &mut FontSystem, prune: bool)
pub fn shape_until_scroll(&mut self, font_system: &mut FontSystem, prune: bool)
Shape lines until scroll, resolving any pending dirty state first.
This processes dirty flags (invalidating caches for lines that need reshaping or relayout) and then shapes/layouts visible lines.
Call this before reading layout results via layout_runs or hit
when working with the Buffer directly. The BorrowedWithFontSystem
wrapper calls this automatically.
pub fn layout_cursor(
&mut self,
font_system: &mut FontSystem,
cursor: Cursor,
) -> Option<LayoutCursor>
pub fn layout_cursor( &mut self, font_system: &mut FontSystem, cursor: Cursor, ) -> Option<LayoutCursor>
Convert a Cursor to a LayoutCursor
pub fn line_shape(
&mut self,
font_system: &mut FontSystem,
line_i: usize,
) -> Option<&ShapeLine>
pub fn line_shape( &mut self, font_system: &mut FontSystem, line_i: usize, ) -> Option<&ShapeLine>
Shape the provided line index and return the result
pub fn line_layout(
&mut self,
font_system: &mut FontSystem,
line_i: usize,
) -> Option<&[LayoutLine]>
pub fn line_layout( &mut self, font_system: &mut FontSystem, line_i: usize, ) -> Option<&[LayoutLine]>
Lay out the provided line index and return the result
pub fn set_metrics(&mut self, metrics: Metrics)
pub fn set_metrics(&mut self, metrics: Metrics)
pub fn set_hinting(&mut self, hinting: Hinting)
pub fn set_hinting(&mut self, hinting: Hinting)
Set the current Hinting strategy.
pub fn set_ellipsize(&mut self, ellipsize: Ellipsize)
pub fn set_ellipsize(&mut self, ellipsize: Ellipsize)
Set the current Ellipsize.
pub const fn monospace_width(&self) -> Option<f32>
pub const fn monospace_width(&self) -> Option<f32>
Get the current monospace_width
pub fn set_monospace_width(&mut self, monospace_width: Option<f32>)
pub fn set_monospace_width(&mut self, monospace_width: Option<f32>)
Set monospace width monospace glyphs should be resized to match. None means don’t resize.
pub fn set_tab_width(&mut self, tab_width: u16)
pub fn set_tab_width(&mut self, tab_width: u16)
Set tab width (number of spaces between tab stops).
pub const fn size(&self) -> (Option<f32>, Option<f32>)
pub const fn size(&self) -> (Option<f32>, Option<f32>)
Get the current buffer dimensions (width, height)
pub fn set_size(&mut self, width_opt: Option<f32>, height_opt: Option<f32>)
pub fn set_size(&mut self, width_opt: Option<f32>, height_opt: Option<f32>)
Set the current buffer dimensions.
pub fn set_metrics_and_size(
&mut self,
metrics: Metrics,
width_opt: Option<f32>,
height_opt: Option<f32>,
)
pub fn set_metrics_and_size( &mut self, metrics: Metrics, width_opt: Option<f32>, height_opt: Option<f32>, )
pub fn set_scroll(&mut self, scroll: Scroll)
pub fn set_scroll(&mut self, scroll: Scroll)
Set the current scroll location
pub fn set_text(
&mut self,
text: &str,
attrs: &Attrs<'_>,
shaping: Shaping,
alignment: Option<Align>,
)
pub fn set_text( &mut self, text: &str, attrs: &Attrs<'_>, shaping: Shaping, alignment: Option<Align>, )
Set text of buffer, using provided attributes for each line by default.
pub fn set_rich_text<'r, 's, I>(
&mut self,
spans: I,
default_attrs: &Attrs<'_>,
shaping: Shaping,
alignment: Option<Align>,
)
pub fn set_rich_text<'r, 's, I>( &mut self, spans: I, default_attrs: &Attrs<'_>, shaping: Shaping, alignment: Option<Align>, )
Set text of buffer, using an iterator of styled spans (pairs of text and attributes).
let mut buffer = Buffer::new_empty(Metrics::new(32.0, 44.0));
let attrs = Attrs::new().family(Family::Serif);
buffer.set_rich_text(
[
("hello, ", attrs.clone()),
("cosmic\ntext", attrs.clone().family(Family::Monospace)),
],
&attrs,
Shaping::Advanced,
None,
);pub fn set_redraw(&mut self, redraw: bool)
pub fn set_redraw(&mut self, redraw: bool)
Set redraw needed flag
pub fn layout_runs(&self) -> LayoutRunIter<'_> ⓘ
pub fn layout_runs(&self) -> LayoutRunIter<'_> ⓘ
Get the visible layout runs for rendering and other tasks.
This returns an iterator over the laid-out runs that are visible in the
current scroll region. Call shape_until_scroll first to ensure the buffer
is up to date, or use BorrowedWithFontSystem which calls it
automatically.
pub fn hit(&self, x: f32, y: f32) -> Option<Cursor>
pub fn hit(&self, x: f32, y: f32) -> Option<Cursor>
Convert x, y position to Cursor (hit detection).
Call shape_until_scroll first to ensure the buffer is up to date,
or use BorrowedWithFontSystem which calls it automatically.
pub fn cursor_position(&self, cursor: &Cursor) -> Option<(f32, f32)>
pub fn cursor_position(&self, cursor: &Cursor) -> Option<(f32, f32)>
Returns the visual (x, y) position of a cursor within the buffer.
y is the top of the line containing the cursor.
This is a convenience wrapper around LayoutRun::cursor_position.
pub fn is_rtl(&self, line: usize) -> Option<bool>
pub fn is_rtl(&self, line: usize) -> Option<bool>
Returns if the text direction for a given line is RTL
Returns None if the line doesn’t exist or hasn’t been shaped yet.
pub fn cursor_motion(
&mut self,
font_system: &mut FontSystem,
cursor: Cursor,
cursor_x_opt: Option<i32>,
motion: Motion,
) -> Option<(Cursor, Option<i32>)>
pub fn cursor_motion( &mut self, font_system: &mut FontSystem, cursor: Cursor, cursor_x_opt: Option<i32>, motion: Motion, ) -> Option<(Cursor, Option<i32>)>
pub fn draw<F>(
&mut self,
font_system: &mut FontSystem,
cache: &mut SwashCache,
color: Color,
callback: F,
)
pub fn draw<F>( &mut self, font_system: &mut FontSystem, cache: &mut SwashCache, color: Color, callback: F, )
Draw the buffer.
Automatically resolves any pending dirty state before drawing.
pub fn render<R>(
&mut self,
font_system: &mut FontSystem,
renderer: &mut R,
color: Color,
)where
R: Renderer,
pub fn render<R>(
&mut self,
font_system: &mut FontSystem,
renderer: &mut R,
color: Color,
)where
R: Renderer,
Render the buffer using the provided renderer.
Automatically resolves any pending dirty state before rendering.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Buffer
impl RefUnwindSafe for Buffer
impl Send for Buffer
impl Sync for Buffer
impl Unpin for Buffer
impl UnwindSafe for Buffer
Blanket Implementations§
Source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
Source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
§impl<T, Res> Apply<Res> for Twhere
T: ?Sized,
impl<T, Res> Apply<Res> for Twhere
T: ?Sized,
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
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<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other into Self, while performing the appropriate scaling,
rounding and clamping.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T.§impl<State, Message> IntoBoot<State, Message> for State
impl<State, Message> IntoBoot<State, Message> for State
§fn into_boot(self) -> (State, Task<Message>)
fn into_boot(self) -> (State, Task<Message>)
Application.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
Source§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self into T, while performing the appropriate scaling,
rounding and clamping.Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds error is returned which contains
the unclamped color. Read more