src/linetypes/conditionaledge.cpp

changeset 14
20d2ed3af73d
parent 13
6e838748867b
child 18
918b6c0f8b5b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/linetypes/conditionaledge.cpp	Sun Nov 03 18:13:38 2019 +0200
@@ -0,0 +1,56 @@
+#include "conditionaledge.h"
+
+linetypes::ConditionalEdge::ConditionalEdge(
+	const Vertex& point_1,
+	const Vertex& point_2,
+	const Vertex& controlPoint_1,
+	const Vertex& controlPoint_2,
+	const Color color_index) :
+	Edge{point_1, point_2, color_index},
+	controlPoint_1{controlPoint_1},
+	controlPoint_2{controlPoint_2}
+{
+}
+
+linetypes::ConditionalEdge::ConditionalEdge(const QVector<Vertex>& vertices, const Color color) :
+	Edge{vertices[0], vertices[1], color},
+	controlPoint_1{vertices[2]},
+	controlPoint_2{vertices[3]}
+{
+}
+
+QVariant linetypes::ConditionalEdge::getProperty(Property property) const
+{
+	switch (property)
+	{
+	case Property::ControlPoint1:
+		return controlPoint_1;
+	case Property::ControlPoint2:
+		return controlPoint_2;
+	default:
+		return Edge::getProperty(property);
+	}
+}
+
+auto linetypes::ConditionalEdge::setProperty(
+	Property property,
+	const QVariant& value)
+	-> SetPropertyResult
+{
+	switch (property)
+	{
+	case Property::ControlPoint1:
+		controlPoint_1 = value.value<Vertex>();
+	case Property::ControlPoint2:
+		controlPoint_2 = value.value<Vertex>();
+	default:
+		return Edge::setProperty(property, value);
+	}
+}
+
+QString linetypes::ConditionalEdge::textRepresentation() const
+{
+	return Edge::textRepresentation() + utility::format("%1 %2",
+		vertexToStringParens(controlPoint_1),
+		vertexToStringParens(controlPoint_2));
+}

mercurial