Introduce QMatrix4x4::isAffine()

- a convenience method thats checks if the matrix
has no projective coefficients.

Change-Id: Ieea8ac2e4237b471a683ad5010672b1e89a0c953
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
bb10
Konstantin Ritt 2015-01-26 11:37:45 +04:00 committed by Sean Harmer
parent 14419b0a2b
commit 6ef40175e5
2 changed files with 19 additions and 0 deletions

View File

@ -289,6 +289,18 @@ QMatrix4x4::QMatrix4x4(const QTransform& transform)
\sa row(), setColumn()
*/
/*!
\fn bool QMatrix4x4::isAffine() const
\since 5.5
Returns \c true if this matrix is affine matrix; false otherwise.
An affine matrix is a 4x4 matrix with row 3 equal to (0, 0, 0, 1),
e.g. no projective coefficients.
\sa isIdentity()
*/
/*!
\fn bool QMatrix4x4::isIdentity() const

View File

@ -77,6 +77,8 @@ public:
inline void setRow(int index, const QVector4D& value);
#endif
inline bool isAffine() const;
inline bool isIdentity() const;
inline void setToIdentity();
@ -302,6 +304,11 @@ inline void QMatrix4x4::setRow(int index, const QVector4D& value)
Q_GUI_EXPORT QMatrix4x4 operator/(const QMatrix4x4& matrix, float divisor);
inline bool QMatrix4x4::isAffine() const
{
return m[0][3] == 0.0f && m[1][3] == 0.0f && m[2][3] == 0.0f && m[3][3] == 1.0f;
}
inline bool QMatrix4x4::isIdentity() const
{
if (flagBits == Identity)