Blame | Last modification | View Log | RSS feed
#include "global.h"#include "lib/simpletextrenderer/simpletextrenderer.h"#include "interface/textrenderer/textrenderer.h"#include "interface/framebuffer/framebuffer.h"#include "sys/util.h"static const char simpletextrenderer_font_base = '!';static const uint8_t simpletextrenderer_font[][5] ={{ 0x00, 0x00, 0x5f, 0x00, 0x00 }, // '!'{ 0x00, 0x07, 0x00, 0x07, 0x00 }, // '"'{ 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // '#'{ 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // '$'{ 0x23, 0x13, 0x08, 0x64, 0x62 }, // '%'{ 0x36, 0x49, 0x55, 0x22, 0x50 }, // '&'{ 0x05, 0x03, 0x00, 0x00, 0x00 }, // '''{ 0x1c, 0x22, 0x41, 0x00, 0x00 }, // '('{ 0x00, 0x00, 0x41, 0x22, 0x1c }, // ')'{ 0x14, 0x08, 0x3e, 0x08, 0x14 }, // '*'{ 0x08, 0x08, 0x3e, 0x08, 0x08 }, // '+'{ 0x00, 0xa0, 0x60, 0x00, 0x00 }, // ','{ 0x08, 0x08, 0x08, 0x08, 0x08 }, // '-'{ 0x00, 0x60, 0x60, 0x00, 0x00 }, // '.'{ 0x20, 0x10, 0x08, 0x04, 0x02 }, // '/'{ 0x3e, 0x51, 0x49, 0x45, 0x3e }, // '0'{ 0x00, 0x42, 0x7f, 0x40, 0x00 }, // '1'{ 0x42, 0x61, 0x51, 0x49, 0x46 }, // '2'{ 0x21, 0x41, 0x45, 0x4b, 0x31 }, // '3'{ 0x18, 0x14, 0x12, 0x7f, 0x10 }, // '4'{ 0x27, 0x45, 0x45, 0x45, 0x39 }, // '5'{ 0x3c, 0x4a, 0x49, 0x49, 0x30 }, // '6'{ 0x01, 0x71, 0x09, 0x05, 0x03 }, // '7'{ 0x36, 0x49, 0x49, 0x49, 0x36 }, // '8'{ 0x06, 0x49, 0x49, 0x29, 0x1e }, // '9'{ 0x00, 0x36, 0x36, 0x00, 0x00 }, // ':'{ 0x00, 0x56, 0x36, 0x00, 0x00 }, // ';'{ 0x08, 0x14, 0x22, 0x41, 0x00 }, // '<'{ 0x14, 0x14, 0x14, 0x14, 0x14 }, // '='{ 0x00, 0x41, 0x22, 0x14, 0x08 }, // '>'{ 0x02, 0x01, 0x51, 0x09, 0x06 }, // '?'{ 0x32, 0x49, 0x79, 0x41, 0x3e }, // '@'{ 0x7c, 0x12, 0x11, 0x12, 0x7c }, // 'A'{ 0x7f, 0x49, 0x49, 0x49, 0x3e }, // 'B'{ 0x3e, 0x41, 0x41, 0x41, 0x22 }, // 'C'{ 0x7f, 0x41, 0x41, 0x22, 0x1c }, // 'D'{ 0x7f, 0x49, 0x49, 0x49, 0x41 }, // 'E'{ 0x7f, 0x09, 0x09, 0x09, 0x01 }, // 'F'{ 0x3e, 0x41, 0x49, 0x49, 0x3a }, // 'G'{ 0x7f, 0x08, 0x08, 0x08, 0x7f }, // 'H'{ 0x00, 0x41, 0x7f, 0x41, 0x00 }, // 'I'{ 0x20, 0x40, 0x41, 0x3f, 0x01 }, // 'J'{ 0x7f, 0x08, 0x14, 0x22, 0x41 }, // 'K'{ 0x7f, 0x40, 0x40, 0x40, 0x40 }, // 'L'{ 0x7f, 0x02, 0x0c, 0x02, 0x7f }, // 'M'{ 0x7f, 0x04, 0x08, 0x10, 0x7f }, // 'N'{ 0x3e, 0x41, 0x41, 0x41, 0x3e }, // 'O'{ 0x7f, 0x09, 0x09, 0x09, 0x06 }, // 'P'{ 0x3e, 0x41, 0x51, 0x21, 0x5e }, // 'Q'{ 0x7f, 0x09, 0x19, 0x29, 0x46 }, // 'R'{ 0x26, 0x49, 0x49, 0x49, 0x32 }, // 'S'{ 0x01, 0x01, 0x7f, 0x01, 0x01 }, // 'T'{ 0x3f, 0x40, 0x40, 0x40, 0x3f }, // 'U'{ 0x1f, 0x20, 0x40, 0x20, 0x1f }, // 'V'{ 0x7f, 0x20, 0x18, 0x20, 0x7f }, // 'W'{ 0x63, 0x14, 0x08, 0x14, 0x63 }, // 'X'{ 0x03, 0x04, 0x78, 0x04, 0x03 }, // 'Y'{ 0x61, 0x51, 0x49, 0x45, 0x43 }, // 'Z'{ 0x00, 0x7f, 0x41, 0x41, 0x00 }, // '['{ 0x02, 0x04, 0x08, 0x10, 0x20 }, // '\'{ 0x00, 0x41, 0x41, 0x7f, 0x00 }, // ']'{ 0x04, 0x02, 0x01, 0x02, 0x04 }, // '^'{ 0x40, 0x40, 0x40, 0x40, 0x40 }, // '_'{ 0x01, 0x02, 0x04, 0x00, 0x00 }, // '`'{ 0x20, 0x54, 0x54, 0x54, 0x78 }, // 'a'{ 0x7f, 0x44, 0x44, 0x44, 0x38 }, // 'b'{ 0x38, 0x44, 0x44, 0x44, 0x28 }, // 'c'{ 0x38, 0x44, 0x44, 0x44, 0x7f }, // 'd'{ 0x38, 0x54, 0x54, 0x54, 0x18 }, // 'e'{ 0x08, 0x7e, 0x09, 0x01, 0x02 }, // 'f'{ 0x08, 0x54, 0x54, 0x54, 0x3c }, // 'g'{ 0x7f, 0x04, 0x04, 0x04, 0x78 }, // 'h'{ 0x00, 0x44, 0x7d, 0x40, 0x00 }, // 'i'{ 0x20, 0x40, 0x40, 0x3d, 0x00 }, // 'j'{ 0x7f, 0x10, 0x28, 0x44, 0x00 }, // 'k'{ 0x00, 0x41, 0x7f, 0x40, 0x00 }, // 'l'{ 0x7c, 0x04, 0x18, 0x04, 0x78 }, // 'm'{ 0x7c, 0x08, 0x04, 0x04, 0x78 }, // 'n'{ 0x38, 0x44, 0x44, 0x44, 0x38 }, // 'o'{ 0x7c, 0x14, 0x14, 0x14, 0x18 }, // 'p'{ 0x08, 0x14, 0x14, 0x14, 0x7c }, // 'q'{ 0x7c, 0x08, 0x04, 0x04, 0x08 }, // 'r'{ 0x48, 0x54, 0x54, 0x54, 0x20 }, // 's'{ 0x04, 0x3f, 0x44, 0x40, 0x20 }, // 't'{ 0x3c, 0x40, 0x40, 0x20, 0x7c }, // 'u'{ 0x1c, 0x20, 0x40, 0x20, 0x1c }, // 'v'{ 0x3c, 0x40, 0x38, 0x40, 0x3c }, // 'w'{ 0x44, 0x28, 0x10, 0x28, 0x44 }, // 'x'{ 0x0c, 0x50, 0x50, 0x50, 0x3c }, // 'y'{ 0x44, 0x64, 0x54, 0x4c, 0x44 }, // 'z'{ 0x00, 0x08, 0x36, 0x41, 0x00 }, // '{'{ 0x00, 0x00, 0x77, 0x00, 0x00 }, // '|'{ 0x00, 0x41, 0x36, 0x08, 0x00 }, // '}'{ 0x02, 0x01, 0x02, 0x04, 0x02 }, // '~'};static void simpletextrenderer_init(const struct textrenderer_instance* instance){}static int simpletextrenderer_get_line_height(const struct textrenderer_instance* instance){return 8;}static int simpletextrenderer_get_max_width(const struct textrenderer_instance* instance){return 6;}static int simpletextrenderer_render_char(const struct textrenderer_instance* instance,const struct framebuffer_instance* fb, int x, int y, uint32_t color, char c){uint32_t idx = c - simpletextrenderer_font_base;if (idx >= ARRAYLEN(simpletextrenderer_font)) return 6;const uint8_t* font = simpletextrenderer_font[idx];int width = 5;while (width--){int pixels = *font++;int i;for (i = 0; i < 8; i++){if (pixels & 1) framebuffer_set_pixel(fb, x, y + i, color);pixels >>= 1;}x++;}return 6;}const struct textrenderer_driver simpletextrenderer_driver ={.init = simpletextrenderer_init,.get_line_height = simpletextrenderer_get_line_height,.get_max_width = simpletextrenderer_get_max_width,.render_char = simpletextrenderer_render_char,};