Replace Old Widgets

This commit is contained in:
IlyaShurupov 2024-10-18 10:56:42 +03:00 committed by Ilya Shurupov
parent 03da5e41d6
commit c41dc20132
81 changed files with 388 additions and 278 deletions

View file

@ -0,0 +1,53 @@
#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);
[[nodiscard]] bool isDebug() const;
// 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;
};
}