| @ -0,0 +1,125 @@ | |||||
| /******************************************************************************************* | |||||
| * | |||||
| * raylib [text] example - TTF loading and usage | |||||
| * | |||||
| * This example has been created using raylib 1.3.0 (www.raylib.com) | |||||
| * raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) | |||||
| * | |||||
| * Copyright (c) 2015 Ramon Santamaria (Ray San - raysan@raysanweb.com) | |||||
| * | |||||
| ********************************************************************************************/ | |||||
| #include "raylib.h" | |||||
| #include <stdio.h> | |||||
| int main() | |||||
| { | |||||
| // Initialization | |||||
| //-------------------------------------------------------------------------------------- | |||||
| int screenWidth = 800; | |||||
| int screenHeight = 450; | |||||
| InitWindow(screenWidth, screenHeight, "raylib [text] example - ttf loading"); | |||||
| const char msg1[50] = "TTF SpriteFont"; | |||||
| // NOTE: Textures/Fonts MUST be loaded after Window initialization (OpenGL context is required) | |||||
| // TTF SpriteFont loading with custom generation parameters | |||||
| SpriteFont font = LoadSpriteFontTTF("resources/fonts/KAISG.ttf", 96, 0, 0); | |||||
| float fontSize = font.size; | |||||
| Vector2 fontPosition = { 40, screenHeight/2 + 50 }; | |||||
| Vector2 textSize; | |||||
| int currentFontFilter = 0; // FILTER_POINT | |||||
| int count = 0; | |||||
| char **droppedFiles; | |||||
| SetTargetFPS(60); | |||||
| //-------------------------------------------------------------------------------------- | |||||
| // Main game loop | |||||
| while (!WindowShouldClose()) // Detect window close button or ESC key | |||||
| { | |||||
| // Update | |||||
| //---------------------------------------------------------------------------------- | |||||
| fontSize += GetMouseWheelMove()*4.0f; | |||||
| // Choose font texture filter method | |||||
| if (IsKeyPressed(KEY_ONE)) | |||||
| { | |||||
| SetTextureFilter(font.texture, FILTER_POINT); | |||||
| currentFontFilter = 0; | |||||
| } | |||||
| else if (IsKeyPressed(KEY_TWO)) | |||||
| { | |||||
| SetTextureFilter(font.texture, FILTER_BILINEAR); | |||||
| currentFontFilter = 1; | |||||
| } | |||||
| else if (IsKeyPressed(KEY_THREE)) | |||||
| { | |||||
| // NOTE: Trilinear filter not supported in font because there are not mipmap levels | |||||
| SetTextureFilter(font.texture, FILTER_TRILINEAR); | |||||
| //currentFontFilter = 2; | |||||
| } | |||||
| textSize = MeasureTextEx(font, msg1, fontSize, 0); | |||||
| if (IsKeyDown(KEY_LEFT)) fontPosition.x -= 10; | |||||
| else if (IsKeyDown(KEY_RIGHT)) fontPosition.x += 10; | |||||
| // Load a dropped TTF file dynamically (at current fontSize) | |||||
| if (IsFileDropped()) | |||||
| { | |||||
| droppedFiles = GetDroppedFiles(&count); | |||||
| if (count == 1) // Only support one ttf file dropped | |||||
| { | |||||
| UnloadSpriteFont(font); | |||||
| font = LoadSpriteFontTTF(droppedFiles[0], fontSize, 0, 0); | |||||
| ClearDroppedFiles(); | |||||
| } | |||||
| } | |||||
| //---------------------------------------------------------------------------------- | |||||
| // Draw | |||||
| //---------------------------------------------------------------------------------- | |||||
| BeginDrawing(); | |||||
| ClearBackground(RAYWHITE); | |||||
| DrawText("Use mouse wheel to change font size", 20, 20, 10, GRAY); | |||||
| DrawText("Use KEY_RIGHT and KEY_LEFT to move text", 20, 40, 10, GRAY); | |||||
| DrawText("Use 1, 2, 3 to change texture filter", 20, 60, 10, GRAY); | |||||
| DrawText("Drop a new TTF font for dynamic loading", 20, 80, 10, DARKGRAY); | |||||
| DrawTextEx(font, msg1, fontPosition, fontSize, 0, BLACK); | |||||
| // TODO: It seems texSize measurement is not accurate due to chars offsets... | |||||
| //DrawRectangleLines(fontPosition.x, fontPosition.y, textSize.x, textSize.y, RED); | |||||
| DrawRectangle(0, screenHeight - 80, screenWidth, 80, LIGHTGRAY); | |||||
| DrawText(FormatText("Font size: %02.02f", fontSize), 20, screenHeight - 50, 10, DARKGRAY); | |||||
| DrawText(FormatText("Text size: [%02.02f, %02.02f]", textSize.x, textSize.y), 20, screenHeight - 30, 10, DARKGRAY); | |||||
| DrawText("CURRENT TEXTURE FILTER:", 250, 400, 20, GRAY); | |||||
| if (currentFontFilter == 0) DrawText("POINT", 570, 400, 20, BLACK); | |||||
| else if (currentFontFilter == 1) DrawText("BILINEAR", 570, 400, 20, BLACK); | |||||
| EndDrawing(); | |||||
| //---------------------------------------------------------------------------------- | |||||
| } | |||||
| // De-Initialization | |||||
| //-------------------------------------------------------------------------------------- | |||||
| UnloadSpriteFont(font); // SpriteFont unloading | |||||
| ClearDroppedFiles(); // Clear internal buffers | |||||
| CloseWindow(); // Close window and OpenGL context | |||||
| //-------------------------------------------------------------------------------------- | |||||
| return 0; | |||||
| } | |||||