diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-01-27 13:10:44 +0200 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-01-27 13:13:58 +0200 |
commit | b368e57e59351736f9ad06834a743a7c1b49d368 (patch) | |
tree | 3b7d42569905d8cde0ca7571cd664428354a50dd /src/datavisualization/engine/q3dbox.h | |
parent | eb3d0514ca886db33776522ea00f27b69bc86ad1 (diff) | |
parent | 05d06fbc61f07e400b519a9b020c2473398627c1 (diff) |
Merge branch 'develop'v1.0.0-beta1
Change-Id: I1c9a255eb8f30a24b665856d3711f0abe77c6ef4
Diffstat (limited to 'src/datavisualization/engine/q3dbox.h')
-rw-r--r-- | src/datavisualization/engine/q3dbox.h | 180 |
1 files changed, 77 insertions, 103 deletions
diff --git a/src/datavisualization/engine/q3dbox.h b/src/datavisualization/engine/q3dbox.h index aa63ec39..6dbaefa1 100644 --- a/src/datavisualization/engine/q3dbox.h +++ b/src/datavisualization/engine/q3dbox.h @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2013 Digia Plc +** Copyright (C) 2014 Digia Plc ** All rights reserved. ** For any questions to Digia, please use contact form at http://qt.digia.com ** @@ -19,36 +19,82 @@ #ifndef Q3DBOX_H #define Q3DBOX_H -#include <QtDataVisualization/qdatavisualizationenums.h> +#include <QtDataVisualization/qdatavisualizationglobal.h> #include <QtGui/QMatrix4x4> #include <QtGui/QVector3D> -QT_DATAVISUALIZATION_BEGIN_NAMESPACE +QT_BEGIN_NAMESPACE_DATAVISUALIZATION class Q3DBox; // Needed to circumvent an issue with qdoc. If this line is removed, make docs will not work for this. class QT_DATAVISUALIZATION_EXPORT Q3DBox { public: - Q3DBox(); - Q3DBox(const QVector3D& corner1, const QVector3D& corner2); + inline Q3DBox() : boxtype(Null), mincorner(0, 0, 0), maxcorner(0, 0, 0) {} + inline Q3DBox(const QVector3D& corner1, const QVector3D& corner2): boxtype(Finite), + mincorner(qMin(corner1.x(), corner2.x()), + qMin(corner1.y(), corner2.y()), + qMin(corner1.z(), corner2.z())), + maxcorner(qMax(corner1.x(), corner2.x()), + qMax(corner1.y(), corner2.y()), + qMax(corner1.z(), corner2.z())) {} + + inline bool isNull() const { return (boxtype == Null); } + inline bool isFinite() const { return (boxtype == Finite); } + inline bool isInfinite() const { return (boxtype == Infinite); } + + inline QVector3D minimum() const { return mincorner; } + inline QVector3D maximum() const { return maxcorner; } + inline void setExtents(const QVector3D& corner1, const QVector3D& corner2) + { + boxtype = Finite; + mincorner = QVector3D(qMin(corner1.x(), corner2.x()), + qMin(corner1.y(), corner2.y()), + qMin(corner1.z(), corner2.z())); + maxcorner = QVector3D(qMax(corner1.x(), corner2.x()), + qMax(corner1.y(), corner2.y()), + qMax(corner1.z(), corner2.z())); + } - bool isNull() const; - bool isFinite() const; - bool isInfinite() const; + inline void setToNull() + { + boxtype = Null; + mincorner = QVector3D(0, 0, 0); + maxcorner = QVector3D(0, 0, 0); + } - QVector3D minimum() const; - QVector3D maximum() const; - void setExtents(const QVector3D& corner1, const QVector3D& corner2); + inline void setToInfinite() + { + boxtype = Infinite; + mincorner = QVector3D(0, 0, 0); + maxcorner = QVector3D(0, 0, 0); + } - void setToNull(); - void setToInfinite(); + inline QVector3D size() const { return maxcorner - mincorner; } + inline QVector3D center() const { return (mincorner + maxcorner) * 0.5f; } - QVector3D size() const; - QVector3D center() const; + inline bool contains(const QVector3D& point) const + { + if (boxtype == Finite) { + return (point.x() >= mincorner.x() && point.x() <= maxcorner.x() && + point.y() >= mincorner.y() && point.y() <= maxcorner.y() && + point.z() >= mincorner.z() && point.z() <= maxcorner.z()); + } else if (boxtype == Infinite) { + return true; + } else { + return false; + } + } - bool contains(const QVector3D& point) const; - bool contains(const Q3DBox& box) const; + inline bool contains(const Q3DBox& box) const + { + if (box.boxtype == Finite) + return contains(box.mincorner) && contains(box.maxcorner); + else if (box.boxtype == Infinite) + return (boxtype == Infinite); + else + return false; + } bool intersects(const Q3DBox& box) const; void intersect(const Q3DBox& box); @@ -63,8 +109,19 @@ public: void transform(const QMatrix4x4& matrix); Q3DBox transformed(const QMatrix4x4& matrix) const; - bool operator==(const Q3DBox& box) const; - bool operator!=(const Q3DBox& box) const; + inline bool operator==(const Q3DBox& box) const + { + return (boxtype == box.boxtype && + mincorner == box.mincorner && + maxcorner == box.maxcorner); + } + + inline bool operator!=(const Q3DBox& box) const + { + return (boxtype != box.boxtype || + mincorner != box.mincorner || + maxcorner != box.maxcorner); + } friend bool qFuzzyCompare(const Q3DBox& box1, const Q3DBox& box2); @@ -80,89 +137,6 @@ private: QVector3D mincorner, maxcorner; }; -inline Q3DBox::Q3DBox() : boxtype(Null), mincorner(0, 0, 0), maxcorner(0, 0, 0) {} - -inline Q3DBox::Q3DBox(const QVector3D& corner1, const QVector3D& corner2) - : boxtype(Finite), - mincorner(qMin(corner1.x(), corner2.x()), - qMin(corner1.y(), corner2.y()), - qMin(corner1.z(), corner2.z())), - maxcorner(qMax(corner1.x(), corner2.x()), - qMax(corner1.y(), corner2.y()), - qMax(corner1.z(), corner2.z())) {} - -inline bool Q3DBox::isNull() const { return (boxtype == Null); } -inline bool Q3DBox::isFinite() const { return (boxtype == Finite); } -inline bool Q3DBox::isInfinite() const { return (boxtype == Infinite); } - -inline QVector3D Q3DBox::minimum() const { return mincorner; } -inline QVector3D Q3DBox::maximum() const { return maxcorner; } - -inline void Q3DBox::setExtents(const QVector3D& corner1, const QVector3D& corner2) -{ - boxtype = Finite; - mincorner = QVector3D(qMin(corner1.x(), corner2.x()), - qMin(corner1.y(), corner2.y()), - qMin(corner1.z(), corner2.z())); - maxcorner = QVector3D(qMax(corner1.x(), corner2.x()), - qMax(corner1.y(), corner2.y()), - qMax(corner1.z(), corner2.z())); -} - -inline void Q3DBox::setToNull() -{ - boxtype = Null; - mincorner = QVector3D(0, 0, 0); - maxcorner = QVector3D(0, 0, 0); -} - -inline void Q3DBox::setToInfinite() -{ - boxtype = Infinite; - mincorner = QVector3D(0, 0, 0); - maxcorner = QVector3D(0, 0, 0); -} - -inline QVector3D Q3DBox::size() const { return maxcorner - mincorner; } -inline QVector3D Q3DBox::center() const { return (mincorner + maxcorner) * 0.5f; } - -inline bool Q3DBox::contains(const QVector3D& point) const -{ - if (boxtype == Finite) { - return (point.x() >= mincorner.x() && point.x() <= maxcorner.x() && - point.y() >= mincorner.y() && point.y() <= maxcorner.y() && - point.z() >= mincorner.z() && point.z() <= maxcorner.z()); - } else if (boxtype == Infinite) { - return true; - } else { - return false; - } -} - -inline bool Q3DBox::contains(const Q3DBox& box) const -{ - if (box.boxtype == Finite) - return contains(box.mincorner) && contains(box.maxcorner); - else if (box.boxtype == Infinite) - return (boxtype == Infinite); - else - return false; -} - -inline bool Q3DBox::operator==(const Q3DBox& box) const -{ - return (boxtype == box.boxtype && - mincorner == box.mincorner && - maxcorner == box.maxcorner); -} - -inline bool Q3DBox::operator!=(const Q3DBox& box) const -{ - return (boxtype != box.boxtype || - mincorner != box.mincorner || - maxcorner != box.maxcorner); -} - inline bool qFuzzyCompare(const Q3DBox& box1, const Q3DBox& box2) { return box1.boxtype == box2.boxtype && @@ -179,6 +153,6 @@ QT_DATAVISUALIZATION_EXPORT QDataStream &operator<<(QDataStream &stream, const Q QT_DATAVISUALIZATION_EXPORT QDataStream &operator>>(QDataStream &stream, Q3DBox &box); #endif -QT_DATAVISUALIZATION_END_NAMESPACE +QT_END_NAMESPACE_DATAVISUALIZATION #endif |