Gorgon Game Engine
Window Class Reference

UI window allows programmers to create an OS window that will accept widgets and has the ability to run by its own. More...

Inheritance diagram for Window:
[legend]

Public Member Functions

 Window ()
 
 Window (Window &&other)
 
 ~Window ()
 
bool Add (Widget &widget)
 Adds the given widget to this container. More...
 
bool EnsureVisible (const UI::Widget &) override
 Window does not do any scrolling, thus cannot ensure visibility. More...
 
virtual Geometry::Size GetInteriorSize () const override
 Should return the interior (usable) size of the container. More...
 
virtual bool IsVisible () const override
 Returns whether this layer is effectively visible. More...
 
Windowoperator= (Window &&other)
 
virtual void Quit () override
 Closes the window, returning the execution to the point where Run function is called. More...
 
virtual ExtenderRequestResponse RequestExtender (const Gorgon::Layer &self) override
 This function will return a container that will act as an extender. More...
 
virtual void Run () override
 Takes the control of the execution until Quit is called. More...
 
virtual void Step () override
 Runs a single frame. More...
 
- Public Member Functions inherited from Window
 Window ()
 Empty constructor creates a non-initialized window. More...
 
 Window (const FullscreenTag &, const WindowManager::Monitor &monitor, const std::string &name, const std::string &title="")
 Creates a fullscreen window. More...
 
 Window (const FullscreenTag &tag, const std::string &name, const std::string &title="")
 Creates a fullscreen window. More...
 
 Window (const Geometry::Size &size, const char *name, bool allowresize=false, bool visible=true)
 Creates a new window at the center of the screen. More...
 
 Window (const Geometry::Size &size, const char *name, const char *title, bool allowresize=false, bool visible=true)
 Creates a new window at the center of the screen. More...
 
 Window (const Geometry::Size &size, const std::string &name, bool allowresize=false, bool visible=true)
 Creates a new window at the center of the screen. More...
 
 Window (const Geometry::Size &size, const std::string &name, const std::string &title, bool allowresize=false, bool visible=true)
 Creates a new window at the center of the screen. More...
 
 Window (const Window &)=delete
 Copy constructor is not allowed. More...
 
 Window (const WindowManager::Monitor &monitor, const Geometry::Size &size, const char *name, bool allowresize=false, bool visible=true)
 Creates a new window at the center of the screen. More...
 
 Window (const WindowManager::Monitor &monitor, const Geometry::Size &size, const std::string &name, bool allowresize=false, bool visible=true)
 Creates a new window at the center of the screen. More...
 
 Window (Geometry::Rectangle rect, const char *name, bool allowresize=false, bool visible=true)
 Creates a new window. More...
 
 Window (Geometry::Rectangle rect, const std::string &name, bool allowresize=false, bool visible=true)
 Creates a new window. More...
 
 Window (Window &&other)
 Move constructor. More...
 
 ~Window ()
 Destroys this window. More...
 
void activatecontext ()
 Activates the GL context of the window. More...
 
void AllowResize ()
 Allows window to be resized by the user. More...
 
void Center ()
 Centers the window to the default monitor. More...
 
void Center (const WindowManager::Monitor &monitor)
 Centers the window to the given monitor. More...
 
void Close ()
 Closes the window. After this function, any use of this object might fail. More...
 
void Destroy ()
 Destroys this window. More...
 
void Focus ()
 Focuses this window. More...
 
Geometry::Bounds GetExteriorBounds () const
 Returns the exterior bounding box of the window. More...
 
const WindowManager::MonitorGetMonitor () const
 Returns the monitor that the window is currently on. More...
 
Geometry::Point GetMouseLocation () const
 Returns the mouse location on the window. More...
 
std::string GetName () const
 Returns the name of the window that is set at creation time. More...
 
Geometry::Point GetPosition () const
 Returns the current position of the window. More...
 
std::string GetTitle () const
 Returns the current title of the window. More...
 
virtual void Hide () override
 Hides this window, may generate Deactivated event. More...
 
void HidePointer ()
 Hides the pointer. More...
 
bool IsClosed () const
 Whether the window is currently closed and cannot be acted on. More...
 
bool IsFocused () const
 Returns if this window has the focus. More...
 
bool IsLeftButtonPressed () const
 Query whether the left mouse button is pressed. More...
 
bool IsLocalPointer () const
 Returns whether the current pointer is a local pointer. More...
 
bool IsMaximized () const
 Returns if the window is maximized. More...
 
bool IsMiddleButtonPressed () const
 Query whether the middle mouse button is pressed. More...
 
bool IsMinimized () const
 Returns if the window is minimized. More...
 
bool IsPointerVisible () const
 Returns whether the pointer is visible. More...
 
bool IsRightButtonPressed () const
 Query whether the right mouse button is pressed. More...
 
bool IsX1ButtonPressed () const
 Query whether the X1 mouse button is pressed. More...
 
bool IsX2ButtonPressed () const
 Query whether the X2 mouse button is pressed. More...
 
void Maximize ()
 Maximizes the window to cover the usable area of the screen. More...
 
void Minimize ()
 Minimizes the window. More...
 
void mouse_down (Geometry::Point location, Input::Mouse::Button button)
 These functions are used internally. More...
 
void mouse_event (Input::Mouse::EventType event, Geometry::Point location, Input::Mouse::Button button, float amount)
 These functions are used internally. More...
 
void mouse_location ()
 These functions are used internally. More...
 
void mouse_up (Geometry::Point location, Input::Mouse::Button button)
 These functions are used internally. More...
 
virtual void Move (const Geometry::Point &position) override
 Moves the window to the given position. More...
 
virtual void Move (int x, int y) override
 Moves the window to the given position. More...
 
Windowoperator= (Window &&other)
 Moves another window into this one. More...
 
Input::Mouse::Button PressedButtons () const
 Returns currently pressed buttons. More...
 
void PreventResize ()
 Prevents window to be resized by the user. More...
 
void processmessages ()
 This method is automatically called by the system.Unless its necessary, do not use it. More...
 
virtual void Render () override
 Renders the contents of the window. More...
 
virtual void Resize (const Geometry::Size &size) override
 Resizes the window to the given size. More...
 
virtual void Resize (int width, int height) override
 Resizes the window to the given size. More...
 
void Restore ()
 Restores a minimized or maximized window. More...
 
void SetIcon (const WindowManager::Icon &icon)
 Changes the icon of the window. More...
 
void SetTitle (const std::string &title)
 Changes the title of the window to the specified string. More...
 
virtual void Show () override
 Displays this window, may generate Activated event. More...
 
void ShowPointer ()
 Displays the pointer. More...
 
void Swap (Window &other)
 Used for move semantics. More...
 
void SwitchToLocalPointers ()
 Removes the operating system pointer and starts using Locally defined pointers. More...
 
void SwitchToWMPointers ()
 Stops showing local pointers and makes window manager pointer visible. More...
 
- Public Member Functions inherited from Layer
 Layer ()
 Constructor that sets the layer to cover entire parent, no matter how big it is. More...
 
 Layer (const Geometry::Bounds &bounds)
 Initializing constructor. More...
 
 Layer (const Geometry::Point &location)
 Constructor that places the layer to the given location. More...
 
 Layer (const Layer &)=delete
 Copy constructor is disabled. More...
 
 Layer (Layer &&other)
 Move constructor. More...
 
virtual ~Layer ()
 Destructor. More...
 
Layeroperator= (const Layer &)=delete
 Copy assignment is deleted. More...
 
Layeroperator= (Layer &&other)
 Move assignment. More...
 
virtual bool propagate_mouseevent (Input::Mouse::EventType evet, Geometry::Point location, Input::Mouse::Button button, float amount, MouseHandler &handlers)
 Propagates a mouse event. More...
 
void Swap (Layer &other)
 Swaps two layers, mostly used for move semantics. More...
 
void Add (Layer &layer)
 Adds the given layer as a child. More...
 
void Add (Layer *layer)
 Adds the given layer as a child. More...
 
void setname (std::string value)
 For debugging. More...
 
void Insert (Layer &layer, long under)
 Inserts the given layer before the given index. More...
 
void Insert (Layer *layer, long under)
 Inserts the given layer before the given index. More...
 
void Remove (Layer &layer)
 Removes the given layer. More...
 
void Remove (Layer *layer)
 Removes the given layer. More...
 
bool HasParent () const
 Returns whether this layer has a parent. More...
 
virtual LayerGetParent () const
 Returns the parent of this layer. More...
 
LayerGetTopLevel () const
 Returns the top level layer that contains this layer. More...
 
virtual Geometry::Point TranslateToTopLevel (Geometry::Point location={0, 0}) const
 Translates the given location to the top level. More...
 
LayerGetTopLevel ()
 
Containers::Collection< Layer >::ConstIterator begin () const
 An iterator pointing to the start of the children. More...
 
Containers::Collection< Layer >::ConstIterator end () const
 An iterator pointing to the end of the children. More...
 
Containers::Collection< Layer >::ConstIterator First () const
 An iterator pointing to the start of the children. More...
 
Containers::Collection< Layer >::ConstIterator Last () const
 An iterator pointing to the last item of the children. More...
 
void PlaceBefore (int before)
 Places this layer before the given index. More...
 
void PlaceToTop ()
 Places this layer to the top of the layer stack its in. More...
 
void PlaceToBottom ()
 Places this layer to the bottom of the layer stack. More...
 
int GetOrder () const
 Gets the current order of the stack. More...
 
void SetWidth (int width)
 Resizes the layer to the given size. More...
 
void SetHeight (int height)
 Resizes the layer to the given size. More...
 
void SetBounds (const Geometry::Bounds &bounds)
 Sets the boundaries of this layer. More...
 
Geometry::Size GetSize () const
 Returns the size of the layer. More...
 
Geometry::Size GetCalculatedSize () const
 Returns the size of the layer. More...
 
int GetWidth () const
 Returns the width of the layer. More...
 
int GetHeight () const
 Returns the height of the layer. More...
 
Geometry::Point GetLocation () const
 Returns the current location of the layer. More...
 
int GetLeft () const
 Returns the current location of the layer. More...
 
int GetTop () const
 Returns the current location of the layer. More...
 
Geometry::Bounds GetBounds () const
 Returns the boundaries of the layer. More...
 
Geometry::Bounds GetEffectiveBounds () const
 Returns the effective boundaries of the layer. More...
 
- Public Member Functions inherited from WidgetContainer
 WidgetContainer ()=default
 
 WidgetContainer (WidgetContainer &&)=default
 
virtual ~WidgetContainer ()
 Virtual destructor. More...
 
bool Add (Widget &widget)
 Adds the given widget to this container. More...
 
void AttachOrganizer (Organizers::Base &organizer)
 Attaches an organizer to this container. More...
 
auto begin ()
 Returns the begin iterator for the contained widgets. More...
 
auto begin () const
 Returns the begin iterator for the contained widgets. More...
 
void ChangeFocusOrder (Widget &widget, int order)
 Changes the focus order of the given widget. More...
 
void ChangeZorder (Widget &widget, int order)
 Changes the z-order of the widget. More...
 
virtual bool CharacterEvent (Char c)
 This function should be called whenever a character is received from operating system. More...
 
template<class O_ , class ... Args_>
O_ & CreateOrganizer (Args_ &&... args)
 Creates a new organizer that lives with this container. More...
 
FocusStrategy CurrentFocusStrategy () const
 Returns the active focus strategy. This function will not return Inherit. More...
 
void Disable ()
 Disables the container, disallowing interactions of all widgets in it. More...
 
void DisableTabSwitch ()
 Disable tab switching. More...
 
void Displaced ()
 Call this function if the container or widgets in it is moved without move function is called. More...
 
void Enable ()
 Enables the container, allowing interaction with the widgets in it. More...
 
void EnableTabSwitch ()
 Enable tab switching. More...
 
auto end ()
 Returns the end iterator for the contained widgets. More...
 
auto end () const
 Returns the end iterator for the contained widgets. More...
 
bool FocusFirst ()
 Focuses the first widget that accepts focus. More...
 
bool FocusLast ()
 Focuses the last widget in the container. More...
 
bool FocusNext ()
 Focuses the next widget that accepts focus. More...
 
bool FocusNext (const Widget &widget)
 Focuses the next widget that accepts focus starting from the given focus index. More...
 
bool FocusNext (int after)
 Focuses the next widget that accepts focus starting from the given focus index. More...
 
bool FocusPrevious ()
 Focuses the previous widget that accepts focus. More...
 
bool FocusPrevious (const Widget &widget)
 Focuses the previous widget that accepts focus. More...
 
bool FocusPrevious (int before)
 Focuses the previous widget that accepts focus. More...
 
void ForceRemove (Widget &widget)
 Forcefully removes the given widget from this container. More...
 
void ForceRemoveFocus ()
 Forcefully removes the focus from the focused widget. More...
 
virtual WidgetGetCancel () const
 Returns the cancel element of the container which is called when the use presses escape key. More...
 
int GetCount () const
 Returns the number of widgets in this container. More...
 
virtual WidgetGetDefault () const
 Returns the default element of the container. More...
 
WidgetGetFocus () const
 Returns the focused widget. More...
 
int GetFocusOrder (const Widget &widget) const
 
FocusStrategy GetFocusStrategy () const
 Returns the focus strategy set to this container. More...
 
Organizers::BaseGetOrganizer () const
 Returns the organizer controlling this container. More...
 
virtual bool HasCancel () const
 Returns if this container has a cancel widget. More...
 
virtual bool HasDefault () const
 Returns if this container has a default object. More...
 
bool HasFocusedWidget () const
 Returns if this container has a focused widget. More...
 
bool HasOrganizer () const
 Returns if this container has an organizer. More...
 
bool Insert (Widget &widget, int index)
 Add the given widget to this container. More...
 
virtual bool IsEnabled () const
 Returns whether container is enabled. More...
 
virtual bool IsTabSwitchEnabled () const
 Check if tab switch is enabled. More...
 
virtual bool KeyEvent (Input::Key key, float state)
 This function should be called whenever a key is pressed or released. More...
 
WidgetContaineroperator= (WidgetContainer &&)=default
 
Widgetoperator[] (int ind)
 Returns the widget at the given index. More...
 
const Widgetoperator[] (int ind) const
 Returns the widget at the given index. More...
 
bool Remove (Widget &widget)
 Removes the given widget from this container. More...
 
virtual void RemoveCancel ()
 Removes the cancel widget of this container. More...
 
virtual void RemoveDefault ()
 Removes the default widget of this container. More...
 
bool RemoveFocus ()
 Removes the focus from the focused widget. More...
 
void RemoveOrganizer ()
 Removes the organizer from this container. More...
 
virtual void SetCancel (Widget &widget)
 Sets the cancel widget of the container. More...
 
virtual void SetDefault (Widget &widget)
 Sets the default object of the container. More...
 
virtual void SetEnabled (bool value)
 Sets the enabled state of this container. More...
 
void SetFocusStrategy (FocusStrategy value)
 Sets the focus strategy, see FocusStrategy. More...
 
bool SetFocusTo (Widget &widget)
 Sets the focus to the given widget. More...
 
virtual void SetTabSwitchEnabledState (bool state)
 Sets the state of tab switching. More...
 
void ToggleEnabled ()
 Toggles the enabled state of this container. More...
 
void ToggleTabSwitchEnabledState ()
 Toggles the state of tab switching. More...
 

Protected Member Functions

void added (Layer &l) override
 Will be called when a layer is added. More...
 
decltype(CharacterEvent) ::Token charinit ()
 
virtual Gorgon::Layergetlayer () override
 Returns the layer that will be used to place the contained widgets. More...
 
decltype(KeyEvent) ::Token keyinit ()
 
Graphics::Layerlayerinit ()
 
virtual bool ResizeInterior (Geometry::Size size) override
 Should resize the interior (usable) size of the container. More...
 
- Protected Member Functions inherited from Window
 Window (const WindowManager::Monitor &monitor, Geometry::Rectangle rect, const std::string &name, const std::string &title, bool allowresize, bool visible)
 
void deleting (Layer *layer)
 
virtual void located (Layer *) override
 A window cannot be placed in another layer. This function always fails. More...
 
- Protected Member Functions inherited from Layer
void dotransformandclip (bool inverse=false)
 Performs transformation and clipping. Use inverse for reverse mapping for mouse events. More...
 
virtual void removed (Layer &layer)
 Will be called when a layer is removed. More...
 
void reverttransformandclip ()
 Reverts previously done transformation. More...
 
- Protected Member Functions inherited from WidgetContainer
virtual bool addingwidget (Widget &)
 This function can return false to prevent the given widget from getting added to the container. More...
 
virtual void childboundschanged (Widget *source)
 The boundary of any of the children is changed. Source could be nullptr. More...
 
bool distributecharevent (Char c)
 Distributes a pressed character to the focused widget. More...
 
bool distributekeyevent (Input::Key key, float state, bool handlestandard)
 Distributes the pressed key to the focused widget. More...
 
void distributeparentenabled (bool state)
 Distributes a enabled state to children. More...
 
virtual void focuschanged ()
 This function is called when the focus is changed. More...
 
virtual FocusStrategy getparentfocusstrategy () const
 If this widget is not top level, return the current strategy used by the parent. More...
 
bool handlestandardkey (Input::Key key)
 Performs the standard operations (tab/enter/escape) More...
 
virtual bool removingwidget (Widget &)
 This function is called before removing a widget. More...
 
virtual void widgetadded (Widget &)
 This function is called after a widget is added. More...
 
virtual void widgetremoved (Widget &)
 This function is called after a widget is removed. More...
 

Additional Inherited Members

- Public Types inherited from WidgetContainer
enum  FocusStrategy {
  Inherit, AllowAll, Selective, Strict,
  Deny
}
 Defines focus strategy for the container. Default is Inherit. More...
 
- Static Public Member Functions inherited from Window
static Geometry::Size GetMinimumRequiredSize ()
 Returns the minimum size required to fit any window inside. More...
 
- Public Attributes inherited from Window
Graphics::PointerStack Pointers
 Pointer system to be used within the window. More...
 
Event< WindowFocusedEvent
 Called when this window is focused. More...
 
Event< WindowLostFocusEvent
 Called when this window is deactivated. More...
 
Event< WindowDestroyedEvent
 Called when this window is destroyed. More...
 
Event< Window, bool & > ClosingEvent
 Called when user tries to close the window. More...
 
Event< WindowMovedEvent
 Called after the window is moved, either by the user or programmatically. More...
 
Event< WindowResizedEvent
 Called after the window is resized, either by the user or programmatically. More...
 
Event< WindowMinimizedEvent
 Called after the window is minimized, either by the user or programmatically. More...
 
Event< WindowRestoredEvent
 Called after the window is restored from minimized state, either by the user or programmatically. More...
 
ConsumableEvent< Window, Input::Key, float > KeyEvent
 Called when a key is pressed or released. More...
 
ConsumableEvent< Window, Input::Keyboard::CharCharacterEvent
 Called when a character is received. More...
 
- Public Attributes inherited from Layer
const Containers::Collection< Layer > & Children
 Sub-layers that this layer holds, all the sub-layers are considered to be above current layer. More...
 
- Static Public Attributes inherited from Window
static const struct Gorgon::Window::FullscreenTag Fullscreen
 
static const Containers::Collection< Window > & Windows
 List of currently created windows. More...
 
- Static Public Attributes inherited from Layer
static const Geometry::Bounds EntireRegion
 When used as layer bounds, represents the entire region its placed in. More...
 
- Protected Attributes inherited from Layer
Geometry::Bounds bounds
 Bounds of this layer. More...
 
Containers::Collection< Layerchildren
 Child layers that this layer holds, all child layers are considered to be above current layer. More...
 
bool isvisible
 Whether this layer is visible, invisible layers will not be drawn or receive any events. More...
 
std::string name
 For debugging. More...
 
Layerparent
 Parent layer, could be nullptr. More...
 
- Protected Attributes inherited from WidgetContainer
Containers::Collection< Widgetwidgets
 This container is sorted by the focus order. More...
 

Detailed Description

UI window allows programmers to create an OS window that will accept widgets and has the ability to run by its own.

Constructor & Destructor Documentation

◆ Window() [1/2]

Window ( )

◆ ~Window()

◆ Window() [2/2]

Member Function Documentation

◆ Add()

bool Add

Adds the given widget to this container.

Widget will be placed to the top of the z-order, to the end of the focus order. If the given widget cannot be added, this function will return false.

◆ added()

void added ( Layer layer)
overrideprotectedvirtual

Will be called when a layer is added.

This function will even be called when the given layer was already in the children.

Reimplemented from Window.

References Window::added(), and Layer::children.

◆ charinit()

decltype(CharacterEvent) ::Token charinit ( )
protected

◆ EnsureVisible()

bool EnsureVisible ( const UI::Widget )
overridevirtual

Window does not do any scrolling, thus cannot ensure visibility.

Implements WidgetContainer.

◆ GetInteriorSize()

virtual Geometry::Size GetInteriorSize ( ) const
overridevirtual

Should return the interior (usable) size of the container.

Implements WidgetContainer.

References Layer::GetSize().

◆ getlayer()

virtual Gorgon::Layer& getlayer ( )
overrideprotectedvirtual

Returns the layer that will be used to place the contained widgets.

Implements WidgetContainer.

◆ IsVisible()

virtual bool IsVisible ( ) const
overridevirtual

Returns whether this layer is effectively visible.

Reimplemented from Window.

References Window::IsVisible().

◆ keyinit()

decltype(KeyEvent) ::Token keyinit ( )
protected

◆ layerinit()

Graphics::Layer* layerinit ( )
protected

◆ operator=()

◆ Quit()

virtual void Quit ( )
overridevirtual

Closes the window, returning the execution to the point where Run function is called.

It allows current frame to be completed before quiting.

Implements Runner.

◆ RequestExtender()

virtual ExtenderRequestResponse RequestExtender ( const Gorgon::Layer self)
overridevirtual

This function will return a container that will act as an extender.

Implements WidgetContainer.

References Layer::GetSize().

◆ ResizeInterior()

virtual bool ResizeInterior ( Geometry::Size  size)
overrideprotectedvirtual

Should resize the interior (usable) size of the container.

If resize operation cannot set the size exactly to the requested size, this function returns false.

Implements WidgetContainer.

References Layer::GetSize(), and Window::Resize().

◆ Run()

virtual void Run ( )
overridevirtual

Takes the control of the execution until Quit is called.

Implements Runner.

References Window::Close(), and Gorgon::NextFrame().

◆ Step()

virtual void Step ( )
overridevirtual

Runs a single frame.

Implements Runner.

References Gorgon::NextFrame().


The documentation for this class was generated from the following file: