[DISP] refactor putpixel
This commit is contained in:
parent
0221f3128d
commit
dfcf7093b9
|
@ -105,23 +105,24 @@ impl Display {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn putpixel(&mut self, x: u16, y: u16, color: u32) {
|
#[inline]
|
||||||
let f = |mut v: u32, chan: u16| unsafe {
|
fn write_pixel_component(&self, x: u32, y: u32, chan: u16, c: u32) {
|
||||||
if self.depth != 32 { // marker for errors
|
unsafe {
|
||||||
v = 128;
|
*(self.base as *mut u8).offset(
|
||||||
}
|
(y * self.pitch
|
||||||
*(self.base as *mut u8)
|
+ x * 4//(self.depth / 8)
|
||||||
.offset((u32::from(y) * self.pitch
|
+ self.color_component(chan)) as isize,
|
||||||
+ u32::from(x) * (self.depth / 8)
|
) = c as u8;
|
||||||
+ self.color_component(chan)) as isize) = v as u8;
|
}
|
||||||
};
|
|
||||||
|
|
||||||
f(color & 0xff, 0);
|
|
||||||
f((color >> 8) & 0xff, 1);
|
|
||||||
f((color >> 16) & 0xff, 2)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn rect(&mut self, x1: u16, y1: u16, x2: u16, y2: u16, color: u32) {
|
pub fn putpixel(&mut self, x: u32, y: u32, color: u32) {
|
||||||
|
self.write_pixel_component(x, y, 0, color & 0xff);
|
||||||
|
self.write_pixel_component(x, y, 1, (color >> 8) & 0xff);
|
||||||
|
self.write_pixel_component(x, y, 2, (color >> 16) & 0xff);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn rect(&mut self, x1: u32, y1: u32, x2: u32, y2: u32, color: u32) {
|
||||||
for y in y1..y2 {
|
for y in y1..y2 {
|
||||||
for x in x1..x2 {
|
for x in x1..x2 {
|
||||||
self.putpixel(x, y, color);
|
self.putpixel(x, y, color);
|
||||||
|
@ -129,7 +130,7 @@ impl Display {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn draw_text(&mut self, x: u16, y: u16, text: &str, color: u32) {
|
pub fn draw_text(&mut self, x: u32, y: u32, text: &str, color: u32) {
|
||||||
for i in 0..8 {
|
for i in 0..8 {
|
||||||
let mut char_off = 0;
|
let mut char_off = 0;
|
||||||
// Take an 8 bit slice from each array value.
|
// Take an 8 bit slice from each array value.
|
||||||
|
|
Loading…
Reference in New Issue