wxbox/wxbox-tiler/src/pixmap.rs
core 2a2f46a5ff
Some checks are pending
build and test / wxbox - latest (push) Waiting to run
ci workflow
2025-03-04 20:51:33 -05:00

40 lines
915 B
Rust

use wxbox_pal::Color;
pub struct Pixmap {
data: [Color; 256 * 256],
}
impl Pixmap {
#[inline]
pub fn new() -> Self {
Self {
data: [Color {
red: 0,
green: 0,
blue: 0,
alpha: 0,
}; 256 * 256],
}
}
#[inline]
pub fn set(&mut self, x: usize, y: usize, color: Color) {
self.data[256 * x + y] = color;
}
#[inline]
pub fn get(&self, x: usize, y: usize) -> Color {
self.data[256 * x + y]
}
pub fn to_raw(self) -> [u8; 256 * 256 * 4] {
let mut output = [0u8; 256 * 256 * 4];
for (idx, color) in self.data.iter().enumerate() {
output[4 * idx] = color.red;
output[4 * idx + 1] = color.green;
output[4 * idx + 2] = color.blue;
output[4 * idx + 3] = color.alpha;
}
output
}
}