53 const QString& newPath, |
54 const QString& newPath, |
54 const LibraryManager &libraries, |
55 const LibraryManager &libraries, |
55 QTextStream &errorStream); |
56 QTextStream &errorStream); |
56 bool saveModel(const ModelId modelId, QTextStream& errors); |
57 bool saveModel(const ModelId modelId, QTextStream& errors); |
57 std::optional<ModelId> findIdForModel(const Model* model) const; |
58 std::optional<ModelId> findIdForModel(const Model* model) const; |
|
59 PolygonCache* getPolygonCacheForModel(ModelId modelId); |
58 private: |
60 private: |
59 struct ModelInfo |
61 struct ModelInfo |
60 { |
62 { |
61 std::unique_ptr<Model> model; |
63 std::unique_ptr<Model> model; |
|
64 ModelId id; |
62 QString path; |
65 QString path; |
63 OpenType opentype; |
66 OpenType opentype; |
64 std::map<QString, ModelId> dependencies = {}; |
67 std::map<QString, ModelId> dependencies = {}; |
65 }; |
68 }; |
66 struct LoadDepedenciesBag; |
69 struct LoadDepedenciesBag; |
67 int modelIdCounter = 0; |
70 int modelIdCounter = 0; |
68 int untitledNameCounter = 0; |
71 int untitledNameCounter = 0; |
69 std::map<ModelId, ModelInfo> openModels; |
72 std::map<ModelId, ModelInfo> openModels; |
|
73 std::map<ModelId, PolygonCache> polygonCaches; |
70 void loadDependenciesForModel(const ModelId modelId, const QString& path, LoadDepedenciesBag& bag); |
74 void loadDependenciesForModel(const ModelId modelId, const QString& path, LoadDepedenciesBag& bag); |
71 void collectReferences(QSet<QString> &referenced, const QString& name, const Model* model); |
75 void collectReferences(QSet<QString> &referenced, const QString& name, const Model* model); |
72 void updateDependencies(ModelInfo* model); |
76 void updateDependencies(ModelInfo* model); |
73 void prune(); |
77 void prune(); |
74 bool isReferencedByAnything(const ModelId modelId) const; |
78 bool isReferencedByAnything(const ModelId modelId) const; |
|
79 void makePolygonCacheForModel(const ModelId modelId); |
75 }; |
80 }; |
76 |
81 |
77 QString pathToName(const QFileInfo& path); |
82 QString pathToName(const QFileInfo& path); |