Fixed monochrome bitmap blitting

This commit is contained in:
Sebastian 2018-09-17 01:46:51 +02:00
parent c4466aa703
commit 223bae1b70
5 changed files with 191 additions and 15 deletions

2
hcl

@ -1 +1 @@
Subproject commit 9dc33a9abadbde8e0c2ffc853a35feaf6990c143
Subproject commit 001d44d6b9693a9ad3fd6fc8bc44e8dc22ad7149

View File

@ -1,4 +1,4 @@
use st7735::bitmaps::ColorBitmap;
use st7735::bitmaps::{ColorBitmap, MonoBitmap};
const LOGO_PX : [u16; 1024] = [
0x4081, 0x4880, 0x4880, 0x2861, 0x38c1, 0x38c1, 0x30a1, 0x3081, 0x2861, 0x1861, 0x1061, 0x28a1, 0x3060, 0x2861, 0x821, 0x1041, 0x1861, 0x821, 0x821, 0x1, 0x821, 0x1841, 0x2061, 0x1841, 0x2061, 0x2881, 0x38a1, 0x5122, 0x2104, 0x5a48, 0x5a48, 0x6aea,
@ -36,7 +36,136 @@ const LOGO_PX : [u16; 1024] = [
];
pub const LOGO : ColorBitmap = ColorBitmap {
width : 4,
height : 4,
width : 32,
height : 32,
pixels : &LOGO_PX,
};
const LOGO_BW_PX : [u8; 2070] = [
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x78, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfc, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf8, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe0, 0xff, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0, 0xff, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, 0xff, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfc, 0xff, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xcf, 0x3f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe0, 0x3f, 0xff, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0, 0x7f, 0xf8, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xe1, 0x3f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, 0x3, 0xff, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf8, 0x7, 0xfc, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0, 0x1f, 0xff, 0x3f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe0, 0x3f, 0xfe, 0xff, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0xff, 0xf8, 0xff, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xf1, 0xfb, 0x3f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfc, 0xe7, 0xe7, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf8, 0xff, 0x8f, 0xff, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe0, 0xff, 0x1f, 0xfe, 0x1f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0, 0xff, 0x3b, 0xf8, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xcf, 0xe0, 0xff, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, 0x3f, 0x80, 0xff, 0x1f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfc, 0xff, 0x0, 0xfe, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff, 0x87, 0xf9, 0xff, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe0, 0xff, 0x1f, 0xc7, 0xff, 0x1f, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x7f, 0x7e, 0xc, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xf9, 0x31, 0xfc, 0xff, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfc, 0xe3, 0xc7, 0xf0, 0xf7, 0x1f, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf8, 0x7, 0x3f, 0xc0, 0xdf, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0, 0x1f, 0xfc, 0x0, 0x7f, 0xff, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0xc0, 0x7f, 0xf0, 0x3, 0xfc, 0xfc, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0xff, 0x83, 0xf, 0xfc, 0xe3, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, 0xf, 0x3e, 0xf8, 0xf, 0xfe, 0x1, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfc, 0x7f, 0xf8, 0xf1, 0x1f, 0xf8, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0xf8, 0xff, 0xc1, 0xc7, 0x7f, 0xc0, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0xe0, 0xff, 0xf, 0x9f, 0xf7, 0x81, 0xff, 0x1, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0xc0, 0xff, 0x3d, 0x7f, 0xc6, 0x3, 0xfe, 0xf, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0xff, 0xe7, 0xed, 0xf, 0xf, 0xfc, 0x3f, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, 0x9f, 0x87, 0x3f, 0x3c, 0xf0, 0xff, 0x1, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0xfc, 0xff, 0x3c, 0x7c, 0x70, 0xc0, 0xff, 0xf, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff, 0xff, 0xf1, 0xc3, 0x81, 0xff, 0x3f, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0xe0, 0x3f, 0xff, 0xc7, 0xef, 0x7, 0x3e, 0xff, 0x1, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x80, 0x7f, 0xf8, 0x3f, 0x8e, 0x9f, 0xfc, 0xfc, 0x7, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x81, 0xff, 0x38, 0x3e, 0xf3, 0xfb, 0x3f, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0xfc, 0x3, 0xfc, 0xe7, 0xfc, 0xec, 0xe7, 0xff, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0xf8, 0xf, 0xc0, 0x1f, 0xf3, 0x93, 0xc3, 0xfd, 0x7, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0xf0, 0x1f, 0x0, 0xfe, 0x8c, 0x7, 0x8f, 0xe1, 0x1f, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0xc0, 0x3f, 0x0, 0xe0, 0x3, 0xf, 0x1c, 0xc0, 0xff, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x80, 0xff, 0x0, 0x0, 0xf, 0x3e, 0x30, 0x80, 0xff, 0x7, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, 0x1, 0x0, 0x8, 0xf8, 0x0, 0x0, 0xff, 0x1f, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0xfc, 0x3, 0x0, 0x40, 0xe0, 0x3, 0x2, 0x7e, 0xff, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0xf0, 0xf, 0x0, 0x80, 0xc7, 0x1f, 0x1e, 0x7c, 0xfc, 0x3, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0xe0, 0x1f, 0x0, 0x0, 0xff, 0xff, 0xff, 0xf8, 0xfc, 0x1f, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0xc0, 0x7f, 0x0, 0x0, 0xfc, 0xff, 0xff, 0xf3, 0xf8, 0xff, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0xf0, 0xff, 0xff, 0xc7, 0xf9, 0xff, 0x3, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0xfe, 0x3, 0x0, 0x80, 0xff, 0xff, 0x1f, 0xf8, 0xf1, 0x1f, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0xf8, 0x7, 0x0, 0x0, 0xfc, 0xff, 0x3f, 0x70, 0x80, 0x7f, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0xf0, 0x1f, 0x0, 0x0, 0xf8, 0xff, 0xff, 0x0, 0x80, 0xff, 0x3, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0xc0, 0x3f, 0x0, 0x0, 0xe0, 0x7f, 0xfe, 0x7, 0xc0, 0xff, 0xf, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x80, 0x7f, 0x0, 0x0, 0x80, 0x7f, 0xe0, 0x1f, 0xf8, 0xff, 0x7f, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0xff, 0x1, 0x0, 0xe0, 0xff, 0x0, 0xff, 0xf7, 0xff, 0xff, 0x3, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0xfc, 0x3, 0x0, 0xc0, 0xff, 0x3, 0xfc, 0x1f, 0x0, 0xf8, 0xf, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0xf8, 0xf, 0x0, 0x0, 0xff, 0xf, 0xf0, 0x7f, 0x0, 0xff, 0x7f, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0xf0, 0x1f, 0x0, 0x0, 0xfc, 0x3f, 0xc0, 0xff, 0x1, 0xe0, 0xff, 0x3, 0x0, 0x0,
0x0, 0x0, 0x0, 0xc0, 0x7f, 0x0, 0x0, 0xe0, 0xff, 0x0, 0xff, 0x7, 0x0, 0xf8, 0xf, 0x0, 0x0,
0x0, 0x0, 0x0, 0x80, 0xff, 0x0, 0x0, 0x0, 0xfc, 0x7, 0xfe, 0xc1, 0xff, 0xff, 0x7f, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0xfe, 0x1, 0x0, 0x0, 0xe0, 0x3f, 0xfc, 0x7, 0xf0, 0xff, 0xff, 0x1, 0x0, 0x0,
0x0, 0x0, 0x0, 0xfc, 0x7, 0x0, 0x0, 0x80, 0xff, 0xf0, 0x1f, 0x0, 0xf8, 0xff, 0xf, 0x0, 0x0,
0x0, 0x0, 0x0, 0xf0, 0xf, 0x0, 0x0, 0x0, 0xfc, 0xc1, 0x3f, 0x0, 0xf0, 0xf1, 0x3f, 0x0, 0x0,
0x0, 0x0, 0x0, 0xe0, 0x3f, 0x0, 0x0, 0x0, 0xf8, 0x7, 0xfe, 0x1, 0xc7, 0xf, 0xff, 0x1, 0x0, 0x0,
0x0, 0x0, 0xc0, 0x7f, 0x80, 0x7, 0x0, 0xf0, 0x1f, 0xf8, 0xc7, 0x3f, 0x10, 0xf8, 0x7, 0x0, 0x0,
0x0, 0x0, 0x0, 0xff, 0x0, 0x3f, 0x0, 0xc0, 0x3f, 0xe0, 0x3f, 0xfc, 0x1f, 0xc0, 0x3f, 0x0, 0x0,
0x0, 0x0, 0x0, 0xfe, 0x3, 0xfe, 0x1, 0x0, 0xff, 0x0, 0xff, 0x0, 0xff, 0x1f, 0xff, 0x0, 0x0,
0x0, 0x0, 0x0, 0xf8, 0x7, 0xf8, 0x7, 0x0, 0x38, 0x0, 0xe0, 0x79, 0xc0, 0xff, 0xff, 0x7, 0x0, 0x0,
0x0, 0x0, 0xf0, 0x1f, 0xe0, 0x1f, 0x0, 0x46, 0x0, 0x0, 0xe2, 0x1, 0xff, 0xff, 0x3f, 0x0, 0x0,
0x0, 0x0, 0xc0, 0x3f, 0x80, 0x7f, 0x0, 0x3e, 0x0, 0x0, 0x60, 0x3c, 0xfc, 0xff, 0xff, 0x0, 0x0,
0x0, 0x0, 0x80, 0x7f, 0x0, 0xfe, 0x1, 0xfc, 0x0, 0x0, 0x0, 0xc3, 0xe3, 0x9f, 0xff, 0x7, 0x0,
0x0, 0x0, 0x0, 0xfe, 0x1, 0xf0, 0x3, 0xf8, 0x3, 0x0, 0x0, 0x38, 0x3c, 0x3c, 0xe0, 0x1f, 0x0, 0x0,
0x0, 0x0, 0xfc, 0x3, 0x78, 0xf8, 0xff, 0x3, 0x0, 0x0, 0xc0, 0xc1, 0x7, 0x0, 0xff, 0x0, 0x0,
0x0, 0x0, 0xf8, 0xf, 0xf0, 0xff, 0xff, 0x7, 0x0, 0x0, 0x0, 0x1c, 0x7c, 0x0, 0xfc, 0x7, 0x0,
0x0, 0x0, 0xe0, 0x1f, 0xe0, 0xff, 0xff, 0xf, 0x0, 0xf8, 0x1, 0xe0, 0xc0, 0x7, 0xe0, 0x1f, 0x0,
0x0, 0x0, 0xc0, 0x7f, 0xc0, 0xff, 0xff, 0x1f, 0x0, 0xff, 0x7, 0x0, 0xf, 0x7c, 0x80, 0xff, 0x0, 0x0,
0x0, 0x0, 0xff, 0x80, 0xff, 0xff, 0x3f, 0xc0, 0xff, 0x1f, 0x0, 0x78, 0xf8, 0x7, 0xfc, 0x3, 0x0,
0x0, 0x0, 0xfe, 0x1, 0xff, 0xff, 0x3, 0x80, 0xff, 0x7f, 0x0, 0xc0, 0xf7, 0x7f, 0xe0, 0x1f, 0x0,
0x0, 0x0, 0xfc, 0x7, 0xfe, 0xff, 0x1f, 0x80, 0xff, 0xff, 0x0, 0x0, 0xfc, 0xdf, 0x87, 0xff, 0x0,
0x0, 0x0, 0xf0, 0xf, 0xfc, 0xf9, 0xff, 0x80, 0xff, 0xf, 0x0, 0x0, 0xe0, 0x7f, 0x7c, 0xfc, 0x3, 0x0,
0x0, 0xe0, 0x3f, 0xf0, 0xc3, 0xff, 0x7, 0xff, 0x1, 0x0, 0x0, 0x0, 0x1f, 0xc0, 0xff, 0x1f, 0x0,
0x0, 0x80, 0x7f, 0xc0, 0x7, 0xfe, 0x3f, 0xff, 0x3, 0x0, 0x0, 0x0, 0xf8, 0x1, 0xfc, 0x7f, 0x0,
0x0, 0x0, 0xff, 0x1, 0xf, 0xf0, 0xff, 0xff, 0x3, 0x0, 0x0, 0x0, 0xc0, 0x1f, 0xc0, 0xff, 0x3,
0x0, 0x0, 0xfe, 0x3, 0x3c, 0xc0, 0xff, 0xff, 0x7, 0x0, 0x0, 0x0, 0x0, 0xfc, 0x0, 0xfc, 0x1f, 0x0,
0x0, 0xf8, 0xf, 0xf0, 0x0, 0xfe, 0xff, 0x7, 0x0, 0x0, 0x0, 0x0, 0xe0, 0xf, 0xc7, 0x7f, 0x0,
0x0, 0xf0, 0x1f, 0xc0, 0x3, 0xf0, 0xff, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x1c, 0xfe, 0x3,
0x0, 0xc0, 0x3f, 0x0, 0xf, 0x80, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf8, 0x7, 0xf0, 0xf,
0x0, 0x80, 0xff, 0x0, 0x3c, 0x0, 0xfc, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x80, 0x7f, 0xc0, 0x7f, 0x0,
0x0, 0xfe, 0x1, 0xf0, 0x0, 0xe0, 0xff, 0xff, 0xf, 0x0, 0x0, 0x0, 0x0, 0xfc, 0x3, 0xfe, 0x1,
0x0, 0xfc, 0x7, 0xc0, 0x3, 0x0, 0xfe, 0xff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0xe0, 0x3f, 0xf8, 0xf,
0x0, 0xf8, 0xf, 0x0, 0x0, 0x0, 0xc0, 0xff, 0xff, 0x7, 0x0, 0x0, 0x0, 0x0, 0xff, 0xc1, 0x7f,
0x0, 0xe0, 0x1f, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, 0x3f, 0x0, 0x0, 0x0, 0x0, 0xf0, 0x1f, 0xfe, 0x1,
0xc0, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, 0x3, 0x0, 0x0, 0x0, 0x80, 0xff, 0xf9, 0xf,
0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe0, 0x1f, 0x0, 0x0, 0x0, 0x0, 0xfc, 0xcf, 0x3f,
0x0, 0xfe, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0xe0, 0xff, 0xff,
0x1, 0xf8, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0, 0x7, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0x7,
0xf0, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0xf, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xff, 0x3f,
0xe0, 0x3f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x80, 0xff, 0xff,
0x81, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfc, 0xff,
0x7, 0xff, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe0, 0xff, 0x3f,
0xfc, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff,
0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f
];
pub const LOGO_BW : MonoBitmap = MonoBitmap {
width : 138,
height : 120,
pixels : &LOGO_BW_PX,
};

View File

@ -142,8 +142,10 @@ fn run(mut scs: scs::Instance, mut p: hcl::platform::Instance) {
st7735io.draw_line(4, 4, 80, 64, st7735::COLOR_GREEN);
systick::delay_ms(100);
//st7735io.draw_color_bitmap(10, 10, &logo::LOGO);
systick::delay_ms(1000);
st7735io.draw_mono_bitmap(11, 4, &logo::LOGO_BW, st7735::COLOR_WHITE, st7735::COLOR_BLACK);
systick::delay_ms(1000);
//st7735io.draw_color_bitmap(11, 4, &logo::LOGO);
systick::delay_ms(5000);
}
let (st7735, mut spi, mut gpio) = st7735io.done();

View File

@ -100,7 +100,6 @@ pub trait GFX : PrimitveGFX {
let x0 = x0 as i16;
let y0 = y0 as i16;
let r = r as i16;
while x < y {
if f >= 0 {

View File

@ -219,8 +219,9 @@ impl<SPIAddr, GPIOAddr> St7735IO<SPIAddr, GPIOAddr>
fn write_byte(&mut self, byte : u8) {
self.spi.set_data(byte as u32);
while !self.spi.tx_buffer_empty() {};
while self.spi.busy() {}
while !self.spi.tx_buffer_empty() || self.spi.busy() {
unsafe { asm!("nop" :::: "volatile"); }
};
}
fn write_data_byte(&mut self, data : u8) {
@ -509,7 +510,7 @@ impl<SPIAddr, GPIOAddr> bitmaps::BitmapGFX for St7735IO<SPIAddr, GPIOAddr>
where SPIAddr: Location,
GPIOAddr: Location {
fn draw_color_bitmap(&mut self, x : u8, y: u8, bitmap: &bitmaps::ColorBitmap) {
fn draw_color_bitmap(&mut self, x : u8, y: u8, bitmap : &bitmaps::ColorBitmap) {
if x >= self.st7735.width || y >= self.st7735.height {
return;
}
@ -521,17 +522,20 @@ impl<SPIAddr, GPIOAddr> bitmaps::BitmapGFX for St7735IO<SPIAddr, GPIOAddr>
return;
}
self.set_addr_win(x, y, x + bitmap.width - 1, y + bitmap.height - 1);
let x_end = x + bitmap.width - 1;
let y_end = y + bitmap.height - 1;
self.set_addr_win(x, y, x_end, y_end);
self.set_rs();
self.reset_cs();
let mut byte_pos : usize = 0;
for i in 0..bitmap.height {
for j in 0..bitmap.width {
let color = bitmap.pixels[(i * bitmap.width + j) as usize];
self.write_color_bytes(color);
delay_ms(1);
}
let color = bitmap.pixels[byte_pos];
self.write_color_bytes(color);
byte_pos += 1;
}
}
self.set_cs();
@ -539,6 +543,48 @@ impl<SPIAddr, GPIOAddr> bitmaps::BitmapGFX for St7735IO<SPIAddr, GPIOAddr>
fn draw_mono_bitmap(&mut self, x : u8, y: u8, bitmap: &bitmaps::MonoBitmap,
color_set : u16, color_unset : u16) {
if x >= self.st7735.width || y >= self.st7735.height {
return;
}
if((x + bitmap.width - 1) >= self.st7735.width) {
return;
}
if((y + bitmap.height - 1) >= self.st7735.height) {
return;
}
let x_end = x + bitmap.width - 1;
let y_end = y + bitmap.height - 1;
self.set_addr_win(x, y, x_end, y_end);
self.set_rs();
self.reset_cs();
let mut byte_pos : usize = 0;
let mut bit_pos : u8 = 0;
let mut byte : u8 = 0;
for i in 0..bitmap.width {
for j in 0..bitmap.height{
if bit_pos == 0 {
byte = bitmap.pixels[byte_pos];
byte_pos += 1;
}
if (byte & (1 << bit_pos)) != 0{
self.write_color_bytes(color_set);
}
else {
self.write_color_bytes(color_unset);
}
bit_pos = (bit_pos + 1) % 8;
}
}
self.set_cs();
}