Struct cosmic::iced_widget::renderer::graphics::text::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) -> 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.
sourcepub 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.
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<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
source§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§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)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
source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§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
.source§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
.source§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.source§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.source§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.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, 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
.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> 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> 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> Pointable for T
impl<T> Pointable for T
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