raylib-nuklear-test.c 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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. // Nuklear GUI Code
  28. // https://github.com/Immediate-Mode-UI/Nuklear/wiki/Window
  29. if (nk_begin(ctx, "Nuklear", nk_rect(50, 50, 400, 400),
  30. NK_WINDOW_BORDER|NK_WINDOW_MOVABLE|NK_WINDOW_CLOSABLE)) {
  31. nk_button_label(ctx, "Button");
  32. nk_layout_row_static(ctx, 256, 256, 1);
  33. nk_image(ctx, image);
  34. }
  35. nk_end(ctx);
  36. // Render
  37. BeginDrawing();
  38. ClearBackground(RAYWHITE);
  39. // DrawNuklear()
  40. DrawNuklear(ctx);
  41. EndDrawing();
  42. // UnloadNuklearImage()
  43. UnloadNuklearImage(image);
  44. // UnloadNuklear()
  45. UnloadNuklear(ctx);
  46. // InitNuklearEx()
  47. Font font = LoadFont("resources/anonymous_pro_bold.ttf");
  48. ctx = InitNuklearEx(font, 25.0f);
  49. Assert(ctx);
  50. UnloadNuklear(ctx);
  51. UnloadFont(font);
  52. // RectangleFromNuklear()
  53. {
  54. ctx = NULL;
  55. struct nk_rect rect = nk_rect(10, 20, 30, 40);
  56. Rectangle rectangle = RectangleFromNuklear(ctx, rect);
  57. AssertEqual(rect.x, rectangle.x);
  58. AssertEqual(rect.y, rectangle.y);
  59. AssertEqual(rect.w, rectangle.width);
  60. AssertEqual(rect.h, rectangle.height);
  61. }
  62. // RectangleFromNuklear(), RectangleToNuklear(), with scaling
  63. {
  64. struct nk_rect rect = nk_rect(10, 20, 30, 40);
  65. ctx = InitNuklear(10);
  66. SetNuklearScaling(ctx, 2.0f);
  67. float scaling = GetNuklearScaling(ctx);
  68. AssertEqual(scaling, 2.0f, "Scaling was incorrectly set.");
  69. Rectangle rectangle = RectangleFromNuklear(ctx, rect);
  70. AssertEqual(rect.x, rectangle.x / 2);
  71. AssertEqual(rect.y, rectangle.y / 2);
  72. AssertEqual(rect.w, rectangle.width / 2);
  73. AssertEqual(rect.h, rectangle.height / 2);
  74. rectangle = (Rectangle){20, 40, 60, 80};
  75. rect = RectangleToNuklear(ctx, rectangle);
  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. UnloadNuklear(ctx);
  81. }
  82. CloseWindow();
  83. TraceLog(LOG_INFO, "================================");
  84. TraceLog(LOG_INFO, "raylib-nuklear tests succesful");
  85. TraceLog(LOG_INFO, "================================");
  86. return 0;
  87. }