diff options
author | Bradley T. Hughes <bradley.hughes@nokia.com> | 2009-06-16 12:16:23 (GMT) |
---|---|---|
committer | Bradley T. Hughes <bradley.hughes@nokia.com> | 2009-06-16 12:16:23 (GMT) |
commit | 714a62490fd30986dc86559e6f14194a34b3a5bc (patch) | |
tree | c5c189fb22eb2f20a6cf70c176f02dd348c83610 /src/gui/painting | |
parent | aa1120804708c44ac72e20e228d5ef383a1cd62a (diff) | |
parent | c41591d57377cd7c520efc93d9c087ad34d2bb6f (diff) | |
download | Qt-714a62490fd30986dc86559e6f14194a34b3a5bc.zip Qt-714a62490fd30986dc86559e6f14194a34b3a5bc.tar.gz Qt-714a62490fd30986dc86559e6f14194a34b3a5bc.tar.bz2 |
Merge branch 'master' of git@scm.dev.nokia.troll.no:qt/qt
Conflicts:
doc/src/qnamespace.qdoc
doc/src/snippets/code/src_gui_qproxystyle.cpp
src/3rdparty/webkit/VERSION
src/3rdparty/webkit/WebKit/qt/ChangeLog
src/gui/graphicsview/qgraphicsscene.cpp
src/gui/kernel/qapplication.cpp
src/gui/kernel/qapplication_x11.cpp
src/gui/kernel/qt_x11_p.h
src/gui/kernel/qwidget.cpp
src/gui/styles/qproxystyle.cpp
src/gui/styles/qstyle.cpp
src/scripttools/debugging/qscriptdebugger.cpp
src/scripttools/debugging/qscriptenginedebugger.cpp
src/sql/drivers/odbc/qsql_odbc.cpp
src/sql/kernel/qsqldatabase.cpp
src/sql/kernel/qsqldriver.cpp
Diffstat (limited to 'src/gui/painting')
-rw-r--r-- | src/gui/painting/qmatrix.cpp | 11 | ||||
-rw-r--r-- | src/gui/painting/qmatrix.h | 11 | ||||
-rw-r--r-- | src/gui/painting/qregion.cpp | 4 | ||||
-rw-r--r-- | src/gui/painting/qtransform.cpp | 25 | ||||
-rw-r--r-- | src/gui/painting/qtransform.h | 14 |
5 files changed, 60 insertions, 5 deletions
diff --git a/src/gui/painting/qmatrix.cpp b/src/gui/painting/qmatrix.cpp index 030415d..7e26a99 100644 --- a/src/gui/painting/qmatrix.cpp +++ b/src/gui/painting/qmatrix.cpp @@ -1194,4 +1194,15 @@ QDebug operator<<(QDebug dbg, const QMatrix &m) Use the mapRect() function instead. */ + +/*! + \fn bool qFuzzyCompare(const QMatrix& m1, const QMatrix& m2) + + \relates QMatrix + \since 4.6 + + Returns true if \a m1 and \a m2 are equal, allowing for a small + fuzziness factor for floating-point comparisons; false otherwise. +*/ + QT_END_NAMESPACE diff --git a/src/gui/painting/qmatrix.h b/src/gui/painting/qmatrix.h index 1df2395..4a4e91f 100644 --- a/src/gui/painting/qmatrix.h +++ b/src/gui/painting/qmatrix.h @@ -165,6 +165,17 @@ inline bool QMatrix::isIdentity() const && qFuzzyIsNull(_m21) && qFuzzyIsNull(_dx) && qFuzzyIsNull(_dy); } +inline bool qFuzzyCompare(const QMatrix& m1, const QMatrix& m2) +{ + return qFuzzyCompare(m1.m11(), m2.m11()) + && qFuzzyCompare(m1.m12(), m2.m12()) + && qFuzzyCompare(m1.m21(), m2.m21()) + && qFuzzyCompare(m1.m22(), m2.m22()) + && qFuzzyCompare(m1.dx(), m2.dx()) + && qFuzzyCompare(m1.dy(), m2.dy()); +} + + /***************************************************************************** QMatrix stream functions *****************************************************************************/ diff --git a/src/gui/painting/qregion.cpp b/src/gui/painting/qregion.cpp index c4cd77a..03e01c9 100644 --- a/src/gui/painting/qregion.cpp +++ b/src/gui/painting/qregion.cpp @@ -698,6 +698,8 @@ bool QRegion::intersects(const QRegion ®ion) const if (!rect_intersects(boundingRect(), region.boundingRect())) return false; + if (numRects() == 1 && region.numRects() == 1) + return true; const QVector<QRect> myRects = rects(); const QVector<QRect> otherRects = region.rects(); @@ -723,6 +725,8 @@ bool QRegion::intersects(const QRect &rect) const const QRect r = rect.normalized(); if (!rect_intersects(boundingRect(), r)) return false; + if (numRects() == 1) + return true; const QVector<QRect> myRects = rects(); for (QVector<QRect>::const_iterator it = myRects.constBegin(); it < myRects.constEnd(); ++it) diff --git a/src/gui/painting/qtransform.cpp b/src/gui/painting/qtransform.cpp index 4bc20f6..385fde1 100644 --- a/src/gui/painting/qtransform.cpp +++ b/src/gui/painting/qtransform.cpp @@ -708,11 +708,15 @@ QTransform & QTransform::rotateRadians(qreal a, Qt::Axis axis) */ bool QTransform::operator==(const QTransform &o) const { -#define qFZ qFuzzyCompare - return qFZ(affine._m11, o.affine._m11) && qFZ(affine._m12, o.affine._m12) && qFZ(m_13, o.m_13) - && qFZ(affine._m21, o.affine._m21) && qFZ(affine._m22, o.affine._m22) && qFZ(m_23, o.m_23) - && qFZ(affine._dx, o.affine._dx) && qFZ(affine._dy, o.affine._dy) && qFZ(m_33, o.m_33); -#undef qFZ + return affine._m11 == o.affine._m11 && + affine._m12 == o.affine._m12 && + affine._m21 == o.affine._m21 && + affine._m22 == o.affine._m22 && + affine._dx == o.affine._dx && + affine._dy == o.affine._dy && + m_13 == o.m_13 && + m_23 == o.m_23 && + m_33 == o.m_33; } /*! @@ -2178,6 +2182,17 @@ QTransform::operator QVariant() const \sa reset() */ +/*! + \fn bool qFuzzyCompare(const QTransform& t1, const QTransform& t2) + + \relates QTransform + \since 4.6 + + Returns true if \a t1 and \a t2 are equal, allowing for a small + fuzziness factor for floating-point comparisons; false otherwise. +*/ + + // returns true if the transform is uniformly scaling // (same scale in x and y direction) // scale is set to the max of x and y scaling factors diff --git a/src/gui/painting/qtransform.h b/src/gui/painting/qtransform.h index a5002ca..57ec826 100644 --- a/src/gui/painting/qtransform.h +++ b/src/gui/painting/qtransform.h @@ -331,6 +331,20 @@ inline QTransform &QTransform::operator-=(qreal num) return *this; } +inline bool qFuzzyCompare(const QTransform& t1, const QTransform& t2) +{ + return qFuzzyCompare(t1.m11(), t2.m11()) + && qFuzzyCompare(t1.m12(), t2.m12()) + && qFuzzyCompare(t1.m13(), t2.m13()) + && qFuzzyCompare(t1.m21(), t2.m21()) + && qFuzzyCompare(t1.m22(), t2.m22()) + && qFuzzyCompare(t1.m23(), t2.m23()) + && qFuzzyCompare(t1.m31(), t2.m31()) + && qFuzzyCompare(t1.m32(), t2.m32()) + && qFuzzyCompare(t1.m33(), t2.m33()); +} + + /****** stream functions *******************/ #ifndef QT_NO_DATASTREAM Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QTransform &); |