载入中...
搜索中...
未找到
Window.h
浏览该文件的文档.
1#pragma once
2
3#include <cstdint>
4#include <string>
5#include <vector>
6
7#include "common/Module.h"
8
9namespace eve {
10
11namespace window {
12
18 float refreshrate = 0.0;
19 float dpi_scale = 1.0;
20 int32_t x = 0;
21 int32_t y = 0;
22 uint16_t width = 1366;
23 uint16_t height = 768;
24 uint16_t minwidth = 1;
25 uint16_t minheight = 1;
26 uint8_t vsync = 1;
27 uint8_t msaa = 0;
28 uint8_t depth = 0;
29 uint8_t display = 0;
30 bool borderless = false;
31 bool centered = true;
32 bool high_dpi = true;
33 bool use_dpi_scale = true;
34 bool use_position = false;
35 bool fullscreen = false;
36 bool desktop_mode = true;
37 bool stencil = true;
38 bool resizable = false;
39 bool always_on_top = false;
40};
41
46class Window : public Module {
47public:
49
50 struct WindowSize {
51 int width = 0;
52 int height = 0;
53
54 bool operator==(const WindowSize& w) const { return w.width == width && w.height == height; }
55 };
56
58 std::string type = "info";
59 std::string title;
60 std::string message;
63 bool attachToWindow = false;
64 std::vector<std::string> buttons;
65 };
66
67 virtual ~Window() {}
68
70 virtual void setSize(int width, int height) = 0;
71 virtual int getWidth() const = 0;
72 virtual int getHeight() const = 0;
73
75 virtual bool setWindowSettings(WindowSettings settings) = 0;
77
79 virtual void close() = 0;
80
82 virtual bool setFullscreenDesktop(bool fullscreen) = 0;
84 virtual bool setFullscreenExclusive(bool fullscreen) = 0;
85
86 virtual bool isOpen() const = 0;
87
89 virtual void setWindowTitle(const std::string& title) = 0;
90 virtual const std::string& getWindowTitle() const = 0;
92 virtual void setPosition(int x, int y, int display) = 0;
94 virtual void getPosition(int& x, int& y, int& display) = 0;
96 virtual void minimize() = 0;
97 virtual void maximize() = 0;
98 virtual void restore() = 0;
99 virtual bool isMaximized() const = 0;
100 virtual bool isMinimized() const = 0;
102 virtual bool hasFocus() const = 0;
104 virtual bool hasMouseFocus() const = 0;
105 virtual bool isVisible() const = 0;
107 virtual void setVSync(int vsync) = 0;
108 virtual int getVSync() const = 0;
109
111 virtual int getPixelWidth() const = 0;
112 virtual int getPixelHeight() const = 0;
114 virtual double getDPIScale() const = 0;
116 virtual double getNativeDPIScale() const = 0;
118 virtual void windowToPixelCoords(double* x, double* y) const = 0;
120 virtual void pixelToWindowCoords(double* x, double* y) const = 0;
122 virtual void windowToDPICoords(double* x, double* y) const = 0;
124 virtual void DPIToWindowCoords(double* x, double* y) const = 0;
126 virtual double toPixels(double x) const = 0;
127 virtual double fromPixels(double x) const = 0;
129 virtual void toPixelsXY(double wx, double wy, double& px, double& py) const = 0;
130 virtual void fromPixelsXY(double px, double py, double& wx, double& wy) const = 0;
131
133 virtual void *getHandle() const = 0;
134
136 virtual int getDisplayCount() const = 0;
138 virtual std::string getDisplayName(int display) const = 0;
140 virtual std::string getDisplayOrientation(int display) const = 0;
142 virtual std::vector<WindowSize> getFullscreenSizes(int display) const = 0;
144 virtual void getDesktopDimensions(int display, int& width, int& height) const = 0;
145
147 virtual bool showMessageBox(const std::string& title, const std::string& message,
148 const std::string& type, bool attachToWindow) = 0;
150 virtual int showMessageBoxData(const MessageBoxData& data) = 0;
152 virtual void requestAttention(bool continuous) = 0;
153
155 virtual bool setIconRGBA(const uint8_t* rgba, int width, int height) = 0;
156
157 // --- not yet implemented (kept as drafts) ---
158
159 // virtual bool onSizeChanged(int width, int height) = 0;
160
161 // virtual Rect getSafeArea() const = 0;
162
163 // virtual void setDisplaySleepEnabled(bool enable) = 0;
164 // virtual bool isDisplaySleepEnabled() const = 0;
165
166 // // default no-op implementation
167 // virtual void swapBuffers();
168
169 // virtual void setMouseGrab(bool grab) = 0;
170 // virtual bool isMouseGrabbed() const = 0;
171
172}; // Window
173
174} // namespace window
175} // namespace eve
std::string type
std::string title
int y
Definition Grass.cpp:135
float height
Definition Grass.cpp:235
int x
Definition Grass.cpp:135
int w
std::vector< Colorf > px
int width
Platform window interface (SDL implementation on desktop/mobile). Script: win <- eve....
Definition Window.h:46
virtual void setVSync(int vsync)=0
Enables/disables vertical sync (0 = off, 1 = on).
virtual int getDisplayCount() const =0
Number of displays attached to the system.
virtual int showMessageBoxData(const MessageBoxData &data)=0
Shows a configurable message box; returns the pressed button index.
virtual bool setFullscreenDesktop(bool fullscreen)=0
Switches between desktop fullscreen and windowed mode.
virtual void maximize()=0
virtual double getNativeDPIScale() const =0
Native DPI scale reported by the OS for this window.
virtual bool hasFocus() const =0
True when the window has keyboard focus.
virtual bool isMinimized() const =0
virtual ~Window()
Definition Window.h:67
virtual void restore()=0
virtual void toPixelsXY(double wx, double wy, double &px, double &py) const =0
Vector variants of the coordinate conversions above.
virtual std::string getDisplayName(int display) const =0
Human-readable display name for a display index.
virtual bool showMessageBox(const std::string &title, const std::string &message, const std::string &type, bool attachToWindow)=0
Shows a modal message box ("info", "warning", or "error").
virtual bool isVisible() const =0
virtual std::vector< WindowSize > getFullscreenSizes(int display) const =0
Fullscreen sizes supported by a display.
virtual bool setFullscreenExclusive(bool fullscreen)=0
Switches between exclusive fullscreen and windowed mode.
virtual void setWindowTitle(const std::string &title)=0
Sets the window title shown in the OS title bar.
virtual void windowToDPICoords(double *x, double *y) const =0
Converts window logical coordinates to UI-DPI coordinates.
virtual const std::string & getWindowTitle() const =0
virtual bool setIconRGBA(const uint8_t *rgba, int width, int height)=0
Sets the window icon from tightly packed RGBA8 pixels (w*h*4 bytes).
virtual bool isOpen() const =0
virtual bool hasMouseFocus() const =0
True when the window has mouse focus.
virtual void getDesktopDimensions(int display, int &width, int &height) const =0
Desktop resolution of a display.
virtual int getWidth() const =0
virtual void minimize()=0
Minimizes / maximizes / restores the window.
virtual double getDPIScale() const =0
Current UI/logical DPI scale (1.0 on non-retina displays).
virtual void windowToPixelCoords(double *x, double *y) const =0
Converts window logical coordinates to framebuffer pixel coordinates.
virtual bool setWindowSettings(WindowSettings settings)=0
Applies a full WindowSettings struct (recreates the window when needed).
virtual void requestAttention(bool continuous)=0
Requests OS attention (flashing taskbar); continuous repeats until focused.
virtual double toPixels(double x) const =0
Scales a logical length to UI pixels (and back).
virtual void DPIToWindowCoords(double *x, double *y) const =0
Converts UI-DPI coordinates to window logical coordinates.
virtual std::string getDisplayOrientation(int display) const =0
Display orientation string (e.g. "landscape").
virtual bool isMaximized() const =0
virtual void close()=0
Closes and destroys the underlying window.
virtual void pixelToWindowCoords(double *x, double *y) const =0
Converts framebuffer pixel coordinates to window logical coordinates.
virtual double fromPixels(double x) const =0
virtual void getPosition(int &x, int &y, int &display)=0
Reads the current window position and display index.
virtual WindowSettings getWindowSettings()=0
virtual void setPosition(int x, int y, int display)=0
Moves the window to a position in logical units on the given display.
virtual int getHeight() const =0
virtual int getPixelWidth() const =0
Framebuffer (pixel) dimensions of the window.
virtual void * getHandle() const =0
Native window handle (SDL_Window* on SDL backend).
virtual void setSize(int width, int height)=0
Requests a new logical window size.
virtual void fromPixelsXY(double px, double py, double &wx, double &wy) const =0
virtual int getVSync() const =0
virtual int getPixelHeight() const =0
WidgetDesc window(std::string title, std::vector< WidgetDesc > children, std::string id)
Top-level window widget with a title bar.
Definition Widget.cpp:225
Definition Build.cpp:11
Display settings for window creation/resize. width/height == 0 selects the desktop display mode size.
Definition Window.h:17
std::vector< std::string > buttons
Definition Window.h:64
bool operator==(const WindowSize &w) const
Definition Window.h:54