blob: 1db07867d72cb24e8c3a47fe7955aa2bb76f6478 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
pub type Color = u32;
#[allow(dead_code)]
pub mod db32 {
pub const BLACK: u8 = 0;
pub const DARK_PURPLE: u8 = 1;
pub const MAROON: u8 = 2;
pub const DARK_BROWN: u8 = 3;
pub const BROWN: u8 = 4;
pub const ORANGE: u8 = 5;
pub const TAN: u8 = 6;
pub const PEACH: u8 = 7;
pub const YELLOW: u8 = 8;
pub const LIME: u8 = 9;
pub const GREEN: u8 = 10;
pub const SEA_GREEN: u8 = 11;
pub const DARK_GREEN: u8 = 12;
pub const OLIVE: u8 = 13;
pub const CHARCOAL: u8 = 14;
pub const NAVY: u8 = 15;
pub const STEEL_BLUE: u8 = 16;
pub const INDIGO: u8 = 17;
pub const BLUE: u8 = 18;
pub const CYAN: u8 = 19;
pub const PALE_BLUE: u8 = 20;
pub const WHITE: u8 = 21;
pub const GRAY: u8 = 22;
pub const STONE: u8 = 23;
pub const DIM_GRAY: u8 = 24;
pub const SLATE: u8 = 25;
pub const PURPLE: u8 = 26;
pub const RED: u8 = 27;
pub const LIGHT_RED: u8 = 28;
pub const PINK: u8 = 29;
pub const MOSS: u8 = 30;
pub const KHAKI: u8 = 31;
}
const fn from_rgb(r: u8, g: u8, b: u8) -> Color {
(r as u32) << 16 | (g as u32) << 8 | b as u32
}
#[derive(Clone, Copy)]
pub struct Palette([Color; 256]);
impl Default for Palette {
fn default() -> Self {
Self([0; 256])
}
}
impl Palette {
pub fn at(&self, index: u8) -> Color {
self.0[index as usize]
}
pub fn from_ase(src: &[aseprite::Color]) -> Self {
let mut out = [0u32; 256];
for (dst, s) in out.iter_mut().zip(src) {
*dst = from_rgb(s.r, s.g, s.b);
}
Palette(out)
}
}
|