1 #include "quadrilateral.h" |
1 #include "quadrilateral.h" |
2 |
2 |
3 ldraw::Quadrilateral::Quadrilateral( |
3 ldraw::Quadrilateral::Quadrilateral |
|
4 ( |
4 const glm::vec3& point_1, |
5 const glm::vec3& point_1, |
5 const glm::vec3& point_2, |
6 const glm::vec3& point_2, |
6 const glm::vec3& point_3, |
7 const glm::vec3& point_3, |
7 const glm::vec3& point_4, |
8 const glm::vec3& point_4, |
8 Color color_index) : |
9 Color color_index |
|
10 ) : |
9 ColoredObject{color_index}, |
11 ColoredObject{color_index}, |
10 points{point_1, point_2, point_3, point_4} |
12 points{point_1, point_2, point_3, point_4} |
11 { |
13 { |
12 } |
14 } |
13 |
15 |
14 ldraw::Quadrilateral::Quadrilateral(const std::array<glm::vec3, 4>& vertices, const Color color) : |
16 ldraw::Quadrilateral::Quadrilateral |
|
17 ( |
|
18 const std::array<glm::vec3, 4>& vertices, |
|
19 const Color color |
|
20 ) : |
15 ColoredObject{color}, |
21 ColoredObject{color}, |
16 points{vertices[0], vertices[1], vertices[2], vertices[3]} |
22 points{vertices[0], vertices[1], vertices[2], vertices[3]} |
17 { |
23 { |
18 } |
24 } |
19 |
25 |
20 QVariant ldraw::Quadrilateral::getProperty(const Property id) const |
26 QVariant ldraw::Quadrilateral::getProperty(const Property id) const |
21 { |
27 { |
22 switch (id) |
28 switch (id) |
23 { |
29 { |
|
30 case Property::Point0: |
|
31 return QVariant::fromValue(points[0]); |
24 case Property::Point1: |
32 case Property::Point1: |
25 return QVariant::fromValue(points[0]); |
33 return QVariant::fromValue(points[1]); |
26 case Property::Point2: |
34 case Property::Point2: |
27 return QVariant::fromValue(points[1]); |
35 return QVariant::fromValue(points[2]); |
28 case Property::Point3: |
36 case Property::Point3: |
29 return QVariant::fromValue(points[2]); |
|
30 case Property::Point4: |
|
31 return QVariant::fromValue(points[3]); |
37 return QVariant::fromValue(points[3]); |
32 default: |
38 default: |
33 return ColoredObject::getProperty(id); |
39 return ColoredObject::getProperty(id); |
34 } |
40 } |
35 } |
41 } |
36 |
42 |
37 auto ldraw::Quadrilateral::setProperty( |
43 void ldraw::Quadrilateral::setProperty(SetPropertyResult* result, const PropertyKeyValue& pair) |
38 const Property id, |
|
39 const QVariant& value) |
|
40 -> SetPropertyResult |
|
41 { |
44 { |
42 switch (id) |
45 LDRAW_OBJECT_HANDLE_SET_PROPERTY(Point0, {points[0] = value;}) |
43 { |
46 LDRAW_OBJECT_HANDLE_SET_PROPERTY(Point1, {points[1] = value;}) |
44 case Property::Point1: |
47 LDRAW_OBJECT_HANDLE_SET_PROPERTY(Point2, {points[2] = value;}) |
45 points[0] = value.value<glm::vec3>(); |
48 LDRAW_OBJECT_HANDLE_SET_PROPERTY(Point3, {points[3] = value;}) |
46 return SetPropertyResult::Success; |
49 ColoredObject::setProperty(result, pair); |
47 case Property::Point2: |
|
48 points[1] = value.value<glm::vec3>(); |
|
49 return SetPropertyResult::Success; |
|
50 case Property::Point3: |
|
51 points[2] = value.value<glm::vec3>(); |
|
52 return SetPropertyResult::Success; |
|
53 case Property::Point4: |
|
54 points[3] = value.value<glm::vec3>(); |
|
55 return SetPropertyResult::Success; |
|
56 default: |
|
57 return ColoredObject::setProperty(id, value); |
|
58 } |
|
59 } |
50 } |
60 |
51 |
61 QString ldraw::Quadrilateral::textRepresentation() const |
52 QString ldraw::Quadrilateral::textRepresentation() const |
62 { |
53 { |
63 return utility::format("%1 %2 %3 %4", |
54 return utility::format("%1 %2 %3 %4", |