diff options
author | 2013-01-23 00:36:02 +0000 | |
---|---|---|
committer | 2013-01-23 00:36:02 +0000 | |
commit | d507775a8be5eca19c1c6212196bf4e56d29bab5 (patch) | |
tree | bf66a43c0af9d7b69c7c5e2525c72bdb3afd3d74 /src/core/SkBitmapProcState.cpp | |
parent | 730138c02b7e57455730d3efda5365e909fb1e99 (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.cpp | 11 |
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; |