Modules/Widgets/public/WidgetApplication.hpp
2024-10-18 12:54:03 +03:00

49 lines
No EOL
929 B
C++

#pragma once
#include "GraphicApplication.hpp"
#include "RootWidget.hpp"
#include "Timing.hpp"
namespace tp {
class WidgetApplication : public Application {
public:
WidgetApplication() = default;
void setRoot(Widget* widget) {
mRootWidget.setRootWidget(widget);
}
private:
void processFrame(EventHandler* eventHandler, halnf deltaTime) override {
const auto rec = RectF({ 0, 0 }, mWindow->getSize());
Timer timer;
mRootWidget.processFrame(eventHandler, rec);
mProcTime = timer.timePassed();
}
void drawFrame(Canvas* canvas) override {
Timer timer;
mRootWidget.drawFrame(*canvas);
mDrawTime = timer.timePassed();
if (mRootWidget.isDebug()) {
drawDebug();
debugUI();
}
}
bool forceNewFrame() override {
return mRootWidget.needsUpdate();
}
private:
void debugUI();
private:
time_ms mProcTime = 0;
time_ms mDrawTime = 0;
RootWidget mRootWidget;
};
}