summaryrefslogtreecommitdiffstats
path: root/wgpu/src/geometry.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-05-31 21:31:58 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-05-31 21:31:58 +0200
commitfaa7627ea41b1ce372bae7f0d2ae36e9b15a97a3 (patch)
treea4e8dfb4fb901bdf8fa401b45601af6cf44c4567 /wgpu/src/geometry.rs
parentb5f102c55835cf42427f9f8672634e81a5d724f6 (diff)
downloadiced-faa7627ea41b1ce372bae7f0d2ae36e9b15a97a3.tar.gz
iced-faa7627ea41b1ce372bae7f0d2ae36e9b15a97a3.tar.bz2
iced-faa7627ea41b1ce372bae7f0d2ae36e9b15a97a3.zip
Introduce `web-colors` feature flag to enable sRGB linear blending
This is how browsers perform color management. They treat gamma-corrected sRGB colors as if they were linear RGB. Correctness aside, this mode is introduced for legacy reasons. Most UI/UX tooling uses this color management as well, and many have created an intuition about how color should behave from interacting with a browser. This feature flag should facilitate application development with `iced` in those cases. More details: https://webcolorisstillbroken.com/
Diffstat (limited to 'wgpu/src/geometry.rs')
-rw-r--r--wgpu/src/geometry.rs7
1 files changed, 4 insertions, 3 deletions
diff --git a/wgpu/src/geometry.rs b/wgpu/src/geometry.rs
index 740ec20c..f81b5b2f 100644
--- a/wgpu/src/geometry.rs
+++ b/wgpu/src/geometry.rs
@@ -1,5 +1,6 @@
//! Build and draw geometry.
use crate::core::{Point, Rectangle, Size, Vector};
+use crate::graphics::color;
use crate::graphics::geometry::fill::{self, Fill};
use crate::graphics::geometry::{
LineCap, LineDash, LineJoin, Path, Stroke, Style, Text,
@@ -68,7 +69,7 @@ impl BufferStack {
(Style::Solid(color), Buffer::Solid(buffer)) => {
Box::new(tessellation::BuffersBuilder::new(
buffer,
- TriangleVertex2DBuilder(color.into_linear()),
+ TriangleVertex2DBuilder(color::pack(*color)),
))
}
(Style::Gradient(gradient), Buffer::Gradient(buffer)) => {
@@ -91,7 +92,7 @@ impl BufferStack {
(Style::Solid(color), Buffer::Solid(buffer)) => {
Box::new(tessellation::BuffersBuilder::new(
buffer,
- TriangleVertex2DBuilder(color.into_linear()),
+ TriangleVertex2DBuilder(color::pack(*color)),
))
}
(Style::Gradient(gradient), Buffer::Gradient(buffer)) => {
@@ -526,7 +527,7 @@ impl tessellation::StrokeVertexConstructor<primitive::GradientVertex2D>
}
}
-struct TriangleVertex2DBuilder([f32; 4]);
+struct TriangleVertex2DBuilder(color::Packed);
impl tessellation::FillVertexConstructor<primitive::ColoredVertex2D>
for TriangleVertex2DBuilder