src/modeleditcontext.h

changeset 149
008989bc7d6e
parent 89
7abaf1d64719
equal deleted inserted replaced
148:e1ced2523cad 149:008989bc7d6e
24 public: 24 public:
25 ~EditContext(); 25 ~EditContext();
26 template<typename T, typename... Args> 26 template<typename T, typename... Args>
27 ldraw::Id<T> append(Args&&... args); 27 ldraw::Id<T> append(Args&&... args);
28 ldraw::id_t append(std::unique_ptr<ldraw::Object>&& object); 28 ldraw::id_t append(std::unique_ptr<ldraw::Object>&& object);
29 void insertFromState(int position, QByteArray& state);
29 template<typename T, typename... Args> 30 template<typename T, typename... Args>
30 ldraw::Id<T> insert(int position, Args&&... args); 31 ldraw::Id<T> insert(int position, Args&&... args);
31 void remove(int position); 32 void remove(int position);
32 template<ldraw::Property property> 33 template<ldraw::Property property>
33 void setObjectProperty(ldraw::id_t id, const ldraw::PropertyType<property>& value); 34 void setObjectProperty(ldraw::id_t id, const ldraw::PropertyType<property>& value);
34 auto setObjectProperty(ldraw::id_t id, ldraw::Property property, const QVariant& value) 35 auto setObjectProperty(ldraw::id_t id, ldraw::Property property, const QVariant& value)
35 -> ldraw::Object::SetPropertyResult; 36 -> ldraw::Object::SetPropertyResult;
36 void setObjectPoint(ldraw::id_t id, int pointId, const glm::vec3& value); 37 void setObjectPoint(ldraw::id_t id, int pointId, const glm::vec3& value);
37 void invertObject(ldraw::id_t id); 38 void invertObject(ldraw::id_t id);
39 void deserialize(ldraw::id_t id, QDataStream& stream);
40 ldraw::id_t resolve(int position) const;
38 Model& model(); 41 Model& model();
39 private: 42 private:
40 EditContext(Model& model); 43 EditContext(Model& model);
44 void markObjectAsModified(ldraw::id_t id, ldraw::Object* object);
41 friend class Model; 45 friend class Model;
42 QSet<ldraw::id_t> modifiedObjects; 46 QMap<ldraw::id_t, QByteArray> modifiedObjects;
43 Model& storedModel; 47 Model& storedModel;
44 }; 48 };
45 49
46 template<ldraw::Property Property> 50 template<ldraw::Property Property>
47 void Model::EditContext::setObjectProperty(const ldraw::id_t id, const ldraw::PropertyType<Property>& value) 51 void Model::EditContext::setObjectProperty(const ldraw::id_t id, const ldraw::PropertyType<Property>& value)
48 { 52 {
49 ldraw::Object* object = this->model().objectAt(id); 53 ldraw::Object* object = this->model().objectAt(id);
50 if (object != nullptr) 54 if (object != nullptr)
51 { 55 {
56 this->markObjectAsModified(id, object);
52 object->setProperty<Property>(value); 57 object->setProperty<Property>(value);
53 modifiedObjects.insert(id);
54 } 58 }
55 } 59 }
56 60
57 template<typename T, typename... Args> 61 template<typename T, typename... Args>
58 ldraw::Id<T> Model::EditContext::append(Args&&... args) 62 ldraw::Id<T> Model::EditContext::append(Args&&... args)

mercurial