Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Class: GUI_Element
- Purpose: -To provide an ABSTRACT base class for all the GUI elements within the framework.
- Notes: >The class already holds basic functions for hot, cold, select, and deslect.
- Function pointers are going to use to provide callback/like functionality.
- */
- #ifndef GUI_ELEMENT_H
- #define GUI_ELEMENT_H
- #include "globalvar.h"
- #include "Input.h"
- #include "SpritePool.h"
- class GUI_Element
- {
- public:
- GUI_Element() {}
- GUI_Element(SpritePool gui_skin, int x, int y, int w, int h, bool visible, GUI_Element* parent);
- virtual ~GUI_Element();
- //set functions
- void set_texture_ptr(SDL_Texture* texture) {texture_ptr = texture;}
- void set_parent_element(GUI_Element* parent);
- void set_frame(int x, int y, int w, int h);
- void set_offset_x(int i) {offset_x = i;}
- void set_offset_y(int i) {offset_y = i;}
- void set_x(int i) {frame.x = i;}
- void set_y(int i) {frame.y = i;}
- void set_w(int i) {frame.w = i;}
- void set_h(int i) {frame.h = i;}
- void set_visible(bool b);
- void set_hot(bool b);
- void set_selected(bool b);
- void set_name(std::string name) {this->name = name;}
- //get functions
- SDL_Texture* get_texture_ptr() {return texture_ptr;}
- GUI_Element* get_parent_element() {return parent_element;}
- SDL_Rect* get_frame() {return &frame;}
- int get_offset_x() {return offset_x;}
- int get_offset_y() {return offset_y;}
- int get_x() {return frame.x;}
- int get_y() {return frame.y;}
- int get_w() {return frame.w;}
- int get_h() {return frame.h;}
- std::string get_name() {return name;}
- //is_property functions
- bool is_visible() {return visible;}
- bool is_hot() {return hot;}
- bool is_selected() {return selected;}
- //on_action functions
- virtual void on_hot() = 0;
- virtual void on_cold() = 0;
- virtual void on_select() = 0;
- virtual void on_deselect() = 0;
- //render/update/check input functions
- virtual void render() = 0;
- virtual void update() = 0;
- virtual void check(Input &input) = 0;
- //function pointers to be called when needed
- void (*func_hot) ();
- void (*func_select) ();
- void (*func_cold) ();
- void (*func_deselect) ();
- protected:
- int offset_x, offset_y;
- SDL_Texture* texture_ptr;
- GUI_Element* parent_element;
- std::string name;
- SDL_Rect frame;
- bool visible;
- bool hot;
- bool selected;
- private:
- };
- #endif // GUI_ELEMENT_H
- #include "GUI_Element.h"
- GUI_Element::GUI_Element(SpritePool gui_skin, int x, int y, int w, int h, bool visible, GUI_Element* parent)
- {
- parent_element = parent;
- texture_ptr = gui_skin.get_texture("gui_bg");
- this->visible = visible;
- frame.x = x;
- frame.y = y;
- frame.w = w;
- frame.h = h;
- }
- GUI_Element::~GUI_Element()
- {
- //dtor
- }
- void GUI_Element::set_parent_element(GUI_Element* parent)
- {
- parent_element = parent;
- }
- void GUI_Element::set_frame(int x, int y, int w, int h)
- {
- frame.x = x;
- frame.y = y;
- frame.w = w;
- frame.h = h;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement