class EE::Window::Window¶
Overview¶
#include <window.hpp> class Window { public: // typedefs typedef std::function<void(Window*)> WindowResizeCallback; typedef std::function<bool(Window*)> WindowRequestCloseCallback; typedef std::function<void(Window*)> WindowQuitCallback; // enums enum MessageBoxType; // classes class FrameData; // construction Window(WindowSettings Settings, ContextSettings Context, Clipboard* Clipboard, Input* Input, CursorManager* CursorManager); virtual ~Window(); // methods virtual bool create(WindowSettings Settings, ContextSettings Context) = 0; virtual void makeCurrent() = 0; virtual Uint32 getWindowID() = 0; virtual void toggleFullscreen() = 0; virtual void setTitle(const std::string& title) = 0; virtual std::string getTitle(); virtual bool setIcon(const std::string& path) = 0; virtual void minimize(); virtual void maximize(); virtual bool isMaximized(); virtual bool isMinimized(); virtual void hide(); virtual void raise(); virtual void restore(); virtual void flash(WindowFlashOperation op); virtual void show(); virtual void setPosition(int Left, int Top); virtual Vector2i getPosition(); virtual void setDefaultContext(); virtual bool isActive() = 0; virtual bool isVisible() = 0; virtual bool hasFocus() = 0; virtual bool hasInputFocus() = 0; virtual bool hasMouseFocus() = 0; virtual void setSize(Uint32 Width, Uint32 Height); virtual void setSize(Uint32 Width, Uint32 Height, bool isWindowed) = 0; virtual Sizei getSize(); Vector2f getCenter(); virtual std::vector<DisplayMode> getDisplayModes() const = 0; virtual void setGamma(Float Red, Float Green, Float Blue) = 0; virtual void setCurrentContext(eeWindowContex Context); virtual eeWindowContex getContext() const; virtual eeWindowHandle getWindowHandler() = 0; virtual void clear(); virtual void display(bool clear = false); virtual const System::Time& getElapsed() const; virtual Uint32 getFPS() const; virtual bool isWindowed() const; virtual bool isResizeable() const; virtual const Uint32& getWidth() const; virtual const Uint32& getHeight() const; virtual const Sizei& getDesktopResolution(); virtual void centerToDisplay(); virtual Rect getBorderSize(); virtual Float getScale(); bool isRunning() const; bool isOpen() const; virtual void close(); void setView(const View& view, bool forceRefresh = false); const View& getView() const; const View& getDefaultView() const; void setup2D(const bool& KeepView = true); void set2DProjection(const Uint32& Width, const Uint32& Height); void setProjection(const Transform& transform); void setViewport(const Int32& x, const Int32& y, const Uint32& Width, const Uint32& Height); Rect getViewport(const View& view); void setClearColor(const RGB& Color); RGB getClearColor() const; bool takeScreenshot(std::string filepath = "", const Image::SaveType& Format = Image::SaveType::SAVE_TYPE_PNG); const WindowInfo* getWindowInfo() const; void setFrameRateLimit(const Uint32& setFrameRateLimit); Uint32 getFrameRateLimit(); Clipboard* getClipboard() const; Input* getInput() const; CursorManager* getCursorManager() const; Uint32 pushResizeCallback(const WindowResizeCallback& cb); void popResizeCallback(const Uint32& CallbackId); virtual void startOnScreenKeyboard(); virtual void stopOnScreenKeyboard(); virtual bool isOnScreenKeyboardActive() const; virtual void startTextInput(); virtual bool isTextInputActive() const; virtual void stopTextInput(); virtual void setTextInputRect(const Rect& rect); virtual void clearComposition(); virtual bool hasScreenKeyboardSupport(); virtual bool isScreenKeyboardShown(); virtual bool isThreadedGLContext(); virtual void setGLContextThread(); virtual void unsetGLContextThread(); void runMainLoop(std::function<void()> func, int fps = -1); virtual int getCurrentDisplayIndex(); Vector2f mapPixelToCoords(const Vector2i& point); Vector2f mapPixelToCoords(const Vector2i& point, const View& view); Vector2i mapCoordsToPixel(const Vector2f& point); Vector2i mapCoordsToPixel(const Vector2f& point, const View& view); void setCloseRequestCallback(const WindowRequestCloseCallback& closeRequestCallback); void setQuitCallback(const WindowQuitCallback& quitCallback); const System::Time& getSleepTimePerSecond() const; const System::Time& getRenderTimePerSecond() const; const Sizei& getLastWindowedSize() const; virtual bool hasNativeMessageBox() const; virtual bool showMessageBox(const MessageBoxType& type, const std::string& title, const std::string& message); InputMethod& getIME(); const std::function<void()>& getMainLoop(); };
Detailed Documentation¶
Methods¶
virtual bool create(WindowSettings Settings, ContextSettings Context) = 0
Creates a new window and GL context
virtual void makeCurrent() = 0
Bind the OpenGL context to the current window
virtual void toggleFullscreen() = 0
Toogle the screen to Fullscreen, if it’s in fullscreen toogle to windowed mode.
virtual void setTitle(const std::string& title) = 0
Set the window title
virtual std::string getTitle()
Returns:
The window title
virtual bool setIcon(const std::string& path) = 0
Set the Window icon
virtual void minimize()
This will attempt to iconify/minimize the window.
virtual void maximize()
Maximize the Window
virtual bool isMaximized()
Returns:
true if the window is maximized
virtual bool isMinimized()
Returns:
true if the window is minimized
virtual void hide()
This will attempt to hide the window
virtual void raise()
This will attempt to raise the window
virtual void restore()
This will attempt to restore the window
virtual void flash(WindowFlashOperation op)
Request a window to demand attention from the user.
virtual void show()
This will attempt to show the window
virtual void setPosition(int Left, int Top)
This will attemp to move the window over the desktop to the position
virtual Vector2i getPosition()
Returns:
The Current Window Position
virtual void setDefaultContext()
Set as current context the default context ( the context used for the window creation )
virtual bool isActive() = 0
Returns:
If the current window is active. This means that the window hasInputFocus() and hasMouseFocus().
virtual bool isVisible() = 0
Returns:
If the current window is visible
virtual bool hasFocus() = 0
Returns:
If the current window has focus (same as hasInputFocus() or(||) hasMouseFocus())
virtual bool hasInputFocus() = 0
Returns:
If the current window has input focus
virtual bool hasMouseFocus() = 0
Returns:
If the current window has input focus
virtual void setSize(Uint32 Width, Uint32 Height)
Set the size of the window for a windowed window
virtual void setSize(Uint32 Width, Uint32 Height, bool isWindowed) = 0
Change the window size or the screen resolution
Parameters:
Width |
New screen width |
Height |
New screen height |
isWindowed |
Windowed or Fullscreen |
virtual Sizei getSize()
Returns:
The window size
Vector2f getCenter()
Returns:
The window center point
virtual std::vector<DisplayMode> getDisplayModes() const = 0
Returns:
The resolutions that support the video card
virtual void setGamma(Float Red, Float Green, Float Blue) = 0
Set the Screen Gamma. Default is (1,1,1). Accept values between 0.1 and 10.
virtual void setCurrentContext(eeWindowContex Context)
The the OpenGL context as the current context
virtual eeWindowContex getContext() const
Returns:
The current OpenGL context
virtual eeWindowHandle getWindowHandler() = 0
Returns:
The window handler
virtual void clear()
Clear the window back buffer This function is usually called once every frame, to clear the previous frame content.
virtual void display(bool clear = false)
Render the Scene to Screen
Parameters:
clear |
Clear after swapping buffers? It will not work if the target platform is Emscripten. Since there’s no swap buffers. |
virtual const System::Time& getElapsed() const
Returns:
The elapsed time for the last frame rendered
virtual Uint32 getFPS() const
Returns:
The current frames per second of the screen
virtual bool isWindowed() const
Returns:
If the screen is windowed
virtual bool isResizeable() const
Returns:
If the main window is resizeable
virtual const Uint32& getWidth() const
Returns:
The Window Width
virtual const Uint32& getHeight() const
Returns:
The Window Height
virtual const Sizei& getDesktopResolution()
Returns:
The current desktop resolution
virtual void centerToDisplay()
Center the window to the desktop ( if windowed )
virtual Rect getBorderSize()
Returns:
The window borders size
virtual Float getScale()
Returns:
The size of the pixel in screen coordinates. This is the device scale factor.
bool isRunning() const
Returns:
If the aplication is running returns true ( If you Init correctly the window and is running ).
bool isOpen() const
Returns:
If the window was created
virtual void close()
Close the window if is running
void setView(const View& view, bool forceRefresh = false)
Set the current active view
Parameters:
view |
New view to use (pass GetDefaultView() to set the default view) |
forceRefresh |
Forces the view refresh even if is the same as the last one. |
const View& getView() const
Get the current view
const View& getDefaultView() const
Get the default view of the window
void setup2D(const bool& KeepView = true)
This will set the default rendering states and view to render in 2D mode
void set2DProjection(const Uint32& Width, const Uint32& Height)
Set a new 2D projection matrix
void setProjection(const Transform& transform)
Set a new projection matrix
void setViewport(const Int32& x, const Int32& y, const Uint32& Width, const Uint32& Height)
Set the current Viewport ( and creates a new ortho proyection if needed )
Rect getViewport(const View& view)
Returns:
The viewport in pixels of the view
void setClearColor(const RGB& Color)
Set the window background color
RGB getClearColor() const
Returns:
The background clear color
bool takeScreenshot(std::string filepath = "", const Image::SaveType& Format = Image::SaveType::SAVE_TYPE_PNG)
Captures the window front buffer and saves it to disk.
You have to call it before Display, and after render all the objects.
If the file path is empty will save the files like 0001.bmp, and will check if the file exists, otherwise will create 0002.bmp, and so on…
You can set only the path to save the files, like “screenshots/”
Returns:
False if failed, otherwise returns True
const WindowInfo* getWindowInfo() const
Returns:
The pointer to the Window Info ( read only )
void setFrameRateLimit(const Uint32& setFrameRateLimit)
Set a frame per second limit. It’s not 100 % accurate.
Uint32 getFrameRateLimit()
Get a frame per second limit.
Clipboard* getClipboard() const
Returns:
The clipboard manager
Input* getInput() const
Returns:
The input manager
CursorManager* getCursorManager() const
Returns:
The cursor manager
Uint32 pushResizeCallback(const WindowResizeCallback& cb)
Push a new window resize callback.
Returns:
The Callback Id
void popResizeCallback(const Uint32& CallbackId)
Pop the callback id indicated.
virtual void startOnScreenKeyboard()
Show the on-screen keyboard if supported.
virtual void stopOnScreenKeyboard()
Hide the on-screen keyboard if supported.
virtual bool isOnScreenKeyboardActive() const
Returns:
True if on-screen keyboard is active.
virtual void startTextInput()
Start accepting Unicode text input events.
See also:
virtual bool isTextInputActive() const
Return whether or not Unicode text input events are enabled.
See also:
virtual void stopTextInput()
Stop receiving any text input events.
See also:
virtual void setTextInputRect(const Rect& rect)
Set the rectangle used to type Unicode text inputs. This is used as a hint for IME and on-screen keyboard placement.
See also:
virtual void clearComposition()
Dismiss the composition window/IME without disabling the subsystem.
See also:
virtual bool hasScreenKeyboardSupport()
Returns whether the platform has some screen keyboard support.
Note
Not all screen keyboard functions are supported on all platforms.
Returns:
true if some keyboard support is available else false.
See also:
virtual bool isScreenKeyboardShown()
Returns whether the screen keyboard is shown for given window.
Returns:
true if screen keyboard is shown else false.
See also:
virtual bool isThreadedGLContext()
Returns:
True if the current window support a threaded GL Context. This means that supports OpenGL Shared Contexts ( multithreaded opengl contexts ). * Only supported with SDL2 backend.
virtual void setGLContextThread()
Activates the shared GL context in the current thread.
virtual void unsetGLContextThread()
Deactviates the shared GL context in the current thread.
void runMainLoop(std::function<void()> func, int fps = -1)
Runs the main loop function passed as parameter
Parameters:
func |
The main loop function |
fps |
The desired FPS ( 0 = infinite, < 0 keep current setting ) |
virtual int getCurrentDisplayIndex()
Returns:
The current display index.
const System::Time& getSleepTimePerSecond() const
In case of a frame rate limit is set, this will return the time spent sleeping per second.
const System::Time& getRenderTimePerSecond() const
In case of a frame rate limit is set, this will return the time spent doing work/rendering per second.
const Sizei& getLastWindowedSize() const
Returns:
The last windowed size of the window
virtual bool hasNativeMessageBox() const
Returns:
True if implements native message boxes
virtual bool showMessageBox(const MessageBoxType& type, const std::string& title, const std::string& message)
Shows a native message box.
Returns:
True if message box was shown