diff options
-rw-r--r-- | src/core/SkPicture.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/core/SkPicture.cpp b/src/core/SkPicture.cpp index 4acc549377..2520e6b9c9 100644 --- a/src/core/SkPicture.cpp +++ b/src/core/SkPicture.cpp @@ -266,11 +266,20 @@ void SkPicture::draw(SkCanvas* surface, SkDrawPictureCallback* callback) { #include "SkStream.h" +static const char kMagic[] = { 's', 'k', 'i', 'a', 'p', 'i', 'c', 't' }; + bool SkPicture::StreamIsSKP(SkStream* stream, SkPictInfo* pInfo) { if (NULL == stream) { return false; } + // Check magic bytes. + char magic[sizeof(kMagic)]; + stream->read(magic, sizeof(kMagic)); + if (0 != memcmp(magic, kMagic, sizeof(kMagic))) { + return false; + } + SkPictInfo info; if (!stream->read(&info, sizeof(SkPictInfo))) { return false; @@ -341,6 +350,10 @@ void SkPicture::serialize(SkWStream* stream, EncodeBitmap encoder) const { info.fFlags |= SkPictInfo::kPtrIs64Bit_Flag; } + // Write 8 magic bytes to ID this file format. + SkASSERT(sizeof(kMagic) == 8); + stream->write(kMagic, sizeof(kMagic)); + stream->write(&info, sizeof(info)); if (playback) { stream->writeBool(true); |