summaryrefslogtreecommitdiffstats
path: root/src/declarative/graphicsitems/qmlgraphicspath.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/graphicsitems/qmlgraphicspath.cpp')
-rw-r--r--src/declarative/graphicsitems/qmlgraphicspath.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/declarative/graphicsitems/qmlgraphicspath.cpp b/src/declarative/graphicsitems/qmlgraphicspath.cpp
index 0812d11..1791074 100644
--- a/src/declarative/graphicsitems/qmlgraphicspath.cpp
+++ b/src/declarative/graphicsitems/qmlgraphicspath.cpp
@@ -107,7 +107,7 @@ QmlGraphicsPath::~QmlGraphicsPath()
/*!
\qmlproperty real Path::startX
\qmlproperty real Path::startY
- This property holds the starting position of the path.
+ These properties hold the starting position of the path.
*/
qreal QmlGraphicsPath::startX() const
{
@@ -134,6 +134,16 @@ void QmlGraphicsPath::setStartY(qreal y)
}
/*!
+ \qmlproperty bool Path::closed
+ This property holds whether the start and end of the path are identical.
+*/
+bool QmlGraphicsPath::isClosed() const
+{
+ Q_D(const QmlGraphicsPath);
+ return d->closed;
+}
+
+/*!
\qmlproperty list<PathElement> Path::pathElements
This property holds the objects composing the path.
@@ -220,12 +230,14 @@ void QmlGraphicsPath::processPath()
d->_path.moveTo(d->startX, d->startY);
+ QmlGraphicsCurve *lastCurve = 0;
foreach (QmlGraphicsPathElement *pathElement, d->_pathElements) {
if (QmlGraphicsCurve *curve = qobject_cast<QmlGraphicsCurve *>(pathElement)) {
curve->addToPath(d->_path);
AttributePoint p;
p.origpercent = d->_path.length();
d->_attributePoints << p;
+ lastCurve = curve;
} else if (QmlGraphicsPathAttribute *attribute = qobject_cast<QmlGraphicsPathAttribute *>(pathElement)) {
AttributePoint &point = d->_attributePoints.last();
point.values[attribute->name()] = attribute->value();
@@ -266,6 +278,8 @@ void QmlGraphicsPath::processPath()
}
}
+ d->closed = lastCurve && d->startX == lastCurve->x() && d->startY == lastCurve->y();
+
emit changed();
}