#include "common/core_model/diagram.h" #include "diagramEditor/editorLayoutConfig.h" #include // layout_engine.h /********editor布局生成核心类**********/ class DiagramLayoutEngine { public: struct LayoutResult { QRectF boundingRect; bool success = true; QString errorMessage; }; LayoutResult layoutRoutes(QMap& routes, QMap& components, const LayoutConfig& config, int nSource, bool saveToModel); private: // 主线布局 void layoutMainRoute(DiagramEditorRouteInfo& route, const LayoutConfig& config, bool saveToModel, int nSource); // 支线布局 void layoutBranchRoute(DiagramEditorRouteInfo& route, const LayoutConfig& config, bool saveToModel, int nSource); // 更新元件信息 void updateComponentInfo(DiagramEditorComponentInfo& compo, Direction dir, const QPoint& delta, int rotate, bool saveToModel, int nSource); // 拆分支线 void splitBranchRoute(DiagramEditorRouteInfo& route, bool saveToModel, int nSource); // 计算边界 QRectF calculateBoundingRect(const QMap& components); // 辅助方法 QString findMainRoute(const QMap& routes); QStandardItem* getNameItem(const QString& name, int nSource); private: QMap m_itemCache; int m_compoWidth = 50; // 可配置 int m_compoHeight = 30; // 可配置 };