Use generic Content in Text to avoid reallocation in fill_text
This commit is contained in:
parent
c7a4fad4a2
commit
6216c513d5
10 changed files with 22 additions and 20 deletions
|
|
@ -67,7 +67,7 @@ impl text::Renderer for () {
|
|||
|
||||
fn fill_text(
|
||||
&mut self,
|
||||
_paragraph: Text<'_, Self::Font>,
|
||||
_paragraph: Text,
|
||||
_position: Point,
|
||||
_color: Color,
|
||||
_clip_bounds: Rectangle,
|
||||
|
|
@ -78,11 +78,11 @@ impl text::Renderer for () {
|
|||
impl text::Paragraph for () {
|
||||
type Font = Font;
|
||||
|
||||
fn with_text(_text: Text<'_, Self::Font>) -> Self {}
|
||||
fn with_text(_text: Text<&str>) -> Self {}
|
||||
|
||||
fn resize(&mut self, _new_bounds: Size) {}
|
||||
|
||||
fn compare(&self, _text: Text<'_, Self::Font>) -> text::Difference {
|
||||
fn compare(&self, _text: Text<&str>) -> text::Difference {
|
||||
text::Difference::None
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -16,9 +16,9 @@ use std::hash::{Hash, Hasher};
|
|||
|
||||
/// A paragraph.
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
pub struct Text<'a, Font> {
|
||||
pub struct Text<Content = String, Font = crate::Font> {
|
||||
/// The content of the paragraph.
|
||||
pub content: &'a str,
|
||||
pub content: Content,
|
||||
|
||||
/// The bounds of the paragraph.
|
||||
pub bounds: Size,
|
||||
|
|
@ -219,7 +219,7 @@ pub trait Renderer: crate::Renderer {
|
|||
/// [`Color`].
|
||||
fn fill_text(
|
||||
&mut self,
|
||||
text: Text<'_, Self::Font>,
|
||||
text: Text<String, Self::Font>,
|
||||
position: Point,
|
||||
color: Color,
|
||||
clip_bounds: Rectangle,
|
||||
|
|
|
|||
|
|
@ -8,14 +8,14 @@ pub trait Paragraph: Sized + Default {
|
|||
type Font: Copy + PartialEq;
|
||||
|
||||
/// Creates a new [`Paragraph`] laid out with the given [`Text`].
|
||||
fn with_text(text: Text<'_, Self::Font>) -> Self;
|
||||
fn with_text(text: Text<&str, Self::Font>) -> Self;
|
||||
|
||||
/// Lays out the [`Paragraph`] with some new boundaries.
|
||||
fn resize(&mut self, new_bounds: Size);
|
||||
|
||||
/// Compares the [`Paragraph`] with some desired [`Text`] and returns the
|
||||
/// [`Difference`].
|
||||
fn compare(&self, text: Text<'_, Self::Font>) -> Difference;
|
||||
fn compare(&self, text: Text<&str, Self::Font>) -> Difference;
|
||||
|
||||
/// Returns the horizontal alignment of the [`Paragraph`].
|
||||
fn horizontal_alignment(&self) -> alignment::Horizontal;
|
||||
|
|
@ -35,7 +35,7 @@ pub trait Paragraph: Sized + Default {
|
|||
fn grapheme_position(&self, line: usize, index: usize) -> Option<Point>;
|
||||
|
||||
/// Updates the [`Paragraph`] to match the given [`Text`], if needed.
|
||||
fn update(&mut self, text: Text<'_, Self::Font>) {
|
||||
fn update(&mut self, text: Text<&str, Self::Font>) {
|
||||
match self.compare(text) {
|
||||
Difference::None => {}
|
||||
Difference::Bounds => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue