Reuse text buffers independently of color in iced_wgpu

This commit is contained in:
Héctor Ramón Jiménez 2023-02-27 03:40:58 +01:00
parent 368cadd25a
commit 11b2c3bbe3
No known key found for this signature in database
GPG key ID: 140CC052C94F138E
2 changed files with 12 additions and 18 deletions

View file

@ -60,7 +60,7 @@ path = "../graphics"
[dependencies.glyphon] [dependencies.glyphon]
version = "0.2" version = "0.2"
git = "https://github.com/hecrj/glyphon.git" git = "https://github.com/hecrj/glyphon.git"
rev = "65b481d758f50fd13fc21af2cc5ef62ddee64955" rev = "810bc979f9005e2bd343b72b980e57e46174283f"
[dependencies.tracing] [dependencies.tracing]
version = "0.1.6" version = "0.1.6"

View file

@ -2,7 +2,7 @@ pub use iced_native::text::Hit;
use iced_graphics::layer::Text; use iced_graphics::layer::Text;
use iced_native::alignment; use iced_native::alignment;
use iced_native::{Color, Font, Rectangle, Size}; use iced_native::{Font, Rectangle, Size};
use rustc_hash::{FxHashMap, FxHashSet}; use rustc_hash::{FxHashMap, FxHashSet};
use std::borrow::Cow; use std::borrow::Cow;
@ -110,7 +110,6 @@ impl Pipeline {
height: (section.bounds.height * scale_factor) height: (section.bounds.height * scale_factor)
.ceil(), .ceil(),
}, },
color: section.color,
}, },
); );
@ -162,6 +161,16 @@ impl Pipeline {
left: left as i32, left: left as i32,
top: top as i32, top: top as i32,
bounds, bounds,
default_color: {
let [r, g, b, a] = section.color.into_linear();
glyphon::Color::rgba(
(r * 255.0) as u8,
(g * 255.0) as u8,
(b * 255.0) as u8,
(a * 255.0) as u8,
)
},
} }
}); });
@ -174,7 +183,6 @@ impl Pipeline {
height: target_size.height, height: target_size.height,
}, },
text_areas, text_areas,
glyphon::Color::rgb(0, 0, 0),
&mut glyphon::SwashCache::new(fields.fonts), &mut glyphon::SwashCache::new(fields.fonts),
); );
@ -249,7 +257,6 @@ impl Pipeline {
size, size,
font, font,
bounds, bounds,
color: Color::BLACK,
}, },
); );
@ -283,7 +290,6 @@ impl Pipeline {
size, size,
font, font,
bounds, bounds,
color: Color::BLACK,
}, },
); );
@ -354,7 +360,6 @@ impl<'a> Cache<'a> {
key.font.hash(&mut hasher); key.font.hash(&mut hasher);
key.bounds.width.to_bits().hash(&mut hasher); key.bounds.width.to_bits().hash(&mut hasher);
key.bounds.height.to_bits().hash(&mut hasher); key.bounds.height.to_bits().hash(&mut hasher);
key.color.into_rgba8().hash(&mut hasher);
hasher.finish() hasher.finish()
}; };
@ -371,16 +376,6 @@ impl<'a> Cache<'a> {
key.content, key.content,
glyphon::Attrs::new() glyphon::Attrs::new()
.family(to_family(key.font)) .family(to_family(key.font))
.color({
let [r, g, b, a] = key.color.into_linear();
glyphon::Color::rgba(
(r * 255.0) as u8,
(g * 255.0) as u8,
(b * 255.0) as u8,
(a * 255.0) as u8,
)
})
.monospaced(matches!(key.font, Font::Monospace)), .monospaced(matches!(key.font, Font::Monospace)),
); );
@ -412,7 +407,6 @@ struct Key<'a> {
size: f32, size: f32,
font: Font, font: Font,
bounds: Size, bounds: Size,
color: Color,
} }
type KeyHash = u64; type KeyHash = u64;