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§
source§impl Buffer
impl Buffer
sourcepub fn new_empty(metrics: Metrics) -> Self
pub fn new_empty(metrics: Metrics) -> Self
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.
sourcepub fn new(font_system: &mut FontSystem, metrics: Metrics) -> Self
pub fn new(font_system: &mut FontSystem, metrics: Metrics) -> Self
Create a new Buffer
with the provided FontSystem
and Metrics
§Panics
Will panic if metrics.line_height
is zero.
sourcepub 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
sourcepub 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
sourcepub 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
sourcepub 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
sourcepub 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
sourcepub 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
sourcepub fn set_metrics(&mut self, font_system: &mut FontSystem, metrics: Metrics)
pub fn set_metrics(&mut self, font_system: &mut FontSystem, metrics: Metrics)
sourcepub fn set_wrap(&mut self, font_system: &mut FontSystem, wrap: Wrap)
pub fn set_wrap(&mut self, font_system: &mut FontSystem, wrap: Wrap)
Set the current Wrap
sourcepub fn monospace_width(&self) -> Option<f32>
pub fn monospace_width(&self) -> Option<f32>
Get the current monospace_width
sourcepub fn set_monospace_width(
&mut self,
font_system: &mut FontSystem,
monospace_width: Option<f32>,
)
pub fn set_monospace_width( &mut self, font_system: &mut FontSystem, monospace_width: Option<f32>, )
Set monospace width monospace glyphs should be resized to match. None
means don’t resize
sourcepub fn set_tab_width(&mut self, font_system: &mut FontSystem, tab_width: u16)
pub fn set_tab_width(&mut self, font_system: &mut FontSystem, tab_width: u16)
Set tab width (number of spaces between tab stops)
sourcepub fn size(&self) -> (Option<f32>, Option<f32>)
pub fn size(&self) -> (Option<f32>, Option<f32>)
Get the current buffer dimensions (width, height)
sourcepub fn set_size(
&mut self,
font_system: &mut FontSystem,
width_opt: Option<f32>,
height_opt: Option<f32>,
)
pub fn set_size( &mut self, font_system: &mut FontSystem, width_opt: Option<f32>, height_opt: Option<f32>, )
Set the current buffer dimensions
sourcepub fn set_metrics_and_size(
&mut self,
font_system: &mut FontSystem,
metrics: Metrics,
width_opt: Option<f32>,
height_opt: Option<f32>,
)
pub fn set_metrics_and_size( &mut self, font_system: &mut FontSystem, metrics: Metrics, width_opt: Option<f32>, height_opt: Option<f32>, )
sourcepub fn set_scroll(&mut self, scroll: Scroll)
pub fn set_scroll(&mut self, scroll: Scroll)
Set the current scroll location
sourcepub fn set_text(
&mut self,
font_system: &mut FontSystem,
text: &str,
attrs: Attrs<'_>,
shaping: Shaping,
)
pub fn set_text( &mut self, font_system: &mut FontSystem, text: &str, attrs: Attrs<'_>, shaping: Shaping, )
Set text of buffer, using provided attributes for each line by default
sourcepub fn set_rich_text<'r, 's, I>(
&mut self,
font_system: &mut FontSystem,
spans: I,
default_attrs: Attrs<'_>,
shaping: Shaping,
alignment: Option<Align>,
)
pub fn set_rich_text<'r, 's, I>( &mut self, font_system: &mut FontSystem, 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(
&mut font_system,
[
("hello, ", attrs),
("cosmic\ntext", attrs.family(Family::Monospace)),
],
attrs,
Shaping::Advanced,
None,
);
sourcepub fn set_redraw(&mut self, redraw: bool)
pub fn set_redraw(&mut self, redraw: bool)
Set redraw needed flag
sourcepub fn layout_runs(&self) -> LayoutRunIter<'_> ⓘ
pub fn layout_runs(&self) -> LayoutRunIter<'_> ⓘ
Get the visible layout runs for rendering and other tasks
sourcepub 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)
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<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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)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 more