| Crates.io | hyperchad_color |
| lib.rs | hyperchad_color |
| version | 0.1.4 |
| created_at | 2025-05-07 15:03:35.086627+00 |
| updated_at | 2025-07-21 20:02:33.956667+00 |
| description | HyperChad color package |
| homepage | |
| repository | https://github.com/MoosicBox/MoosicBox |
| max_upload_size | |
| id | 1663985 |
| size | 37,879 |
Color parsing, manipulation, and conversion utilities for HyperChad applications.
The HyperChad Color package provides:
Add this to your Cargo.toml:
[dependencies]
hyperchad_color = { path = "../hyperchad/color" }
# Enable additional features
hyperchad_color = {
path = "../hyperchad/color",
features = ["serde", "egui", "arb"]
}
use hyperchad_color::Color;
// Create colors from hex strings
let red = Color::from_hex("#FF0000");
let green = Color::from_hex("#00FF00");
let blue = Color::from_hex("#0000FF");
// Short form hex (automatically expanded)
let white = Color::from_hex("#FFF"); // Expands to #FFFFFF
let black = Color::from_hex("#000"); // Expands to #000000
// With alpha channel
let transparent_red = Color::from_hex("#FF000080");
let transparent_blue = Color::from_hex("#00F8"); // Short form with alpha
use hyperchad_color::{Color, ParseHexError};
// Safe parsing with error handling
match Color::try_from_hex("#INVALID") {
Ok(color) => println!("Parsed color: {}", color),
Err(ParseHexError::InvalidCharacter(index, char)) => {
println!("Invalid character '{}' at position {}", char, index);
}
Err(ParseHexError::InvalidLength) => {
println!("Invalid hex string length");
}
Err(e) => println!("Parse error: {}", e),
}
use hyperchad_color::Color;
// Use predefined constants
let black = Color::BLACK;
let white = Color::WHITE;
// Constants are equivalent to hex parsing
assert_eq!(Color::BLACK, Color::from_hex("#000000"));
assert_eq!(Color::WHITE, Color::from_hex("#FFFFFF"));
use hyperchad_color::Color;
// Colors display as hex strings
let color = Color::from_hex("#FF5733");
println!("{}", color); // Output: "#FF5733"
// RGBA colors include alpha
let transparent = Color::from_hex("#FF573380");
println!("{}", transparent); // Output: "#FF573380"
use hyperchad_color::Color;
// From &str
let color1: Color = "#FF0000".into();
// From String
let hex_string = "#00FF00".to_string();
let color2: Color = hex_string.into();
// From &String
let color3: Color = (&hex_string).into();
use hyperchad_color::Color;
let color = Color::from_hex("#FF573380");
// Access color components
println!("Red: {}", color.r); // 255
println!("Green: {}", color.g); // 87
println!("Blue: {}", color.b); // 51
println!("Alpha: {:?}", color.a); // Some(128)
// Check for alpha channel
if color.a.is_some() {
println!("Color has transparency");
}
egui feature)use hyperchad_color::Color;
use egui::Color32;
let color = Color::from_hex("#FF5733");
// Convert to egui Color32
let egui_color: Color32 = color.into();
let egui_color_ref: Color32 = (&color).into();
// Use in egui applications
ui.colored_label(egui_color, "Colored text");
pub struct Color {
pub r: u8, // Red component (0-255)
pub g: u8, // Green component (0-255)
pub b: u8, // Blue component (0-255)
pub a: Option<u8>, // Optional alpha component (0-255)
}
#RGB (e.g., #F00 → #FF0000)#RGBA (e.g., #F008 → #FF000088)#RRGGBB (e.g., #FF0000)#RRGGBBAA (e.g., #FF000080)All formats support:
# prefixpub enum ParseHexError {
InvalidCharacter(usize, char), // Invalid hex character
InvalidNonAsciiCharacter(usize), // Non-ASCII character
StringTooLong, // Hex string too long
InvalidLength, // Invalid hex string length
}
serde: Enable serialization/deserializationegui: Enable egui Color32 conversionarb: Enable arbitrary data generation for testingThis package is designed for: