diff options
Diffstat (limited to 'dogs.c')
-rw-r--r-- | dogs.c | 118 |
1 files changed, 118 insertions, 0 deletions
@@ -212,3 +212,121 @@ void draw_bitmap(int x, int y, const unsigned char *buffer) } } +static const unsigned char draw_number_bitmaps[10][10] = { + { 8, 8, // '0' + 0b00011000, + 0b00100100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00100100, + 0b00011000, + }, + { 8, 8, // '1' + 0b00011000, + 0b00101000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00111110, + }, + { 8, 8, // '2' + 0b00011000, + 0b00100100, + 0b01000010, + 0b00000010, + 0b00000100, + 0b00001000, + 0b00010000, + 0b01111110, + }, + { 8, 8, // '3' + 0b00111000, + 0b01000100, + 0b00000010, + 0b00111100, + 0b00000100, + 0b00000010, + 0b01000100, + 0b00111000, + }, + { 8, 8, // '4' + 0b00000100, + 0b00001100, + 0b00010100, + 0b00100100, + 0b01111100, + 0b00000100, + 0b00000100, + 0b00000100, + }, + { 8, 8, // '5' + 0b01111110, + 0b01000000, + 0b01111000, + 0b00000100, + 0b00000010, + 0b00000010, + 0b01000100, + 0b00111000, + }, + { 8, 8, // '6' + 0b00011100, + 0b00100000, + 0b01000000, + 0b01011100, + 0b01100010, + 0b01000010, + 0b00100100, + 0b00011000, + }, + { 8, 8, // '7' + 0b01111110, + 0b00000010, + 0b00000100, + 0b00001000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + }, + { 8, 8, // '8' + 0b00011000, + 0b00100100, + 0b01000010, + 0b00111100, + 0b00100100, + 0b01000010, + 0b00100100, + 0b00011000, + }, + { 8, 8, // '9' + 0b00011000, + 0b00100100, + 0b01000010, + 0b00100010, + 0b00011110, + 0b00000010, + 0b01000100, + 0b00111000, + }, +}; + +void draw_number(int x, int y, int number) +{ + if (number < 0) + number = -number; + int tmp = number; + int count; + for (count = 0; tmp; count++) + tmp /= 10; + x += count * 8; + do { + x -= 8; + draw_bitmap(x, y, draw_number_bitmaps[number % 10]); + } while (number /= 10); +} + |