feat: input handler work

This commit is contained in:
2026-02-25 10:08:29 +01:00
parent dde47e7fac
commit 73fda759c5
10 changed files with 174 additions and 28 deletions

33
include/input.h Normal file
View File

@@ -0,0 +1,33 @@
#pragma once
#ifndef H_INPUT_
#define H_INPUT_
#include <cstddef>
class InputHandlerImpl {
public:
InputHandlerImpl() = default;
virtual ~InputHandlerImpl() = default;
public:
virtual size_t GetMouseX() = 0;
virtual size_t GetMouseY() = 0;
};
class InputHandler {
public:
static InputHandler* GetInstance() {
if (!s_instance) s_instance = new InputHandler;
return s_instance;
}
private:
InputHandler();
public:
size_t GetMouseX();
size_t GetMouseY();
private:
static InputHandler* s_instance;
InputHandlerImpl* m_impl;
};
#endif // H_INPUT_

View File

@@ -2,11 +2,11 @@
#ifndef H_WAYLAND_INPUT_
#define H_WAYLAND_INPUT_
#include "input.h"
#include <wayland-client-protocol.h>
class WaylandInputHandler {
public:
static WaylandInputHandler* GetInstance();
class WaylandInputHandler : public InputHandlerImpl {
private:
static void handle_pointer_enter(void *data,
struct wl_pointer *wl_pointer,
@@ -58,10 +58,16 @@ private:
private:
WaylandInputHandler();
~WaylandInputHandler() = default;
private:
static WaylandInputHandler* s_instance;
friend class InputHandler;
public:
size_t GetMouseX() override;
size_t GetMouseY() override;
private:
struct wl_pointer_listener m_pointer_listener;
wl_fixed_t m_surface_x;
wl_fixed_t m_surface_y;
};
#endif // H_WAYLAND_INPUT_

View File

@@ -35,6 +35,8 @@ public:
Window(size_t width, size_t height);
virtual ~Window();
static void Init();
Window(const Window &) = delete;
Window(Window &&) = delete;

View File

@@ -8,6 +8,8 @@ public:
WaylandWindowImpl(size_t width, size_t height);
~WaylandWindowImpl() override;
static void Init();
public:
bool Dispatch() override;
void OnFrame(IFrameListener fn) override;