src/linetypes/quadrilateral.cpp

changeset 86
4bec0525ef1b
parent 81
62373840e33a
child 87
93ec4d630346
equal deleted inserted replaced
85:40e2940605a3 86:4bec0525ef1b
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",

mercurial