| Index: src/core/SkOrderedReadBuffer.cpp
|
| diff --git a/src/core/SkOrderedReadBuffer.cpp b/src/core/SkOrderedReadBuffer.cpp
|
| index 7f0a14e16be881d12f8e2f8c2a3f1c41eb0a4b37..e8250ddfa3560108a033da2bd838863aeab36b17 100644
|
| --- a/src/core/SkOrderedReadBuffer.cpp
|
| +++ b/src/core/SkOrderedReadBuffer.cpp
|
| @@ -192,10 +192,15 @@ void SkOrderedReadBuffer::readBitmap(SkBitmap* bitmap) {
|
| // The writer stored false, meaning the SkBitmap was not stored in an SkBitmapHeap.
|
| const size_t length = this->readUInt();
|
| if (length > 0) {
|
| - // A non-zero size means the SkBitmap was encoded.
|
| + // A non-zero size means the SkBitmap was encoded. Read the data and pixel
|
| + // offset.
|
| const void* data = this->skip(length);
|
| + const int32_t xOffset = fReader.readS32();
|
| + const int32_t yOffset = fReader.readS32();
|
| if (fBitmapDecoder != NULL && fBitmapDecoder(data, length, bitmap)) {
|
| if (bitmap->width() == width && bitmap->height() == height) {
|
| + // If the width and height match, there should be no offset.
|
| + SkASSERT(0 == xOffset && 0 == yOffset);
|
| return;
|
| }
|
|
|
| @@ -204,16 +209,8 @@ void SkOrderedReadBuffer::readBitmap(SkBitmap* bitmap) {
|
| // the encoded width and height.
|
| SkASSERT(width <= bitmap->width() && height <= bitmap->height());
|
|
|
| - // FIXME: Once the writer is changed to record the (x,y) offset,
|
| - // they will be used to store the correct portion of the picture.
|
| SkBitmap subsetBm;
|
| -#ifdef BUMP_PICTURE_VERSION
|
| - int32_t x = fReader.readS32();
|
| - int32_t y = fReader.readS32();
|
| - SkIRect subset = SkIRect::MakeXYWH(x, y, width, height);
|
| -#else
|
| - SkIRect subset = SkIRect::MakeWH(width, height);
|
| -#endif
|
| + SkIRect subset = SkIRect::MakeXYWH(xOffset, yOffset, width, height);
|
| if (bitmap->extractSubset(&subsetBm, subset)) {
|
| bitmap->swap(subsetBm);
|
| return;
|
|
|