light/Engine/src/Platform/OS/Linux/lWindow.hpp

45 lines
1 KiB
C++
Raw Normal View History

2022-03-08 21:19:19 +03:30
#pragma once
#include "Base/Base.hpp"
#include "Core/Window.hpp"
struct GLFWwindow;
namespace Light {
class Event;
class WindowResizedEvent;
class lWindow: public Window
{
private:
GLFWwindow* m_Handle;
std::function<void(Event&)> m_EventCallback;
public:
lWindow(std::function<void(Event&)> callback);
~lWindow();
/* events */
void PollEvents() override;
void OnEvent(const Event& event) override;
//======================================== SETTERS ========================================//
void SetProperties(const WindowProperties& properties, bool overrideVisibility = false) override;
void SetTitle(const std::string& title) override;
void SetSize(const glm::uvec2& size, bool additive = false) override;
void SetVSync(bool vsync, bool toggle = false) override;
void SetVisibility(bool visible, bool toggle = false) override;
//======================================== SETTERS ========================================//
private:
void OnWindowResize(const WindowResizedEvent& event);
void BindGlfwEvents();
};
} // namespace Light