diff options
| author | 2023-09-12 14:51:00 +0200 | |
|---|---|---|
| committer | 2023-09-12 14:51:00 +0200 | |
| commit | 6448429103c9c82b90040ac5a5a097bdded23f82 (patch) | |
| tree | 79582bde4a7d6df71df0abefe35146b06452409f /wgpu/src/text.rs | |
| parent | 346af3f8b0baa418fd37b878bc2930ff0bd57cc0 (diff) | |
| download | iced-6448429103c9c82b90040ac5a5a097bdded23f82.tar.gz iced-6448429103c9c82b90040ac5a5a097bdded23f82.tar.bz2 iced-6448429103c9c82b90040ac5a5a097bdded23f82.zip | |
Draft `Editor` API and `TextEditor` widget
Diffstat (limited to 'wgpu/src/text.rs')
| -rw-r--r-- | wgpu/src/text.rs | 28 | 
1 files changed, 25 insertions, 3 deletions
| diff --git a/wgpu/src/text.rs b/wgpu/src/text.rs index 5c9f4d7e..397c38dd 100644 --- a/wgpu/src/text.rs +++ b/wgpu/src/text.rs @@ -2,7 +2,7 @@ use crate::core::alignment;  use crate::core::{Rectangle, Size};  use crate::graphics::color;  use crate::graphics::text::cache::{self, Cache}; -use crate::graphics::text::{font_system, Paragraph}; +use crate::graphics::text::{font_system, Editor, Paragraph};  use crate::layer::Text;  use std::borrow::Cow; @@ -74,15 +74,19 @@ impl Pipeline {          enum Allocation {              Paragraph(Paragraph), +            Editor(Editor),              Cache(cache::KeyHash),          }          let allocations: Vec<_> = sections              .iter()              .map(|section| match section { -                Text::Managed { paragraph, .. } => { +                Text::Paragraph { paragraph, .. } => {                      paragraph.upgrade().map(Allocation::Paragraph)                  } +                Text::Editor { editor, .. } => { +                    editor.upgrade().map(Allocation::Editor) +                }                  Text::Cached(text) => {                      let (key, _) = cache.allocate(                          font_system, @@ -117,7 +121,7 @@ impl Pipeline {                      vertical_alignment,                      color,                  ) = match section { -                    Text::Managed { +                    Text::Paragraph {                          position, color, ..                      } => {                          use crate::core::text::Paragraph as _; @@ -135,6 +139,24 @@ impl Pipeline {                              *color,                          )                      } +                    Text::Editor { +                        position, color, .. +                    } => { +                        use crate::core::text::Editor as _; + +                        let Some(Allocation::Editor(editor)) = allocation +                        else { +                            return None; +                        }; + +                        ( +                            editor.buffer(), +                            Rectangle::new(*position, editor.min_bounds()), +                            alignment::Horizontal::Left, +                            alignment::Vertical::Top, +                            *color, +                        ) +                    }                      Text::Cached(text) => {                          let Some(Allocation::Cache(key)) = allocation else {                              return None; | 
