42 QVariant data(const QModelIndex& index, int role) const override; |
42 QVariant data(const QModelIndex& index, int role) const override; |
43 QVariant getHeaderProperty(const HeaderProperty property); |
43 QVariant getHeaderProperty(const HeaderProperty property); |
44 const QString& getName() const; |
44 const QString& getName() const; |
45 QVariant getObjectProperty(const int index, const ldraw::Property property) const; |
45 QVariant getObjectProperty(const int index, const ldraw::Property property) const; |
46 std::vector<gl::Polygon> getPolygons(class DocumentManager* documents) const; |
46 std::vector<gl::Polygon> getPolygons(class DocumentManager* documents) const; |
47 void getObjectPolygons(const int index, std::vector<gl::Polygon>& polygons_out, ldraw::GetPolygonsContext* context) const; |
47 QModelIndex lookup(ldraw::Id id) const; |
|
48 ldraw::Id resolve(const QModelIndex& index) const; |
48 signals: |
49 signals: |
49 void objectAdded(ldraw::Id id, int position); |
50 void objectAdded(ldraw::Id id, int position); |
50 private: |
51 private: |
51 using ModelObjectPointer = std::unique_ptr<ldraw::Object>; |
52 using ModelObjectPointer = std::unique_ptr<ldraw::Object>; |
52 template<typename T, typename... Args> |
53 template<typename T, typename... Args> |
53 ldraw::Id append(Args&&... args); |
54 ldraw::Id append(Args&&... args); |
54 void append(ModelObjectPointer&& object); |
55 void append(ModelObjectPointer&& object); |
55 template<typename T, typename... Args> |
56 template<typename T, typename... Args> |
56 ldraw::Id insert(int position, Args&&... args); |
57 ldraw::Id insert(int position, Args&&... args); |
|
58 ldraw::Object* objectAt(const QModelIndex& index); |
|
59 const ldraw::Object* objectAt(const QModelIndex& index) const; |
|
60 void getObjectPolygons( |
|
61 const int index, |
|
62 std::vector<gl::Polygon>& polygons_out, |
|
63 ldraw::GetPolygonsContext* context) const; |
57 bool modified = false; |
64 bool modified = false; |
58 QString path; |
65 QString path; |
59 LDHeader header; |
66 LDHeader header; |
60 std::vector<ModelObjectPointer> body; |
67 std::vector<ModelObjectPointer> body; |
61 std::map<ldraw::Id, ldraw::Object*> objectsById; |
68 std::map<ldraw::Id, ldraw::Object*> objectsById; |