mirror of https://github.com/radex/radmatrix.git
add bitmap font rendering (untested)
parent
47019ac5c2
commit
11340358d2
|
@ -0,0 +1,169 @@
|
|||
// https://github.com/petabyt/font3x3
|
||||
#ifndef FONT3X3_H
|
||||
#define FONT3X3_H
|
||||
|
||||
struct Font3x3 {
|
||||
const char letter;
|
||||
const char code[3][4];
|
||||
};
|
||||
|
||||
struct Font3x3 font[] = {
|
||||
{'A', {
|
||||
" # ",
|
||||
"###",
|
||||
"# #"}},
|
||||
{'B', {
|
||||
"## ",
|
||||
"###",
|
||||
"###"}},
|
||||
{'C', {
|
||||
"###",
|
||||
"# ",
|
||||
"###"}},
|
||||
{'D', {
|
||||
"## ",
|
||||
"# #",
|
||||
"## "}},
|
||||
{'E', {
|
||||
"###",
|
||||
"## ",
|
||||
"###"}},
|
||||
{'F', {
|
||||
"###",
|
||||
"## ",
|
||||
"# "}},
|
||||
{'G', {
|
||||
"## ",
|
||||
"# #",
|
||||
"###"}},
|
||||
{'H', {
|
||||
"# #",
|
||||
"###",
|
||||
"# #"}},
|
||||
{'I', {
|
||||
"###",
|
||||
" # ",
|
||||
"###"}},
|
||||
{'J', {
|
||||
" #",
|
||||
"# #",
|
||||
"###"}},
|
||||
{'K', {
|
||||
"# #",
|
||||
"## ",
|
||||
"# #"}},
|
||||
{'L', {
|
||||
"# ",
|
||||
"# ",
|
||||
"###"}},
|
||||
{'M', {
|
||||
"###",
|
||||
"###",
|
||||
"# #"}},
|
||||
{'N', {
|
||||
"###",
|
||||
"# #",
|
||||
"# #"}},
|
||||
{'O', {
|
||||
"###",
|
||||
"# #",
|
||||
"###"}},
|
||||
{'P', {
|
||||
"###",
|
||||
"###",
|
||||
"# "}},
|
||||
{'Q', {
|
||||
"###",
|
||||
"###",
|
||||
" #"}},
|
||||
{'R', {
|
||||
"###",
|
||||
"# ",
|
||||
"# "}},
|
||||
{'S', {
|
||||
" ##",
|
||||
" # ",
|
||||
"## "}},
|
||||
{'T', {
|
||||
"###",
|
||||
" # ",
|
||||
" # "}},
|
||||
{'U', {
|
||||
"# #",
|
||||
"# #",
|
||||
"###"}},
|
||||
{'V', {
|
||||
"# #",
|
||||
"# #",
|
||||
" # "}},
|
||||
{'W', {
|
||||
"# #",
|
||||
"###",
|
||||
"###"}},
|
||||
{'X', {
|
||||
"# #",
|
||||
" # ",
|
||||
"# #"}},
|
||||
{'Y', {
|
||||
"# #",
|
||||
" # ",
|
||||
" # "}},
|
||||
{'Z', {
|
||||
"## ",
|
||||
" # ",
|
||||
" ##"}},
|
||||
{'!', {
|
||||
"# ",
|
||||
" ",
|
||||
"# "}},
|
||||
{'>', {
|
||||
"# ",
|
||||
" # ",
|
||||
"# "}},
|
||||
{'<', {
|
||||
" # ",
|
||||
"# ",
|
||||
" # "}},
|
||||
{'%', {
|
||||
" #",
|
||||
"###",
|
||||
"# "}},
|
||||
{'*', {
|
||||
" # ",
|
||||
"## ",
|
||||
" "}},
|
||||
{'+', {
|
||||
" # ",
|
||||
"###",
|
||||
" # "}},
|
||||
{'-', {
|
||||
" ",
|
||||
"###",
|
||||
" "}},
|
||||
{'.', {
|
||||
" ",
|
||||
" ",
|
||||
"# "}},
|
||||
{',', {
|
||||
" ",
|
||||
"# ",
|
||||
"# "}},
|
||||
{'$', {
|
||||
"###",
|
||||
" # ",
|
||||
"###"}},
|
||||
{'|', {
|
||||
"# ",
|
||||
"# ",
|
||||
"# "}},
|
||||
{'?', {
|
||||
"###",
|
||||
" ##",
|
||||
" # "}},
|
||||
{'^', {
|
||||
" # ",
|
||||
"# #",
|
||||
" "}}
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,761 @@
|
|||
// https://github.com/petabyt/font
|
||||
/*
|
||||
"font.h", Written by Daniel C. MIT License.
|
||||
|
||||
This file is C89.
|
||||
|
||||
Compiler/preprocessor configs (optional):
|
||||
-D NO_LOWERCASE
|
||||
-D NO_SYMBOL
|
||||
-D NO_NUMBERS
|
||||
In case you are limited in space :)
|
||||
*/
|
||||
#ifndef FONT_H
|
||||
#define FONT_H
|
||||
|
||||
struct Font {
|
||||
char letter;
|
||||
char code[7][5];
|
||||
};
|
||||
|
||||
struct Font font[] = {
|
||||
{' ', { /* Processor should ignore this */
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "}},
|
||||
{'A', {
|
||||
" ### ",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
"#####",
|
||||
"# #",
|
||||
"# #"}},
|
||||
{'B', {
|
||||
"#### ",
|
||||
"# #",
|
||||
"# #",
|
||||
"#### ",
|
||||
"# #",
|
||||
"# #",
|
||||
"#### "}},
|
||||
{'C', {
|
||||
" ####",
|
||||
"# ",
|
||||
"# ",
|
||||
"# ",
|
||||
"# ",
|
||||
"# ",
|
||||
" ####"}},
|
||||
{'D', {
|
||||
"#### ",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
"#### "}},
|
||||
{'E', {
|
||||
"#####",
|
||||
"# ",
|
||||
"# ",
|
||||
"#####",
|
||||
"# ",
|
||||
"# ",
|
||||
"#####"}},
|
||||
{'F', {
|
||||
"#####",
|
||||
"# ",
|
||||
"# ",
|
||||
"#####",
|
||||
"# ",
|
||||
"# ",
|
||||
"# "}},
|
||||
{'G', {
|
||||
" ####",
|
||||
"# ",
|
||||
"# ",
|
||||
"# ##",
|
||||
"# #",
|
||||
"# #",
|
||||
" ####"}},
|
||||
{'H', {
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
"#####",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #"}},
|
||||
{'I', {
|
||||
"# ",
|
||||
"# ",
|
||||
"# ",
|
||||
"# ",
|
||||
"# ",
|
||||
"# ",
|
||||
"# "}},
|
||||
{'J', {
|
||||
" #",
|
||||
" #",
|
||||
" #",
|
||||
" #",
|
||||
" #",
|
||||
" #",
|
||||
"#### "}},
|
||||
{'K', {
|
||||
"# #",
|
||||
"# # ",
|
||||
"# # ",
|
||||
"## ",
|
||||
"# # ",
|
||||
"# # ",
|
||||
"# #"}},
|
||||
{'L', {
|
||||
"# ",
|
||||
"# ",
|
||||
"# ",
|
||||
"# ",
|
||||
"# ",
|
||||
"# ",
|
||||
"#####"}},
|
||||
{'M', {
|
||||
"# #",
|
||||
"## ##",
|
||||
"# # #",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #"}},
|
||||
{'N', {
|
||||
"# #",
|
||||
"## #",
|
||||
"# # #",
|
||||
"# ##",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #"}},
|
||||
{'O', {
|
||||
" ### ",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
" ### "}},
|
||||
{'P', {
|
||||
"#### ",
|
||||
"# #",
|
||||
"# #",
|
||||
"#### ",
|
||||
"# ",
|
||||
"# ",
|
||||
"# "}},
|
||||
{'Q', {
|
||||
" ### ",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
"# ##",
|
||||
" ####"}},
|
||||
{'R', {
|
||||
"#### ",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
"#### ",
|
||||
"# #",
|
||||
"# #"}},
|
||||
{'S', {
|
||||
" ####",
|
||||
"# ",
|
||||
"# ",
|
||||
" ### ",
|
||||
" #",
|
||||
" #",
|
||||
"#### "}},
|
||||
{'T', {
|
||||
"#####",
|
||||
" # ",
|
||||
" # ",
|
||||
" # ",
|
||||
" # ",
|
||||
" # ",
|
||||
" # "}},
|
||||
{'U', {
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
" ### "}},
|
||||
{'V', {
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
" # # ",
|
||||
" # "}},
|
||||
{'W', {
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
"# # #",
|
||||
"## ##",
|
||||
"# #"}},
|
||||
{'X', {
|
||||
"# #",
|
||||
"# #",
|
||||
" # # ",
|
||||
" # ",
|
||||
" # # ",
|
||||
"# #",
|
||||
"# #"}},
|
||||
{'Y', {
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
" ### ",
|
||||
" # ",
|
||||
" # ",
|
||||
" # "}},
|
||||
{'Z', {
|
||||
"#####",
|
||||
" #",
|
||||
" # ",
|
||||
" # ",
|
||||
" # ",
|
||||
"# ",
|
||||
"#####"}},
|
||||
#ifndef NO_LOWERCASE
|
||||
{'a', {
|
||||
" ",
|
||||
" ",
|
||||
" ### ",
|
||||
" #",
|
||||
" ####",
|
||||
"# #",
|
||||
" ####"}},
|
||||
{'b', {
|
||||
"# ",
|
||||
"# ",
|
||||
"#### ",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
"#### "}},
|
||||
{'c', {
|
||||
" ",
|
||||
" ",
|
||||
" ### ",
|
||||
"# #",
|
||||
"# ",
|
||||
"# #",
|
||||
" ### "}},
|
||||
{'d', {
|
||||
" #",
|
||||
" #",
|
||||
" ####",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
" ####"}},
|
||||
{'e', {
|
||||
" ",
|
||||
" ",
|
||||
" ### ",
|
||||
"# #",
|
||||
"#####",
|
||||
"# ",
|
||||
" ####"}},
|
||||
{'f', {
|
||||
" ## ",
|
||||
" # #",
|
||||
" # ",
|
||||
"### ",
|
||||
" # ",
|
||||
" # ",
|
||||
" # "}},
|
||||
{'g', {
|
||||
" ",
|
||||
" ####",
|
||||
"# #",
|
||||
"# #",
|
||||
" ####",
|
||||
" #",
|
||||
"#### "}},
|
||||
{'h', {
|
||||
"# ",
|
||||
"# ",
|
||||
"#### ",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #"}},
|
||||
{'i', {
|
||||
"# ",
|
||||
" ",
|
||||
"# ",
|
||||
"# ",
|
||||
"# ",
|
||||
"# ",
|
||||
"# "}},
|
||||
{'j', {
|
||||
" #",
|
||||
" ",
|
||||
" ##",
|
||||
" #",
|
||||
" #",
|
||||
"# #",
|
||||
" ### "}},
|
||||
{'k', {
|
||||
"# ",
|
||||
"# ",
|
||||
"# #",
|
||||
"# # ",
|
||||
"### ",
|
||||
"# # ",
|
||||
"# #"}},
|
||||
{'l', {
|
||||
"# ",
|
||||
"# ",
|
||||
"# ",
|
||||
"# ",
|
||||
"# ",
|
||||
"# ",
|
||||
"## "}},
|
||||
{'m', {
|
||||
" ",
|
||||
" ",
|
||||
"#### ",
|
||||
"# # #",
|
||||
"# # #",
|
||||
"# # #",
|
||||
"# # #"}},
|
||||
{'n', {
|
||||
" ",
|
||||
" ",
|
||||
"#### ",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #"}},
|
||||
{'o', {
|
||||
" ",
|
||||
" ",
|
||||
" ### ",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
" ### "}},
|
||||
{'p', {
|
||||
" ",
|
||||
" ### ",
|
||||
" # #",
|
||||
" # #",
|
||||
" ### ",
|
||||
" # ",
|
||||
" # "}},
|
||||
{'q', {
|
||||
" ",
|
||||
" ",
|
||||
" ###",
|
||||
" # #",
|
||||
" ###",
|
||||
" #",
|
||||
" #"}},
|
||||
{'r', {
|
||||
" ",
|
||||
" ",
|
||||
"# ###",
|
||||
"## ",
|
||||
"# ",
|
||||
"# ",
|
||||
"# "}},
|
||||
{'s', {
|
||||
" ",
|
||||
" ",
|
||||
" ####",
|
||||
"# ",
|
||||
" ### ",
|
||||
" #",
|
||||
"#### "}},
|
||||
{'t', {
|
||||
" # ",
|
||||
" # ",
|
||||
"### ",
|
||||
" # ",
|
||||
" # ",
|
||||
" # ",
|
||||
" ## "}},
|
||||
{'u', {
|
||||
" ",
|
||||
" ",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
" ### "}},
|
||||
{'v', {
|
||||
" ",
|
||||
" ",
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
" # # ",
|
||||
" # "}},
|
||||
{'w', {
|
||||
" ",
|
||||
" ",
|
||||
"# #",
|
||||
"# #",
|
||||
"# # #",
|
||||
"# # #",
|
||||
" # # "}},
|
||||
{'x', {
|
||||
" ",
|
||||
" ",
|
||||
"# #",
|
||||
" # # ",
|
||||
" # ",
|
||||
" # # ",
|
||||
"# #"}},
|
||||
{'y', {
|
||||
" ",
|
||||
" ",
|
||||
"# #",
|
||||
"# #",
|
||||
" ####",
|
||||
" #",
|
||||
"#### "}},
|
||||
{'z', {
|
||||
" ",
|
||||
" ",
|
||||
"#####",
|
||||
" # ",
|
||||
" # ",
|
||||
" # ",
|
||||
"#####"}},
|
||||
#endif
|
||||
#ifndef NO_NUMBERS
|
||||
{'0', {
|
||||
" ### ",
|
||||
"# #",
|
||||
"# ##",
|
||||
"# # #",
|
||||
"## #",
|
||||
"# #",
|
||||
" ### "}},
|
||||
{'1', {
|
||||
"## ",
|
||||
" # ",
|
||||
" # ",
|
||||
" # ",
|
||||
" # ",
|
||||
" # ",
|
||||
" # "}},
|
||||
{'2', {
|
||||
" ### ",
|
||||
"# #",
|
||||
" #",
|
||||
" ## ",
|
||||
" # ",
|
||||
"# ",
|
||||
"#####"}},
|
||||
{'3', {
|
||||
"#### ",
|
||||
" #",
|
||||
" #",
|
||||
" ### ",
|
||||
" #",
|
||||
" #",
|
||||
"#### "}},
|
||||
{'4', {
|
||||
"# #",
|
||||
"# #",
|
||||
"# #",
|
||||
"#####",
|
||||
" #",
|
||||
" #",
|
||||
" #"}},
|
||||
{'5', {
|
||||
"#####",
|
||||
"# ",
|
||||
"# ",
|
||||
"#### ",
|
||||
" #",
|
||||
" #",
|
||||
"#### "}},
|
||||
{'6', {
|
||||
" ####",
|
||||
"# ",
|
||||
"# ",
|
||||
" ### ",
|
||||
"# #",
|
||||
"# #",
|
||||
" ### "}},
|
||||
{'7', {
|
||||
"#####",
|
||||
" #",
|
||||
" #",
|
||||
" ## ",
|
||||
" # ",
|
||||
" # ",
|
||||
" # "}},
|
||||
{'8', {
|
||||
" ### ",
|
||||
"# #",
|
||||
"# #",
|
||||
" ### ",
|
||||
"# #",
|
||||
"# #",
|
||||
" ### "}},
|
||||
{'9', {
|
||||
" ### ",
|
||||
"# #",
|
||||
"# #",
|
||||
" ####",
|
||||
" #",
|
||||
" #",
|
||||
" ### "}},
|
||||
#endif
|
||||
#ifndef NO_SYMBOLS
|
||||
{'!', {
|
||||
"# ",
|
||||
"# ",
|
||||
"# ",
|
||||
"# ",
|
||||
"# ",
|
||||
" ",
|
||||
"# "}},
|
||||
{'.', {
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"# "}},
|
||||
{',', {
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" # ",
|
||||
" # "}},
|
||||
{'?', {
|
||||
" ## ",
|
||||
"# # ",
|
||||
" # ",
|
||||
" # ",
|
||||
" # ",
|
||||
" ",
|
||||
" # "}},
|
||||
{1, {
|
||||
" ",
|
||||
" # # ",
|
||||
" # # ",
|
||||
" ",
|
||||
" # ",
|
||||
"# #",
|
||||
" ### "}},
|
||||
{'%', {
|
||||
" #",
|
||||
" # #",
|
||||
" # ",
|
||||
" # ",
|
||||
" # ",
|
||||
"# # ",
|
||||
"# "}},
|
||||
{'#', {
|
||||
" # # ",
|
||||
" # # ",
|
||||
"#####",
|
||||
" # # ",
|
||||
"#####",
|
||||
" # # ",
|
||||
" # # "}},
|
||||
{'_', {
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"#####"}},
|
||||
{'-', {
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ### ",
|
||||
" ",
|
||||
" ",
|
||||
" "}},
|
||||
{';', {
|
||||
" ",
|
||||
" # ",
|
||||
" ",
|
||||
" # ",
|
||||
" # ",
|
||||
"# ",
|
||||
" "}},
|
||||
{'`', {
|
||||
" # ",
|
||||
" # ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "}},
|
||||
{'=', {
|
||||
" ",
|
||||
"#####",
|
||||
" ",
|
||||
" ",
|
||||
"#####",
|
||||
" ",
|
||||
" "}},
|
||||
{'_', {
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"#####"}},
|
||||
{':', {
|
||||
" ",
|
||||
" # ",
|
||||
" ",
|
||||
" ",
|
||||
" # ",
|
||||
" ",
|
||||
" "}},
|
||||
{'<', {
|
||||
" # ",
|
||||
" # ",
|
||||
" # ",
|
||||
"# ",
|
||||
" # ",
|
||||
" # ",
|
||||
" # "}},
|
||||
{'>', {
|
||||
" # ",
|
||||
" # ",
|
||||
" # ",
|
||||
" #",
|
||||
" # ",
|
||||
" # ",
|
||||
" # "}},
|
||||
{'~', {
|
||||
" ",
|
||||
" ",
|
||||
"# # #",
|
||||
" # # ",
|
||||
" ",
|
||||
" ",
|
||||
" "}},
|
||||
{'*', {
|
||||
" # ",
|
||||
" ### ",
|
||||
" # ",
|
||||
" # # ",
|
||||
" ",
|
||||
" ",
|
||||
" "}},
|
||||
{'/', {
|
||||
" #",
|
||||
" #",
|
||||
" # ",
|
||||
" # ",
|
||||
" # ",
|
||||
" # ",
|
||||
"# "}},
|
||||
{'\'', {
|
||||
"# ",
|
||||
"# ",
|
||||
"# ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "}},
|
||||
{'"', {
|
||||
"# # ",
|
||||
"# # ",
|
||||
"# # ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "}},
|
||||
{'(', {
|
||||
" # ",
|
||||
" # ",
|
||||
"# ",
|
||||
"# ",
|
||||
"# ",
|
||||
" # ",
|
||||
" # "}},
|
||||
{')', {
|
||||
"# ",
|
||||
" # ",
|
||||
" # ",
|
||||
" # ",
|
||||
" # ",
|
||||
" # ",
|
||||
"# "}},
|
||||
{'}', {
|
||||
"# ",
|
||||
" # ",
|
||||
" # ",
|
||||
" # ",
|
||||
" # ",
|
||||
" # ",
|
||||
"# "}},
|
||||
{'{', {
|
||||
" # ",
|
||||
" # ",
|
||||
" # ",
|
||||
"# ",
|
||||
" # ",
|
||||
" # ",
|
||||
" # "}},
|
||||
{'+', {
|
||||
" ",
|
||||
" ",
|
||||
" # ",
|
||||
" # ",
|
||||
"#####",
|
||||
" # ",
|
||||
" # "}},
|
||||
{'-', {
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"#####",
|
||||
" ",
|
||||
" "}},
|
||||
#endif
|
||||
|
||||
/* Fallback/end Char. If you don't know the
|
||||
font size, use this as the "null terminator" */
|
||||
{0, {
|
||||
"#####",
|
||||
"#####",
|
||||
"#####",
|
||||
"#####",
|
||||
"#####",
|
||||
"#####",
|
||||
"#####"}},
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,85 @@
|
|||
#include <assert.h>
|
||||
#include "text.h"
|
||||
|
||||
#include "font3x3.h"
|
||||
|
||||
#define FONT_WIDTH 3
|
||||
#define FONT_HEIGHT 3
|
||||
|
||||
uint8_t cx = 0;
|
||||
uint8_t cy = 0;
|
||||
|
||||
void text_setCursor(uint8_t x, uint8_t y) {
|
||||
assert(x < COL_COUNT);
|
||||
assert(y < ROW_COUNT);
|
||||
cx = x;
|
||||
cy = y;
|
||||
}
|
||||
|
||||
uint8_t text_charIdx(char c) {
|
||||
// change to uppercase
|
||||
if (c >= 'a' && c <= 'z') {
|
||||
c += ('A' - 'a');
|
||||
}
|
||||
|
||||
// find character
|
||||
for (int i = 0; i < sizeof(font); i++) {
|
||||
if (font[i].letter == c) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
// if not found, use `?` as placeholder
|
||||
return text_charIdx('?');
|
||||
}
|
||||
|
||||
inline void text_newline() {
|
||||
cx = 0;
|
||||
cy += (FONT_HEIGHT + 1);
|
||||
}
|
||||
|
||||
void text_next() {
|
||||
cx += (FONT_WIDTH + 1);
|
||||
if (cx >= COL_COUNT) {
|
||||
text_newline();
|
||||
}
|
||||
}
|
||||
|
||||
bool text_printChar(uint8_t framebuffer[ROW_COUNT * COL_COUNT], char c) {
|
||||
// check if there is space
|
||||
if (cy + FONT_HEIGHT >= ROW_COUNT) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// special cases - space, newline
|
||||
if (c == '\n') {
|
||||
text_newline();
|
||||
return true;
|
||||
} else if (c == ' ') {
|
||||
text_next();
|
||||
return true;
|
||||
}
|
||||
|
||||
// draw pixels
|
||||
uint8_t letterIdx = text_charIdx(c);
|
||||
for (int i = 0; i < FONT_HEIGHT; i++) {
|
||||
for (int j = 0; j < FONT_WIDTH; j++) {
|
||||
if (font[letterIdx].code[i][j] == '#') {
|
||||
framebuffer[(i + cy) * COL_COUNT + (j + cx)] = 255;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// move cursor
|
||||
text_next();
|
||||
return true;
|
||||
}
|
||||
|
||||
bool text_printStr(uint8_t framebuffer[ROW_COUNT * COL_COUNT], char *string) {
|
||||
for (int i = 0; string[i] != 0; i++) {
|
||||
if (!text_printChar(framebuffer, string[i])) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
#ifndef _text_h
|
||||
#define _text_h
|
||||
|
||||
#include <stdint.h>
|
||||
#include "config.h"
|
||||
|
||||
bool text_printChar(uint8_t framebuffer[ROW_COUNT * COL_COUNT], char c);
|
||||
bool text_printStr(uint8_t framebuffer[ROW_COUNT * COL_COUNT], char *string);
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue