diff --git a/main.c b/main.c index 5e4397c..94fd5ea 100644 --- a/main.c +++ b/main.c @@ -3,12 +3,62 @@ #include #include +#include +#include +#include FT_FREETYPE_H + +FT_Library library; +FT_Face face; + EditorState editor_state; Font editor_font; -void ed_load_font() {} +#define ERROR(module, error) \ + { \ + printf("ERROR (%s): %s\n", (module), (error)); \ + } int main() { + FT_Error error = FT_Init_FreeType(&library); + if (error) { + ERROR("freetype", FT_Error_String(error)) + exit(EXIT_FAILURE); + } + + error = FT_New_Face(library, "/usr/share/fonts/noto/NotoSans-Regular.ttf", + 0, &face); + + if (error) { + ERROR("freetype", FT_Error_String(error)) + exit(EXIT_FAILURE); + } + + error = FT_Set_Char_Size(face, 0, 16 * 18, 800, 600); + + if (error) { + ERROR("freetype", FT_Error_String(error)) + exit(EXIT_FAILURE); + } + + FT_UInt idx = FT_Get_Char_Index(face, '&'); + printf("Index: %d\n", idx); + + error = FT_Load_Glyph(face, 32, FT_LOAD_DEFAULT); + + if (error) { + ERROR("freetype", FT_Error_String(error)) + exit(EXIT_FAILURE); + } + + error = FT_Render_Glyph(face->glyph, FT_RENDER_MODE_NORMAL); + + if (error) { + ERROR("freetype", FT_Error_String(error)) + exit(EXIT_FAILURE); + } + + FT_GlyphSlot slot = face->glyph; + sds init_text = sdsnew("Das ist nur ein Test String🙂!"); editor_state = init_editor_state(init_text); @@ -16,6 +66,14 @@ int main() { InitWindow(800, 600, "editor"); + Image img = (Image){.data = slot->bitmap.buffer, + .width = slot->bitmap.width, + .height = slot->bitmap.rows, + .format = PIXELFORMAT_UNCOMPRESSED_GRAYSCALE, + .mipmaps = 1}; + + Texture2D tex = LoadTextureFromImage(img); + while (!WindowShouldClose()) { BeginDrawing(); ClearBackground(BLACK); @@ -23,6 +81,8 @@ int main() { DrawText(editor_state.text, 8, 8, 18, RAYWHITE); DrawRectangle(8 * editor_state.cursor_pos + 8, 8, 2, 18, GREEN); + DrawTexture(tex, 40, 40, WHITE); + EndDrawing(); }