1#![no_std]
2
3use core::fmt::Formatter;
4
5#[derive(Clone)]
6pub struct StaticBitmap {
7 pub gfx: &'static [u8],
8 pub palette: &'static [u8],
9 pub map: &'static [u8],
10 pub meta: &'static [u8],
11 pub spec: BitmapSpec,
12}
13
14#[derive(Clone, Copy, Debug, Default)]
15pub enum Compression {
16 #[default]
17 Off,
18 LZ77,
19 Huffman,
20 RLE,
21 OffHeader,
22}
23
24#[derive(Clone, Copy, Debug)]
25pub enum Color {
26 RGB { r: u8, g: u8, b: u8 },
27 GBR16(u16),
28}
29
30#[derive(Clone, Copy, Debug)]
31pub enum Transparency {
32 Disabled,
33 Color(Color),
34}
35
36impl Default for Transparency {
37 fn default() -> Self {
38 Transparency::Color(Color::RGB {
39 r: 0xFF,
40 g: 0,
41 b: 0xFF,
42 })
43 }
44}
45
46#[derive(Clone, Copy, Debug)]
47pub enum BitDepth {
48 A3I5,
49 A5I3,
50 FourByFour,
51 Custom(u8),
52}
53
54#[derive(Clone, Copy, Debug)]
55pub struct BitmapSpec {
56 pub bit_depth: Option<BitDepth>,
57 pub format: GfxFormat,
58 pub transparency: Transparency,
59}
60
61#[derive(Clone, Copy, Debug, Default)]
62pub enum GfxFormat {
63 #[default]
64 Bitmap,
65 Tile,
66}
67
68impl core::fmt::Debug for StaticBitmap {
69 fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
70 f.debug_struct("StaticBitmap")
71 .field("gfx", &format_args!("[u8; {}]", self.gfx.len()))
72 .field("palette", &format_args!("[u8; {}]", self.palette.len()))
73 .field("map", &format_args!("[u8; {}]", self.map.len()))
74 .field("meta", &format_args!("[u8; {}]", self.meta.len()))
75 .field("spec", &self.spec)
76 .finish()
77 }
78}