feat(display): DrawText with built-in Spleen 8x16 font (BSD-2)
This commit is contained in:
@@ -138,3 +138,32 @@ fn an_off_screen_rect_draws_nothing() {
|
||||
}
|
||||
assert_eq!(server.framebuffer().pixel_count(), 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn text_draws_whole_glyph_cells() {
|
||||
use types::display::text::Text;
|
||||
let mut server = test_server();
|
||||
let (fg, bg) = (Color::rgb(255, 255, 255), Color::rgb(0, 0, 0));
|
||||
let t = Text::new(ScreenCoord::new(8), ScreenCoord::new(16), fg, bg, b"A");
|
||||
assert_eq!(server.handle(DisplayRequest::DrawText(t)), DisplayResponse::Ok);
|
||||
// One 8x16 cell, written row by row.
|
||||
assert_eq!(server.framebuffer().pixel_count(), 128);
|
||||
// 'A' row 2 is 0x7c: column 0 off, column 1 on.
|
||||
let at = |i: usize| server.framebuffer().pixel_at(i);
|
||||
assert_eq!(at(16), (ScreenCoord::new(8), ScreenCoord::new(18), bg));
|
||||
assert_eq!(at(17), (ScreenCoord::new(9), ScreenCoord::new(18), fg));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn text_past_the_edge_is_cut_not_wrapped() {
|
||||
use types::display::text::Text;
|
||||
let mut server = test_server();
|
||||
let c = Color::rgb(1, 1, 1);
|
||||
// 320 wide: from x=304 only two cells fit.
|
||||
let t = Text::new(ScreenCoord::new(304), ScreenCoord::new(0), c, c, b"abc");
|
||||
server.handle(DisplayRequest::DrawText(t));
|
||||
assert_eq!(server.framebuffer().pixel_count(), 256);
|
||||
let low = Text::new(ScreenCoord::new(0), ScreenCoord::new(230), c, c, b"a");
|
||||
server.handle(DisplayRequest::DrawText(low));
|
||||
assert_eq!(server.framebuffer().pixel_count(), 256);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user