gpui: Fix SVG color render, when color have alpha (#20537)
Release Notes: - N/A ## Demo - [Source SVG](https://github.com/user-attachments/assets/1c681e01-baba-4613-a3e7-ea5cb3015406) click here open in browser. | Before | After | | --- | --- | | <img width="1212" alt="image" src="https://github.com/user-attachments/assets/ba323b13-538b-4a34-bb64-9dcf490aface"> | <img width="1212" alt="image" src="https://github.com/user-attachments/assets/4635926a-843e-426d-89a1-4e9b4f4cc37e"> | --------- Co-authored-by: Floyd Wang <gassnake999@gmail.com>
This commit is contained in:
parent
65a9c8d994
commit
932c7e23c8
4 changed files with 24 additions and 17 deletions
|
@ -22,6 +22,17 @@ pub fn rgba(hex: u32) -> Rgba {
|
|||
Rgba { r, g, b, a }
|
||||
}
|
||||
|
||||
/// Swap from RGBA with premultiplied alpha to BGRA
|
||||
pub(crate) fn swap_rgba_pa_to_bgra(color: &mut [u8]) {
|
||||
color.swap(0, 2);
|
||||
if color[3] > 0 {
|
||||
let a = color[3] as f32 / 255.;
|
||||
color[0] = (color[0] as f32 / a) as u8;
|
||||
color[1] = (color[1] as f32 / a) as u8;
|
||||
color[2] = (color[2] as f32 / a) as u8;
|
||||
}
|
||||
}
|
||||
|
||||
/// An RGBA color
|
||||
#[derive(PartialEq, Clone, Copy, Default)]
|
||||
pub struct Rgba {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue