feat: input handler work
This commit is contained in:
33
include/input.h
Normal file
33
include/input.h
Normal 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_
|
||||
@@ -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_
|
||||
|
||||
|
||||
@@ -35,6 +35,8 @@ public:
|
||||
Window(size_t width, size_t height);
|
||||
virtual ~Window();
|
||||
|
||||
static void Init();
|
||||
|
||||
Window(const Window &) = delete;
|
||||
Window(Window &&) = delete;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user