diff options
author | 2024-01-12 06:45:40 +0100 | |
---|---|---|
committer | 2024-01-12 06:45:40 +0100 | |
commit | a5ae442819227b3cd55116028e6d6c96caa6fda9 (patch) | |
tree | 111e7b424a2c7044f8d98612015540282bf2ca8a /wgpu/src/text.rs | |
parent | 89fc4f54bdbf62a29fcd06bc2e77926180143413 (diff) | |
parent | 603832e66c710ea39a95009ddc905de20c6856bd (diff) | |
download | iced-a5ae442819227b3cd55116028e6d6c96caa6fda9.tar.gz iced-a5ae442819227b3cd55116028e6d6c96caa6fda9.tar.bz2 iced-a5ae442819227b3cd55116028e6d6c96caa6fda9.zip |
Merge pull request #2158 from iced-rs/feature/raw-text-primitive
Introduce `RawText` to `Primitive` in `iced_graphics`
Diffstat (limited to 'wgpu/src/text.rs')
-rw-r--r-- | wgpu/src/text.rs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/wgpu/src/text.rs b/wgpu/src/text.rs index 888b1924..dca09cb8 100644 --- a/wgpu/src/text.rs +++ b/wgpu/src/text.rs @@ -7,6 +7,7 @@ use crate::layer::Text; use std::borrow::Cow; use std::cell::RefCell; +use std::sync::Arc; #[allow(missing_debug_implementations)] pub struct Pipeline { @@ -76,6 +77,7 @@ impl Pipeline { Paragraph(Paragraph), Editor(Editor), Cache(cache::KeyHash), + Raw(Arc<glyphon::Buffer>), } let allocations: Vec<_> = sections @@ -107,6 +109,7 @@ impl Pipeline { Some(Allocation::Cache(key)) } + Text::Raw(text) => text.buffer.upgrade().map(Allocation::Raw), }) .collect(); @@ -185,6 +188,25 @@ impl Pipeline { text.clip_bounds, ) } + Text::Raw(text) => { + let Some(Allocation::Raw(buffer)) = allocation else { + return None; + }; + + let (width, height) = buffer.size(); + + ( + buffer.as_ref(), + Rectangle::new( + text.position, + Size::new(width, height), + ), + alignment::Horizontal::Left, + alignment::Vertical::Top, + text.color, + text.clip_bounds, + ) + } }; let bounds = bounds * scale_factor; |