src/linetypes/object.h

changeset 77
028798a72591
parent 73
97df974b5ed5
child 81
62373840e33a
equal deleted inserted replaced
76:7c4a63a02632 77:028798a72591
11 struct GetPolygonsContext; 11 struct GetPolygonsContext;
12 enum class Property; 12 enum class Property;
13 class Object; 13 class Object;
14 class ColoredObject; 14 class ColoredObject;
15 class Empty; 15 class Empty;
16 class UnhandledProperty;
16 } 17 }
17 18
18 class DocumentManager; 19 class DocumentManager;
19 20
20 struct ldraw::GetPolygonsContext 21 struct ldraw::GetPolygonsContext
38 Transformation, // 4x4 transformation matrix of a subfile reference 39 Transformation, // 4x4 transformation matrix of a subfile reference
39 ReferenceName, // Subfile reference name 40 ReferenceName, // Subfile reference name
40 IsInverted, // Whether or not the object has been inverted with BFC INVERTNEXT 41 IsInverted, // Whether or not the object has been inverted with BFC INVERTNEXT
41 ErrorMessage // For error lines, why parsing failed 42 ErrorMessage // For error lines, why parsing failed
42 }; 43 };
44
45 // Mapping of properties to types
46 #define LDFORGE_DEFINE_PROPERTY_TYPE(PROPERTY, TYPE) \
47 namespace ldraw { \
48 template<> struct PropertyType<ldraw::Property::PROPERTY> { using type = TYPE; }; \
49 }
50
51 namespace ldraw
52 {
53 template<ldraw::Property property>
54 struct PropertyType
55 {
56 };
57
58 template<ldraw::Property property>
59 using PropertyType_t = typename PropertyType<property>::type;
60 }
61
62 LDFORGE_DEFINE_PROPERTY_TYPE(Color, int)
63 LDFORGE_DEFINE_PROPERTY_TYPE(Text, QString)
64 LDFORGE_DEFINE_PROPERTY_TYPE(Point1, glm::vec3)
65 LDFORGE_DEFINE_PROPERTY_TYPE(Point2, glm::vec3)
66 LDFORGE_DEFINE_PROPERTY_TYPE(Point3, glm::vec3)
67 LDFORGE_DEFINE_PROPERTY_TYPE(Point4, glm::vec3)
68 LDFORGE_DEFINE_PROPERTY_TYPE(ControlPoint1, glm::vec3)
69 LDFORGE_DEFINE_PROPERTY_TYPE(ControlPoint2, glm::vec3)
70 LDFORGE_DEFINE_PROPERTY_TYPE(Transformation, glm::mat4)
71 LDFORGE_DEFINE_PROPERTY_TYPE(ReferenceName, QString)
72 LDFORGE_DEFINE_PROPERTY_TYPE(IsInverted, bool)
73 LDFORGE_DEFINE_PROPERTY_TYPE(ErrorMessage, QString)
43 74
44 class ldraw::Object 75 class ldraw::Object
45 { 76 {
46 public: 77 public:
47 enum class SetPropertyResult 78 enum class SetPropertyResult
71 public: 102 public:
72 ColoredObject(const Color colorIndex = ldraw::mainColor); 103 ColoredObject(const Color colorIndex = ldraw::mainColor);
73 bool hasColor() const override final; 104 bool hasColor() const override final;
74 QVariant getProperty(Property id) const override; 105 QVariant getProperty(Property id) const override;
75 SetPropertyResult setProperty(Property id, const QVariant& value) override; 106 SetPropertyResult setProperty(Property id, const QVariant& value) override;
76 protected:
77 Color colorIndex = ldraw::mainColor; 107 Color colorIndex = ldraw::mainColor;
78 }; 108 };
79 109
80 /** 110 /**
81 * @brief Represents an empty line. 111 * @brief Represents an empty line.

mercurial