Chesto 0.9
A declarative and element-based library for creating GUIs on homebrew'd consoles
Public Member Functions | Public Attributes | List of all members
Chesto::ProgressBar Class Reference
Inheritance diagram for Chesto::ProgressBar:
Inheritance graph
[legend]
Collaboration diagram for Chesto::ProgressBar:
Collaboration graph
[legend]

Public Member Functions

void render (Element *parent)
 display the current state of the display More...
 
- 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...
 

Public Attributes

float percent = 0
 
int color
 
bool dimBg = false
 
- 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...
 

Additional Inherited Members

- Public Types inherited from Chesto::Element
typedef Element super
 
- Protected Member Functions inherited from Chesto::Element
void addStackMember (Element *element)
 

Detailed Description

Definition at line 7 of file ProgressBar.hpp.

Constructor & Destructor Documentation

◆ ProgressBar()

Chesto::ProgressBar::ProgressBar ( )

Definition at line 6 of file ProgressBar.cpp.

7{
8 // total width of full progress bar
9 this->width = 450;
10 this->height = 5; //HACKY: progress bars are 9 px tall and erroneously extend 4 px above their y-position (other elements use y-position as top, not center)
11 this->color = 0x56c1dfff;
12}
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

Member Function Documentation

◆ render()

void Chesto::ProgressBar::render ( Element parent)
virtual

display the current state of the display

Reimplemented from Chesto::Element.

Definition at line 14 of file ProgressBar.cpp.

15{
16 // if we're hidden, don't render
17 if (hidden) return;
18
19 if (this->percent < 0)
20 return;
21
22 auto renderer = getRenderer();
23
24 if (dimBg)
25 {
26 // draw a big dim layer around the entire window before drawing this progress bar
27 CST_Rect dim = { 0, 0, RootDisplay::screenWidth, RootDisplay::screenHeight };
28
29 CST_SetDrawBlend(renderer, true);
30 CST_SetDrawColorRGBA(renderer, 0x00, 0x00, 0x00, 0xbb);
31 CST_FillRect(renderer, &dim);
32 }
33
34 this->recalcPosition(parent);
35
36 // int blue = this->color;
37 // int gray = 0x989898ff;
38
39 // draw full grayed out bar first
40 CST_Rect gray_rect;
41 gray_rect.x = this->xAbs;
42 gray_rect.y = this->yAbs - 4;
43 gray_rect.w = this->width;
44 gray_rect.h = 9;
45
46 CST_SetDrawColorRGBA(renderer, 0x98, 0x98, 0x98, 0xff); //gray2
47 CST_FillRect(renderer, &gray_rect);
48
49 // draw ending "circle"
50 CST_filledCircleRGBA(renderer, this->xAbs + this->width, this->yAbs, 4, 0x98, 0x98, 0x98, 0xff);
51
52 // draw left "circle" (rounded part of bar)
53 CST_filledCircleRGBA(renderer, this->xAbs, this->yAbs, 4, 0x56, 0xc1, 0xdf, 0xff);
54
55 // draw blue progress bar so far
56 CST_Rect blue_rect;
57 blue_rect.x = this->xAbs;
58 blue_rect.y = this->yAbs - 4;
59 blue_rect.w = this->width * this->percent;
60 blue_rect.h = 9;
61
62 if (this->percent > 1) {
63 // prevent going too far past the end
64 blue_rect.w = this->width;
65 }
66
67 CST_SetDrawColorRGBA(renderer, 0x56, 0xc1, 0xdf, 0xff); // blue2
68 CST_FillRect(renderer, &blue_rect);
69
70 // draw right "circle" (rounded part of bar, and ending)
71 CST_filledCircleRGBA(renderer, this->xAbs + width * this->percent, this->yAbs, 4, 0x56, 0xc1, 0xdf, 0xff);
72}
bool hidden
whether this element should skip rendering or not
Definition: Element.hpp:119
Element * parent
the parent element (reference only, not owned)
Definition: Element.hpp:116

References Chesto::Element::hidden, Chesto::Element::parent, and Chesto::Element::width.

Member Data Documentation

◆ color

int Chesto::ProgressBar::color

Definition at line 14 of file ProgressBar.hpp.

◆ dimBg

bool Chesto::ProgressBar::dimBg = false

Definition at line 15 of file ProgressBar.hpp.

◆ percent

float Chesto::ProgressBar::percent = 0

Definition at line 12 of file ProgressBar.hpp.


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