Skip to content

Commit

Permalink
Rgba8Srgb::[try_]parse_srgb methods: remove redundant stem and take &str
Browse files Browse the repository at this point in the history
  • Loading branch information
dhardy committed Aug 27, 2024
1 parent 8566652 commit 74648fb
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 47 deletions.
22 changes: 12 additions & 10 deletions crates/kas-core/src/draw/color.rs
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,8 @@ impl Rgba8Srgb {
}

/// Compile-time parser for sRGB and sRGBA colours
pub const fn try_parse_srgb(s: &[u8]) -> Result<Rgba8Srgb, ParseError> {
pub const fn try_parse(s: &str) -> Result<Rgba8Srgb, ParseError> {
let s = s.as_bytes();
if s.len() != 6 && s.len() != 8 {
return Err(ParseError::Length);
}
Expand Down Expand Up @@ -303,11 +304,11 @@ impl Rgba8Srgb {

/// Compile-time parser for sRGB and sRGBA colours
///
/// This method has worse diagnostics on error due to limited const-
pub const fn parse_srgb(s: &[u8]) -> Rgba8Srgb {
match Self::try_parse_srgb(s) {
/// This method has worse diagnostics on error due to limited error handling in `const fn`.
pub const fn parse(s: &str) -> Rgba8Srgb {
match Self::try_parse(s) {
Ok(result) => result,
Err(ParseError::Length) => panic!("invalid length (expected 6 or 8 bytes"),
Err(ParseError::Length) => panic!("invalid length (expected 6 or 8 bytes)"),
Err(ParseError::InvalidHex) => panic!("invalid hex byte (expected 0-9, a-f or A-F)"),
}
}
Expand Down Expand Up @@ -345,12 +346,13 @@ pub enum ParseError {
impl std::str::FromStr for Rgba8Srgb {
type Err = ParseError;

fn from_str(s: &str) -> Result<Self, Self::Err> {
let mut s = s.as_bytes();
if s[0] == b'#' {
s = &s[1..];
fn from_str(mut s: &str) -> Result<Self, Self::Err> {
if s.starts_with("#") {
let a;
(a, s) = s.split_at(1);
debug_assert_eq!(a, "#");
}
Rgba8Srgb::try_parse_srgb(&s)
Rgba8Srgb::try_parse(s)
}
}

Expand Down
72 changes: 36 additions & 36 deletions crates/kas-core/src/theme/colors.rs
Original file line number Diff line number Diff line change
Expand Up @@ -226,52 +226,52 @@ impl ColorsSrgb {
/// Default "light" scheme
pub const LIGHT: ColorsSrgb = Colors {
is_dark: false,
background: Rgba8Srgb::parse_srgb(b"FAFAFA"),
frame: Rgba8Srgb::parse_srgb(b"BCBCBC"),
accent: Rgba8Srgb::parse_srgb(b"8347f2"),
accent_soft: Rgba8Srgb::parse_srgb(b"B38DF9"),
nav_focus: Rgba8Srgb::parse_srgb(b"7E3FF2"),
edit_bg: Rgba8Srgb::parse_srgb(b"FAFAFA"),
edit_bg_disabled: Rgba8Srgb::parse_srgb(b"DCDCDC"),
edit_bg_error: Rgba8Srgb::parse_srgb(b"FFBCBC"),
text: Rgba8Srgb::parse_srgb(b"000000"),
text_invert: Rgba8Srgb::parse_srgb(b"FFFFFF"),
text_disabled: Rgba8Srgb::parse_srgb(b"AAAAAA"),
text_sel_bg: Rgba8Srgb::parse_srgb(b"A172FA"),
background: Rgba8Srgb::parse("FAFAFA"),
frame: Rgba8Srgb::parse("BCBCBC"),
accent: Rgba8Srgb::parse("8347f2"),
accent_soft: Rgba8Srgb::parse("B38DF9"),
nav_focus: Rgba8Srgb::parse("7E3FF2"),
edit_bg: Rgba8Srgb::parse("FAFAFA"),
edit_bg_disabled: Rgba8Srgb::parse("DCDCDC"),
edit_bg_error: Rgba8Srgb::parse("FFBCBC"),
text: Rgba8Srgb::parse("000000"),
text_invert: Rgba8Srgb::parse("FFFFFF"),
text_disabled: Rgba8Srgb::parse("AAAAAA"),
text_sel_bg: Rgba8Srgb::parse("A172FA"),
};

/// Dark scheme
pub const DARK: ColorsSrgb = Colors {
is_dark: true,
background: Rgba8Srgb::parse_srgb(b"404040"),
frame: Rgba8Srgb::parse_srgb(b"AAAAAA"),
accent: Rgba8Srgb::parse_srgb(b"F74C00"),
accent_soft: Rgba8Srgb::parse_srgb(b"E77346"),
nav_focus: Rgba8Srgb::parse_srgb(b"D03E00"),
edit_bg: Rgba8Srgb::parse_srgb(b"303030"),
edit_bg_disabled: Rgba8Srgb::parse_srgb(b"606060"),
edit_bg_error: Rgba8Srgb::parse_srgb(b"a06868"),
text: Rgba8Srgb::parse_srgb(b"FFFFFF"),
text_invert: Rgba8Srgb::parse_srgb(b"000000"),
text_disabled: Rgba8Srgb::parse_srgb(b"CBCBCB"),
text_sel_bg: Rgba8Srgb::parse_srgb(b"E77346"),
background: Rgba8Srgb::parse("404040"),
frame: Rgba8Srgb::parse("AAAAAA"),
accent: Rgba8Srgb::parse("F74C00"),
accent_soft: Rgba8Srgb::parse("E77346"),
nav_focus: Rgba8Srgb::parse("D03E00"),
edit_bg: Rgba8Srgb::parse("303030"),
edit_bg_disabled: Rgba8Srgb::parse("606060"),
edit_bg_error: Rgba8Srgb::parse("a06868"),
text: Rgba8Srgb::parse("FFFFFF"),
text_invert: Rgba8Srgb::parse("000000"),
text_disabled: Rgba8Srgb::parse("CBCBCB"),
text_sel_bg: Rgba8Srgb::parse("E77346"),
};

/// Blue scheme
pub const BLUE: ColorsSrgb = Colors {
is_dark: false,
background: Rgba8Srgb::parse_srgb(b"FFFFFF"),
frame: Rgba8Srgb::parse_srgb(b"DADADA"),
accent: Rgba8Srgb::parse_srgb(b"3fafd7"),
accent_soft: Rgba8Srgb::parse_srgb(b"7CDAFF"),
nav_focus: Rgba8Srgb::parse_srgb(b"3B697A"),
edit_bg: Rgba8Srgb::parse_srgb(b"FFFFFF"),
edit_bg_disabled: Rgba8Srgb::parse_srgb(b"DCDCDC"),
edit_bg_error: Rgba8Srgb::parse_srgb(b"FFBCBC"),
text: Rgba8Srgb::parse_srgb(b"000000"),
text_invert: Rgba8Srgb::parse_srgb(b"FFFFFF"),
text_disabled: Rgba8Srgb::parse_srgb(b"AAAAAA"),
text_sel_bg: Rgba8Srgb::parse_srgb(b"6CC0E1"),
background: Rgba8Srgb::parse("FFFFFF"),
frame: Rgba8Srgb::parse("DADADA"),
accent: Rgba8Srgb::parse("3fafd7"),
accent_soft: Rgba8Srgb::parse("7CDAFF"),
nav_focus: Rgba8Srgb::parse("3B697A"),
edit_bg: Rgba8Srgb::parse("FFFFFF"),
edit_bg_disabled: Rgba8Srgb::parse("DCDCDC"),
edit_bg_error: Rgba8Srgb::parse("FFBCBC"),
text: Rgba8Srgb::parse("000000"),
text_invert: Rgba8Srgb::parse("FFFFFF"),
text_disabled: Rgba8Srgb::parse("AAAAAA"),
text_sel_bg: Rgba8Srgb::parse("6CC0E1"),
};
}

Expand Down
2 changes: 1 addition & 1 deletion examples/clock.rs
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ impl_scope! {
}

fn draw(&mut self, mut draw: DrawCx) {
let accent: Rgba = Rgba8Srgb::parse_srgb(b"d7916f").into();
let accent: Rgba = Rgba8Srgb::parse("d7916f").into();
let col_back = Rgba::ga(0.0, 0.5);
let col_face = accent.multiply(0.4);
let col_time = Rgba::grey(1.0);
Expand Down

0 comments on commit 74648fb

Please sign in to comment.