Fix gamma correction for colored glyphs in iced_wgpu
This commit is contained in:
parent
9af0a27e67
commit
be340a8cd8
4 changed files with 43 additions and 14 deletions
|
|
@ -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)]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue