Newer
Older
use super::Display;
pub struct DebugDisplay {
display: Display,
x: usize,
y: usize,
w: usize,
h: usize,
}
impl DebugDisplay {
pub fn new(display: Display) -> DebugDisplay {
let w = display.width/8;
let h = display.height/16;
DebugDisplay {
display,
x: 0,
y: 0,
w: w,
h: h,
}
}
pub fn into_display(self) -> Display {
self.display
}
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
67
if self.x >= self.w || c == '\n' {
self.x = 0;
self.y += 1;
}
if self.y >= self.h {
let new_y = self.h - 1;
let d_y = self.y - new_y;
self.display.scroll(d_y * 16);
self.display.rect(
0, (self.h - d_y) * 16,
self.w * 8, d_y * 16,
0x000000
);
self.display.sync(
0, 0,
self.w * 8, self.h * 16
);
self.y = new_y;
}
if c != '\n' {
self.display.rect(
self.x * 8, self.y * 16,
8, 16,
0x000000
);
self.display.char(
self.x * 8, self.y * 16,
c,
0xFFFFFF
);
self.display.sync(
self.x * 8, self.y * 16,
8, 16
);
self.x += 1;
}
}
pub fn write(&mut self, buf: &[u8]) {
for &b in buf {
self.write_char(b as char);
}
}
}