aboutsummaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorGravatar bungeman@google.com <bungeman@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-10-07 21:55:56 +0000
committerGravatar bungeman@google.com <bungeman@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2011-10-07 21:55:56 +0000
commit07faed110275048c83a55ae39042da2c9d916108 (patch)
tree4180d282e2695bf8b9572b8b8eb0ed706c075a90 /include
parentcf385232c45b7692eaf31260fe650457f400521a (diff)
Setting perspective in fixed point.
Diffstat (limited to 'include')
-rw-r--r--include/core/SkMatrix.h20
1 files changed, 15 insertions, 5 deletions
diff --git a/include/core/SkMatrix.h b/include/core/SkMatrix.h
index 8c7f54be22..8fdb8185b0 100644
--- a/include/core/SkMatrix.h
+++ b/include/core/SkMatrix.h
@@ -14,6 +14,16 @@
class SkString;
+#ifdef SK_SCALAR_IS_FLOAT
+ typedef SkScalar SkPersp;
+ #define SkScalarToPersp(x) (x)
+ #define SkPerspToScalar(x) (x)
+#else
+ typedef SkFract SkPersp;
+ #define SkScalarToPersp(x) SkFixedToFract(x)
+ #define SkPerspToScalar(x) SkFractToFixed(x)
+#endif
+
/** \class SkMatrix
The SkMatrix class holds a 3x3 matrix for transforming coordinates.
@@ -114,8 +124,8 @@ public:
SkScalar getSkewX() const { return fMat[kMSkewX]; }
SkScalar getTranslateX() const { return fMat[kMTransX]; }
SkScalar getTranslateY() const { return fMat[kMTransY]; }
- SkScalar getPerspX() const { return fMat[kMPersp0]; }
- SkScalar getPerspY() const { return fMat[kMPersp1]; }
+ SkPersp getPerspX() const { return fMat[kMPersp0]; }
+ SkPersp getPerspY() const { return fMat[kMPersp1]; }
SkScalar& operator[](int index) {
SkASSERT((unsigned)index < 9);
@@ -135,12 +145,12 @@ public:
void setSkewX(SkScalar v) { this->set(kMSkewX, v); }
void setTranslateX(SkScalar v) { this->set(kMTransX, v); }
void setTranslateY(SkScalar v) { this->set(kMTransY, v); }
- void setPerspX(SkScalar v) { this->set(kMPersp0, v); }
- void setPerspY(SkScalar v) { this->set(kMPersp1, v); }
+ void setPerspX(SkPersp v) { this->set(kMPersp0, v); }
+ void setPerspY(SkPersp v) { this->set(kMPersp1, v); }
void setAll(SkScalar scaleX, SkScalar skewX, SkScalar transX,
SkScalar skewY, SkScalar scaleY, SkScalar transY,
- SkScalar persp0, SkScalar persp1, SkScalar persp2) {
+ SkPersp persp0, SkPersp persp1, SkPersp persp2) {
fMat[kMScaleX] = scaleX;
fMat[kMSkewX] = skewX;
fMat[kMTransX] = transX;