From: reed@android.com Date: Fri, 16 Oct 2009 14:48:38 +0000 (+0000) Subject: clean up fix to drawBitmapRect X-Git-Tag: accepted/tizen/5.0/unified/20181102.025319~19368 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=878999965b977c4ed771c3d655f9e23ef9b5adb1;p=platform%2Fupstream%2FlibSkiaSharp.git clean up fix to drawBitmapRect git-svn-id: http://skia.googlecode.com/svn/trunk@388 2bbb7eff-a529-9590-31e7-b0007b416f81 --- diff --git a/samplecode/SampleBitmapRect.cpp b/samplecode/SampleBitmapRect.cpp index 842dfc4..0d981d6 100644 --- a/samplecode/SampleBitmapRect.cpp +++ b/samplecode/SampleBitmapRect.cpp @@ -60,7 +60,7 @@ protected: const SkIRect src[] = { { 0, 0, 32, 32 }, - { -8, -8, 80, 80 }, + { 0, 0, 80, 80 }, { 32, 32, 96, 96 }, { -32, -32, 32, 32, } }; @@ -73,11 +73,12 @@ protected: canvas->translate(16, 40); for (size_t i = 0; i < SK_ARRAY_COUNT(src); i++) { + SkRect srcR; + srcR.set(src[i]); + canvas->drawBitmap(fBitmap, 0, 0, &paint); canvas->drawBitmapRect(fBitmap, &src[i], dstR, &paint); - SkRect srcR; - srcR.set(src[i]); canvas->drawRect(srcR, paint); canvas->drawRect(dstR, paint); diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp index ce4a624..0bf0614 100644 --- a/src/core/SkCanvas.cpp +++ b/src/core/SkCanvas.cpp @@ -1113,33 +1113,24 @@ void SkCanvas::drawBitmapRect(const SkBitmap& bitmap, const SkIRect* src, } SkMatrix matrix; -#if 0 - SkScalar width = SkIntToScalar(bitmapPtr->width()); - SkScalar height = SkIntToScalar(bitmapPtr->height()); - if (dst.width() == width && dst.height() == height) { - matrix.setTranslate(dst.fLeft, dst.fTop); - } else -#endif - { - SkRect tmpSrc; - if (src) { - tmpSrc.set(*src); - // if the extract process clipped off the top or left of the - // original, we adjust for that here to get the position right. - if (tmpSrc.fLeft > 0) { - tmpSrc.fRight -= tmpSrc.fLeft; - tmpSrc.fLeft = 0; - } - if (tmpSrc.fTop > 0) { - tmpSrc.fBottom -= tmpSrc.fTop; - tmpSrc.fTop = 0; - } - } else { - tmpSrc.set(0, 0, SkIntToScalar(bitmap.width()), - SkIntToScalar(bitmap.height())); + SkRect tmpSrc; + if (src) { + tmpSrc.set(*src); + // if the extract process clipped off the top or left of the + // original, we adjust for that here to get the position right. + if (tmpSrc.fLeft > 0) { + tmpSrc.fRight -= tmpSrc.fLeft; + tmpSrc.fLeft = 0; } - matrix.setRectToRect(tmpSrc, dst, SkMatrix::kFill_ScaleToFit); + if (tmpSrc.fTop > 0) { + tmpSrc.fBottom -= tmpSrc.fTop; + tmpSrc.fTop = 0; + } + } else { + tmpSrc.set(0, 0, SkIntToScalar(bitmap.width()), + SkIntToScalar(bitmap.height())); } + matrix.setRectToRect(tmpSrc, dst, SkMatrix::kFill_ScaleToFit); this->internalDrawBitmap(*bitmapPtr, matrix, paint); }