diff options
Diffstat (limited to 'stm32/app/font21x32.c')
-rw-r--r-- | stm32/app/font21x32.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/stm32/app/font21x32.c b/stm32/app/font21x32.c index 476af5e..5ac0f53 100644 --- a/stm32/app/font21x32.c +++ b/stm32/app/font21x32.c @@ -109,19 +109,30 @@ static const uint8_t font21x32[][84] = { void font21x32_put_ch (uint8_t *vram, unsigned ch, unsigned x) { + unsigned xe; + if ((ch >= '0') && (ch <= '9')) ch -= '0' - 1; else ch = 0; + if (x >= SSD1306_WIDTH) return; + + xe = x + 21; + + if (xe > SSD1306_WIDTH) xe = SSD1306_WIDTH; + - oled_blit_strip (vram, x, x + 21, 0xff, 0, font21x32[ch]); + oled_blit_strip (vram, x, xe, 0xff, 0, font21x32[ch]); x += SSD1306_WIDTH; - oled_blit_strip (vram, x, x + 21, 0xff, 0, &font21x32[ch][21]); + xe += SSD1306_WIDTH; + oled_blit_strip (vram, x, xe, 0xff, 0, &font21x32[ch][21]); x += SSD1306_WIDTH; - oled_blit_strip (vram, x, x + 21, 0xff, 0, &font21x32[ch][42]); + xe += SSD1306_WIDTH; + oled_blit_strip (vram, x, xe, 0xff, 0, &font21x32[ch][42]); x += SSD1306_WIDTH; - oled_blit_strip (vram, x, x + 21, 0xff, 0, &font21x32[ch][63]); + xe += SSD1306_WIDTH; + oled_blit_strip (vram, x, xe, 0xff, 0, &font21x32[ch][63]); } |