summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGunnar Sletta <gunnar@trolltech.com>2009-04-15 10:01:36 (GMT)
committerGunnar Sletta <gunnar@trolltech.com>2009-04-15 10:05:42 (GMT)
commit79891d8284736dc318cff8d9c3f6d7a6e87affd9 (patch)
treefe053e870f19f4f2cb218a7d4a6a986e001db7dd
parent0d7f704856166aea83843697ae98bdcf22dbabb0 (diff)
downloadQt-79891d8284736dc318cff8d9c3f6d7a6e87affd9.zip
Qt-79891d8284736dc318cff8d9c3f6d7a6e87affd9.tar.gz
Qt-79891d8284736dc318cff8d9c3f6d7a6e87affd9.tar.bz2
Introduce QPointF::manhattanLength
Task-number: 251068
-rw-r--r--src/corelib/tools/qpoint.cpp13
-rw-r--r--src/corelib/tools/qpoint.h2
-rw-r--r--tests/auto/qpoint/tst_qpoint.cpp20
3 files changed, 35 insertions, 0 deletions
diff --git a/src/corelib/tools/qpoint.cpp b/src/corelib/tools/qpoint.cpp
index feea473..5cc71d6 100644
--- a/src/corelib/tools/qpoint.cpp
+++ b/src/corelib/tools/qpoint.cpp
@@ -442,6 +442,19 @@ QDebug operator<<(QDebug d, const QPointF &p)
otherwise returns false.
*/
+
+/*!
+ Returns the sum of the absolute values of x() and y(),
+ traditionally known as the "Manhattan length" of the vector from
+ the origin to the point.
+
+ \sa QPoint::manhattanLength()
+*/
+qreal QPointF::manhattanLength() const
+{
+ return qAbs(x())+qAbs(y());
+}
+
/*!
\fn qreal QPointF::x() const
diff --git a/src/corelib/tools/qpoint.h b/src/corelib/tools/qpoint.h
index 1dab7e2..e716bf7 100644
--- a/src/corelib/tools/qpoint.h
+++ b/src/corelib/tools/qpoint.h
@@ -192,6 +192,8 @@ public:
QPointF(const QPoint &p);
QPointF(qreal xpos, qreal ypos);
+ qreal manhattanLength() const;
+
bool isNull() const;
qreal x() const;
diff --git a/tests/auto/qpoint/tst_qpoint.cpp b/tests/auto/qpoint/tst_qpoint.cpp
index 67fefa8..16d55fc 100644
--- a/tests/auto/qpoint/tst_qpoint.cpp
+++ b/tests/auto/qpoint/tst_qpoint.cpp
@@ -60,6 +60,8 @@ public:
private slots:
void getSetCheck();
void division();
+
+ void manhattanLength();
};
tst_QPoint::tst_QPoint()
@@ -70,6 +72,24 @@ tst_QPoint::~tst_QPoint()
{
}
+
+
+void tst_QPoint::manhattanLength()
+{
+ {
+ QPoint p(10, 20);
+ QCOMPARE(p.manhattanLength(), 30);
+ }
+ {
+ QPointF p(10., 20.);
+ QCOMPARE(p.manhattanLength(), 30.);
+ }
+ {
+ QPointF p(10.1, 20.2);
+ QCOMPARE(p.manhattanLength(), 30.3);
+ }
+}
+
// Testing get/set functions
void tst_QPoint::getSetCheck()
{