![]() |
Max OS 0.3
|
A window that can be moved and resized and contains a widget. More...
#include <window.h>
Public Member Functions | |
| Window (int32_t left, int32_t top, uint32_t width, uint32_t height, const string &title_text) | |
| Construct a new Window object at a specific position and size (relative to the screen) with a title. | |
| Window (Widget *contained_widget, const string &title_text) | |
| Construct a new Window object that contains a specific widget with a title. The window sizes itself to fit the widget. | |
| void | draw_self (common::GraphicsContext *gc, common::Rectangle< int32_t > &area) override |
| Draws the window and its children. | |
| void | add_child (Widget *child) override |
| Adds a child to the window. | |
| drivers::peripherals::MouseEventHandler * | on_mouse_button_pressed (uint32_t x, uint32_t y, uint8_t button) override |
| Handles the mouse button being pressed. | |
Public Member Functions inherited from MaxOS::gui::CompositeWidget | |
| CompositeWidget (int32_t left, int32_t top, uint32_t width, uint32_t height) | |
| Construct a new Composite Widget object at a specific position and size. | |
| void | draw (common::GraphicsContext *gc, common::Rectangle< int32_t > &area) override |
| Draws a section of the widget and its m_children. | |
| void | on_mouse_enter_widget (uint32_t to_x, uint32_t to_y) override |
| Passes the event to the child that the mouse is over. (Event handling should be done by the derived class) | |
| void | on_mouse_leave_widget (uint32_t from_x, uint32_t from_y) override |
| Passes the event to the child that the mouse is over. (Event handling should be done by the derived class) | |
| void | on_mouse_move_widget (uint32_t from_x, uint32_t from_y, uint32_t to_x, uint32_t to_y) override |
| Passes the event to the child that the mouse is over, also generates a leave/enter event for children. | |
| void | on_mouse_button_released (uint32_t x, uint32_t y, uint8_t button) override |
| Passes the event to the child that the mouse is over. (Event handling should be done by the derived class) | |
Public Member Functions inherited from MaxOS::gui::Widget | |
| Widget () | |
| Construct a new Widget object. | |
| Widget (int32_t left, int32_t top, uint32_t width, uint32_t height) | |
| Construct a new Widget object at a specific position and size. | |
| void | invalidate () |
| Invalidates the entire widget. This forces the widget to be redrawn on the next screen update. | |
| virtual void | invalidate (common::Rectangle< int32_t > &area) |
| Invalidates a specific area of the widget. This forces that part of the screen to be redrawn on the next screen update. | |
| virtual common::Coordinates | absolute_coordinates (common::Coordinates coordinates) |
| Get the absolute coordinates of the widget (relative to the screen) | |
| virtual bool | contains_coordinate (uint32_t x, uint32_t y) |
| Check if the widget contains a specific coordinate. | |
| common::Rectangle< int32_t > | position () |
| Get the position of the widget. | |
| void | move (int32_t left, int32_t top) |
| Set the position of the widget, and invalidate the old and new positions so they are redrawn. | |
| void | resize (int32_t width, int32_t height) |
| Set the size of the widget, and invalidate the old and new positions so they are redrawn. | |
| void | focus () |
| Set the current focused widget to be this widget. | |
| virtual void | on_focus () |
| Handles the event when the widget is focussed. | |
| virtual void | on_focus_lost () |
| Handles the event when the widget is unfocused. | |
| void | bring_to_front () |
| Brings this widget to the front of the screen. | |
Public Member Functions inherited from MaxOS::drivers::peripherals::KeyboardEventHandler | |
| common::Event< KeyboardEvents > * | on_event (common::Event< KeyboardEvents > *) override |
| Handle the trigger of an event. | |
| virtual void | on_key_down (KeyCode, const KeyboardState &) |
| Handle the key down event. | |
| virtual void | on_key_up (KeyCode, const KeyboardState &) |
| Handle the key up event. | |
Public Member Functions inherited from MaxOS::common::EventHandler< KeyboardEvents > | |
| virtual Event< KeyboardEvents > * | on_event (Event< KeyboardEvents > *event) |
| This function is called when an event is raised. | |
Public Attributes | |
| uint8_t | frame_thickness { 5 } |
| How thick the bar around the window is. | |
| uint8_t | title_bar_height { 10 } |
| How large the bar at the top of the window is. | |
| common::Colour | area_colour |
| The background colour of the window inner area. | |
| common::Colour | frame_colour |
| The colour of the bar around the window. | |
| common::Colour | frame_border_colour |
| The colour of the border around the bar around the window. | |
Additional Inherited Members | |
Protected Member Functions inherited from MaxOS::gui::CompositeWidget | |
| void | draw (common::GraphicsContext *gc, common::Rectangle< int32_t > &area, common::Vector< Widget * >::iterator start) |
| Draws a section of the widget and the m_children after a specific child. | |
Protected Member Functions inherited from MaxOS::gui::Widget | |
| virtual void | set_focus (Widget *) |
| Sets the widget that is currently focussed. | |
| virtual void | bring_to_front (Widget *) |
| Brings a specific widget to the front of the screen. | |
Protected Attributes inherited from MaxOS::gui::CompositeWidget | |
| common::Vector< Widget * > | m_children |
| Widgets contained within this composite widget. | |
Protected Attributes inherited from MaxOS::gui::Widget | |
| common::Rectangle< int32_t > | m_position |
| The position and size of the widget (relative to its parent) | |
| Widget * | m_parent { nullptr } |
| The widget that owns this widget. | |
| bool | m_valid { false } |
| Is the widget drawn to the screen and up to date. | |
| uint32_t | m_min_width { 5 } |
| The smallest m_width the widget can be resized to. | |
| uint32_t | m_min_height { 5 } |
| The smallest m_height the widget can be resized to. | |
| uint32_t | m_max_width { 0x8FFFFFFF } |
| The largest m_width the widget can be resized to. | |
| uint32_t | m_max_height { 0x8FFFFFFF } |
| The largest m_height the widget can be resized to. | |
A window that can be moved and resized and contains a widget.
| Window::Window | ( | int32_t | left, |
| int32_t | top, | ||
| uint32_t | width, | ||
| uint32_t | height, | ||
| const string & | title_text | ||
| ) |
Construct a new Window object at a specific position and size (relative to the screen) with a title.
| left | How many pixels from the left of the screen the window is |
| top | How many pixels from the top of the screen the window is |
| width | How many pixels wide the window is |
| height | How many pixels tall the window is |
| title_text | The text to display in the title bar of the window |
Definition at line 27 of file window.cpp.
References add_child(), area_colour, MaxOS::gui::widgets::Text::background_colour, MaxOS::gui::widgets::Text::foreground_colour, frame_border_colour, frame_colour, frame_thickness, MaxOS::gui::Widget::m_min_height, MaxOS::gui::Widget::m_min_width, and title_bar_height.
Construct a new Window object that contains a specific widget with a title. The window sizes itself to fit the widget.
| contained_widget | The widget to contain within the window |
| title_text | The text to display in the title bar of the window |
Definition at line 63 of file window.cpp.
References add_child(), area_colour, MaxOS::gui::widgets::Text::background_colour, MaxOS::gui::widgets::Text::foreground_colour, frame_border_colour, frame_colour, frame_thickness, MaxOS::gui::Widget::m_min_height, MaxOS::gui::Widget::m_min_width, and title_bar_height.
Adds a child to the window.
| child | The child to add. |
Reimplemented from MaxOS::gui::CompositeWidget.
Definition at line 220 of file window.cpp.
References MaxOS::gui::CompositeWidget::add_child(), frame_thickness, MaxOS::common::Rectangle< Type >::left, title_bar_height, and MaxOS::common::Rectangle< Type >::top.
|
overridevirtual |
Draws the window and its children.
| gc | The graphics context to draw on. |
| area | The area to draw |
Reimplemented from MaxOS::gui::CompositeWidget.
Definition at line 154 of file window.cpp.
References MaxOS::gui::Widget::absolute_coordinates(), area_colour, frame_colour, frame_thickness, MaxOS::common::Rectangle< Type >::height, MaxOS::common::Rectangle< Type >::intersection(), MaxOS::common::Rectangle< Type >::intersects(), MaxOS::common::Rectangle< Type >::left, MaxOS::gui::Widget::position(), title_bar_height, MaxOS::common::Rectangle< Type >::top, and MaxOS::common::Rectangle< Type >::width.
|
overridevirtual |
Handles the mouse button being pressed.
| mouse_x | The x coordinate of the mouse. |
| mouse_y | The y coordinate of the mouse. |
| button | The button that is pressed. |
Reimplemented from MaxOS::gui::CompositeWidget.
Definition at line 103 of file window.cpp.
References MaxOS::gui::Widget::bring_to_front(), frame_thickness, MaxOS::common::Rectangle< Type >::height, MaxOS::gui::CompositeWidget::on_mouse_button_pressed(), MaxOS::gui::Widget::position(), title_bar_height, and MaxOS::common::Rectangle< Type >::width.
| common::Colour MaxOS::gui::Window::area_colour |
The background colour of the window inner area.
Definition at line 46 of file window.h.
Referenced by draw_self(), Window(), and Window().
| common::Colour MaxOS::gui::Window::frame_border_colour |
| common::Colour MaxOS::gui::Window::frame_colour |
The colour of the bar around the window.
Definition at line 47 of file window.h.
Referenced by draw_self(), Window(), and Window().
| uint8_t MaxOS::gui::Window::frame_thickness { 5 } |
How thick the bar around the window is.
Definition at line 43 of file window.h.
Referenced by add_child(), draw_self(), on_mouse_button_pressed(), Window(), and Window().
| uint8_t MaxOS::gui::Window::title_bar_height { 10 } |
How large the bar at the top of the window is.
Definition at line 44 of file window.h.
Referenced by add_child(), draw_self(), on_mouse_button_pressed(), Window(), and Window().