#pragma once #include "Layout.hpp" #include "DebugManager.hpp" #include #include namespace tp { class LayoutManager { friend DebugManager; struct DepNode { std::vector depends; int references = 0; int depth = 0; }; public: LayoutManager() = default; void adjust(Widget* root); private: void findDependencies(Widget* root); void topologicalSort(Widget* root, int depth = 0); void adjustLayouts(); private: int getLayoutOrder(WidgetLayout* parent, WidgetLayout* child) const; private: std::map mDepGraph; std::vector mRoots; std::vector> mLayOrder; bool mVertical = false; }; }