Struct cosmic_text::Buffer
source · 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_size(
&mut self,
font_system: &mut FontSystem,
width: f32,
height: f32
)
pub fn set_size( &mut self, font_system: &mut FontSystem, width: f32, height: f32 )
Set the current buffer dimensions
sourcepub fn set_metrics_and_size(
&mut self,
font_system: &mut FontSystem,
metrics: Metrics,
width: f32,
height: f32
)
pub fn set_metrics_and_size( &mut self, font_system: &mut FontSystem, metrics: Metrics, width: f32, height: f32 )
sourcepub fn set_scroll(&mut self, scroll: Scroll)
pub fn set_scroll(&mut self, scroll: Scroll)
Set the current scroll location
sourcepub fn visible_lines(&self) -> i32
pub fn visible_lines(&self) -> i32
Get the number of lines that can be viewed in the buffer
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
)
pub fn set_rich_text<'r, 's, I>( &mut self, font_system: &mut FontSystem, spans: I, default_attrs: Attrs<'_>, shaping: Shaping )
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,
);
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)