diff --git a/programs/libs/libhello/Makefile b/programs/libs/libhello/Makefile index a7cb8b6..5adebf1 100644 --- a/programs/libs/libhello/Makefile +++ b/programs/libs/libhello/Makefile @@ -56,10 +56,17 @@ LIBSRC := src/libhello.cpp all: $(OUTDIR)/$(LIBNAME).lib $(OUTDIR)/$(LIBNAME).lib.sym -$(OUTDIR)/$(LIBNAME).lib: $(LIBSRC) - @mkdir -p $(OUTDIR) - $(CXX) $(CXXFLAGS) -c src/libhello.cpp -o src/libhello.o - $(CXX) $(CXXFLAGS) $(LDFLAGS) src/libhello.o -o $@ +$(OUTDIR): + mkdir -p $@ + +src/libhello.o: src/libhello.cpp Makefile | $(OUTDIR) + $(CXX) $(CXXFLAGS) -c src/libhello.cpp -o $@ + +src/stb_truetype_impl.o: src/stb_truetype_impl.cpp Makefile | $(OUTDIR) + $(CXX) $(CXXFLAGS) -c src/stb_truetype_impl.cpp -o $@ + +$(OUTDIR)/$(LIBNAME).lib: src/libhello.o src/stb_truetype_impl.o + $(CXX) $(CXXFLAGS) $(LDFLAGS) src/libhello.o src/stb_truetype_impl.o -o $@ # Generate symbol file from nm output # Format: "symbol_name,offset_in_hex" diff --git a/programs/libs/libhello/src/libhello.cpp b/programs/libs/libhello/src/libhello.cpp index 2a98a78..7e88c78 100644 --- a/programs/libs/libhello/src/libhello.cpp +++ b/programs/libs/libhello/src/libhello.cpp @@ -6,6 +6,7 @@ */ #include +#include // Exported demo function - creates a window and renders until closed extern "C" int hello_run() { @@ -20,6 +21,18 @@ extern "C" int hello_run() { int width = 200; int height = 320; + gui::TrueTypeFont* font = (gui::TrueTypeFont*)montauk::malloc(sizeof(gui::TrueTypeFont)); + if (!font) { + montauk::win_destroy(winId); + return -1; + } + montauk::memset(font, 0, sizeof(gui::TrueTypeFont)); + if (!font->init("0:/fonts/Roboto-Medium.ttf")) { + montauk::mfree(font); + montauk::win_destroy(winId); + return -1; + } + // Simple render - fill with a color pattern for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { @@ -28,6 +41,14 @@ extern "C" int hello_run() { } } + // Render text using TrueType + gui::Color text_color; + text_color.r = 0xF5; + text_color.g = 0xF5; + text_color.b = 0xF5; + text_color.a = 255; + font->draw_to_buffer(pixels, width, height, 20, 20, "Hello from libhello!", text_color, 16); + // Present the initial frame montauk::win_present(winId); @@ -58,10 +79,12 @@ extern "C" int hello_run() { pixels[y * width + x] = 0xFF1a1a2e; } } + font->draw_to_buffer(pixels, width, height, 20, 20, "Hello from libhello!", text_color, 16); montauk::win_present(winId); } } montauk::win_destroy(winId); + montauk::mfree(font); return 0; } diff --git a/programs/libs/libhello/src/libhello.o b/programs/libs/libhello/src/libhello.o index c315855..9f911d5 100644 Binary files a/programs/libs/libhello/src/libhello.o and b/programs/libs/libhello/src/libhello.o differ diff --git a/programs/libs/libhello/src/stb_truetype_impl.o b/programs/libs/libhello/src/stb_truetype_impl.o new file mode 100644 index 0000000..292d609 Binary files /dev/null and b/programs/libs/libhello/src/stb_truetype_impl.o differ