use super::*;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[cfg(target_endian = "little")]
#[allow(missing_docs)]
#[repr(C)]
pub struct ARGB32 {
pub b: u8,
pub g: u8,
pub r: u8,
pub a: u8,
}
impl ARGB32 {
pub const fn new(a: u8, r: u8, g: u8, b: u8) -> Self {
Self { a, r, g, b }
}
#[cfg(target_endian = "little")]
pub const fn from_rgb24(rgb: u32) -> Self {
Self {
a: 0xFF,
r: (rgb >> 16) as u8,
g: (rgb >> 8) as u8,
b: (rgb >> 0) as u8,
}
}
}
#[cfg(target_endian = "little")]
impl From<ARGB32> for u32 {
fn from(argb: ARGB32) -> Self {
u32::from(argb.b) | u32::from(argb.g) << 8 | u32::from(argb.r) << 16 | u32::from(argb.a) << 24
}
}
#[cfg(target_endian = "little")]
impl From<u32> for ARGB32 {
fn from(u: u32) -> Self {
Self {
a: (u >> 24) as u8,
r: (u >> 16) as u8,
g: (u >> 8) as u8,
b: (u >> 0) as u8,
}
}
}
pub const CONVERT_5BIT_CHANNEL_TO_8BIT_CHANNEL: [u8; 32] = [
0, 8, 16, 24, 32, 41, 49, 57, 65, 74, 82, 90, 98, 106, 115, 123, 131, 139, 148, 156, 164, 172,
180, 189, 197, 205, 213, 222, 230, 238, 246, 255,
];
pub const FOUR_COLOR_PALETTES: &[[ARGB32; 4]] = &[
[
ARGB32::new(0xFF, 0x9b, 0xbc, 0x0f),
ARGB32::new(0xFF, 0x8b, 0xac, 0x0f),
ARGB32::new(0xFF, 0x30, 0x62, 0x30),
ARGB32::new(0xFF, 0x0f, 0x38, 0x0f),
],
[
ARGB32::new(0xFF, 0xFF, 0xFF, 0xFF),
ARGB32::new(0xFF, 0xb6, 0xb6, 0xb6),
ARGB32::new(0xFF, 0x67, 0x67, 0x67),
ARGB32::new(0xFF, 0x00, 0x00, 0x00),
],
[
ARGB32::new(0xFF, 0x00, 0x00, 0x00),
ARGB32::new(0xFF, 0xAA, 0x00, 0x00),
ARGB32::new(0xFF, 0x00, 0xAA, 0x00),
ARGB32::new(0xFF, 0xAA, 0x55, 0x00),
],
[
ARGB32::new(0xFF, 0x00, 0x00, 0x00),
ARGB32::new(0xFF, 0xFF, 0x55, 0x55),
ARGB32::new(0xFF, 0x55, 0xFF, 0x55),
ARGB32::new(0xFF, 0xFF, 0xFF, 0x55),
],
[
ARGB32::new(0xFF, 0x00, 0x00, 0x00),
ARGB32::new(0xFF, 0x00, 0xAA, 0xAA),
ARGB32::new(0xFF, 0xAA, 0x00, 0xAA),
ARGB32::new(0xFF, 0xAA, 0xAA, 0xAA),
],
[
ARGB32::new(0xFF, 0x00, 0x00, 0x00),
ARGB32::new(0xFF, 0x55, 0xFF, 0xFF),
ARGB32::new(0xFF, 0xFF, 0x55, 0xFF),
ARGB32::new(0xFF, 0xFF, 0xFF, 0xFF),
],
[
ARGB32::new(0xFF, 0x00, 0x00, 0x00),
ARGB32::new(0xFF, 0x00, 0xAA, 0xAA),
ARGB32::new(0xFF, 0xAA, 0x00, 0x00),
ARGB32::new(0xFF, 0xAA, 0xAA, 0xAA),
],
[
ARGB32::new(0xFF, 0x00, 0x00, 0x00),
ARGB32::new(0xFF, 0x55, 0xFF, 0xFF),
ARGB32::new(0xFF, 0xFF, 0x55, 0x55),
ARGB32::new(0xFF, 0xFF, 0xFF, 0xFF),
],
[
ARGB32::from_rgb24(0xf8e8c8),
ARGB32::from_rgb24(0xd89048),
ARGB32::from_rgb24(0xa82820),
ARGB32::from_rgb24(0x301850),
],
[
ARGB32::from_rgb24(0xd8d8c0),
ARGB32::from_rgb24(0xc8b070),
ARGB32::from_rgb24(0xb05010),
ARGB32::from_rgb24(0x000000),
],
[
ARGB32::from_rgb24(0xf8c0f8),
ARGB32::from_rgb24(0xe89850),
ARGB32::from_rgb24(0x983860),
ARGB32::from_rgb24(0x383898),
],
[
ARGB32::from_rgb24(0xf8f8a8),
ARGB32::from_rgb24(0xc08048),
ARGB32::from_rgb24(0xf80000),
ARGB32::from_rgb24(0x501800),
],
[
ARGB32::from_rgb24(0xf8d8b0),
ARGB32::from_rgb24(0x78c078),
ARGB32::from_rgb24(0x688840),
ARGB32::from_rgb24(0x583820),
],
[
ARGB32::from_rgb24(0xd8e8f8),
ARGB32::from_rgb24(0xe08850),
ARGB32::from_rgb24(0xa80000),
ARGB32::from_rgb24(0x004010),
],
[
ARGB32::from_rgb24(0x000050),
ARGB32::from_rgb24(0x00a0e8),
ARGB32::from_rgb24(0x787800),
ARGB32::from_rgb24(0xf8f858),
],
[
ARGB32::from_rgb24(0xf8e8e0),
ARGB32::from_rgb24(0xf8b888),
ARGB32::from_rgb24(0x804000),
ARGB32::from_rgb24(0x301800),
],
[
ARGB32::from_rgb24(0xf0c8a0),
ARGB32::from_rgb24(0xc08848),
ARGB32::from_rgb24(0x287800),
ARGB32::from_rgb24(0x000000),
],
[
ARGB32::from_rgb24(0xf8f8f8),
ARGB32::from_rgb24(0xf8e850),
ARGB32::from_rgb24(0xf83000),
ARGB32::from_rgb24(0x500058),
],
[
ARGB32::from_rgb24(0xf8c0f8),
ARGB32::from_rgb24(0xe88888),
ARGB32::from_rgb24(0x7830e8),
ARGB32::from_rgb24(0x282898),
],
[
ARGB32::from_rgb24(0xf8f8a0),
ARGB32::from_rgb24(0x00f800),
ARGB32::from_rgb24(0xf83000),
ARGB32::from_rgb24(0x000050),
],
[
ARGB32::from_rgb24(0xf8c880),
ARGB32::from_rgb24(0x90b0e0),
ARGB32::from_rgb24(0x281060),
ARGB32::from_rgb24(0x100810),
],
[
ARGB32::from_rgb24(0xd0f8f8),
ARGB32::from_rgb24(0xf89050),
ARGB32::from_rgb24(0xa00000),
ARGB32::from_rgb24(0x180000),
],
[
ARGB32::from_rgb24(0x68b838),
ARGB32::from_rgb24(0xe05040),
ARGB32::from_rgb24(0xe0b880),
ARGB32::from_rgb24(0x001800),
],
[
ARGB32::from_rgb24(0xf8f8f8),
ARGB32::from_rgb24(0xb8b8b8),
ARGB32::from_rgb24(0x707070),
ARGB32::from_rgb24(0x000000),
],
[
ARGB32::from_rgb24(0xf8d098),
ARGB32::from_rgb24(0x70c0c0),
ARGB32::from_rgb24(0xf86028),
ARGB32::from_rgb24(0x304860),
],
[
ARGB32::from_rgb24(0xd8d8c0),
ARGB32::from_rgb24(0xe08020),
ARGB32::from_rgb24(0x005000),
ARGB32::from_rgb24(0x001010),
],
[
ARGB32::from_rgb24(0xe0a8c8),
ARGB32::from_rgb24(0xf8f878),
ARGB32::from_rgb24(0x00b8f8),
ARGB32::from_rgb24(0x202058),
],
[
ARGB32::from_rgb24(0xf0f8b8),
ARGB32::from_rgb24(0xe0a878),
ARGB32::from_rgb24(0x08c800),
ARGB32::from_rgb24(0x000000),
],
[
ARGB32::from_rgb24(0xf8f8c0),
ARGB32::from_rgb24(0xe0b068),
ARGB32::from_rgb24(0xb07820),
ARGB32::from_rgb24(0x504870),
],
[
ARGB32::from_rgb24(0x7878c8),
ARGB32::from_rgb24(0xf868f8),
ARGB32::from_rgb24(0xf8d000),
ARGB32::from_rgb24(0x404040),
],
[
ARGB32::from_rgb24(0x60d850),
ARGB32::from_rgb24(0xf8f8f8),
ARGB32::from_rgb24(0xc83038),
ARGB32::from_rgb24(0x380000),
],
[
ARGB32::from_rgb24(0xe0f8a0),
ARGB32::from_rgb24(0x78c838),
ARGB32::from_rgb24(0x488818),
ARGB32::from_rgb24(0x081800),
],
[
ARGB32::from_rgb24(0xf0a868),
ARGB32::from_rgb24(0x78a8f8),
ARGB32::from_rgb24(0xd000d0),
ARGB32::from_rgb24(0x000078),
],
[
ARGB32::from_rgb24(0xf0e8f0),
ARGB32::from_rgb24(0xe8a060),
ARGB32::from_rgb24(0x407838),
ARGB32::from_rgb24(0x180808),
],
[
ARGB32::from_rgb24(0xf8e0e0),
ARGB32::from_rgb24(0xd8a0d0),
ARGB32::from_rgb24(0x98a0e0),
ARGB32::from_rgb24(0x080000),
],
[
ARGB32::from_rgb24(0xf8f8b8),
ARGB32::from_rgb24(0x90c8c8),
ARGB32::from_rgb24(0x486878),
ARGB32::from_rgb24(0x082048),
],
[
ARGB32::from_rgb24(0xf8d8a8),
ARGB32::from_rgb24(0xe0a878),
ARGB32::from_rgb24(0x785888),
ARGB32::from_rgb24(0x002030),
],
[
ARGB32::from_rgb24(0xb8d0d0),
ARGB32::from_rgb24(0xd880d8),
ARGB32::from_rgb24(0x8000a0),
ARGB32::from_rgb24(0x380000),
],
[
ARGB32::from_rgb24(0xb0e018),
ARGB32::from_rgb24(0xb82058),
ARGB32::from_rgb24(0x281000),
ARGB32::from_rgb24(0x008060),
],
[
ARGB32::from_rgb24(0xf8f8c8),
ARGB32::from_rgb24(0xb8c058),
ARGB32::from_rgb24(0x808840),
ARGB32::from_rgb24(0x405028),
],
];