raylib-nuklear-test.c 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. #include "raylib.h"
  2. #define RAYLIB_NUKLEAR_IMPLEMENTATION
  3. #include "raylib-nuklear.h"
  4. #include "raylib-assert.h"
  5. int main(int argc, char *argv[]) {
  6. // Initialization
  7. SetTraceLogLevel(LOG_ALL);
  8. TraceLog(LOG_INFO, "================================");
  9. TraceLog(LOG_INFO, "raylib-nuklear-test");
  10. TraceLog(LOG_INFO, "================================");
  11. InitWindow(640, 480, "raylib-nuklear-tests");
  12. Assert(IsWindowReady());
  13. // Make sure we're running in the correct directory.
  14. Assert(argc > 0);
  15. const char* dir = GetDirectoryPath(argv[0]);
  16. Assert(ChangeDirectory(dir));
  17. // InitNuklear()
  18. struct nk_context *ctx = InitNuklear(10);
  19. Assert(ctx);
  20. // Image
  21. struct nk_image image = LoadNuklearImage("resources/test-image.png");
  22. Assert(image.handle.ptr);
  23. Texture texture = TextureFromNuklear(image);
  24. Assert(texture.width > 0);
  25. // UpdateNuklear()
  26. UpdateNuklear(ctx);
  27. // UpdateNuklearEx()
  28. UpdateNuklearEx(ctx, 1.0f / 60.0f);
  29. // Nuklear GUI Code
  30. // https://github.com/Immediate-Mode-UI/Nuklear/wiki/Window
  31. if (nk_begin(ctx, "Nuklear", nk_rect(50, 50, 400, 400),
  32. NK_WINDOW_BORDER|NK_WINDOW_MOVABLE|NK_WINDOW_CLOSABLE)) {
  33. nk_button_label(ctx, "Button");
  34. nk_layout_row_static(ctx, 256, 256, 1);
  35. nk_image(ctx, image);
  36. }
  37. nk_end(ctx);
  38. // Render
  39. BeginDrawing();
  40. ClearBackground(RAYWHITE);
  41. // DrawNuklear()
  42. DrawNuklear(ctx);
  43. EndDrawing();
  44. // Save a screenshot for debugging.
  45. TakeScreenshot("raylib-nuklear-test.png");
  46. // UnloadNuklearImage()
  47. UnloadNuklearImage(image);
  48. // UnloadNuklear()
  49. UnloadNuklear(ctx);
  50. // InitNuklearEx()
  51. {
  52. Font font = LoadFont("resources/anonymous_pro_bold.ttf");
  53. ctx = InitNuklearEx(font, 25.0f);
  54. Assert(ctx);
  55. UnloadNuklear(ctx);
  56. UnloadFont(font);
  57. }
  58. // RectangleFromNuklear()
  59. {
  60. ctx = NULL;
  61. struct nk_rect rect = nk_rect(10, 20, 30, 40);
  62. Rectangle rectangle = RectangleFromNuklear(ctx, rect);
  63. AssertEqual(rect.x, rectangle.x);
  64. AssertEqual(rect.y, rectangle.y);
  65. AssertEqual(rect.w, rectangle.width);
  66. AssertEqual(rect.h, rectangle.height);
  67. }
  68. // RectangleFromNuklear(), RectangleToNuklear(), with scaling
  69. {
  70. struct nk_rect rect = nk_rect(10, 20, 30, 40);
  71. ctx = InitNuklear(10);
  72. SetNuklearScaling(ctx, 2.0f);
  73. float scaling = GetNuklearScaling(ctx);
  74. AssertEqual(scaling, 2.0f, "Scaling was incorrectly set.");
  75. Rectangle rectangle = RectangleFromNuklear(ctx, rect);
  76. AssertEqual(rect.x, rectangle.x / 2);
  77. AssertEqual(rect.y, rectangle.y / 2);
  78. AssertEqual(rect.w, rectangle.width / 2);
  79. AssertEqual(rect.h, rectangle.height / 2);
  80. rectangle = (Rectangle){20, 40, 60, 80};
  81. rect = RectangleToNuklear(ctx, rectangle);
  82. AssertEqual(rect.x, rectangle.x / 2);
  83. AssertEqual(rect.y, rectangle.y / 2);
  84. AssertEqual(rect.w, rectangle.width / 2);
  85. AssertEqual(rect.h, rectangle.height / 2);
  86. UnloadNuklear(ctx);
  87. }
  88. CloseWindow();
  89. TraceLog(LOG_INFO, "================================");
  90. TraceLog(LOG_INFO, "raylib-nuklear tests succesful");
  91. TraceLog(LOG_INFO, "================================");
  92. return 0;
  93. }