summaryrefslogtreecommitdiff
path: root/ui/windowContent.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ui/windowContent.cpp')
-rw-r--r--ui/windowContent.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/ui/windowContent.cpp b/ui/windowContent.cpp
new file mode 100644
index 0000000..91732a7
--- /dev/null
+++ b/ui/windowContent.cpp
@@ -0,0 +1,32 @@
+#include "windowContent.h"
+#include "SDL_events.h"
+
+WindowContent::WindowContent(size_t width, size_t height) : uiShader {width, height} { }
+
+void
+WindowContent::tick(TickDuration)
+{
+}
+
+bool
+WindowContent::handleInput(const SDL_Event & e)
+{
+ SDL_Event eAdjusted {e};
+ const auto size = [&e] {
+ glm::ivec2 size {};
+ SDL_GetWindowSizeInPixels(SDL_GetWindowFromID(e.window.windowID), &size.x, &size.y);
+ return size;
+ }();
+ switch (e.type) {
+ // SDL and OpenGL have coordinates that are vertically opposed.
+ case SDL_MOUSEBUTTONDOWN:
+ case SDL_MOUSEBUTTONUP:
+ eAdjusted.button.y = size.y - e.button.y;
+ break;
+ case SDL_MOUSEMOTION:
+ eAdjusted.motion.y = size.y - e.motion.y;
+ break;
+ }
+ uiComponents.rapplyOne(&UIComponent::handleInput, eAdjusted, UIComponent::Position {{}, size});
+ return true;
+}