WindowManagerTests.cpp 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #include <cstdio>
  2. #include <source_location>
  3. #include <GLFW/glfw3.h>
  4. #include "../Tests.hpp"
  5. #include "core/WindowManager.hpp"
  6. import Core.Logger;
  7. import Core.Terminal;
  8. import Core.Vector;
  9. namespace W = Core::Window;
  10. static W::Button closeButton = 0;
  11. static W::Button testButton = 0;
  12. static W::Button textButton = 0;
  13. static bool isRunning(void*) {
  14. return !W::shouldClose() && !W::isButtonDown(closeButton);
  15. }
  16. static void tick(void*) {
  17. if(!W::isInputEnabled()) {
  18. Core::logInfo(
  19. "TPS: #\nFPS: #\n", W::getTicksPerSecond(),
  20. W::getFramesPerSecond());
  21. printf(
  22. "%12s | Down: %d | DownTime: %3d | Released: %d\n",
  23. W::getButtonName(closeButton), W::isButtonDown(closeButton),
  24. W::getButtonDownTime(closeButton),
  25. W::wasButtonReleased(closeButton));
  26. printf(
  27. "%12s | Down: %d | DownTime: %3d | Released: %d\n",
  28. W::getButtonName(testButton), W::isButtonDown(testButton),
  29. W::getButtonDownTime(testButton), W::wasButtonReleased(testButton));
  30. Core::Vector2 mouse = W::getLastMousePosition();
  31. Core::logInfo("Mouse: # #\n", mouse[0], mouse[1]);
  32. }
  33. if(W::getButtonDownTime(textButton) == 1) {
  34. if(W::isInputEnabled()) {
  35. W::disableInput();
  36. } else {
  37. W::enableInput();
  38. }
  39. }
  40. if(W::isInputEnabled()) {
  41. printf("Input: '%s'\n", W::getInputString());
  42. printf("Cursor: %zu\n", W::getInputCursor());
  43. }
  44. }
  45. static void render(void*, float) {
  46. }
  47. static void printReport(
  48. Core::LogLevel l, const std::source_location& sl, void*,
  49. const char* message) {
  50. Core::log(
  51. l, Core::Terminal::FG_RED, Core::FormatLocation("#", sl), message);
  52. }
  53. void testWindow() {
  54. setReportHandler(printReport, nullptr);
  55. W::Options options = {{800, 480}, false, "Test"};
  56. if(W::open(options)) {
  57. return;
  58. }
  59. closeButton = W::addButton("Close Button");
  60. W::bindKeyToButton(closeButton, GLFW_KEY_Q);
  61. testButton = W::addButton("Test Button");
  62. W::bindKeyToButton(testButton, GLFW_KEY_T);
  63. textButton = W::addButton("Text Button");
  64. W::bindKeyToButton(textButton, GLFW_KEY_C);
  65. W::show();
  66. W::setRunHandler(isRunning, nullptr);
  67. W::setTickHandler(tick, nullptr);
  68. W::setRenderHandler(render, nullptr);
  69. W::setNanosPerTick(50'000'000);
  70. W::run();
  71. W::close();
  72. }