45 lines
1.1 KiB
C
45 lines
1.1 KiB
C
#include <stdint.h>
|
|
#include "asciifont.h"
|
|
#include "bmfont.h"
|
|
#include "Fonts/quan8x8.h"
|
|
#include "Fonts/unifont16x16.h"
|
|
|
|
#define ASCII_CHAR_START 0x21
|
|
#define ASCII_CHAR_END 0x7E
|
|
|
|
uint8_t af_get_char_data(bmf_BitmapFont *font, uint32_t unicode, uint8_t *buffer) {
|
|
if (unicode < ASCII_CHAR_START || unicode > ASCII_CHAR_END) {
|
|
return 0;
|
|
}
|
|
uint8_t ch_w = font->char_width;
|
|
uint8_t ch_h = font->char_height;
|
|
uint8_t wp = ch_w / 8;
|
|
wp += (ch_w % 8) ? 1 : 0;
|
|
uint16_t buffer_size = wp * ch_h;
|
|
uint32_t start, curr;
|
|
start = (unicode - ASCII_CHAR_START) * buffer_size;
|
|
for (curr = 0; curr < buffer_size; curr ++) {
|
|
buffer[curr] = font->font_date[start + curr];
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
bmf_BitmapFont font_quan_8x8_obj = {
|
|
af_get_char_data,
|
|
FONT_QUAN_8_8,
|
|
8,
|
|
8,
|
|
FONT_QUAN_ASCII_WIDTH_8_8
|
|
};
|
|
|
|
bmf_BitmapFont font_unifont_16x16_obj = {
|
|
af_get_char_data,
|
|
FONT_UNIFONT_16_16,
|
|
16,
|
|
16,
|
|
FONT_UNIFONT_ASCII_WIDTH_16_16
|
|
};
|
|
|
|
bmf_BitmapFont *font_quan_8x8 = &font_quan_8x8_obj;
|
|
bmf_BitmapFont *font_unifont_16x16 = &font_unifont_16x16_obj;
|