#ifndef BWIDGETS_LAYOUT_HPP_ #define BWIDGETS_LAYOUT_HPP_ #include #include #include #include namespace bwidgets::core { class Renderer; } namespace bwidgets::widget { class Layout : public Widget { protected: std::vector _widgets; virtual void _handle_geometry_change(const SDL_Rect&) noexcept override; virtual void _handle_renderer_change(core::Renderer*) override; virtual void _handle_rendering() override; virtual void _update_layout(const SDL_Rect&) noexcept = 0; public: core::Size margins {8, 8}; virtual ~Layout() noexcept; virtual Layout* add_widget(Widget*); virtual void for_widgets(std::function); virtual Layout* handle_event(const SDL_Event&) override; virtual core::Size size() const noexcept override = 0; }; } #endif