diff options
-rw-r--r-- | gm/bitmaprect.cpp | 18 | ||||
-rw-r--r-- | src/gpu/SkGpuDevice.cpp | 14 |
2 files changed, 17 insertions, 15 deletions
diff --git a/gm/bitmaprect.cpp b/gm/bitmaprect.cpp index ee95e45ee6..c438776328 100644 --- a/gm/bitmaprect.cpp +++ b/gm/bitmaprect.cpp @@ -206,13 +206,23 @@ protected: SkBitmap bitmap; make_big_bitmap(&bitmap); - SkRect srcR = { 0.0f, 0.0f, 4096.0f, 2040.0f }; - SkRect dstR = { 10.1f, 10.1f, 629.9f, 469.9f }; + SkRect srcR1 = { 0.0f, 0.0f, 4096.0f, 2040.0f }; + SkRect dstR1 = { 10.1f, 10.1f, 629.9f, 400.9f }; + + SkRect srcR2 = { 4085.0f, 10.0f, 4087.0f, 12.0f }; + SkRect dstR2 = { 10, 410, 30, 430 }; if (!fUseIRect) { - canvas->drawBitmapRectToRect(bitmap, &srcR, dstR, &paint); + canvas->drawBitmapRectToRect(bitmap, &srcR1, dstR1, &paint); + canvas->drawBitmapRectToRect(bitmap, &srcR2, dstR2, &paint); } else { - canvas->drawBitmapRect(bitmap, NULL, dstR, &paint); + SkIRect iSrcR1, iSrcR2; + + srcR1.roundOut(&iSrcR1); + srcR2.roundOut(&iSrcR2); + + canvas->drawBitmapRect(bitmap, &iSrcR1, dstR1, &paint); + canvas->drawBitmapRect(bitmap, &iSrcR2, dstR2, &paint); } } diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp index 5b210b2932..528f8501db 100644 --- a/src/gpu/SkGpuDevice.cpp +++ b/src/gpu/SkGpuDevice.cpp @@ -1331,9 +1331,6 @@ void SkGpuDevice::drawTiledBitmap(const SkDraw& draw, int tileSize = determine_tile_size(bitmap, srcRect, maxTextureSize); - // undo the translate done by SkCanvas - SkScalar DX = SkMaxScalar(0, srcRect.fLeft); - SkScalar DY = SkMaxScalar(0, srcRect.fTop); // compute clip bounds in local coordinates SkRect clipRect; { @@ -1344,8 +1341,6 @@ void SkGpuDevice::drawTiledBitmap(const SkDraw& draw, return; } inverse.mapRect(&clipRect); - // apply the canvas' translate to our local clip - clipRect.offset(DX, DY); } int nx = bitmap.width() / tileSize; @@ -1372,13 +1367,10 @@ void SkGpuDevice::drawTiledBitmap(const SkDraw& draw, if (bitmap.extractSubset(&tmpB, iTileR)) { // now offset it to make it "local" to our tmp bitmap tileR.offset(SkIntToScalar(-iTileR.fLeft), SkIntToScalar(-iTileR.fTop)); - SkMatrix tmpM(m); - { - SkScalar dx = iTileR.fLeft - DX + SkMaxScalar(0, tileR.fLeft); - SkScalar dy = iTileR.fTop - DY + SkMaxScalar(0, tileR.fTop); - tmpM.preTranslate(dx, dy); - } + tmpM.preTranslate(SkIntToScalar(iTileR.fLeft), + SkIntToScalar(iTileR.fTop)); + this->internalDrawBitmap(draw, tmpB, tileR, tmpM, params, grPaint); } } |