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/
This commit is contained in:
parent
b5f102c558
commit
faa7627ea4
16 changed files with 99 additions and 30 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue