aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkBitmapProcState.cpp
diff options
context:
space:
mode:
authorGravatar robertphillips@google.com <robertphillips@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-01-23 00:36:02 +0000
committerGravatar robertphillips@google.com <robertphillips@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-01-23 00:36:02 +0000
commitd507775a8be5eca19c1c6212196bf4e56d29bab5 (patch)
treebf66a43c0af9d7b69c7c5e2525c72bdb3afd3d74 /src/core/SkBitmapProcState.cpp
parent730138c02b7e57455730d3efda5365e909fb1e99 (diff)
Fix for oversight in r7325
unreviewed git-svn-id: http://skia.googlecode.com/svn/trunk@7328 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src/core/SkBitmapProcState.cpp')
-rw-r--r--src/core/SkBitmapProcState.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/core/SkBitmapProcState.cpp b/src/core/SkBitmapProcState.cpp
index d90fbf2fa0..4d66860c8d 100644
--- a/src/core/SkBitmapProcState.cpp
+++ b/src/core/SkBitmapProcState.cpp
@@ -459,7 +459,12 @@ static void S32_D32_constX_shaderproc(const SkBitmapProcState& s,
// chooseProcs multiples the inverse matrix by the inverse of the
// bitmap's width and height. Since this method is going to do
// its own tiling and sampling we need to undo that here.
- yTemp = SkScalarFloorToInt(pt.fY * s.fBitmap->height());
+ if (SkShader::kClamp_TileMode != s.fTileModeX ||
+ SkShader::kClamp_TileMode != s.fTileModeY) {
+ yTemp = SkScalarFloorToInt(pt.fY * s.fBitmap->height());
+ } else {
+ yTemp = SkScalarFloorToInt(pt.fY);
+ }
} else {
yTemp = s.fFilterOneY + y;
}
@@ -485,7 +490,9 @@ static void S32_D32_constX_shaderproc(const SkBitmapProcState& s,
SkIntToScalar(x) + SK_ScalarHalf,
SkIntToScalar(y) + SK_ScalarHalf,
&pt);
- if (s.fInvType > SkMatrix::kTranslate_Mask) {
+ if (s.fInvType > SkMatrix::kTranslate_Mask &&
+ (SkShader::kClamp_TileMode != s.fTileModeX ||
+ SkShader::kClamp_TileMode != s.fTileModeY)) {
pt.fY *= s.fBitmap->height();
}
int iY2;