-
/*
* Copyright 2011 Google Inc.
*
SkReadBuffer(SkStream* stream);
virtual ~SkReadBuffer();
- /** Return the version of the serialized picture this buffer holds, or 0 if unset. */
- int pictureVersion() const { return fPictureVersion; }
+ enum Version {
+ kFilterLevelIsEnum_Version = 23,
+ kGradientFlippedFlag_Version = 24,
+ kDashWritesPhaseIntervals_Version = 25,
+ kColorShaderNoBool_Version = 26,
+ };
+
+ /**
+ * Returns true IFF the version is older than the specified version.
+ */
+ bool isVersionLT(Version targetVersion) const {
+ SkASSERT(targetVersion > 0);
+ return fVersion > 0 && fVersion < targetVersion;
+ }
/** This may be called at most once; most clients of SkReadBuffer should not mess with it. */
- void setPictureVersion(int version) {
- SkASSERT(0 == fPictureVersion || version == fPictureVersion);
- fPictureVersion = version;
+ void setVersion(int version) {
+ SkASSERT(0 == fVersion || version == fVersion);
+ fVersion = version;
}
enum Flags {
bool readArray(void* value, size_t size, size_t elementSize);
uint32_t fFlags;
- int fPictureVersion;
+ int fVersion;
void* fMemoryPtr;
-
/*
* Copyright 2006 The Android Open Source Project
*
this->setStrokeMiter(read_scalar(pod));
this->setColor(*pod++);
- const int picVer = buffer.pictureVersion();
unsigned flatFlags = 0;
- if (picVer > 0 && picVer <= 22) {
+ if (buffer.isVersionLT(SkReadBuffer::kFilterLevelIsEnum_Version)) {
flatFlags = unpack_paint_flags_v22(this, *pod++);
} else {
flatFlags = unpack_paint_flags(this, *pod++);
SkReadBuffer buffer(storage.get(), size);
buffer.setFlags(pictInfoFlagsToReadBufferFlags(fInfo.fFlags));
- buffer.setPictureVersion(fInfo.fVersion);
+ buffer.setVersion(fInfo.fVersion);
fFactoryPlayback->setupBuffer(buffer);
fTFPlayback.setupBuffer(buffer);
SkReadBuffer& buffer,
const SkPictInfo& info) {
SkAutoTDelete<SkPicturePlayback> playback(SkNEW_ARGS(SkPicturePlayback, (picture, info)));
- buffer.setPictureVersion(info.fVersion);
+ buffer.setVersion(info.fVersion);
if (!playback->parseBuffer(picture, buffer)) {
return NULL;
SkReadBuffer::SkReadBuffer() {
fFlags = default_flags();
- fPictureVersion = 0;
+ fVersion = 0;
fMemoryPtr = NULL;
fBitmapStorage = NULL;
SkReadBuffer::SkReadBuffer(const void* data, size_t size) {
fFlags = default_flags();
- fPictureVersion = 0;
+ fVersion = 0;
fReader.setMemory(data, size);
fMemoryPtr = NULL;
SkReadBuffer::SkReadBuffer(SkStream* stream) {
fFlags = default_flags();
- fPictureVersion = 0;
+ fVersion = 0;
const size_t length = stream->getLength();
fMemoryPtr = sk_malloc_throw(length);
stream->read(fMemoryPtr, length);
SkColorShader::SkColorShader(SkReadBuffer& b) : INHERITED(b) {
// V25_COMPATIBILITY_CODE We had a boolean to make the color shader inherit the paint's
// color. We don't support that any more.
- if (b.pictureVersion() < 26 && 0 != b.pictureVersion()) {
+ if (b.isVersionLT(SkReadBuffer::kColorShaderNoBool_Version)) {
if (b.readBool()) {
SkDEBUGFAIL("We shouldn't have pictures that recorded the inherited case.");
fColor = SK_ColorWHITE;
-
/*
* Copyright 2006 The Android Open Source Project
*
* found in the LICENSE file.
*/
-
#include "SkDashPathEffect.h"
#include "SkReadBuffer.h"
#include "SkWriteBuffer.h"
}
SkDashPathEffect::SkDashPathEffect(SkReadBuffer& buffer) : INHERITED(buffer) {
- bool useOldPic = buffer.pictureVersion() < 25 && 0 != buffer.pictureVersion();
+ bool useOldPic = buffer.isVersionLT(SkReadBuffer::kDashWritesPhaseIntervals_Version);
if (useOldPic) {
fInitialDashIndex = buffer.readInt();
fInitialDashLength = buffer.readScalar();
fCenter2(buffer.readPoint()),
fRadius1(buffer.readScalar()),
fRadius2(buffer.readScalar()) {
- if (buffer.pictureVersion() >= 24 || 0 == buffer.pictureVersion()) {
- fFlippedGrad = buffer.readBool();
- } else {
+ if (buffer.isVersionLT(SkReadBuffer::kGradientFlippedFlag_Version)) {
// V23_COMPATIBILITY_CODE
// Sort gradient by radius size for old pictures
if (fRadius2 < fRadius1) {
} else {
fFlippedGrad = false;
}
+ } else {
+ fFlippedGrad = buffer.readBool();
}
this->init();
};