avr-firmwares/drivers/framebuffer.c

34 lines
723 B
C

#define DONT_DECLARE_FRAMEBUFFER 1
#include "framebuffer.h"
FRAMEBUFFER;
#if FB_DEPTH==1
void fb_fill(uint8_t c) {
memset(framebuffer, c, sizeof(framebuffer[0][0]) * FB_HEIGHT * FB_WIDTH_BYTES);
}
void fb_shift(uint16_t newcol) {
int x, y;
uint8_t transfer = 0, tmp = 0;
for (y = 0; y < FB_HEIGHT; y++) {
for (x = FB_WIDTH_BYTES - 1; x >= 0; x--) {
tmp = transfer;
transfer = (framebuffer[y][x] & 1);
framebuffer[y][x] = (framebuffer[y][x] >> 1) | (tmp << 7);
}
transfer = 0;
FB_SET(FB_WIDTH - 1, y, newcol & 1);
newcol = newcol >> 1;
}
}
#elif FB_DEPTH==8
void fb_fill(uint8_t c) {
memset(framebuffer, c, sizeof(framebuffer[0][0]) * FB_HEIGHT * FB_WIDTH);
}
#endif