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>
BufferLine
s (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)