Chesto 0.9
A declarative and element-based library for creating GUIs on homebrew'd consoles
Public Member Functions | Protected Member Functions | List of all members
Chesto::Screen Class Referenceabstract

#include <Screen.hpp>

Inheritance diagram for Chesto::Screen:
Inheritance graph
[legend]
Collaboration diagram for Chesto::Screen:
Collaboration graph
[legend]

Public Member Functions

virtual void rebuildUI ()=0
 
- Public Member Functions inherited from Chesto::Element
virtual bool process (InputEvents *event)
 process any input that is received for this element More...
 
virtual void render (Element *parent)
 display the current state of the display More...
 
bool onTouchDown (InputEvents *event)
 
bool onTouchDrag (InputEvents *event)
 
bool onTouchUp (InputEvents *event)
 
void hide ()
 
void unhide ()
 
void renderBackground (bool fill=true)
 
void addNode (std::unique_ptr< Element > node)
 
void remove (Element *element)
 
void removeAll ()
 
void position (int x, int y)
 position the element More...
 
void recalcPosition (Element *parent)
 
float getEffectiveScale () const
 
CST_Rect getBounds ()
 
CST_Renderer * getRenderer ()
 
ElementsetPosition (int x, int y)
 
ElementsetAction (std::function< void()> func)
 
ElementsetAbsolute (bool isAbs)
 
template<typename T , typename... Args>
T * createNode (Args &&... args)
 
Elementconstrain (int flags, int padding=0)
 
ElementconstrainToTarget (Element *target, int flags, int padding=0)
 
Elementanimate (int durationIn, std::function< void(float)> onStep, std::function< void()> onFinish)
 
ElementmoveToFront ()
 
ElementsetTouchable (bool touchable)
 
void screenshot (std::string path)
 Take a screenshot of this element and its children, and save it to the given path. More...
 

Protected Member Functions

int getScreenWidth () const
 
int getScreenHeight () const
 
- Protected Member Functions inherited from Chesto::Element
void addStackMember (Element *element)
 

Additional Inherited Members

- Public Types inherited from Chesto::Element
typedef Element super
 
- Public Attributes inherited from Chesto::Element
std::function< void()> action = NULL
 the action to call (from binded callback) on touch or button selection https://stackoverflow.com/questions/14189440/c-class-member-callback-simple-examples More...
 
std::function< void(InputEvents *event)> actionWithEvents = NULL
 
std::vector< std::unique_ptr< Element, std::function< void(Element *)> > > elements
 visible GUI child elements of this element More...
 
float scale = 1.0f
 
bool touchable = false
 whether or not this element can be touched (highlights bounds) More...
 
bool dragging = false
 whether or not this element is currently being dragged More...
 
bool needsRedraw = false
 whether or not this element needs the screen redrawn next time it's processed More...
 
int futureRedrawCounter = 0
 whether this element needs a redraw for the next X redraws (decreases each time) (0 is no redraws) More...
 
int lastMouseY = 0
 the last Y, X coordinate of the mouse (from a drag probably) More...
 
int lastMouseX = 0
 
bool hasBackground = false
 
rgb backgroundColor = {0, 0, 0}
 
int backgroundOpacity = 0xff
 
bool isAbsolute = false
 
Elementparent = nullptr
 the parent element (reference only, not owned) More...
 
bool hidden = false
 whether this element should skip rendering or not More...
 
bool isProtected = false
 
int elasticCounter = 0
 how much time is left in an elastic-type flick/scroll set by the last distance traveled in a scroll, and counts down every frame More...
 
int width = 0
 width and height of this element (must be manually set, isn't usually calculated (but is in some cases, like text or images)) More...
 
int height = 0
 
int x = 0
 
int y = 0
 
int xAbs = 0
 
int yAbs = 0
 
double angle = 0
 rotation angle in degrees More...
 
int cornerRadius = 0
 
int tag = 0
 
std::vector< std::unique_ptr< Constraint > > constraints
 
std::vector< std::unique_ptr< Animation > > animations
 
bool useColorMask = false
 whether or not to overlay a color mask on top of this element More...
 
CST_Color maskColor = {0,0,0,0}
 The color to overlay on top. More...
 

Detailed Description

Screen - Base class for full-screen UI elements

Represents a global screen/view in the application. Screens are expected to:

Screens should not store raw pointers to child UI elements. Instead, build the UI in rebuildUI() and let the elements vector own everything. If you need to access specific elements later, use the elements vector with known indices.

Definition at line 20 of file Screen.hpp.

Constructor & Destructor Documentation

◆ Screen()

Chesto::Screen::Screen ( )

Definition at line 6 of file Screen.cpp.

7{
8 // Set to full screen dimensions by default
9 this->width = RootDisplay::screenWidth;
10 this->height = RootDisplay::screenHeight;
11}
int width
width and height of this element (must be manually set, isn't usually calculated (but is in some case...
Definition: Element.hpp:132

◆ ~Screen()

Chesto::Screen::~Screen ( )
virtual

Definition at line 13 of file Screen.cpp.

14{
15 // Base destructor - unique_ptr handles cleanup automatically
16}

Member Function Documentation

◆ getScreenHeight()

int Chesto::Screen::getScreenHeight ( ) const
protected

Definition at line 23 of file Screen.cpp.

24{
25 return RootDisplay::screenHeight;
26}

◆ getScreenWidth()

int Chesto::Screen::getScreenWidth ( ) const
protected

Definition at line 18 of file Screen.cpp.

19{
20 return RootDisplay::screenWidth;
21}

◆ rebuildUI()

void Chesto::Screen::rebuildUI ( )
pure virtual

Rebuild the entire UI for this screen. Called on initialization and whenever the screen needs to be reconstructed (e.g., theme changes, language changes).

Implementations should:

  1. Call removeAll() to clear existing UI
  2. Create all UI elements with std::make_unique
  3. Configure elements (position, actions, etc.)
  4. Transfer ownership via append(std::move(...))

Implemented in Chesto::DropDownControllerElement, and Chesto::DropDownChoices.

Definition at line 28 of file Screen.cpp.

28 {
29 this->width = RootDisplay::screenWidth;
30 this->height = RootDisplay::screenHeight;
31 this->removeAll();
32}

References Chesto::Element::width.


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