зеркало из https://github.com/mozilla/moz-skia.git
clean up fix to drawBitmapRect
git-svn-id: http://skia.googlecode.com/svn/trunk@388 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
Родитель
fead49e3c4
Коммит
878999965b
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче