diff options
| author | Ray <[email protected]> | 2020-01-30 13:52:46 +0100 |
|---|---|---|
| committer | Ray <[email protected]> | 2020-01-30 13:52:46 +0100 |
| commit | 68675c6a606cd85b522bd4024d3ea519d0119568 (patch) | |
| tree | a718002f263f824c59f78ea33a70ad856cd05cdb /examples/web/text/text_font_loading.c | |
| parent | a80f304e208ae23571769344b5bae3e78eb48812 (diff) | |
| download | raylib.com-68675c6a606cd85b522bd4024d3ea519d0119568.tar.gz raylib.com-68675c6a606cd85b522bd4024d3ea519d0119568.zip | |
Updated web examples to latest raylib
Diffstat (limited to 'examples/web/text/text_font_loading.c')
| -rw-r--r-- | examples/web/text/text_font_loading.c | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/examples/web/text/text_font_loading.c b/examples/web/text/text_font_loading.c new file mode 100644 index 0000000..31c4391 --- /dev/null +++ b/examples/web/text/text_font_loading.c @@ -0,0 +1,125 @@ +/******************************************************************************************* +* +* raylib [text] example - Font loading +* +* raylib can load fonts from multiple file formats: +* +* - TTF/OTF > Sprite font atlas is generated on loading, user can configure +* some of the generation parameters (size, characters to include) +* - BMFonts > Angel code font fileformat, sprite font image must be provided +* together with the .fnt file, font generation cna not be configured +* - XNA Spritefont > Sprite font image, following XNA Spritefont conventions, +* Characters in image must follow some spacing and order rules +* +* This example has been created using raylib 2.6 (www.raylib.com) +* raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) +* +* Copyright (c) 2016-2019 Ramon Santamaria (@raysan5) +* +********************************************************************************************/ + +#include "raylib.h" + +#if defined(PLATFORM_WEB) + #include <emscripten/emscripten.h> +#endif + +//---------------------------------------------------------------------------------- +// Global Variables Definition +//---------------------------------------------------------------------------------- +const int screenWidth = 800; +const int screenHeight = 450; + +// Define characters to draw +// NOTE: raylib supports UTF-8 encoding, following list is actually codified as UTF8 internally +const char msg[256] = "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI\nJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmn\nopqrstuvwxyz{|}~¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓ\nÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷\nøùúûüýþÿ"; + +// NOTE: Textures/Fonts MUST be loaded after Window initialization (OpenGL context is required) +Font fontBm = { 0 }; // BMFont (AngelCode) +Font fontTtf = { 0 }; // TTF font + +Vector2 fontPosition = { 0.0f }; + +bool useTtf = false; + +//---------------------------------------------------------------------------------- +// Module Functions Declaration +//---------------------------------------------------------------------------------- +void UpdateDrawFrame(void); // Update and Draw one frame + +//---------------------------------------------------------------------------------- +// Program Main Entry Point +//---------------------------------------------------------------------------------- +int main(void) +{ + // Initialization + //-------------------------------------------------------------------------------------- + InitWindow(screenWidth, screenHeight, "raylib [text] example - font loading"); + + // BMFont (AngelCode) : Font data and image atlas have been generated using external program + fontBm = LoadFont("resources/pixantiqua.fnt"); + + // TTF font : Font data and atlas are generated directly from TTF + // NOTE: We define a font base size of 32 pixels tall and up-to 250 characters + fontTtf = LoadFontEx("resources/pixantiqua.ttf", 32, 0, 250); + + fontPosition.x = screenWidth/2 - MeasureTextEx(fontBm, msg, fontBm.baseSize, 0).x/2; + fontPosition.y = screenHeight/2 - fontBm.baseSize/2 - 80; + +#if defined(PLATFORM_WEB) + emscripten_set_main_loop(UpdateDrawFrame, 0, 1); +#else + SetTargetFPS(60); // Set our game to run at 60 frames-per-second + //-------------------------------------------------------------------------------------- + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + UpdateDrawFrame(); + } +#endif + + // De-Initialization + //-------------------------------------------------------------------------------------- + UnloadFont(fontBm); // AngelCode Font unloading + UnloadFont(fontTtf); // TTF Font unloading + + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} + +//---------------------------------------------------------------------------------- +// Module Functions Definition +//---------------------------------------------------------------------------------- +void UpdateDrawFrame(void) +{ + // Update + //---------------------------------------------------------------------------------- + if (IsKeyDown(KEY_SPACE)) useTtf = true; + else useTtf = false; + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + ClearBackground(RAYWHITE); + + DrawText("Hold SPACE to use TTF generated font", 20, 20, 20, LIGHTGRAY); + + if (!useTtf) + { + DrawTextEx(fontBm, msg, (Vector2){ 20.0f, 100.0f }, fontBm.baseSize, 2, MAROON); + DrawText("Using BMFont (Angelcode) imported", 20, GetScreenHeight() - 30, 20, GRAY); + } + else + { + DrawTextEx(fontTtf, msg, (Vector2){ 20.0f, 100.0f }, fontTtf.baseSize, 2, LIME); + DrawText("Using TTF font generated", 20, GetScreenHeight() - 30, 20, GRAY); + } + + EndDrawing(); + //---------------------------------------------------------------------------------- +}
\ No newline at end of file |
