3 #include "ParaRegion.h" 17 enum TransformationType {
28 float h21,
float h22,
float h23,
29 float h31,
float h32,
float h33 = 1.0);
31 float h22,
float dx,
float dy);
34 bool isAffine()
const;
35 bool isIdentity()
const;
36 bool isInvertible()
const;
37 bool isScaling()
const;
38 bool isRotating()
const;
39 bool isTranslating()
const;
53 TransformationType
type()
const;
55 inline float determinant()
const;
70 void setMatrix(
float m11,
float m12,
float m13,
71 float m21,
float m22,
float m23,
72 float m31,
float m32,
float m33);
74 QTransform inverted(
bool *invertible = 0)
const;
81 QTransform &rotate(
float a, ParaEngine::Axis axis = ZAxis);
82 QTransform &rotateRadians(
float a, ParaEngine::Axis axis = ZAxis);
100 void map(
int x,
int y,
int *tx,
int *ty)
const;
101 void map(
float x,
float y,
float *tx,
float *ty)
const;
103 const QMatrix &toAffine()
const;
110 static QTransform fromTranslate(
float dx,
float dy);
111 static QTransform fromScale(
float dx,
float dy);
114 friend class ParaPainter;
115 inline QTransform(
float h11,
float h12,
float h13,
116 float h21,
float h22,
float h23,
117 float h31,
float h32,
float h33,
bool)
118 : affine(h11, h12, h21, h22, h31, h32,
true)
119 , m_13(h13), m_23(h23), m_33(h33)
121 , m_dirty(TxProject) {}
124 , m_13(0), m_23(0), m_33(1)
127 inline TransformationType inline_type()
const;
133 mutable unsigned int m_type : 5;
134 mutable unsigned int m_dirty : 5;
138 inline QTransform::TransformationType QTransform::inline_type()
const 140 if (m_dirty == TxNone)
141 return static_cast<TransformationType
>(m_type);
145 inline bool QTransform::isAffine()
const 147 return inline_type() < TxProject;
149 inline bool QTransform::isIdentity()
const 151 return inline_type() == TxNone;
154 inline bool QTransform::isInvertible()
const 156 return !Math::FuzzyIsNull(determinant());
159 inline bool QTransform::isScaling()
const 161 return type() >= TxScale;
163 inline bool QTransform::isRotating()
const 165 return inline_type() >= TxRotate;
168 inline bool QTransform::isTranslating()
const 170 return inline_type() >= TxTranslate;
173 inline float QTransform::determinant()
const 175 return affine._m11*(m_33*affine._m22 - affine._dy*m_23) -
176 affine._m21*(m_33*affine._m12 - affine._dy*m_13) + affine._dx*(m_23*affine._m12 - affine._m22*m_13);
178 inline float QTransform::det()
const 180 return determinant();
182 inline float QTransform::m11()
const 186 inline float QTransform::m12()
const 190 inline float QTransform::m13()
const 194 inline float QTransform::m21()
const 198 inline float QTransform::m22()
const 202 inline float QTransform::m23()
const 206 inline float QTransform::m31()
const 210 inline float QTransform::m32()
const 214 inline float QTransform::m33()
const 218 inline float QTransform::dx()
const 222 inline float QTransform::dy()
const 227 inline QTransform &QTransform::operator*=(
float num)
240 if (m_dirty < TxScale)
244 inline QTransform &QTransform::operator/=(
float div)
249 return operator*=(div);
251 inline QTransform &QTransform::operator+=(
float num)
267 inline QTransform &QTransform::operator-=(
float num)
286 return Math::FuzzyCompare(t1.m11(), t2.m11())
287 && Math::FuzzyCompare(t1.m12(), t2.m12())
288 && Math::FuzzyCompare(t1.m13(), t2.m13())
289 && Math::FuzzyCompare(t1.m21(), t2.m21())
290 && Math::FuzzyCompare(t1.m22(), t2.m22())
291 && Math::FuzzyCompare(t1.m23(), t2.m23())
292 && Math::FuzzyCompare(t1.m31(), t2.m31())
293 && Math::FuzzyCompare(t1.m32(), t2.m32())
294 && Math::FuzzyCompare(t1.m33(), t2.m33());
Definition: ParaPoint.h:203
different physics engine has different winding order.
Definition: EventBinding.h:32
Definition: ParaLine.h:151
Definition: ParaRect.h:517
when concerting QRect with QRectF and RECT, we ensure that their left, top and width, height are the same.
Definition: ParaRect.h:16
Definition: ParaPoint.h:5
Definition: ParaRegion.h:7
for luabind, The main drawback of this approach is that the compilation time will increase for the fi...
Definition: luaSQLite.cpp:1971