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
|
|
@ -5,6 +5,7 @@ use gradient::Gradient;
|
|||
use solid::Solid;
|
||||
|
||||
use crate::core::{Background, Rectangle};
|
||||
use crate::graphics::color;
|
||||
use crate::graphics::{self, Transformation};
|
||||
|
||||
use bytemuck::{Pod, Zeroable};
|
||||
|
|
@ -217,7 +218,7 @@ pub struct Quad {
|
|||
pub size: [f32; 2],
|
||||
|
||||
/// The border color of the [`Quad`], in __linear RGB__.
|
||||
pub border_color: [f32; 4],
|
||||
pub border_color: color::Packed,
|
||||
|
||||
/// The border radii of the [`Quad`].
|
||||
pub border_radius: [f32; 4],
|
||||
|
|
@ -250,7 +251,7 @@ impl Batch {
|
|||
let kind = match background {
|
||||
Background::Color(color) => {
|
||||
self.solids.push(Solid {
|
||||
color: color.into_linear(),
|
||||
color: color::pack(*color),
|
||||
quad,
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue