Graphics v0.0.0
A simple abstraction layer for the modern graphics APIs.
载入中...
搜索中...
未找到
Window.h
1// Copyright 2022 ShenMian
2// License(Apache-2.0)
3
4#pragma once
5
6#include "Key.h"
7#include <filesystem>
8#include <functional>
9#include <math/math.hpp>
10#include <string>
11
12struct GLFWwindow;
13
14class Image;
15
23class Window
24{
25public:
33 Window(std::string_view title, const Vector2i& size);
34
38 virtual ~Window();
39
45 void update();
46
52 void set_title(std::string_view title);
53
59 void set_size(const Vector2i& size);
60
64 Vector2i get_size() const;
65
71 void set_position(const Vector2i& pos);
72
78 Vector2i get_position() const;
79
85 void set_visible(bool visible);
86
92 bool is_visible() const noexcept;
93
99 void set_fullscreen(bool fullscreen);
100
104 bool is_fullscreen() const noexcept;
105
111 void set_vsync(bool enable) noexcept;
112
118 void set_resizable(bool enable);
119
123 bool is_resizable() const noexcept;
124
130 void set_floating(bool enable);
131
135 bool is_floating() const noexcept;
136
142 void set_icon(const Image& image);
143
147 void request_focus();
148
156 void set_cursor_lock(bool enable);
157
161 bool is_cursor_lock() const;
162
168 void set_cursor_position(const Vector2i& pos);
169
173 Vector2d get_cursor_position() const;
174
184 void set_raw_mouse_motion(bool enable);
185
189 GLFWwindow* get_handle() const;
190
191 std::function<void(Vector2i)> onResize;
192 std::function<void(bool)> onFocus;
193 std::function<void()> onClose;
194 std::function<void(int, Key)> onKey;
195 std::function<void(Vector2d)> onScroll;
196 std::function<void(Vector2d)> onMouseMove;
197 std::function<void(bool)> onMouseEnter;
198 std::function<void(int, Mouse)> onMouse;
199 std::function<void(int, const char* paths[])> onDrop;
200
201 static void init();
202 static void deinit();
203
204private:
205 void setup_callbacks();
206
207 GLFWwindow* handle_;
208
209 Vector2i size_;
210 Vector2i position_;
211};
212
图像.
Definition: Image.h:19
窗体.
Definition: Window.h:24
std::function< void()> onClose
窗口关闭按钮按下回调
Definition: Window.h:193
void set_raw_mouse_motion(bool enable)
设置是否启用原始鼠标运动.
Definition: Window.cpp:171
std::function< void(bool)> onMouseEnter
鼠标进入窗口回调
Definition: Window.h:197
void set_resizable(bool enable)
设置大小是否可调.
Definition: Window.cpp:112
virtual ~Window()
析构函数.
Definition: Window.cpp:28
Vector2i get_position() const
获取窗口坐标.
Definition: Window.cpp:62
bool is_visible() const noexcept
获取窗口可见性.
Definition: Window.cpp:77
void set_floating(bool enable)
设置窗口是否置顶.
Definition: Window.cpp:122
Vector2d get_cursor_position() const
获取光标在窗口中的坐标.
Definition: Window.cpp:164
std::function< void(Vector2i)> onResize
窗口大小变化时回调
Definition: Window.h:191
void update()
更新.
Definition: Window.cpp:33
void request_focus()
请求聚焦.
Definition: Window.cpp:144
void set_size(const Vector2i &size)
设置窗口大小.
Definition: Window.cpp:45
void set_cursor_position(const Vector2i &pos)
设置光标在窗口中的坐标.
Definition: Window.cpp:159
std::function< void(int, Key)> onKey
键盘按键回调
Definition: Window.h:194
bool is_floating() const noexcept
是否已置顶.
Definition: Window.cpp:127
void set_visible(bool visible)
设置窗口可见性.
Definition: Window.cpp:69
void set_vsync(bool enable) noexcept
设置是否开启垂直同步.
Definition: Window.cpp:103
std::function< void(int, const char *paths[])> onDrop
路径拽入窗口回调
Definition: Window.h:199
std::function< void(int, Mouse)> onMouse
鼠标按键回调
Definition: Window.h:198
void set_fullscreen(bool fullscreen)
设置窗口是否全屏.
Definition: Window.cpp:82
void set_title(std::string_view title)
设置窗口标题.
Definition: Window.cpp:40
void set_position(const Vector2i &pos)
设置窗口坐标.
Definition: Window.cpp:57
bool is_resizable() const noexcept
是否可调窗口大小.
Definition: Window.cpp:117
bool is_fullscreen() const noexcept
是否处于全屏模式.
Definition: Window.cpp:98
void set_icon(const Image &image)
设置窗口图标.
Definition: Window.cpp:132
std::function< void(Vector2d)> onScroll
鼠标滚轮滚动回调
Definition: Window.h:195
bool is_cursor_lock() const
是否开启光标锁定.
Definition: Window.cpp:154
Vector2i get_size() const
获取窗口大小.
Definition: Window.cpp:50
std::function< void(Vector2d)> onMouseMove
鼠标移动回调
Definition: Window.h:196
std::function< void(bool)> onFocus
窗口获取/失去焦点回调
Definition: Window.h:192
void set_cursor_lock(bool enable)
设置是否开启光标锁定.
Definition: Window.cpp:149
GLFWwindow * get_handle() const
获取本地句柄.
Definition: Window.cpp:177
Mouse
鼠标按键.
Definition: Key.h:151
Key
键盘按键.
Definition: Key.h:14