Zen 0.3.0
Loading...
Searching...
No Matches
ZEN_LinuxWindow.h
1#pragma once
2
3#include <zen/core/ZEN_Core.h>
4#include <zen/core/ZEN_Window.h>
5#include <zen/renderer/ZEN_GraphicsContext.h>
6#include <zen/zen_pch.h>
7
8namespace Zen {
9 // TEMP
10 struct WindowData {
11 SDL_Window *window;
12 std::unique_ptr<GraphicsContext> context;
13 };
14
15 class LinuxWindow : public Window {
16 public:
17 LinuxWindow(const WindowProperties &properties);
18 virtual ~LinuxWindow();
19
20 void onUpdate() override;
21 uint32_t getWidth() override;
22 uint32_t getHeight() override;
23
24 void setVSync(bool enabled) override;
25 bool isVSyncEnabled() const override;
26 void toggleFullscreen() override;
27
28 void emitErrorMessage(const char *message) override;
29
30 // TEMP
31 WindowData &getWindowData();
32 WindowProperties &getProperties();
33
34 bool resizeEvent(const ZenEvent &event);
35 bool mouseClickEvent(const ZenEvent &event);
36
37 bool onEvent(const ZenEvent &event) override;
38 int getPriority() const override;
39
40 void *nativeWindow() const override;
41 GraphicsContext &context() override;
42 const GraphicsContext &context() const override;
43
44 private:
45 virtual void init(const WindowProperties &properties);
46 virtual void shutdown();
47
48 // TEMP
49 WindowData m_windowData;
50
51 WindowProperties m_windowProperties;
52 };
53}; // namespace Zen