eco2d/code/vendors/raylib-nuklear/test/raylib-nuklear-test.c

108 lines
3.1 KiB
C

#include "raylib.h"
#define RAYLIB_NUKLEAR_IMPLEMENTATION
#include "raylib-nuklear.h"
#include "raylib-assert.h"
int main(int argc, char *argv[]) {
// Initialization
SetTraceLogLevel(LOG_ALL);
TraceLog(LOG_INFO, "================================");
TraceLog(LOG_INFO, "raylib-nuklear-test");
TraceLog(LOG_INFO, "================================");
InitWindow(640, 480, "raylib-nuklear-tests");
Assert(IsWindowReady());
// Make sure we're running in the correct directory.
Assert(argc > 0);
const char* dir = GetDirectoryPath(argv[0]);
Assert(ChangeDirectory(dir));
// InitNuklear()
struct nk_context *ctx = InitNuklear(10);
Assert(ctx);
// Image
struct nk_image image = LoadNuklearImage("resources/test-image.png");
Assert(image.handle.ptr);
Texture texture = TextureFromNuklear(image);
Assert(texture.width > 0);
// UpdateNuklear()
UpdateNuklear(ctx);
// Nuklear GUI Code
// https://github.com/Immediate-Mode-UI/Nuklear/wiki/Window
if (nk_begin(ctx, "Nuklear", nk_rect(50, 50, 400, 400),
NK_WINDOW_BORDER|NK_WINDOW_MOVABLE|NK_WINDOW_CLOSABLE)) {
nk_button_label(ctx, "Button");
nk_layout_row_static(ctx, 256, 256, 1);
nk_image(ctx, image);
}
nk_end(ctx);
// Render
BeginDrawing();
ClearBackground(RAYWHITE);
// DrawNuklear()
DrawNuklear(ctx);
EndDrawing();
// UnloadNuklearImage()
UnloadNuklearImage(image);
// UnloadNuklear()
UnloadNuklear(ctx);
// InitNuklearEx()
Font font = LoadFont("resources/anonymous_pro_bold.ttf");
ctx = InitNuklearEx(font, 25.0f);
Assert(ctx);
UnloadNuklear(ctx);
UnloadFont(font);
// RectangleFromNuklear()
{
ctx = NULL;
struct nk_rect rect = nk_rect(10, 20, 30, 40);
Rectangle rectangle = RectangleFromNuklear(ctx, rect);
AssertEqual(rect.x, rectangle.x);
AssertEqual(rect.y, rectangle.y);
AssertEqual(rect.w, rectangle.width);
AssertEqual(rect.h, rectangle.height);
}
// RectangleFromNuklear(), RectangleToNuklear(), with scaling
{
struct nk_rect rect = nk_rect(10, 20, 30, 40);
ctx = InitNuklear(10);
SetNuklearScaling(ctx, 2.0f);
float scaling = GetNuklearScaling(ctx);
AssertEqual(scaling, 2.0f, "Scaling was incorrectly set.");
Rectangle rectangle = RectangleFromNuklear(ctx, rect);
AssertEqual(rect.x, rectangle.x / 2);
AssertEqual(rect.y, rectangle.y / 2);
AssertEqual(rect.w, rectangle.width / 2);
AssertEqual(rect.h, rectangle.height / 2);
rectangle = (Rectangle){20, 40, 60, 80};
rect = RectangleToNuklear(ctx, rectangle);
AssertEqual(rect.x, rectangle.x / 2);
AssertEqual(rect.y, rectangle.y / 2);
AssertEqual(rect.w, rectangle.width / 2);
AssertEqual(rect.h, rectangle.height / 2);
UnloadNuklear(ctx);
}
CloseWindow();
TraceLog(LOG_INFO, "================================");
TraceLog(LOG_INFO, "raylib-nuklear tests succesful");
TraceLog(LOG_INFO, "================================");
return 0;
}