diff options
author | fmalita <fmalita@chromium.org> | 2015-12-18 07:59:47 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-12-18 07:59:47 -0800 |
commit | 5ae7fdcc3d7712da3193c39a751e88b092aa82db (patch) | |
tree | 85ac81312e756d57b45759feacc33e390ae7666c /src/core/SkBitmapProcState.cpp | |
parent | a11e5fce33f8d6f38c3324d639ca76ddf12598ba (diff) |
Repeating SkBitmapProcState rounding bias
Observe the bias in repeat matrix procs also.
Introduce a utility class to handle device space -> bitmap space
mapping.
BUG=skia:4680,skia:4649
R=reed@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1529833003
Review URL: https://codereview.chromium.org/1529833003
Diffstat (limited to 'src/core/SkBitmapProcState.cpp')
-rw-r--r-- | src/core/SkBitmapProcState.cpp | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/src/core/SkBitmapProcState.cpp b/src/core/SkBitmapProcState.cpp index c85a5fb992..1ec47fb602 100644 --- a/src/core/SkBitmapProcState.cpp +++ b/src/core/SkBitmapProcState.cpp @@ -824,15 +824,10 @@ void Clamp_S32_opaque_D32_nofilter_DX_shaderproc(const void* sIn, int x, int y, SkFractionalInt fx; int dstY; { - SkPoint pt; - s.fInvProc(s.fInvMatrix, SkIntToScalar(x) + SK_ScalarHalf, SkIntToScalar(y) + SK_ScalarHalf, - &pt); - fx = SkScalarToFractionalInt(pt.fY) - + bitmap_sampler_inv_bias(s.fInvMatrix.getScaleY()); + const SkBitmapProcStateAutoMapper mapper(s, x, y); const unsigned maxY = s.fPixmap.height() - 1; - dstY = SkClampMax(SkFractionalIntToInt(fx), maxY); - fx = SkScalarToFractionalInt(pt.fX) - + bitmap_sampler_inv_bias(s.fInvMatrix.getScaleX()); + dstY = SkClampMax(SkFixedFloorToInt(mapper.y()), maxY); + fx = SkFixedToFractionalInt(mapper.x()); } const SkPMColor* SK_RESTRICT src = s.fPixmap.addr32(0, dstY); @@ -868,4 +863,3 @@ void Clamp_S32_opaque_D32_nofilter_DX_shaderproc(const void* sIn, int x, int y, } } } - |