parent
db882dd5dc
commit
854fdfb6b1
@ -0,0 +1,7 @@ |
||||
[package] |
||||
name = "hex_colors" |
||||
version = "0.1.0" |
||||
authors = ["nkoch001 <nilskoch94@gmail.com>"] |
||||
edition = "2018" |
||||
|
||||
[dependencies] |
@ -0,0 +1,51 @@ |
||||
// THIS IS PART OF REDDITS DAILY PROGRAMMING CHALLENGES
|
||||
// this programm generates a hex-color-string from decimal input values
|
||||
//
|
||||
|
||||
// converts a 3-tuple of 8 bit decimals to a color-string of the Format "#FF00EE"
|
||||
fn hexcolor(r: u8, g: u8, b: u8) -> String { |
||||
let result = format!("#{0:03$X}{1:03$X}{2:03$X}", r, g, b, 2); |
||||
result |
||||
} |
||||
|
||||
// Averages two u8 values
|
||||
fn mix(x: u8, y: u8) -> u8 { |
||||
let sum: u16 = u16::from(x) + u16::from(y); |
||||
(sum / 2) as u8 |
||||
} |
||||
|
||||
// blends two decimal colors
|
||||
fn blend_int(x: (u8, u8, u8), y: (u8, u8, u8)) -> String { |
||||
hexcolor(mix(x.0, y.0), mix(x.1, y.1), mix(x.2, y.2)) |
||||
} |
||||
|
||||
// parses hex to uint
|
||||
fn parse_hex_to_uint(x: String) -> u8 { |
||||
u8::from_str_radix(&x, 16).unwrap() |
||||
} |
||||
|
||||
// parses color string to decimal values
|
||||
fn parse_hexstring(x: String) -> (u8, u8, u8) { |
||||
let y = x.trim_start_matches("#").to_string(); |
||||
( |
||||
parse_hex_to_uint(y[0..2].to_string()), |
||||
parse_hex_to_uint(y[2..4].to_string()), |
||||
parse_hex_to_uint(y[4..6].to_string()), |
||||
) |
||||
} |
||||
|
||||
// blends two color strings
|
||||
fn blend(x: (String, String)) -> String { |
||||
let color_1 = parse_hexstring(x.0); |
||||
let color_2 = parse_hexstring(x.1); |
||||
blend_int(color_1, color_2) |
||||
} |
||||
|
||||
fn main() { |
||||
println!("{}", hexcolor(123, 21, 12)); |
||||
println!("{}", hexcolor(0, 21, 0)); |
||||
println!( |
||||
"{}", |
||||
blend((hexcolor(123, 241, 21), hexcolor(201, 94, 111))) |
||||
); |
||||
} |
Loading…
Reference in new issue