Chromium Code Reviews| Index: src/core/SkPicture.cpp |
| diff --git a/src/core/SkPicture.cpp b/src/core/SkPicture.cpp |
| index ab2faea6b6b4eb38b6e0a9a9ac4ae5338cb46c8b..bb7ec1e5f6ceb5459f74ebcf2c4afaefa88b622c 100644 |
| --- a/src/core/SkPicture.cpp |
| +++ b/src/core/SkPicture.cpp |
| @@ -264,41 +264,44 @@ void SkPicture::draw(SkCanvas* surface, SkDrawPictureCallback* callback) { |
| #include "SkStream.h" |
| -SkPicture::SkPicture(SkStream* stream) { |
| - this->initFromStream(stream, NULL, NULL); |
| -} |
| - |
| -SkPicture::SkPicture(SkStream* stream, bool* success, InstallPixelRefProc proc) { |
| - this->initFromStream(stream, success, proc); |
| -} |
| - |
| -void SkPicture::initFromStream(SkStream* stream, bool* success, InstallPixelRefProc proc) { |
| - if (success) { |
| - *success = false; |
| +bool SkPicture::StreamIsSKP(SkStream* stream, SkPictInfo* pInfo) { |
| + if (NULL == stream) { |
| + return false; |
| } |
| - fRecord = NULL; |
| - fPlayback = NULL; |
| - fWidth = fHeight = 0; |
| SkPictInfo info; |
| - |
| - if (!stream->read(&info, sizeof(info))) { |
| - return; |
| + if (!stream->read(&info, sizeof(SkPictInfo))) { |
| + return false; |
| } |
| if (PICTURE_VERSION != info.fVersion) { |
| - return; |
| + return false; |
| + } |
| + if (!stream->readBool()) { |
|
reed1
2013/06/25 15:40:10
// What is the bool we are checking?
scroggo
2013/06/25 16:54:35
In SkPicture::serialize, we record true if there w
|
| + return false; |
| } |
| - if (stream->readBool()) { |
| - fPlayback = SkNEW_ARGS(SkPicturePlayback, (stream, info, proc)); |
| + if (pInfo != NULL) { |
| + *pInfo = info; |
| } |
| + return true; |
| +} |
| + |
| +SkPicture::SkPicture(SkPicturePlayback* playback, int width, int height) |
| + : fPlayback(playback) |
| + , fRecord(NULL) |
| + , fWidth(width) |
| + , fHeight(height) {} |
| - // do this at the end, so that they will be zero if we hit an error. |
| - fWidth = info.fWidth; |
| - fHeight = info.fHeight; |
| - if (success) { |
| - *success = true; |
| +SkPicture* SkPicture::CreateFromStream(SkStream* stream, InstallPixelRefProc proc) { |
| + SkPictInfo info; |
| + |
| + if (!StreamIsSKP(stream, &info)) { |
| + return NULL; |
| } |
| + |
| + SkPicturePlayback* playback = SkNEW_ARGS(SkPicturePlayback, (stream, info, proc)); |
| + |
| + return SkNEW_ARGS(SkPicture, (playback, info.fWidth, info.fHeight)); |
| } |
| void SkPicture::serialize(SkWStream* stream, EncodeBitmap encoder) const { |