Modules/WidgetsNew/public/RootWidget.hpp
2024-11-24 22:41:15 +03:00

51 lines
No EOL
1.1 KiB
C++

#pragma once
#include "Widget.hpp"
#include "UpdateManager.hpp"
#include "LayoutManager.hpp"
#include "DebugManager.hpp"
namespace tp {
class RootWidget : public WidgetManagerInterface {
friend DebugManager;
public:
RootWidget();
// User Interface
public:
void setRootWidget(Widget* widget);
static void setWidgetArea(Widget& widget, const RectF& rect);
// Graphic Application Interface
public:
void processFrame(EventHandler* events, const RectF& screenArea);
void drawFrame(Canvas& canvas);
[[nodiscard]] bool needsUpdate() const;
// Internals
private:
void drawRecursion(Canvas& canvas, Widget* active, const Vec2F& pos);
void updateWidget(Widget*, const char* reason = nullptr) override;
void openPopup(Widget*) override;
void closePopup(Widget*) override;
void lockFocus(Widget*) override;
void freeFocus(Widget*) override;
void updateAnimations();
void updateAreaCache(Widget* iter, bool read);
private:
Widget mRoot;
Widget mPopups;
Widget* mUserRoot = nullptr;
LayoutManager mLayoutManager;
UpdateManager mUpdateManager;
};
}