Index: src/core/SkBitmapProcState_matrix_template.h |
diff --git a/src/core/SkBitmapProcState_matrix_template.h b/src/core/SkBitmapProcState_matrix_template.h |
index 9d639b8a04fafc9cb4104e0738ab26edbc755e5c..468013c30da958fda88e9cb60e53e04ad18263e2 100644 |
--- a/src/core/SkBitmapProcState_matrix_template.h |
+++ b/src/core/SkBitmapProcState_matrix_template.h |
@@ -22,10 +22,13 @@ |
const unsigned maxX = s.fPixmap.width() - 1; |
SkFractionalInt fx; |
{ |
- const SkBitmapProcStateAutoMapper mapper(s, x ,y); |
+ SkPoint pt; |
+ s.fInvProc(s.fInvMatrix, SkIntToScalar(x) + SK_ScalarHalf, |
+ SkIntToScalar(y) + SK_ScalarHalf, &pt); |
+ fx = SkScalarToFractionalInt(pt.fY); |
const unsigned maxY = s.fPixmap.height() - 1; |
- *xy++ = TileProc::Y(s, mapper.y(), maxY); |
- fx = SkFixedToFractionalInt(mapper.x()); |
+ *xy++ = TileProc::Y(s, SkFractionalIntToFixed(fx), maxY); |
+ fx = SkScalarToFractionalInt(pt.fX); |
} |
if (0 == maxX) { |
@@ -77,9 +80,13 @@ |
SkMatrix::kScale_Mask | |
SkMatrix::kAffine_Mask)) == 0); |
- const SkBitmapProcStateAutoMapper mapper(s, x ,y); |
- SkFractionalInt fx = SkFixedToFractionalInt(mapper.x()); |
- SkFractionalInt fy = SkFixedToFractionalInt(mapper.y()); |
+ SkPoint srcPt; |
+ s.fInvProc(s.fInvMatrix, |
+ SkIntToScalar(x) + SK_ScalarHalf, |
+ SkIntToScalar(y) + SK_ScalarHalf, &srcPt); |
+ |
+ SkFractionalInt fx = SkScalarToFractionalInt(srcPt.fX); |
+ SkFractionalInt fy = SkScalarToFractionalInt(srcPt.fY); |
SkFractionalInt dx = s.fInvSxFractionalInt; |
SkFractionalInt dy = s.fInvKyFractionalInt; |
int maxX = s.fPixmap.width() - 1; |
@@ -100,7 +107,6 @@ |
int maxX = s.fPixmap.width() - 1; |
int maxY = s.fPixmap.height() - 1; |
- // TODO: inv bias support |
SkPerspIter iter(s.fInvMatrix, |
SkIntToScalar(x) + SK_ScalarHalf, |
SkIntToScalar(y) + SK_ScalarHalf, count); |