kopia lustrzana https://github.com/pimoroni/pimoroni-pico
Make font settable by user at runtime
This allows fonts to be hot-swapped out by calling `set_font` Unfortunately the way fonts are currently stored limits the maximum height to 8 pixels, since that's the size of a uint8_t and the y dimension is bitwise encoded. The width can be arbitrary, by specifying the widths and max_width (the multiplier for number of bytes per char). Might be worth grabbing some more bits from 32blit to make this not terrible, but now a user-defined font is an .hpp and a `set_font` away.pull/70/head
rodzic
0e24aae2eb
commit
276528c119
|
@ -9,4 +9,13 @@ add_resource(explorer fox.tga)
|
||||||
target_link_libraries(explorer pico_stdlib pico_explorer msa301)
|
target_link_libraries(explorer pico_stdlib pico_explorer msa301)
|
||||||
|
|
||||||
# create map/bin/hex file etc.
|
# create map/bin/hex file etc.
|
||||||
pico_add_extra_outputs(explorer)
|
pico_add_extra_outputs(explorer)
|
||||||
|
|
||||||
|
add_executable(
|
||||||
|
text_demo
|
||||||
|
text_demo.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(text_demo pico_stdlib pico_explorer msa301)
|
||||||
|
|
||||||
|
pico_add_extra_outputs(text_demo)
|
|
@ -0,0 +1,37 @@
|
||||||
|
#include <string.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <vector>
|
||||||
|
#include <cstdlib>
|
||||||
|
|
||||||
|
#include "pico_explorer.hpp"
|
||||||
|
#include "font8_data.hpp"
|
||||||
|
#include "msa301.hpp"
|
||||||
|
|
||||||
|
using namespace pimoroni;
|
||||||
|
|
||||||
|
extern unsigned char _binary_fox_tga_start[];
|
||||||
|
|
||||||
|
uint16_t buffer[PicoExplorer::WIDTH * PicoExplorer::HEIGHT];
|
||||||
|
PicoExplorer pico_explorer(buffer);
|
||||||
|
MSA301 msa301;
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
pico_explorer.init();
|
||||||
|
pico_explorer.set_font(&font8);
|
||||||
|
msa301.init();
|
||||||
|
|
||||||
|
uint32_t i = 0;
|
||||||
|
while(true) {
|
||||||
|
pico_explorer.set_pen(120, 40, 60);
|
||||||
|
pico_explorer.clear();
|
||||||
|
|
||||||
|
pico_explorer.set_pen(255, 255, 255);
|
||||||
|
pico_explorer.text("Hello World. How are you today?", Point(10, 190), 100);
|
||||||
|
|
||||||
|
pico_explorer.update();
|
||||||
|
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -1 +1 @@
|
||||||
include(pico_graphics.cmake)
|
include(pico_graphics.cmake)
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
namespace pimoroni {
|
||||||
|
struct Font {
|
||||||
|
const uint8_t height;
|
||||||
|
const uint8_t max_width;
|
||||||
|
const uint8_t widths[96];
|
||||||
|
const uint8_t data[];
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,114 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "font.hpp"
|
||||||
|
|
||||||
|
const pimoroni::Font font6 {
|
||||||
|
.height = 6,
|
||||||
|
.max_width = 6,
|
||||||
|
.widths = {
|
||||||
|
3, 2, 4, 6, 6, 6, 7, 2, 3, 3, 4, 4, 2, 4, 2, 4,
|
||||||
|
6, 3, 5, 5, 6, 5, 6, 6, 6, 6, 2, 2, 4, 4, 4, 5,
|
||||||
|
7, 6, 6, 5, 6, 5, 5, 6, 5, 4, 5, 5, 5, 6, 6, 6,
|
||||||
|
6, 6, 6, 5, 6, 6, 6, 6, 5, 5, 5, 3, 4, 3, 4, 4,
|
||||||
|
3, 6, 6, 5, 6, 5, 5, 6, 5, 4, 5, 5, 5, 6, 6, 6,
|
||||||
|
6, 6, 6, 5, 6, 6, 6, 6, 5, 5, 5, 4, 2, 4, 4, 2
|
||||||
|
},
|
||||||
|
.data = {
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00, //
|
||||||
|
0x2e,0x00,0x00,0x00,0x00,0x00, // !
|
||||||
|
0x06,0x00,0x06,0x00,0x00,0x00, // "
|
||||||
|
0x14,0x3e,0x14,0x3e,0x14,0x00, // #
|
||||||
|
0x04,0x2a,0x3e,0x2a,0x10,0x00, // $
|
||||||
|
0x22,0x10,0x08,0x04,0x22,0x00, // %
|
||||||
|
0x14,0x2a,0x2a,0x2c,0x10,0x28, // &
|
||||||
|
0x06,0x00,0x00,0x00,0x00,0x00, // '
|
||||||
|
0x1c,0x22,0x00,0x00,0x00,0x00, // (
|
||||||
|
0x22,0x1c,0x00,0x00,0x00,0x00, // )
|
||||||
|
0x14,0x08,0x14,0x00,0x00,0x00, // *
|
||||||
|
0x08,0x1c,0x08,0x00,0x00,0x00, // +
|
||||||
|
0x60,0x00,0x00,0x00,0x00,0x00, // ,
|
||||||
|
0x08,0x08,0x08,0x00,0x00,0x00, // -
|
||||||
|
0x20,0x00,0x00,0x00,0x00,0x00, // .
|
||||||
|
0x30,0x0c,0x02,0x00,0x00,0x00, // /
|
||||||
|
0x1c,0x22,0x22,0x22,0x1e,0x00, // 0
|
||||||
|
0x02,0x3e,0x00,0x00,0x00,0x00, // 1
|
||||||
|
0x32,0x2a,0x2a,0x24,0x00,0x00, // 2
|
||||||
|
0x2a,0x2a,0x2a,0x16,0x00,0x00, // 3
|
||||||
|
0x0e,0x10,0x10,0x3e,0x10,0x00, // 4
|
||||||
|
0x2e,0x2a,0x2a,0x12,0x00,0x00, // 5
|
||||||
|
0x3c,0x2a,0x2a,0x2a,0x12,0x00, // 6
|
||||||
|
0x06,0x02,0x22,0x12,0x0e,0x00, // 7
|
||||||
|
0x14,0x2a,0x2a,0x2a,0x16,0x00, // 8
|
||||||
|
0x04,0x2a,0x2a,0x2a,0x1e,0x00, // 9
|
||||||
|
0x24,0x00,0x00,0x00,0x00,0x00, // :
|
||||||
|
0x64,0x00,0x00,0x00,0x00,0x00, // ;
|
||||||
|
0x08,0x14,0x22,0x00,0x00,0x00, // <
|
||||||
|
0x14,0x14,0x14,0x00,0x00,0x00, // =
|
||||||
|
0x22,0x14,0x08,0x00,0x00,0x00, // >
|
||||||
|
0x02,0x2a,0x0a,0x04,0x00,0x00, // ?
|
||||||
|
0x3c,0x02,0x1a,0x2a,0x22,0x1e, // @
|
||||||
|
0x3c,0x12,0x12,0x12,0x3e,0x00, // A
|
||||||
|
0x3c,0x2a,0x2a,0x2e,0x10,0x00, // B
|
||||||
|
0x1c,0x22,0x22,0x22,0x00,0x00, // C
|
||||||
|
0x3c,0x22,0x22,0x22,0x1c,0x00, // D
|
||||||
|
0x3c,0x2a,0x2a,0x2a,0x00,0x00, // E
|
||||||
|
0x3c,0x12,0x12,0x12,0x00,0x00, // F
|
||||||
|
0x3c,0x22,0x22,0x2a,0x1a,0x00, // G
|
||||||
|
0x3e,0x08,0x08,0x3e,0x00,0x00, // H
|
||||||
|
0x22,0x3e,0x22,0x00,0x00,0x00, // I
|
||||||
|
0x30,0x22,0x22,0x1e,0x00,0x00, // J
|
||||||
|
0x3e,0x08,0x0c,0x32,0x00,0x00, // K
|
||||||
|
0x3e,0x20,0x20,0x20,0x00,0x00, // L
|
||||||
|
0x3c,0x02,0x3c,0x02,0x3c,0x00, // M
|
||||||
|
0x3c,0x02,0x02,0x02,0x3e,0x00, // N
|
||||||
|
0x1c,0x22,0x22,0x22,0x1e,0x00, // O
|
||||||
|
0x3c,0x12,0x12,0x12,0x0e,0x00, // P
|
||||||
|
0x1c,0x22,0x22,0x62,0x1e,0x00, // Q
|
||||||
|
0x3c,0x12,0x12,0x32,0x0e,0x00, // R
|
||||||
|
0x24,0x2a,0x2a,0x12,0x00,0x00, // S
|
||||||
|
0x02,0x02,0x3e,0x02,0x02,0x00, // T
|
||||||
|
0x1e,0x20,0x20,0x20,0x1e,0x00, // U
|
||||||
|
0x0e,0x10,0x20,0x10,0x0e,0x00, // V
|
||||||
|
0x3e,0x20,0x1e,0x20,0x1e,0x00, // W
|
||||||
|
0x36,0x08,0x08,0x36,0x00,0x00, // X
|
||||||
|
0x26,0x28,0x28,0x1e,0x00,0x00, // Y
|
||||||
|
0x32,0x2a,0x2a,0x26,0x00,0x00, // Z
|
||||||
|
0x3e,0x22,0x00,0x00,0x00,0x00, // [
|
||||||
|
0x02,0x0c,0x30,0x00,0x00,0x00, // "\"
|
||||||
|
0x22,0x3e,0x00,0x00,0x00,0x00, // ]
|
||||||
|
0x04,0x02,0x04,0x00,0x00,0x00, // ^
|
||||||
|
0x20,0x20,0x20,0x00,0x00,0x00, // _
|
||||||
|
0x02,0x04,0x00,0x00,0x00,0x00, // `
|
||||||
|
0x3c,0x12,0x12,0x12,0x3e,0x00, // a
|
||||||
|
0x3c,0x2a,0x2a,0x2e,0x10,0x00, // b
|
||||||
|
0x1c,0x22,0x22,0x22,0x00,0x00, // c
|
||||||
|
0x3c,0x22,0x22,0x22,0x1c,0x00, // d
|
||||||
|
0x3c,0x2a,0x2a,0x2a,0x00,0x00, // e
|
||||||
|
0x3c,0x12,0x12,0x12,0x00,0x00, // f
|
||||||
|
0x3c,0x22,0x22,0x2a,0x1a,0x00, // g
|
||||||
|
0x3e,0x08,0x08,0x3e,0x00,0x00, // h
|
||||||
|
0x22,0x3e,0x22,0x00,0x00,0x00, // i
|
||||||
|
0x30,0x22,0x22,0x1e,0x00,0x00, // j
|
||||||
|
0x3e,0x08,0x0c,0x32,0x00,0x00, // k
|
||||||
|
0x3e,0x20,0x20,0x20,0x00,0x00, // l
|
||||||
|
0x3c,0x02,0x3c,0x02,0x3e,0x00, // m
|
||||||
|
0x3c,0x02,0x02,0x02,0x3e,0x00, // n
|
||||||
|
0x1c,0x22,0x22,0x22,0x1e,0x00, // o
|
||||||
|
0x3c,0x12,0x12,0x12,0x0e,0x00, // p
|
||||||
|
0x1c,0x22,0x22,0x62,0x1e,0x00, // q
|
||||||
|
0x3c,0x12,0x12,0x32,0x0e,0x00, // r
|
||||||
|
0x24,0x2a,0x2a,0x12,0x00,0x00, // s
|
||||||
|
0x02,0x02,0x3e,0x02,0x02,0x00, // t
|
||||||
|
0x1e,0x20,0x20,0x20,0x1e,0x00, // u
|
||||||
|
0x0e,0x10,0x20,0x10,0x0e,0x00, // v
|
||||||
|
0x3e,0x20,0x1e,0x20,0x1e,0x00, // w
|
||||||
|
0x36,0x08,0x08,0x36,0x00,0x00, // x
|
||||||
|
0x26,0x28,0x28,0x1e,0x00,0x00, // y
|
||||||
|
0x32,0x2a,0x2a,0x26,0x00,0x00, // z
|
||||||
|
0x08,0x3e,0x22,0x00,0x00,0x00, // 0x
|
||||||
|
0x3e,0x00,0x00,0x00,0x00,0x00, // |
|
||||||
|
0x22,0x3e,0x08,0x00,0x00,0x00, // }
|
||||||
|
0x04,0x02,0x02,0x00,0x00,0x00, // ~
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,114 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "font.hpp"
|
||||||
|
|
||||||
|
const pimoroni::Font font8 {
|
||||||
|
.height = 8,
|
||||||
|
.max_width = 6,
|
||||||
|
.widths = {
|
||||||
|
3, 2, 4, 6, 5, 5, 5, 2, 4, 4, 4, 4, 3, 4, 3, 5,
|
||||||
|
5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 2, 3, 4, 4, 4, 5,
|
||||||
|
5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5, 6, 5, 5,
|
||||||
|
5, 5, 5, 5, 6, 5, 5, 6, 5, 5, 5, 3, 5, 3, 4, 4,
|
||||||
|
3, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, 4, 6, 5, 5,
|
||||||
|
5, 5, 5, 5, 5, 5, 5, 6, 5, 5, 5, 4, 2, 4, 5, 2
|
||||||
|
},
|
||||||
|
.data = {
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00, //
|
||||||
|
0x5f,0x00,0x00,0x00,0x00,0x00, // !
|
||||||
|
0x03,0x00,0x03,0x00,0x00,0x00, // "
|
||||||
|
0x28,0x7c,0x28,0x7c,0x28,0x00, // #
|
||||||
|
0x24,0x7a,0x2f,0x12,0x00,0x00, // $
|
||||||
|
0x66,0x10,0x08,0x66,0x00,0x00, // %
|
||||||
|
0x36,0x49,0x49,0x7c,0x00,0x00, // &
|
||||||
|
0x03,0x00,0x00,0x00,0x00,0x00, // '
|
||||||
|
0x1c,0x22,0x41,0x00,0x00,0x00, // (
|
||||||
|
0x41,0x22,0x1c,0x00,0x00,0x00, // )
|
||||||
|
0x54,0x38,0x54,0x00,0x00,0x00, // *
|
||||||
|
0x10,0x38,0x10,0x00,0x00,0x00, // +
|
||||||
|
0x80,0x60,0x00,0x00,0x00,0x00, // ,
|
||||||
|
0x10,0x10,0x10,0x00,0x00,0x00, // -
|
||||||
|
0x60,0x60,0x00,0x00,0x00,0x00, // .
|
||||||
|
0x60,0x18,0x06,0x01,0x00,0x00, // /
|
||||||
|
0x3e,0x41,0x41,0x3e,0x00,0x00, // 0
|
||||||
|
0x42,0x7f,0x40,0x00,0x00,0x00, // 1
|
||||||
|
0x61,0x51,0x49,0x46,0x00,0x00, // 2
|
||||||
|
0x21,0x49,0x4d,0x33,0x00,0x00, // 3
|
||||||
|
0x18,0x26,0x11,0x7f,0x00,0x00, // 4
|
||||||
|
0x4f,0x49,0x49,0x31,0x00,0x00, // 5
|
||||||
|
0x3c,0x4a,0x49,0x30,0x00,0x00, // 6
|
||||||
|
0x01,0x61,0x19,0x07,0x00,0x00, // 7
|
||||||
|
0x33,0x49,0x49,0x33,0x00,0x00, // 8
|
||||||
|
0x06,0x49,0x29,0x1e,0x00,0x00, // 9
|
||||||
|
0x33,0x00,0x00,0x00,0x00,0x00, // :
|
||||||
|
0x80,0x6c,0x00,0x00,0x00,0x00, // ;
|
||||||
|
0x10,0x28,0x44,0x00,0x00,0x00, // <
|
||||||
|
0x28,0x28,0x28,0x00,0x00,0x00, // =
|
||||||
|
0x44,0x28,0x10,0x00,0x00,0x00, // >
|
||||||
|
0x02,0x51,0x09,0x06,0x00,0x00, // ?
|
||||||
|
0x3e,0x49,0x55,0x5e,0x00,0x00, // @
|
||||||
|
0x7e,0x09,0x09,0x7e,0x00,0x00, // A
|
||||||
|
0x7f,0x49,0x49,0x36,0x00,0x00, // B
|
||||||
|
0x3e,0x41,0x41,0x22,0x00,0x00, // C
|
||||||
|
0x7f,0x41,0x41,0x3e,0x00,0x00, // D
|
||||||
|
0x7f,0x49,0x49,0x41,0x00,0x00, // E
|
||||||
|
0x7f,0x09,0x09,0x01,0x00,0x00, // F
|
||||||
|
0x3e,0x41,0x49,0x79,0x00,0x00, // G
|
||||||
|
0x7f,0x08,0x08,0x7f,0x00,0x00, // H
|
||||||
|
0x41,0x7f,0x41,0x00,0x00,0x00, // I
|
||||||
|
0x30,0x40,0x40,0x3f,0x00,0x00, // J
|
||||||
|
0x7f,0x08,0x14,0x63,0x00,0x00, // K
|
||||||
|
0x7f,0x40,0x40,0x40,0x00,0x00, // L
|
||||||
|
0x7f,0x02,0x04,0x02,0x7f,0x00, // M
|
||||||
|
0x7f,0x02,0x04,0x7f,0x00,0x00, // N
|
||||||
|
0x3e,0x41,0x41,0x3e,0x00,0x00, // O
|
||||||
|
0x7f,0x09,0x09,0x06,0x00,0x00, // P
|
||||||
|
0x3e,0x41,0x21,0x5e,0x00,0x00, // Q
|
||||||
|
0x7f,0x09,0x19,0x66,0x0e,0x00, // R
|
||||||
|
0x46,0x49,0x49,0x31,0x00,0x00, // S
|
||||||
|
0x01,0x01,0x7f,0x01,0x01,0x00, // T
|
||||||
|
0x3f,0x40,0x40,0x3f,0x00,0x00, // U
|
||||||
|
0x7f,0x40,0x20,0x1f,0x00,0x00, // V
|
||||||
|
0x3f,0x40,0x20,0x40,0x3f,0x00, // W
|
||||||
|
0x77,0x08,0x08,0x77,0x00,0x00, // X
|
||||||
|
0x47,0x48,0x48,0x3f,0x00,0x00, // Y
|
||||||
|
0x71,0x49,0x45,0x43,0x00,0x00, // Z
|
||||||
|
0x7f,0x41,0x00,0x00,0x00,0x00, // [
|
||||||
|
0x01,0x06,0x18,0x60,0x00,0x00, // "\"
|
||||||
|
0x41,0x7f,0x00,0x00,0x00,0x00, // ]
|
||||||
|
0x04,0x02,0x04,0x00,0x00,0x00, // ^
|
||||||
|
0x40,0x40,0x40,0x00,0x00,0x00, // _
|
||||||
|
0x01,0x01,0x00,0x00,0x00,0x00, // `
|
||||||
|
0x20,0x54,0x54,0x78,0x00,0x00, // a
|
||||||
|
0x7f,0x44,0x44,0x38,0x00,0x00, // b
|
||||||
|
0x38,0x44,0x44,0x28,0x00,0x00, // c
|
||||||
|
0x38,0x44,0x44,0x7f,0x00,0x00, // d
|
||||||
|
0x38,0x54,0x54,0x58,0x00,0x00, // e
|
||||||
|
0x7e,0x09,0x09,0x02,0x00,0x00, // f
|
||||||
|
0x18,0xa4,0xa4,0x7c,0x00,0x00, // g
|
||||||
|
0x7f,0x04,0x04,0x78,0x00,0x00, // h
|
||||||
|
0x04,0x7d,0x40,0x00,0x00,0x00, // i
|
||||||
|
0x60,0x80,0x80,0x7d,0x00,0x00, // j
|
||||||
|
0x7f,0x10,0x28,0x44,0x00,0x00, // k
|
||||||
|
0x01,0x7f,0x40,0x00,0x00,0x00, // l
|
||||||
|
0x7c,0x04,0x78,0x04,0x78,0x00, // m
|
||||||
|
0x7c,0x04,0x04,0x78,0x00,0x00, // n
|
||||||
|
0x38,0x44,0x44,0x38,0x00,0x00, // o
|
||||||
|
0xfc,0x24,0x24,0x18,0x00,0x00, // p
|
||||||
|
0x18,0x24,0x24,0xfc,0x1e,0x00, // q
|
||||||
|
0x7c,0x08,0x04,0x04,0x00,0x00, // r
|
||||||
|
0x48,0x54,0x54,0x24,0x00,0x00, // s
|
||||||
|
0x37,0x44,0x44,0x20,0x00,0x00, // t
|
||||||
|
0x3c,0x40,0x40,0x7c,0x00,0x00, // u
|
||||||
|
0x7c,0x40,0x20,0x1c,0x00,0x00, // v
|
||||||
|
0x3c,0x40,0x20,0x40,0x3c,0x00, // w
|
||||||
|
0x6c,0x10,0x10,0x6c,0x00,0x00, // x
|
||||||
|
0x1c,0xa0,0xa0,0x7c,0x00,0x00, // y
|
||||||
|
0x64,0x54,0x4c,0x00,0x00,0x00, // z
|
||||||
|
0x08,0x3e,0x41,0x00,0x00,0x00, // {
|
||||||
|
0x7f,0x00,0x00,0x00,0x00,0x00, // |
|
||||||
|
0x41,0x3e,0x08,0x00,0x00,0x00, // }
|
||||||
|
0x08,0x04,0x08,0x04,0x00,0x00, // ~
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00
|
||||||
|
}
|
||||||
|
};
|
|
@ -1,112 +0,0 @@
|
||||||
#include <cstdint>
|
|
||||||
|
|
||||||
uint8_t font_height = 6;
|
|
||||||
|
|
||||||
uint8_t font_data[96][6] = {
|
|
||||||
{0x00,0x00,0x00,0x00,0x00,0x00}, //
|
|
||||||
{0x2e,0x00,0x00,0x00,0x00,0x00}, // !
|
|
||||||
{0x06,0x00,0x06,0x00,0x00,0x00}, // "
|
|
||||||
{0x14,0x3e,0x14,0x3e,0x14,0x00}, // #
|
|
||||||
{0x04,0x2a,0x3e,0x2a,0x10,0x00}, // $
|
|
||||||
{0x22,0x10,0x08,0x04,0x22,0x00}, // %
|
|
||||||
{0x14,0x2a,0x2a,0x2c,0x10,0x28}, // &
|
|
||||||
{0x06,0x00,0x00,0x00,0x00,0x00}, // '
|
|
||||||
{0x1c,0x22,0x00,0x00,0x00,0x00}, // (
|
|
||||||
{0x22,0x1c,0x00,0x00,0x00,0x00}, // )
|
|
||||||
{0x14,0x08,0x14,0x00,0x00,0x00}, // *
|
|
||||||
{0x08,0x1c,0x08,0x00,0x00,0x00}, // +
|
|
||||||
{0x60,0x00,0x00,0x00,0x00,0x00}, // ,
|
|
||||||
{0x08,0x08,0x08,0x00,0x00,0x00}, // -
|
|
||||||
{0x20,0x00,0x00,0x00,0x00,0x00}, // .
|
|
||||||
{0x30,0x0c,0x02,0x00,0x00,0x00}, // /
|
|
||||||
{0x1c,0x22,0x22,0x22,0x1e,0x00}, // 0
|
|
||||||
{0x02,0x3e,0x00,0x00,0x00,0x00}, // 1
|
|
||||||
{0x32,0x2a,0x2a,0x24,0x00,0x00}, // 2
|
|
||||||
{0x2a,0x2a,0x2a,0x16,0x00,0x00}, // 3
|
|
||||||
{0x0e,0x10,0x10,0x3e,0x10,0x00}, // 4
|
|
||||||
{0x2e,0x2a,0x2a,0x12,0x00,0x00}, // 5
|
|
||||||
{0x3c,0x2a,0x2a,0x2a,0x12,0x00}, // 6
|
|
||||||
{0x06,0x02,0x22,0x12,0x0e,0x00}, // 7
|
|
||||||
{0x14,0x2a,0x2a,0x2a,0x16,0x00}, // 8
|
|
||||||
{0x04,0x2a,0x2a,0x2a,0x1e,0x00}, // 9
|
|
||||||
{0x24,0x00,0x00,0x00,0x00,0x00}, // :
|
|
||||||
{0x64,0x00,0x00,0x00,0x00,0x00}, // ;
|
|
||||||
{0x08,0x14,0x22,0x00,0x00,0x00}, // <
|
|
||||||
{0x14,0x14,0x14,0x00,0x00,0x00}, // =
|
|
||||||
{0x22,0x14,0x08,0x00,0x00,0x00}, // >
|
|
||||||
{0x02,0x2a,0x0a,0x04,0x00,0x00}, // ?
|
|
||||||
{0x3c,0x02,0x1a,0x2a,0x22,0x1e}, // @
|
|
||||||
{0x3c,0x12,0x12,0x12,0x3e,0x00}, // A
|
|
||||||
{0x3c,0x2a,0x2a,0x2e,0x10,0x00}, // B
|
|
||||||
{0x1c,0x22,0x22,0x22,0x00,0x00}, // C
|
|
||||||
{0x3c,0x22,0x22,0x22,0x1c,0x00}, // D
|
|
||||||
{0x3c,0x2a,0x2a,0x2a,0x00,0x00}, // E
|
|
||||||
{0x3c,0x12,0x12,0x12,0x00,0x00}, // F
|
|
||||||
{0x3c,0x22,0x22,0x2a,0x1a,0x00}, // G
|
|
||||||
{0x3e,0x08,0x08,0x3e,0x00,0x00}, // H
|
|
||||||
{0x22,0x3e,0x22,0x00,0x00,0x00}, // I
|
|
||||||
{0x30,0x22,0x22,0x1e,0x00,0x00}, // J
|
|
||||||
{0x3e,0x08,0x0c,0x32,0x00,0x00}, // K
|
|
||||||
{0x3e,0x20,0x20,0x20,0x00,0x00}, // L
|
|
||||||
{0x3c,0x02,0x3c,0x02,0x3c,0x00}, // M
|
|
||||||
{0x3c,0x02,0x02,0x02,0x3e,0x00}, // N
|
|
||||||
{0x1c,0x22,0x22,0x22,0x1e,0x00}, // O
|
|
||||||
{0x3c,0x12,0x12,0x12,0x0e,0x00}, // P
|
|
||||||
{0x1c,0x22,0x22,0x62,0x1e,0x00}, // Q
|
|
||||||
{0x3c,0x12,0x12,0x32,0x0e,0x00}, // R
|
|
||||||
{0x24,0x2a,0x2a,0x12,0x00,0x00}, // S
|
|
||||||
{0x02,0x02,0x3e,0x02,0x02,0x00}, // T
|
|
||||||
{0x1e,0x20,0x20,0x20,0x1e,0x00}, // U
|
|
||||||
{0x0e,0x10,0x20,0x10,0x0e,0x00}, // V
|
|
||||||
{0x3e,0x20,0x1e,0x20,0x1e,0x00}, // W
|
|
||||||
{0x36,0x08,0x08,0x36,0x00,0x00}, // X
|
|
||||||
{0x26,0x28,0x28,0x1e,0x00,0x00}, // Y
|
|
||||||
{0x32,0x2a,0x2a,0x26,0x00,0x00}, // Z
|
|
||||||
{0x3e,0x22,0x00,0x00,0x00,0x00}, // [
|
|
||||||
{0x02,0x0c,0x30,0x00,0x00,0x00}, // "\"
|
|
||||||
{0x22,0x3e,0x00,0x00,0x00,0x00}, // ]
|
|
||||||
{0x04,0x02,0x04,0x00,0x00,0x00}, // ^
|
|
||||||
{0x20,0x20,0x20,0x00,0x00,0x00}, // _
|
|
||||||
{0x02,0x04,0x00,0x00,0x00,0x00}, // `
|
|
||||||
{0x3c,0x12,0x12,0x12,0x3e,0x00}, // a
|
|
||||||
{0x3c,0x2a,0x2a,0x2e,0x10,0x00}, // b
|
|
||||||
{0x1c,0x22,0x22,0x22,0x00,0x00}, // c
|
|
||||||
{0x3c,0x22,0x22,0x22,0x1c,0x00}, // d
|
|
||||||
{0x3c,0x2a,0x2a,0x2a,0x00,0x00}, // e
|
|
||||||
{0x3c,0x12,0x12,0x12,0x00,0x00}, // f
|
|
||||||
{0x3c,0x22,0x22,0x2a,0x1a,0x00}, // g
|
|
||||||
{0x3e,0x08,0x08,0x3e,0x00,0x00}, // h
|
|
||||||
{0x22,0x3e,0x22,0x00,0x00,0x00}, // i
|
|
||||||
{0x30,0x22,0x22,0x1e,0x00,0x00}, // j
|
|
||||||
{0x3e,0x08,0x0c,0x32,0x00,0x00}, // k
|
|
||||||
{0x3e,0x20,0x20,0x20,0x00,0x00}, // l
|
|
||||||
{0x3c,0x02,0x3c,0x02,0x3e,0x00}, // m
|
|
||||||
{0x3c,0x02,0x02,0x02,0x3e,0x00}, // n
|
|
||||||
{0x1c,0x22,0x22,0x22,0x1e,0x00}, // o
|
|
||||||
{0x3c,0x12,0x12,0x12,0x0e,0x00}, // p
|
|
||||||
{0x1c,0x22,0x22,0x62,0x1e,0x00}, // q
|
|
||||||
{0x3c,0x12,0x12,0x32,0x0e,0x00}, // r
|
|
||||||
{0x24,0x2a,0x2a,0x12,0x00,0x00}, // s
|
|
||||||
{0x02,0x02,0x3e,0x02,0x02,0x00}, // t
|
|
||||||
{0x1e,0x20,0x20,0x20,0x1e,0x00}, // u
|
|
||||||
{0x0e,0x10,0x20,0x10,0x0e,0x00}, // v
|
|
||||||
{0x3e,0x20,0x1e,0x20,0x1e,0x00}, // w
|
|
||||||
{0x36,0x08,0x08,0x36,0x00,0x00}, // x
|
|
||||||
{0x26,0x28,0x28,0x1e,0x00,0x00}, // y
|
|
||||||
{0x32,0x2a,0x2a,0x26,0x00,0x00}, // z
|
|
||||||
{0x08,0x3e,0x22,0x00,0x00,0x00}, // {
|
|
||||||
{0x3e,0x00,0x00,0x00,0x00,0x00}, // |
|
|
||||||
{0x22,0x3e,0x08,0x00,0x00,0x00}, // }
|
|
||||||
{0x04,0x02,0x02,0x00,0x00,0x00}, // ~
|
|
||||||
{0x00,0x00,0x00,0x00,0x00,0x00}
|
|
||||||
};
|
|
||||||
|
|
||||||
uint8_t character_widths[96] = {
|
|
||||||
3, 2, 4, 6, 6, 6, 7, 2, 3, 3, 4, 4, 2, 4, 2, 4,
|
|
||||||
6, 3, 5, 5, 6, 5, 6, 6, 6, 6, 2, 2, 4, 4, 4, 5,
|
|
||||||
7, 6, 6, 5, 6, 5, 5, 6, 5, 4, 5, 5, 5, 6, 6, 6,
|
|
||||||
6, 6, 6, 5, 6, 6, 6, 6, 5, 5, 5, 3, 4, 3, 4, 4,
|
|
||||||
3, 6, 6, 5, 6, 5, 5, 6, 5, 4, 5, 5, 5, 6, 6, 6,
|
|
||||||
6, 6, 6, 5, 6, 6, 6, 6, 5, 5, 5, 4, 2, 4, 4, 2
|
|
||||||
};
|
|
||||||
|
|
|
@ -1,112 +0,0 @@
|
||||||
#include <cstdint>
|
|
||||||
|
|
||||||
uint8_t font_height = 8;
|
|
||||||
|
|
||||||
uint8_t font_data[96][6] = {
|
|
||||||
{0x00,0x00,0x00,0x00,0x00,0x00}, //
|
|
||||||
{0x5f,0x00,0x00,0x00,0x00,0x00}, // !
|
|
||||||
{0x03,0x00,0x03,0x00,0x00,0x00}, // "
|
|
||||||
{0x28,0x7c,0x28,0x7c,0x28,0x00}, // #
|
|
||||||
{0x24,0x7a,0x2f,0x12,0x00,0x00}, // $
|
|
||||||
{0x66,0x10,0x08,0x66,0x00,0x00}, // %
|
|
||||||
{0x36,0x49,0x49,0x7c,0x00,0x00}, // &
|
|
||||||
{0x03,0x00,0x00,0x00,0x00,0x00}, // '
|
|
||||||
{0x1c,0x22,0x41,0x00,0x00,0x00}, // (
|
|
||||||
{0x41,0x22,0x1c,0x00,0x00,0x00}, // )
|
|
||||||
{0x54,0x38,0x54,0x00,0x00,0x00}, // *
|
|
||||||
{0x10,0x38,0x10,0x00,0x00,0x00}, // +
|
|
||||||
{0x80,0x60,0x00,0x00,0x00,0x00}, // ,
|
|
||||||
{0x10,0x10,0x10,0x00,0x00,0x00}, // -
|
|
||||||
{0x60,0x60,0x00,0x00,0x00,0x00}, // .
|
|
||||||
{0x60,0x18,0x06,0x01,0x00,0x00}, // /
|
|
||||||
{0x3e,0x41,0x41,0x3e,0x00,0x00}, // 0
|
|
||||||
{0x42,0x7f,0x40,0x00,0x00,0x00}, // 1
|
|
||||||
{0x61,0x51,0x49,0x46,0x00,0x00}, // 2
|
|
||||||
{0x21,0x49,0x4d,0x33,0x00,0x00}, // 3
|
|
||||||
{0x18,0x26,0x11,0x7f,0x00,0x00}, // 4
|
|
||||||
{0x4f,0x49,0x49,0x31,0x00,0x00}, // 5
|
|
||||||
{0x3c,0x4a,0x49,0x30,0x00,0x00}, // 6
|
|
||||||
{0x01,0x61,0x19,0x07,0x00,0x00}, // 7
|
|
||||||
{0x33,0x49,0x49,0x33,0x00,0x00}, // 8
|
|
||||||
{0x06,0x49,0x29,0x1e,0x00,0x00}, // 9
|
|
||||||
{0x33,0x00,0x00,0x00,0x00,0x00}, // :
|
|
||||||
{0x80,0x6c,0x00,0x00,0x00,0x00}, // ;
|
|
||||||
{0x10,0x28,0x44,0x00,0x00,0x00}, // <
|
|
||||||
{0x28,0x28,0x28,0x00,0x00,0x00}, // =
|
|
||||||
{0x44,0x28,0x10,0x00,0x00,0x00}, // >
|
|
||||||
{0x02,0x51,0x09,0x06,0x00,0x00}, // ?
|
|
||||||
{0x3e,0x49,0x55,0x5e,0x00,0x00}, // @
|
|
||||||
{0x7e,0x09,0x09,0x7e,0x00,0x00}, // A
|
|
||||||
{0x7f,0x49,0x49,0x36,0x00,0x00}, // B
|
|
||||||
{0x3e,0x41,0x41,0x22,0x00,0x00}, // C
|
|
||||||
{0x7f,0x41,0x41,0x3e,0x00,0x00}, // D
|
|
||||||
{0x7f,0x49,0x49,0x41,0x00,0x00}, // E
|
|
||||||
{0x7f,0x09,0x09,0x01,0x00,0x00}, // F
|
|
||||||
{0x3e,0x41,0x49,0x79,0x00,0x00}, // G
|
|
||||||
{0x7f,0x08,0x08,0x7f,0x00,0x00}, // H
|
|
||||||
{0x41,0x7f,0x41,0x00,0x00,0x00}, // I
|
|
||||||
{0x30,0x40,0x40,0x3f,0x00,0x00}, // J
|
|
||||||
{0x7f,0x08,0x14,0x63,0x00,0x00}, // K
|
|
||||||
{0x7f,0x40,0x40,0x40,0x00,0x00}, // L
|
|
||||||
{0x7f,0x02,0x04,0x02,0x7f,0x00}, // M
|
|
||||||
{0x7f,0x02,0x04,0x7f,0x00,0x00}, // N
|
|
||||||
{0x3e,0x41,0x41,0x3e,0x00,0x00}, // O
|
|
||||||
{0x7f,0x09,0x09,0x06,0x00,0x00}, // P
|
|
||||||
{0x3e,0x41,0x21,0x5e,0x00,0x00}, // Q
|
|
||||||
{0x7f,0x09,0x19,0x66,0x0e,0x00}, // R
|
|
||||||
{0x46,0x49,0x49,0x31,0x00,0x00}, // S
|
|
||||||
{0x01,0x01,0x7f,0x01,0x01,0x00}, // T
|
|
||||||
{0x3f,0x40,0x40,0x3f,0x00,0x00}, // U
|
|
||||||
{0x7f,0x40,0x20,0x1f,0x00,0x00}, // V
|
|
||||||
{0x3f,0x40,0x20,0x40,0x3f,0x00}, // W
|
|
||||||
{0x77,0x08,0x08,0x77,0x00,0x00}, // X
|
|
||||||
{0x47,0x48,0x48,0x3f,0x00,0x00}, // Y
|
|
||||||
{0x71,0x49,0x45,0x43,0x00,0x00}, // Z
|
|
||||||
{0x7f,0x41,0x00,0x00,0x00,0x00}, // [
|
|
||||||
{0x01,0x06,0x18,0x60,0x00,0x00}, // "\"
|
|
||||||
{0x41,0x7f,0x00,0x00,0x00,0x00}, // ]
|
|
||||||
{0x04,0x02,0x04,0x00,0x00,0x00}, // ^
|
|
||||||
{0x40,0x40,0x40,0x00,0x00,0x00}, // _
|
|
||||||
{0x01,0x01,0x00,0x00,0x00,0x00}, // `
|
|
||||||
{0x20,0x54,0x54,0x78,0x00,0x00}, // a
|
|
||||||
{0x7f,0x44,0x44,0x38,0x00,0x00}, // b
|
|
||||||
{0x38,0x44,0x44,0x28,0x00,0x00}, // c
|
|
||||||
{0x38,0x44,0x44,0x7f,0x00,0x00}, // d
|
|
||||||
{0x38,0x54,0x54,0x58,0x00,0x00}, // e
|
|
||||||
{0x7e,0x09,0x09,0x02,0x00,0x00}, // f
|
|
||||||
{0x18,0xa4,0xa4,0x7c,0x00,0x00}, // g
|
|
||||||
{0x7f,0x04,0x04,0x78,0x00,0x00}, // h
|
|
||||||
{0x04,0x7d,0x40,0x00,0x00,0x00}, // i
|
|
||||||
{0x60,0x80,0x80,0x7d,0x00,0x00}, // j
|
|
||||||
{0x7f,0x10,0x28,0x44,0x00,0x00}, // k
|
|
||||||
{0x01,0x7f,0x40,0x00,0x00,0x00}, // l
|
|
||||||
{0x7c,0x04,0x78,0x04,0x78,0x00}, // m
|
|
||||||
{0x7c,0x04,0x04,0x78,0x00,0x00}, // n
|
|
||||||
{0x38,0x44,0x44,0x38,0x00,0x00}, // o
|
|
||||||
{0xfc,0x24,0x24,0x18,0x00,0x00}, // p
|
|
||||||
{0x18,0x24,0x24,0xfc,0x1e,0x00}, // q
|
|
||||||
{0x7c,0x08,0x04,0x04,0x00,0x00}, // r
|
|
||||||
{0x48,0x54,0x54,0x24,0x00,0x00}, // s
|
|
||||||
{0x37,0x44,0x44,0x20,0x00,0x00}, // t
|
|
||||||
{0x3c,0x40,0x40,0x7c,0x00,0x00}, // u
|
|
||||||
{0x7c,0x40,0x20,0x1c,0x00,0x00}, // v
|
|
||||||
{0x3c,0x40,0x20,0x40,0x3c,0x00}, // w
|
|
||||||
{0x6c,0x10,0x10,0x6c,0x00,0x00}, // x
|
|
||||||
{0x1c,0xa0,0xa0,0x7c,0x00,0x00}, // y
|
|
||||||
{0x64,0x54,0x4c,0x00,0x00,0x00}, // z
|
|
||||||
{0x08,0x3e,0x41,0x00,0x00,0x00}, // {
|
|
||||||
{0x7f,0x00,0x00,0x00,0x00,0x00}, // |
|
|
||||||
{0x41,0x3e,0x08,0x00,0x00,0x00}, // }
|
|
||||||
{0x08,0x04,0x08,0x04,0x00,0x00}, // ~
|
|
||||||
{0x00,0x00,0x00,0x00,0x00,0x00}
|
|
||||||
};
|
|
||||||
|
|
||||||
uint8_t character_widths[96] = {
|
|
||||||
3, 2, 4, 6, 5, 5, 5, 2, 4, 4, 4, 4, 3, 4, 3, 5,
|
|
||||||
5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 2, 3, 4, 4, 4, 5,
|
|
||||||
5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5, 6, 5, 5,
|
|
||||||
5, 5, 5, 5, 6, 5, 5, 6, 5, 5, 5, 3, 5, 3, 4, 4,
|
|
||||||
3, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, 4, 6, 5, 5,
|
|
||||||
5, 5, 5, 5, 5, 5, 5, 6, 5, 5, 5, 4, 2, 4, 5, 2
|
|
||||||
};
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
add_library(pico_graphics
|
add_library(pico_graphics
|
||||||
${CMAKE_CURRENT_LIST_DIR}/types.cpp
|
${CMAKE_CURRENT_LIST_DIR}/types.cpp
|
||||||
${CMAKE_CURRENT_LIST_DIR}/font_data.cpp
|
${CMAKE_CURRENT_LIST_DIR}/pico_graphics.cpp
|
||||||
${CMAKE_CURRENT_LIST_DIR}/pico_graphics.cpp)
|
)
|
||||||
|
|
||||||
|
target_include_directories(pico_graphics INTERFACE ${CMAKE_CURRENT_LIST_DIR})
|
||||||
|
|
||||||
target_include_directories(pico_graphics INTERFACE ${CMAKE_CURRENT_LIST_DIR})
|
|
|
@ -1,10 +1,14 @@
|
||||||
#include "pico_graphics.hpp"
|
#include "pico_graphics.hpp"
|
||||||
|
|
||||||
extern uint8_t font_data[96][6];
|
|
||||||
extern uint8_t character_widths[96];
|
|
||||||
extern uint8_t font_height;
|
|
||||||
|
|
||||||
namespace pimoroni {
|
namespace pimoroni {
|
||||||
|
PicoGraphics::PicoGraphics(uint16_t width, uint16_t height, uint16_t *frame_buffer)
|
||||||
|
: frame_buffer(frame_buffer), bounds(0, 0, width, height), clip(0, 0, width, height) {
|
||||||
|
set_font(&font6);
|
||||||
|
};
|
||||||
|
|
||||||
|
void PicoGraphics::set_font(const Font *font){
|
||||||
|
this->font = font;
|
||||||
|
}
|
||||||
|
|
||||||
void PicoGraphics::set_pen(uint8_t r, uint8_t g, uint8_t b) {
|
void PicoGraphics::set_pen(uint8_t r, uint8_t g, uint8_t b) {
|
||||||
pen = create_pen(r, g, b);
|
pen = create_pen(r, g, b);
|
||||||
|
@ -107,13 +111,13 @@ namespace pimoroni {
|
||||||
|
|
||||||
void PicoGraphics::character(const char c, const Point &p, uint8_t scale) {
|
void PicoGraphics::character(const char c, const Point &p, uint8_t scale) {
|
||||||
uint8_t char_index = c - 32;
|
uint8_t char_index = c - 32;
|
||||||
Rect char_bounds(p.x, p.y, character_widths[char_index] * scale, font_height * scale);
|
Rect char_bounds(p.x, p.y, font->widths[char_index] * scale, font->height * scale);
|
||||||
|
|
||||||
if(!clip.intersects(char_bounds)) return;
|
if(!clip.intersects(char_bounds)) return;
|
||||||
|
|
||||||
const uint8_t *d = &font_data[char_index][0];
|
const uint8_t *d = &font->data[char_index * font->max_width];
|
||||||
for(uint8_t cx = 0; cx < character_widths[char_index]; cx++) {
|
for(uint8_t cx = 0; cx < font->widths[char_index]; cx++) {
|
||||||
for(uint8_t cy = 0; cy < font_height; cy++) {
|
for(uint8_t cy = 0; cy < font->height; cy++) {
|
||||||
if((1U << cy) & *d) {
|
if((1U << cy) & *d) {
|
||||||
rectangle(Rect(p.x + (cx * scale), p.y + (cy * scale), scale, scale));
|
rectangle(Rect(p.x + (cx * scale), p.y + (cy * scale), scale, scale));
|
||||||
}
|
}
|
||||||
|
@ -137,24 +141,24 @@ namespace pimoroni {
|
||||||
|
|
||||||
uint16_t word_width = 0;
|
uint16_t word_width = 0;
|
||||||
for(size_t j = i; j < next_space; j++) {
|
for(size_t j = i; j < next_space; j++) {
|
||||||
word_width += character_widths[t[j] - 32] * scale;
|
word_width += font->widths[t[j] - 32] * scale;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if this word would exceed the wrap limit then
|
// if this word would exceed the wrap limit then
|
||||||
// move to the next line
|
// move to the next line
|
||||||
if(co != 0 && co + word_width > (uint32_t)wrap) {
|
if(co != 0 && co + word_width > (uint32_t)wrap) {
|
||||||
co = 0;
|
co = 0;
|
||||||
lo += (font_height + 1) * scale;
|
lo += (font->height + 1) * scale;
|
||||||
}
|
}
|
||||||
|
|
||||||
// draw word
|
// draw word
|
||||||
for(size_t j = i; j < next_space; j++) {
|
for(size_t j = i; j < next_space; j++) {
|
||||||
character(t[j], Point(p.x + co, p.y + lo), scale);
|
character(t[j], Point(p.x + co, p.y + lo), scale);
|
||||||
co += character_widths[t[j] - 32] * scale;
|
co += font->widths[t[j] - 32] * scale;
|
||||||
}
|
}
|
||||||
|
|
||||||
// move character offset to end of word and add a space
|
// move character offset to end of word and add a space
|
||||||
co += character_widths[0] * scale;
|
co += font->widths[0] * scale;
|
||||||
i = next_space + 1;
|
i = next_space + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include "font6_data.hpp"
|
||||||
|
|
||||||
// a tiny little graphics library for our Pico products
|
// a tiny little graphics library for our Pico products
|
||||||
// supports only 16-bit (565) RGB framebuffers
|
// supports only 16-bit (565) RGB framebuffers
|
||||||
|
@ -51,10 +52,11 @@ namespace pimoroni {
|
||||||
|
|
||||||
Pen pen;
|
Pen pen;
|
||||||
|
|
||||||
public:
|
const Font *font;
|
||||||
PicoGraphics(uint16_t width, uint16_t height, uint16_t *frame_buffer)
|
|
||||||
: frame_buffer(frame_buffer), bounds(0, 0, width, height), clip(0, 0, width, height) {}
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
PicoGraphics(uint16_t width, uint16_t height, uint16_t *frame_buffer);
|
||||||
|
void set_font(const Font *font);
|
||||||
void set_pen(uint8_t r, uint8_t g, uint8_t b);
|
void set_pen(uint8_t r, uint8_t g, uint8_t b);
|
||||||
void set_pen(Pen p);
|
void set_pen(Pen p);
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue