server/src/mouse_input.h
Rama main · réplica de lectura del repositorio original.
/**
* @file src/mouse_input.h
* @brief Platform-neutral mouse input contract.
*/
#pragma once
namespace mouse_input {
struct point_t {
int x;
int y;
bool operator==(const point_t &) const = default;
};
struct viewport_t {
int offset_x;
int offset_y;
int width;
int height;
};
struct absolute_position_t {
float x;
float y;
bool operator==(const absolute_position_t &) const = default;
};
class backend_t {
public:
virtual ~backend_t() = default;
virtual point_t position() const = 0;
virtual void move_relative(point_t delta) = 0;
virtual void move_absolute(const viewport_t &viewport, absolute_position_t position) = 0;
};
class controller_t {
public:
explicit controller_t(backend_t &backend);
point_t position() const;
void move_relative(point_t delta);
void move_absolute(const viewport_t &viewport, absolute_position_t position);
private:
backend_t &_backend;
};
} // namespace mouse_input