fix: font changing made easier

This commit is contained in:
xamidev
2024-09-27 20:31:27 +02:00
parent 903188a543
commit 756dc638e8
2 changed files with 11 additions and 8 deletions

View File

@@ -14,17 +14,17 @@ extern char* framebuffer;
void psf_init() void psf_init()
{ {
uint16_t glyph = 0; uint16_t glyph = 0;
PSF_font *font = (PSF_font*)&_binary_include_fonts_viscii10_8x16_psfu_start; PSF_font *font = (PSF_font*)&FONT_START;
if (font->flags) if (font->flags)
{ {
unicode = NULL; unicode = NULL;
return; return;
} }
char* s = (char*)((unsigned char*)&_binary_include_fonts_viscii10_8x16_psfu_start + font->headersize + font->numglyph * font->bytesperglyph); char* s = (char*)((unsigned char*)&FONT_START + font->headersize + font->numglyph * font->bytesperglyph);
unicode = calloc(USHRT_MAX, 2); unicode = calloc(USHRT_MAX, 2);
while(s>_binary_include_fonts_viscii10_8x16_psfu_end){ while(s>FONT_END){
uint16_t uc = (uint16_t)((unsigned char *)s[0]); uint16_t uc = (uint16_t)((unsigned char *)s[0]);
if(uc == 0xFF) { if(uc == 0xFF) {
glyph++; glyph++;
@@ -60,13 +60,13 @@ void putpixel(uint32_t* fb, int pitch, int bpp, int x, int y, uint32_t color)
void draw_char(unsigned short int c, int cx, int cy, uint32_t fg, uint32_t bg) void draw_char(unsigned short int c, int cx, int cy, uint32_t fg, uint32_t bg)
{ {
PSF_font *font = (PSF_font*)&_binary_include_fonts_viscii10_8x16_psfu_start; PSF_font *font = (PSF_font*)&FONT_START;
int bytesperline=(font->width+7)/8; int bytesperline=(font->width+7)/8;
if (unicode != NULL) { if (unicode != NULL) {
c = unicode[c]; c = unicode[c];
} }
unsigned char* glyph = (unsigned char*)&_binary_include_fonts_viscii10_8x16_psfu_start + font->headersize + (c>0&&c<font->numglyph?c:0)*font->bytesperglyph; unsigned char* glyph = (unsigned char*)&FONT_START + font->headersize + (c>0&&c<font->numglyph?c:0)*font->bytesperglyph;
int offs = int offs =
(cy * font->height * scanline) + (cy * font->height * scanline) +
@@ -96,7 +96,7 @@ void scroll()
{ {
serial_printf(3, "Scrolling...\r"); serial_printf(3, "Scrolling...\r");
uint32_t bg_color = 0x00000000; uint32_t bg_color = 0x00000000;
PSF_font *font = (PSF_font*)&_binary_include_fonts_viscii10_8x16_psfu_start; PSF_font *font = (PSF_font*)&FONT_START;
int line_size = font->height * scanline; int line_size = font->height * scanline;
int framebuffer_size = scanline * font->height * (1080/font->height); int framebuffer_size = scanline * font->height * (1080/font->height);

View File

@@ -10,8 +10,11 @@
extern int scanline; extern int scanline;
extern char _binary_include_fonts_viscii10_8x16_psfu_start; #define FONT_START _binary_include_fonts_viscii10_8x16_psfu_start
extern char _binary_include_fonts_viscii10_8x16_psfu_end; #define FONT_END _binary_include_fonts_viscii10_8x16_psfu_start
extern char FONT_START;
extern char FONT_END;
uint16_t* unicode; uint16_t* unicode;
#define PIXEL uint32_t #define PIXEL uint32_t