diff options
author | 2013-05-07 14:45:40 +0000 | |
---|---|---|
committer | 2013-05-07 14:45:40 +0000 | |
commit | 2983ddd4b57a05e3262fe2c1964a34f1717a5a1c (patch) | |
tree | ac680c999fdb0ee32d8d17999aa097f20c5bddb7 | |
parent | 66f5aaad90b5027daad8acbd5e8d83160097ed95 (diff) |
Revert "Allow supporting 1 older PICTURE_VERSION."
This reverts commit deb9d6990ef2d153230340d960d86b0966f261e1.
That change was just to allow us to bump the PICTURE_VERSION
without changing the SKPs to the new one. Since it is not
entirely reliable, I am removing it.
R=rmistry@google.com
Review URL: https://codereview.chromium.org/14741007
git-svn-id: http://skia.googlecode.com/svn/trunk@9035 2bbb7eff-a529-9590-31e7-b0007b416f81
-rw-r--r-- | include/core/SkPicture.h | 2 | ||||
-rw-r--r-- | src/core/SkOrderedReadBuffer.cpp | 109 | ||||
-rw-r--r-- | src/core/SkOrderedReadBuffer.h | 3 | ||||
-rw-r--r-- | src/core/SkPicture.cpp | 8 | ||||
-rw-r--r-- | src/core/SkPicturePlayback.cpp | 1 |
5 files changed, 38 insertions, 85 deletions
diff --git a/include/core/SkPicture.h b/include/core/SkPicture.h index 157c4cafb6..b2c2b62ede 100644 --- a/include/core/SkPicture.h +++ b/include/core/SkPicture.h @@ -192,6 +192,7 @@ public: void abortPlayback(); #endif +protected: // V2 : adds SkPixelRef's generation ID. // V3 : PictInfo tag at beginning, and EOF tag at the end // V4 : move SkPictInfo to be the header @@ -205,7 +206,6 @@ public: // V11: modify how readBitmap and writeBitmap store their info. static const uint32_t PICTURE_VERSION = 11; -protected: // fPlayback, fRecord, fWidth & fHeight are protected to allow derived classes to // install their own SkPicturePlayback-derived players,SkPictureRecord-derived // recorders and set the picture size diff --git a/src/core/SkOrderedReadBuffer.cpp b/src/core/SkOrderedReadBuffer.cpp index a5be45eab1..85491c5607 100644 --- a/src/core/SkOrderedReadBuffer.cpp +++ b/src/core/SkOrderedReadBuffer.cpp @@ -23,7 +23,6 @@ SkOrderedReadBuffer::SkOrderedReadBuffer() : INHERITED() { fFactoryArray = NULL; fFactoryCount = 0; fBitmapDecoder = NULL; - fPictureVersion = SkPicture::PICTURE_VERSION; } SkOrderedReadBuffer::SkOrderedReadBuffer(const void* data, size_t size) : INHERITED() { @@ -38,7 +37,6 @@ SkOrderedReadBuffer::SkOrderedReadBuffer(const void* data, size_t size) : INHERI fFactoryArray = NULL; fFactoryCount = 0; fBitmapDecoder = NULL; - fPictureVersion = SkPicture::PICTURE_VERSION; } SkOrderedReadBuffer::SkOrderedReadBuffer(SkStream* stream) { @@ -55,7 +53,6 @@ SkOrderedReadBuffer::SkOrderedReadBuffer(SkStream* stream) { fFactoryArray = NULL; fFactoryCount = 0; fBitmapDecoder = NULL; - fPictureVersion = SkPicture::PICTURE_VERSION; } SkOrderedReadBuffer::~SkOrderedReadBuffer() { @@ -171,88 +168,52 @@ uint32_t SkOrderedReadBuffer::getArrayCount() { return *(uint32_t*)fReader.peek(); } -void SkOrderedReadBuffer::setPictureVersion(uint32_t version) { - SkASSERT(version <= SkPicture::PICTURE_VERSION); - fPictureVersion = version; -} - void SkOrderedReadBuffer::readBitmap(SkBitmap* bitmap) { - if (10 == fPictureVersion) { - // Old code to read a bitmap in PICTURE_VERSION 10 + const int width = this->readInt(); + const int height = this->readInt(); + // The writer stored a boolean value to determine whether an SkBitmapHeap was used during + // writing. + if (this->readBool()) { + // An SkBitmapHeap was used for writing. Read the index from the stream and find the + // corresponding SkBitmap in fBitmapStorage. + const uint32_t index = fReader.readU32(); + fReader.readU32(); // bitmap generation ID (see SkOrderedWriteBuffer::writeBitmap) + if (fBitmapStorage) { + *bitmap = *fBitmapStorage->getBitmap(index); + fBitmapStorage->releaseRef(index); + return; + } else { + // The bitmap was stored in a heap, but there is no way to access it. Set an error and + // fall through to use a place holder bitmap. + SkErrorInternals::SetError(kParseError_SkError, "SkOrderedWriteBuffer::writeBitmap " + "stored the SkBitmap in an SkBitmapHeap, but " + "SkOrderedReadBuffer has no SkBitmapHeapReader to " + "retrieve the SkBitmap."); + } + } else { + // The writer stored false, meaning the SkBitmap was not stored in an SkBitmapHeap. const size_t length = this->readUInt(); if (length > 0) { - // Bitmap was encoded. + // A non-zero size means the SkBitmap was encoded. const void* data = this->skip(length); - const int width = this->readInt(); - const int height = this->readInt(); if (fBitmapDecoder != NULL && fBitmapDecoder(data, length, bitmap)) { SkASSERT(bitmap->width() == width && bitmap->height() == height); - } else { - // This bitmap was encoded when written, but we are unable to decode, possibly due to - // not having a decoder. Use a placeholder bitmap. - SkErrorInternals::SetError(kParseError_SkError, - "Could not decode bitmap. Resulting bitmap will be red."); - bitmap->setConfig(SkBitmap::kARGB_8888_Config, width, height); - bitmap->allocPixels(); - bitmap->eraseColor(SK_ColorRED); - } - } else { - if (fBitmapStorage) { - const uint32_t index = fReader.readU32(); - fReader.readU32(); // bitmap generation ID (see SkOrderedWriteBuffer::writeBitmap) - *bitmap = *fBitmapStorage->getBitmap(index); - fBitmapStorage->releaseRef(index); - } else { - bitmap->unflatten(*this); - } - } - } else { - const int width = this->readInt(); - const int height = this->readInt(); - // The writer stored a boolean value to determine whether an SkBitmapHeap was used during - // writing. - if (this->readBool()) { - // An SkBitmapHeap was used for writing. Read the index from the stream and find the - // corresponding SkBitmap in fBitmapStorage. - const uint32_t index = fReader.readU32(); - fReader.readU32(); // bitmap generation ID (see SkOrderedWriteBuffer::writeBitmap) - if (fBitmapStorage) { - *bitmap = *fBitmapStorage->getBitmap(index); - fBitmapStorage->releaseRef(index); return; - } else { - // The bitmap was stored in a heap, but there is no way to access it. Set an error and - // fall through to use a place holder bitmap. - SkErrorInternals::SetError(kParseError_SkError, "SkOrderedWriteBuffer::writeBitmap " - "stored the SkBitmap in an SkBitmapHeap, but " - "SkOrderedReadBuffer has no SkBitmapHeapReader to " - "retrieve the SkBitmap."); } + // This bitmap was encoded when written, but we are unable to decode, possibly due to + // not having a decoder. + SkErrorInternals::SetError(kParseError_SkError, + "Could not decode bitmap. Resulting bitmap will be red."); } else { - // 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. - const void* data = this->skip(length); - if (fBitmapDecoder != NULL && fBitmapDecoder(data, length, bitmap)) { - SkASSERT(bitmap->width() == width && bitmap->height() == height); - return; - } - // This bitmap was encoded when written, but we are unable to decode, possibly due to - // not having a decoder. - SkErrorInternals::SetError(kParseError_SkError, - "Could not decode bitmap. Resulting bitmap will be red."); - } else { - // A size of zero means the SkBitmap was simply flattened. - bitmap->unflatten(*this); - return; - } + // A size of zero means the SkBitmap was simply flattened. + bitmap->unflatten(*this); + return; } - // Could not read the SkBitmap. Use a placeholder bitmap. - bitmap->setConfig(SkBitmap::kARGB_8888_Config, width, height); - bitmap->allocPixels(); - bitmap->eraseColor(SK_ColorRED); } + // Could not read the SkBitmap. Use a placeholder bitmap. + bitmap->setConfig(SkBitmap::kARGB_8888_Config, width, height); + bitmap->allocPixels(); + bitmap->eraseColor(SK_ColorRED); } SkTypeface* SkOrderedReadBuffer::readTypeface() { diff --git a/src/core/SkOrderedReadBuffer.h b/src/core/SkOrderedReadBuffer.h index f59b9bb7bb..c609ec8be2 100644 --- a/src/core/SkOrderedReadBuffer.h +++ b/src/core/SkOrderedReadBuffer.h @@ -27,8 +27,6 @@ public: virtual SkOrderedReadBuffer* getOrderedBinaryBuffer() SK_OVERRIDE { return this; } - void setPictureVersion(uint32_t version); - SkReader32* getReader32() { return &fReader; } uint32_t size() { return fReader.size(); } @@ -123,7 +121,6 @@ private: int fFactoryCount; SkPicture::InstallPixelRefProc fBitmapDecoder; - uint32_t fPictureVersion; typedef SkFlattenableReadBuffer INHERITED; }; diff --git a/src/core/SkPicture.cpp b/src/core/SkPicture.cpp index 39d0653a1b..1ff5865651 100644 --- a/src/core/SkPicture.cpp +++ b/src/core/SkPicture.cpp @@ -6,7 +6,7 @@ * found in the LICENSE file. */ -#include "SkErrorInternals.h" + #include "SkPictureFlat.h" #include "SkPicturePlayback.h" #include "SkPictureRecord.h" @@ -283,13 +283,9 @@ void SkPicture::initFromStream(SkStream* stream, bool* success, InstallPixelRefP SkPictInfo info; if (!stream->read(&info, sizeof(info))) { - SkErrorInternals::SetError(kParseError_SkError, "Failed to parse skp info."); return; } - - if (info.fVersion < 10 || info.fVersion > PICTURE_VERSION) { - SkErrorInternals::SetError(kParseError_SkError, "skp version %d not supported.", - info.fVersion); + if (PICTURE_VERSION != info.fVersion) { return; } diff --git a/src/core/SkPicturePlayback.cpp b/src/core/SkPicturePlayback.cpp index e534abaa55..d54a6c5f3b 100644 --- a/src/core/SkPicturePlayback.cpp +++ b/src/core/SkPicturePlayback.cpp @@ -537,7 +537,6 @@ void SkPicturePlayback::parseStreamTag(SkStream* stream, const SkPictInfo& info, SkOrderedReadBuffer buffer(storage.get(), size); buffer.setFlags(pictInfoFlagsToReadBufferFlags(info.fFlags)); - buffer.setPictureVersion(info.fVersion); fFactoryPlayback->setupBuffer(buffer); fTFPlayback.setupBuffer(buffer); |