27 lines
1.0 KiB
C++
27 lines
1.0 KiB
C++
#include "functions.h"
|
|
#include "text.h"
|
|
|
|
void drawTextSprite(Window window, const unsigned char* sprite, int w, int h, int xPos, int yPos, CRGB color, boolean invert) {
|
|
for (byte y=0; y<h; y++) for (byte x=0; x<w; x++) {
|
|
bool on = (sprite[x]>>(h-1-y)&1)*255;
|
|
if (invert) on = !on;
|
|
if (on) setPixel(window, x+xPos, y+yPos, color);
|
|
}
|
|
}
|
|
|
|
void drawChar(Window window, const unsigned char* font, int w, int h, int x, int y, char c, CRGB color) {
|
|
const unsigned char* sprite = &font[(c-32)*w];
|
|
drawTextSprite(window, sprite, w, h, x, y, color, false);
|
|
}
|
|
|
|
void drawDigit(Window window, const unsigned char* font, int w, int h, int x, int y, int digit, CRGB color, boolean invert) {
|
|
const unsigned char* sprite = &font[digit*w];
|
|
drawTextSprite(window, sprite, w, h, x, y, color, invert);
|
|
}
|
|
|
|
void drawText(Window window, const char *font, int w, int h, char *text, int x, int y, CRGB color) {
|
|
for (uint16_t i = 0; i < strlen(text); i++) {
|
|
drawChar(window, font5x7, 5, 7, x+i*(w+1), y, text[i], color);
|
|
}
|
|
}
|