Add SkIRect bounds() convenience method to SkImageInfo and SkBitmap.

Review URL: https://codereview.chromium.org/646213003
This commit is contained in:
halcanary 2014-10-24 12:54:53 -07:00 committed by Commit bot
parent 87ab518627
commit f622a6c8fd
8 changed files with 17 additions and 15 deletions

View File

@ -105,15 +105,14 @@ protected:
textureMatrices.back().preRotate(45.f, texture->width() / 2.f, texture->height() / 2.f);
const SkIRect texelDomains[] = {
SkIRect::MakeWH(fBmp.width(), fBmp.height()),
fBmp.bounds(),
SkIRect::MakeXYWH(fBmp.width() / 4,
fBmp.height() / 4,
fBmp.width() / 2,
fBmp.height() / 2),
};
SkRect renderRect = SkRect::MakeWH(SkIntToScalar(fBmp.width()),
SkIntToScalar(fBmp.height()));
SkRect renderRect = SkRect::Make(fBmp.bounds());
renderRect.outset(kDrawPad, kDrawPad);
SkScalar y = kDrawPad + kTestPad;

View File

@ -220,6 +220,9 @@ public:
void getBounds(SkRect* bounds) const;
void getBounds(SkIRect* bounds) const;
SkIRect bounds() const { return fInfo.bounds(); }
SkISize dimensions() const { return fInfo.dimensions(); }
bool setInfo(const SkImageInfo&, size_t rowBytes = 0);
/**

View File

@ -9,10 +9,11 @@
#define SkImageInfo_DEFINED
#include "SkMath.h"
#include "SkRect.h"
#include "SkSize.h"
class SkWriteBuffer;
class SkReadBuffer;
class SkWriteBuffer;
/**
* Describes how to interpret the alpha compoent of a pixel.
@ -207,6 +208,7 @@ public:
return SkAlphaTypeIsOpaque(fAlphaType);
}
SkIRect bounds() const { return SkIRect::MakeWH(fWidth, fHeight); }
SkISize dimensions() const { return SkISize::Make(fWidth, fHeight); }
/**

View File

@ -1260,7 +1260,7 @@ void SkCanvas::drawSprite(const SkBitmap& bitmap, int x, int y,
SkIPoint offset = SkIPoint::Make(0, 0);
SkMatrix matrix = *iter.fMatrix;
matrix.postTranslate(SkIntToScalar(-pos.x()), SkIntToScalar(-pos.y()));
SkIRect clipBounds = SkIRect::MakeWH(bitmap.width(), bitmap.height());
const SkIRect clipBounds = bitmap.bounds();
SkAutoTUnref<SkImageFilter::Cache> cache(iter.fDevice->getImageFilterCache());
SkImageFilter::Context ctx(matrix, clipBounds, cache.get());
if (filter->filterImage(&proxy, bitmap, ctx, &dst, &offset)) {

View File

@ -45,9 +45,8 @@ bool SkCachingPixelRef::onNewLockPixels(LockRec* rec) {
}
const SkImageInfo& info = this->info();
if (!SkBitmapCache::Find(this->getGenerationID(),
SkIRect::MakeWH(info.width(), info.height()),
&fLockedBitmap)) {
if (!SkBitmapCache::Find(
this->getGenerationID(), info.bounds(), &fLockedBitmap)) {
// Cache has been purged, must re-decode.
if (!fLockedBitmap.tryAllocPixels(info, fRowBytes)) {
fErrorInDecoding = true;
@ -58,9 +57,8 @@ bool SkCachingPixelRef::onNewLockPixels(LockRec* rec) {
return false;
}
fLockedBitmap.setImmutable();
SkBitmapCache::Add(this->getGenerationID(),
SkIRect::MakeWH(info.width(), info.height()),
fLockedBitmap);
SkBitmapCache::Add(
this->getGenerationID(), info.bounds(), fLockedBitmap);
}
// Now bitmap should contain a concrete PixelRef of the decoded image.

View File

@ -745,7 +745,7 @@ SkPDFDevice::SkPDFDevice(const SkISize& pageSize, const SkISize& contentSize,
fInitialTransform.preConcat(initialTransform);
fLegacyBitmap.setInfo(info);
SkIRect existingClip = SkIRect::MakeWH(info.width(), info.height());
SkIRect existingClip = info.bounds();
fExistingClipRegion.setRect(existingClip);
this->init();
}
@ -2181,7 +2181,7 @@ void SkPDFDevice::internalDrawBitmap(const SkMatrix& origMatrix,
scaled.setScale(SK_Scalar1, -SK_Scalar1);
scaled.postTranslate(0, SK_Scalar1);
// Scale the image up from 1x1 to WxH.
SkIRect subset = SkIRect::MakeWH(bitmap->width(), bitmap->height());
SkIRect subset = bitmap->bounds();
scaled.postScale(SkIntToScalar(subset.width()),
SkIntToScalar(subset.height()));
scaled.postConcat(matrix);

View File

@ -56,7 +56,7 @@ void runShaderTest(skiatest::Reporter* reporter, SkSurface* sourceSurface, SkSur
destinationCanvas->clear(SK_ColorTRANSPARENT);
destinationCanvas->drawPaint(paint);
SkIRect rect = SkIRect::MakeWH(info.width(), info.height());
SkIRect rect = info.bounds();
SkBitmap bmOrig;
sourceSurface->getCanvas()->readPixels(rect, &bmOrig);

View File

@ -195,7 +195,7 @@ static bool check_write(skiatest::Reporter* reporter, SkCanvas* canvas, const Sk
// At some point this will be unsupported, as we won't allow accessBitmap() to magically call
// readPixels for the client.
SkBitmap secretDevBitmap;
canvas->readPixels(SkIRect::MakeWH(canvasInfo.width(), canvasInfo.height()), &secretDevBitmap);
canvas->readPixels(canvasInfo.bounds(), &secretDevBitmap);
SkAutoLockPixels alp(secretDevBitmap);
canvasRowBytes = secretDevBitmap.rowBytes();