From 34d078b5248d9f622e0cb543a130d0c36c29fde0 Mon Sep 17 00:00:00 2001 From: Alessandro Mauri Date: Sun, 12 Oct 2025 13:19:49 +0200 Subject: [PATCH] optional alpha channel in color properties --- lib/ugui.c3l/src/style.c3 | 16 +++++++++------- resources/style.css | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/ugui.c3l/src/style.c3 b/lib/ugui.c3l/src/style.c3 index ecf55d2..ebfefd2 100644 --- a/lib/ugui.c3l/src/style.c3 +++ b/lib/ugui.c3l/src/style.c3 @@ -27,11 +27,11 @@ const Style DEFAULT_STYLE = { .radius = 0, .size = 16, - .bg = 0x282828ffu.@to_rgba(), - .fg = 0xfbf1c7ffu.@to_rgba(), - .primary = 0xcc241dffu.@to_rgba(), + .bg = 0x282828ffu.@to_rgba(), + .fg = 0xfbf1c7ffu.@to_rgba(), + .primary = 0xcc241dffu.@to_rgba(), .secondary = 0x458588ffu.@to_rgba(), - .accent = 0xfabd2fffu.@to_rgba(), + .accent = 0xfabd2fffu.@to_rgba(), }; // style is stored in a hashmap, each style has an Id that can be generated by a string or whatever @@ -211,14 +211,16 @@ fn Token Lexer.next_token(&lex) while (ascii::is_alnum_m(lex.peep())) { if (lex.advance() == 0) { t.type = INVALID; break; } } - if (lex.off - hex_start != 8) { - io::eprintfn("CSS lexing error at %d:%d: the only suppported color format is #RRGGBBAA", t.line, t.col); + usz h_len = lex.off - hex_start; + if (h_len != 8 && h_len != 6) { + io::eprintfn("CSS lexing error at %d:%d: the only suppported color formats are #RRGGBBAA or #RRGGBB", t.line, t.col); t.type = INVALID; break; } char[10] hex_str = (char[])"0x"; - hex_str[2..] = lex.text[hex_start..lex.off-1]; + hex_str[2:h_len] = lex.text[hex_start:h_len]; + if (h_len == 6) hex_str[8..9] = "ff"[..]; uint? color_hex = ((String)hex_str[..]).to_uint(); if (catch color_hex) { t.type = INVALID; diff --git a/resources/style.css b/resources/style.css index a9a9bf1..8929039 100644 --- a/resources/style.css +++ b/resources/style.css @@ -1,5 +1,5 @@ div { - bg: #282828ff; + bg: #282828; fg: #fbf1c7ff; primary: #cc241dff; secondary: #6c19ca8f;