Fix gamma correction for colored glyphs in iced_wgpu

This commit is contained in:
Héctor Ramón Jiménez 2023-09-19 23:00:20 +02:00
parent 9af0a27e67
commit be340a8cd8
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
4 changed files with 43 additions and 14 deletions

View file

@ -1,6 +1,7 @@
use crate::core::alignment;
use crate::core::text::{LineHeight, Shaping};
use crate::core::{Color, Font, Pixels, Point, Rectangle};
use crate::graphics::color;
use crate::graphics::text::cache::{self, Cache};
use crate::graphics::text::editor;
use crate::graphics::text::font_system;
@ -216,7 +217,18 @@ fn draw(
fn from_color(color: cosmic_text::Color) -> Color {
let [r, g, b, a] = color.as_rgba();
Color::from_rgba8(r, g, b, a as f32 / 255.0)
if color::GAMMA_CORRECTION {
// `cosmic_text::Color` is linear RGB in this case, so we
// need to convert back to sRGB
Color::from_linear_rgba(
r as f32 / 255.0,
g as f32 / 255.0,
b as f32 / 255.0,
a as f32 / 255.0,
)
} else {
Color::from_rgba8(r, g, b, a as f32 / 255.0)
}
}
#[derive(Debug, Clone, Default)]