Some checks reported errors
continuous-integration/drone/push Build was killed
feat: surface system This commit puts the project in major jeopardy as it overhauls the architecture such as removing the layer stack completely, etc. I am filled with determination.
81 lines
1.3 KiB
C++
81 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include <math/vec2.hpp>
|
|
#include <sstream>
|
|
|
|
namespace lt::surface {
|
|
|
|
class ClosedEvent
|
|
{
|
|
public:
|
|
[[nodiscard]] auto to_string() const -> std::string_view
|
|
{
|
|
return "SurfaceClosedEvent";
|
|
}
|
|
};
|
|
|
|
class MovedEvent
|
|
{
|
|
public:
|
|
MovedEvent(int x, int y): m_position(x, y)
|
|
{
|
|
}
|
|
|
|
[[nodiscard]] auto get_position() const -> const math::ivec2 &
|
|
{
|
|
return m_position;
|
|
}
|
|
|
|
[[nodiscard]] auto to_string() const -> std::string
|
|
{
|
|
auto stream = std::stringstream {};
|
|
stream << "WindwoMoved: " << m_position.x << ", " << m_position.y;
|
|
return stream.str();
|
|
}
|
|
|
|
private:
|
|
math::ivec2 m_position;
|
|
};
|
|
|
|
class ResizedEvent
|
|
{
|
|
public:
|
|
ResizedEvent(unsigned int width, unsigned int height): m_size(width, height)
|
|
{
|
|
}
|
|
|
|
[[nodiscard]] auto get_size() const -> const math::uvec2 &
|
|
{
|
|
return m_size;
|
|
}
|
|
|
|
[[nodiscard]] auto to_string() const -> std::string
|
|
{
|
|
auto stream = std::stringstream {};
|
|
stream << "SurfaceResized: " << m_size.x << ", " << m_size.y;
|
|
return stream.str();
|
|
}
|
|
|
|
private:
|
|
math::uvec2 m_size;
|
|
};
|
|
|
|
class LostFocusEvent
|
|
{
|
|
public:
|
|
[[nodiscard]] auto to_string() const -> std::string_view
|
|
{
|
|
return "SurfaceLostFocus";
|
|
}
|
|
};
|
|
|
|
class GainFocusEvent
|
|
{
|
|
public:
|
|
[[nodiscard]] auto to_string() const -> std::string_view
|
|
{
|
|
return "SurfaceGainFocus";
|
|
}
|
|
};
|
|
|
|
} // namespace lt::surface
|