| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- /**********************************************************************************************
- *
- * raylib-nuklear-font - Example of using Nuklear with a custom Raylib font.
- *
- * LICENSE: zlib/libpng
- *
- * raylib-nuklear is licensed under an unmodified zlib/libpng license, which is an OSI-certified,
- * BSD-like license that allows static linking with closed source software:
- *
- * Copyright (c) 2020 Rob Loach (@RobLoach)
- *
- * This software is provided "as-is", without any express or implied warranty. In no event
- * will the authors be held liable for any damages arising from the use of this software.
- *
- * Permission is granted to anyone to use this software for any purpose, including commercial
- * applications, and to alter it and redistribute it freely, subject to the following restrictions:
- *
- * 1. The origin of this software must not be misrepresented; you must not claim that you
- * wrote the original software. If you use this software in a product, an acknowledgment
- * in the product documentation would be appreciated but is not required.
- *
- * 2. Altered source versions must be plainly marked as such, and must not be misrepresented
- * as being the original software.
- *
- * 3. This notice may not be removed or altered from any source distribution.
- *
- **********************************************************************************************/
- #include "raylib.h"
- #define RAYLIB_NUKLEAR_IMPLEMENTATION
- #include "raylib-nuklear.h"
- int main(void)
- {
- // Initialization
- //--------------------------------------------------------------------------------------
- const int screenWidth = 800;
- const int screenHeight = 450;
- const int fontSize = 18;
- InitWindow(screenWidth, screenHeight, "[raylib-nuklear] font example");
- Font font = LoadFontEx("resources/anonymous_pro_bold.ttf", fontSize, NULL, 0);
- SetTargetFPS(60); // Set our game to run at 60 frames-per-second
- //--------------------------------------------------------------------------------------
- /* GUI */
- struct nk_colorf bg = ColorToNuklearF(SKYBLUE);
- struct nk_context *ctx = InitNuklearEx(font, fontSize);
- // Main game loop
- while (!WindowShouldClose()) // Detect window close button or ESC key
- {
- // Update
- UpdateNuklear(ctx);
- // GUI
- if (nk_begin(ctx, "Demo", nk_rect(50, 50, 230, 250),
- NK_WINDOW_BORDER|NK_WINDOW_MOVABLE|NK_WINDOW_SCALABLE|
- NK_WINDOW_MINIMIZABLE|NK_WINDOW_TITLE))
- {
- enum {EASY, HARD};
- static int op = EASY;
- static int property = 20;
- nk_layout_row_static(ctx, 30, 80, 1);
- if (nk_button_label(ctx, "button"))
- TraceLog(LOG_INFO, "button pressed");
- nk_layout_row_dynamic(ctx, 30, 2);
- if (nk_option_label(ctx, "easy", op == EASY)) op = EASY;
- if (nk_option_label(ctx, "hard", op == HARD)) op = HARD;
- nk_layout_row_dynamic(ctx, 25, 1);
- nk_property_int(ctx, "Compression:", 0, &property, 100, 10, 1);
- nk_layout_row_dynamic(ctx, 20, 1);
- nk_label(ctx, "background:", NK_TEXT_LEFT);
- nk_layout_row_dynamic(ctx, 25, 1);
- if (nk_combo_begin_color(ctx, nk_rgb_cf(bg), nk_vec2(nk_widget_width(ctx),400))) {
- nk_layout_row_dynamic(ctx, 120, 1);
- bg = nk_color_picker(ctx, bg, NK_RGBA);
- nk_layout_row_dynamic(ctx, 25, 1);
- bg.r = nk_propertyf(ctx, "#R:", 0, bg.r, 1.0f, 0.01f,0.005f);
- bg.g = nk_propertyf(ctx, "#G:", 0, bg.g, 1.0f, 0.01f,0.005f);
- bg.b = nk_propertyf(ctx, "#B:", 0, bg.b, 1.0f, 0.01f,0.005f);
- bg.a = nk_propertyf(ctx, "#A:", 0, bg.a, 1.0f, 0.01f,0.005f);
- nk_combo_end(ctx);
- }
- }
- nk_end(ctx);
- // Draw
- //----------------------------------------------------------------------------------
- BeginDrawing();
- ClearBackground(ColorFromNuklearF(bg));
- DrawNuklear(ctx);
- EndDrawing();
- //----------------------------------------------------------------------------------
- }
- // De-Initialization
- //--------------------------------------------------------------------------------------
- UnloadNuklear(ctx); // Unload the Nuklear GUI
- UnloadFont(font);
- CloseWindow();
- //--------------------------------------------------------------------------------------
- return 0;
- }
|