Skip to repository content

tenant.openagents/omega

No repository description is available.

OpenAgents Git authority 2026-07-28T05:06:29.373Z Public web read
NIP-34 coordinate30617:7649603503856e5148d571eac2766b288a8ff1e9e35d380337a1d2b0015b4f92:omega
MaintainersHidden in public view
References2 branches · 1 tag
Read-only clonegit clone https://openagents.com/git/tenant.openagents/omega.git
Browse files

color.rs

57 lines · 1.5 KB · rust
1use anyhow::Result;
2use gpui::Hsla;
3use palette::FromColor;
4
5#[allow(unused)]
6pub(crate) fn try_parse_color(color: &str) -> Result<Hsla> {
7    let rgba = gpui::Rgba::try_from(color)?;
8    let rgba = palette::rgb::Srgba::from_components((rgba.r, rgba.g, rgba.b, rgba.a));
9    let hsla = palette::Hsla::from_color(rgba);
10
11    let hsla = gpui::hsla(
12        hsla.hue.into_positive_degrees() / 360.,
13        hsla.saturation,
14        hsla.lightness,
15        hsla.alpha,
16    );
17
18    Ok(hsla)
19}
20
21#[allow(unused)]
22pub(crate) fn pack_color(color: Hsla) -> u32 {
23    let hsla = palette::Hsla::from_components((color.h * 360., color.s, color.l, color.a));
24    let rgba = palette::rgb::Srgba::from_color(hsla);
25    let rgba = rgba.into_format::<u8, u8>();
26
27    u32::from(rgba)
28}
29
30#[cfg(test)]
31mod tests {
32    use super::*;
33
34    #[test]
35    pub fn test_serialize_color() {
36        let color = "#b4637aff";
37        let hsla = try_parse_color(color).unwrap();
38        let packed = pack_color(hsla);
39
40        assert_eq!(format!("#{:x}", packed), color);
41    }
42
43    #[test]
44    pub fn test_serialize_color_with_palette() {
45        let color = "#b4637aff";
46
47        let rgba = gpui::Rgba::try_from(color).unwrap();
48        let rgba = palette::rgb::Srgba::from_components((rgba.r, rgba.g, rgba.b, rgba.a));
49        let hsla = palette::Hsla::from_color(rgba);
50
51        let rgba = palette::rgb::Srgba::from_color(hsla);
52        let rgba = rgba.into_format::<u8, u8>();
53
54        assert_eq!(format!("#{:x}", rgba), color);
55    }
56}
57
Served at tenant.openagents/omega Member data and write actions are omitted.