VulkanEngine 0.1
Graphics engine using Vulkan
Loading...
Searching...
No Matches
Window.h
1// Copyright (c) 2024 Michael Carlie. All Rights Reserved.
2//
3// This software is released under the MIT License.
4// https://opensource.org/licenses/MIT
5
6#ifndef INCLUDE_VULKANENGINE_WINDOW_H_
7#define INCLUDE_VULKANENGINE_WINDOW_H_
8
9#include <VulkanEngine/KeyboardInput.h>
10#include <VulkanEngine/MouseInput.h>
11
12#include <memory>
13#include <string>
14#include <vector>
15#include <vulkan/vulkan.hpp>
16
17namespace VulkanEngine {
18
20class Window {
21 public:
27 Window(uint32_t _width, uint32_t _height, const std::string& _title,
28 bool _full_screen);
29
31 ~Window();
32
35 virtual bool initialize(bool invisible = false) = 0;
36
39 virtual const std::vector<const char*> getRequiredVulkanInstanceExtensions()
40 const = 0;
41
45 virtual vk::SurfaceKHR getVkSurface() = 0;
46
48 virtual std::shared_ptr<MouseInput> getMouseInput() const;
49
51 virtual std::shared_ptr<KeyboardInput> getKeyboardInput() const;
52
54 virtual void update() = 0;
55
57 virtual bool shouldClose() = 0;
58
61 virtual void setWidth(uint32_t _width);
62
65 virtual void setHeight(uint32_t _height);
66
69 virtual void setTitle(const std::string& new_title);
70
72 uint32_t getWidth() const;
73
75 uint32_t getHeight() const;
76
78 uint32_t getFramebufferWidth() const;
79
81 uint32_t getFramebufferHeight() const;
82
84 const std::string& getTitle() const;
85
87 bool isFullScreen() const;
88
90 bool sizeHasChanged() const;
91
92 protected:
96 void mousePositionCallback(double xpos, double ypos);
97
101 void mouseScrollCallback(double xoffset, double yoffset);
102
104 void mouseButtonPressedCallback(bool left_pressed, bool right_pressed,
105 bool middle_pressed);
106
107 void keyboardButtonPressedCallback(int scancode,
108 const KeyboardInput::KeyInfo& key_info);
109
111 uint32_t width;
112
114 uint32_t height;
115
118
121
123 std::string title;
124
127
131
133 std::shared_ptr<MouseInput> mouse_input;
134
136 std::shared_ptr<KeyboardInput> keyboard_input;
137};
138
139} // namespace VulkanEngine
140
141#endif // INCLUDE_VULKANENGINE_WINDOW_H_
Provides an abstract interface for window implementations.
Definition: Window.h:20
virtual std::shared_ptr< KeyboardInput > getKeyboardInput() const
Get keyboard input instance for this window.
Definition: Window.cpp:45
std::shared_ptr< MouseInput > mouse_input
The MouseInput instance connected to this Window.
Definition: Window.h:133
virtual std::shared_ptr< MouseInput > getMouseInput() const
Get a MouseInfo instance which retrieves values from this Window instance.
Definition: Window.cpp:39
uint32_t framebuffer_height
The height of the window's framebuffer.
Definition: Window.h:120
virtual void update()=0
Do anything needed to update the window.
virtual const std::vector< const char * > getRequiredVulkanInstanceExtensions() const =0
bool isFullScreen() const
Definition: Window.cpp:71
std::string title
The title of the window.
Definition: Window.h:123
virtual vk::SurfaceKHR getVkSurface()=0
virtual void setWidth(uint32_t _width)
Definition: Window.cpp:49
~Window()
Desctructor.
Definition: Window.cpp:37
uint32_t getHeight() const
Definition: Window.cpp:59
uint32_t getFramebufferWidth() const
Definition: Window.cpp:61
uint32_t width
The current width of the window.
Definition: Window.h:111
void mouseButtonPressedCallback(bool left_pressed, bool right_pressed, bool middle_pressed)
Callback which gets the current status of mouse buttons.
Definition: Window.cpp:87
virtual bool shouldClose()=0
const std::string & getTitle() const
Definition: Window.cpp:69
uint32_t getWidth() const
Definition: Window.cpp:57
std::shared_ptr< KeyboardInput > keyboard_input
The KeyboardInput instance connect to this Window.
Definition: Window.h:136
virtual void setTitle(const std::string &new_title)
Definition: Window.cpp:53
bool full_screen
Whether or not the window is set to full screen.
Definition: Window.h:126
uint32_t framebuffer_width
The width of the window's framebuffer.
Definition: Window.h:117
bool sizeHasChanged() const
Definition: Window.cpp:73
virtual void setHeight(uint32_t _height)
Definition: Window.cpp:51
uint32_t height
The current height of the window.
Definition: Window.h:114
bool size_changed
Definition: Window.h:130
uint32_t getFramebufferHeight() const
Definition: Window.cpp:65
void mousePositionCallback(double xpos, double ypos)
Definition: Window.cpp:75
void mouseScrollCallback(double xoffset, double yoffset)
Definition: Window.cpp:81
virtual bool initialize(bool invisible=false)=0
TODO development of this class is in progress.
Definition: Attribute.h:13
Contains information about a particular key.
Definition: KeyboardInput.h:22