aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkBitmapProcState.cpp
diff options
context:
space:
mode:
authorGravatar fmalita <fmalita@chromium.org>2015-12-18 07:59:47 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2015-12-18 07:59:47 -0800
commit5ae7fdcc3d7712da3193c39a751e88b092aa82db (patch)
tree85ac81312e756d57b45759feacc33e390ae7666c /src/core/SkBitmapProcState.cpp
parenta11e5fce33f8d6f38c3324d639ca76ddf12598ba (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.cpp12
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,
}
}
}
-