src/documentmanager.h

changeset 150
b6cbba6e29a1
parent 148
e1ced2523cad
child 193
b4beff48bb7a
equal deleted inserted replaced
148:e1ced2523cad 150:b6cbba6e29a1
17 */ 17 */
18 18
19 #pragma once 19 #pragma once
20 #include "libraries.h" 20 #include "libraries.h"
21 #include "model.h" 21 #include "model.h"
22 #include "polygoncache.h"
22 23
23 class DocumentManager : public QObject 24 class DocumentManager : public QObject
24 { 25 {
25 Q_OBJECT 26 Q_OBJECT
26 public: 27 public:
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);

mercurial