bwidgets/inc/basic_widgets/abstract/widget.hpp

44 lines
910 B
C++
Raw Normal View History

2021-06-03 19:14:02 +02:00
#ifndef WIDGET_HPP
#define WIDGET_HPP
2021-06-07 10:26:31 +02:00
#include <functional>
2021-07-10 19:55:53 +02:00
#include <SDL2/SDL_events.h>
#include <SDL2/SDL_rect.h>
2021-06-03 19:14:02 +02:00
2021-07-10 19:55:53 +02:00
struct SDL_Renderer;
namespace bwidgets::abstract
2021-06-03 19:14:02 +02:00
{
2021-07-10 19:55:53 +02:00
class Widget
2021-06-13 15:44:11 +02:00
{
2021-07-10 19:55:53 +02:00
protected:
SDL_Rect _viewport {0, 0, 0, 0};
SDL_Rect _widget_area {0, 0, 0, 0};
virtual void _update_widget_area() noexcept;
2021-07-10 19:55:53 +02:00
public:
struct Size {
int w;
int h;
};
Widget* parent;
Widget(Widget* parent=nullptr);
virtual ~Widget() noexcept;
2021-07-10 19:55:53 +02:00
virtual void handle_event(const SDL_Event&);
virtual void render(SDL_Renderer*);
virtual void viewport(const SDL_Rect&) noexcept;
inline virtual Size size() const noexcept
{
return {_widget_area.w, _widget_area.h};
}
2021-07-10 19:55:53 +02:00
};
}
2021-06-03 19:14:02 +02:00
#endif