diff --git a/resources/font/FreeMono.ttf b/resources/font/FreeMono.ttf new file mode 100644 index 0000000..e05d918 Binary files /dev/null and b/resources/font/FreeMono.ttf differ diff --git a/scripts/nvboard.mk b/scripts/nvboard.mk index 3f5244e..5144118 100644 --- a/scripts/nvboard.mk +++ b/scripts/nvboard.mk @@ -26,7 +26,7 @@ $(NVBOARD_ARCHIVE): $(NVBOARD_OBJS) -include $(NVBOARD_OBJS:.o=.d) # Link flags for examples -LDFLAGS += $(shell sdl2-config --libs) -lSDL2_image +LDFLAGS += $(shell sdl2-config --libs) -lSDL2_image -lSDL2_ttf .PHONY: nvboard-archive nvboard-clean diff --git a/src/font.cpp b/src/font.cpp new file mode 100644 index 0000000..82df44c --- /dev/null +++ b/src/font.cpp @@ -0,0 +1,28 @@ +#include +#include + +static TTF_Font *font = NULL; + +void init_font() { + int ret = TTF_Init(); + assert(ret != -1); + std::string nvboard_home = getenv("NVBOARD_HOME"); + font = TTF_OpenFont((nvboard_home + "/resources/font/" + "FreeMono.ttf").c_str(), 28); + assert(font != NULL); +} + +void test_font(SDL_Renderer *renderer) { + SDL_Color c = {.r = 0xff, .g = 0xff, .b = 0xff }; + SDL_Surface *s = TTF_RenderText_Solid_Wrapped(font, "abc", c, 0); + SDL_Texture *t = SDL_CreateTextureFromSurface(renderer, s); + SDL_Rect r = { 0, 0, s->w, s->h }; + SDL_RenderCopy(renderer, t, NULL, &r); + SDL_FreeSurface(s); + SDL_DestroyTexture(t); +} + +void close_font() { + TTF_CloseFont(font); + font = NULL; + TTF_Quit(); +} diff --git a/src/nvboard.cpp b/src/nvboard.cpp index 1b479f9..a2cc9b7 100644 --- a/src/nvboard.cpp +++ b/src/nvboard.cpp @@ -82,6 +82,11 @@ void nvboard_init(int vga_clk_cycle) { init_components(main_renderer); init_gui(main_renderer); + void init_font(); + void test_font(SDL_Renderer *renderer); + init_font(); + test_font(main_renderer); + for (int i = 0; i < NR_PINS; i ++) { if (pin_array[i].ptr == NULL) pin_array[i].ptr = &pin_array[i].data; }