hide old SaveFlags, but keep them available (for now) for Android
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1535993003
requires https://codereview.chromium.org/1537203002/# to land in chrome first (android should be safe)
Review URL: https://codereview.chromium.org/1535993003
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
index a232177..68afc18 100644
--- a/src/core/SkCanvas.cpp
+++ b/src/core/SkCanvas.cpp
@@ -1122,6 +1122,7 @@
return true;
}
+#ifdef SK_SUPPORT_LEGACY_SAVEFLAGS
uint32_t SkCanvas::SaveFlagsToSaveLayerFlags(SaveFlags flags) {
uint32_t layerFlags = 0;
@@ -1133,14 +1134,17 @@
}
return layerFlags;
}
+#endif
int SkCanvas::saveLayer(const SkRect* bounds, const SkPaint* paint) {
return this->saveLayer(SaveLayerRec(bounds, paint, 0));
}
+#ifdef SK_SUPPORT_LEGACY_SAVEFLAGS
int SkCanvas::saveLayer(const SkRect* bounds, const SkPaint* paint, SaveFlags flags) {
return this->saveLayer(SaveLayerRec(bounds, paint, SaveFlagsToSaveLayerFlags(flags)));
}
+#endif
int SkCanvas::saveLayerPreserveLCDTextRequests(const SkRect* bounds, const SkPaint* paint) {
return this->saveLayer(SaveLayerRec(bounds, paint, kPreserveLCDText_SaveLayerFlag));
@@ -1269,9 +1273,16 @@
}
int SkCanvas::saveLayerAlpha(const SkRect* bounds, U8CPU alpha) {
- return this->saveLayerAlpha(bounds, alpha, kARGB_ClipLayer_SaveFlag);
+ if (0xFF == alpha) {
+ return this->saveLayer(bounds, nullptr);
+ } else {
+ SkPaint tmpPaint;
+ tmpPaint.setAlpha(alpha);
+ return this->saveLayer(bounds, &tmpPaint);
+ }
}
+#ifdef SK_SUPPORT_LEGACY_SAVEFLAGS
int SkCanvas::saveLayerAlpha(const SkRect* bounds, U8CPU alpha,
SaveFlags flags) {
if (0xFF == alpha) {
@@ -1282,6 +1293,7 @@
return this->saveLayer(bounds, &tmpPaint, flags);
}
}
+#endif
void SkCanvas::internalRestore() {
SkASSERT(fMCStack.count() != 0);
diff --git a/src/core/SkPicturePlayback.cpp b/src/core/SkPicturePlayback.cpp
index 187eeb9..82b8f0e 100644
--- a/src/core/SkPicturePlayback.cpp
+++ b/src/core/SkPicturePlayback.cpp
@@ -16,6 +16,28 @@
#include "SkTDArray.h"
#include "SkTypes.h"
+// matches old SkCanvas::SaveFlags
+enum LegacySaveFlags {
+ kHasAlphaLayer_LegacySaveFlags = 0x04,
+ kClipToLayer_LegacySaveFlags = 0x10,
+};
+#ifdef SK_SUPPORT_LEGACY_SAVEFLAGS
+static_assert(kHasAlphaLayer_LegacySaveFlags == (int)SkCanvas::kHasAlphaLayer_SaveFlag, "");
+static_assert(kClipToLayer_LegacySaveFlags == (int)SkCanvas::kClipToLayer_SaveFlag, "");
+#endif
+
+SkCanvas::SaveLayerFlags SkCanvas::LegacySaveFlagsToSaveLayerFlags(uint32_t flags) {
+ uint32_t layerFlags = 0;
+
+ if (0 == (flags & kClipToLayer_LegacySaveFlags)) {
+ layerFlags |= SkCanvas::kDontClipToLayer_PrivateSaveLayerFlag;
+ }
+ if (0 == (flags & kHasAlphaLayer_LegacySaveFlags)) {
+ layerFlags |= kIsOpaque_SaveLayerFlag;
+ }
+ return layerFlags;
+}
+
/*
* Read the next op code and chunk size from 'reader'. The returned size
* is the entire size of the chunk (including the opcode). Thus, the
@@ -458,9 +480,8 @@
case SAVE_LAYER_SAVEFLAGS_DEPRECATED: {
const SkRect* boundsPtr = get_rect_ptr(reader);
const SkPaint* paint = fPictureData->getPaint(reader);
- const SkCanvas::SaveFlags flags = (SkCanvas::SaveFlags)reader->readInt();
- canvas->saveLayer(SkCanvas::SaveLayerRec(boundsPtr, paint,
- SkCanvas::SaveFlagsToSaveLayerFlags(flags)));
+ auto flags = SkCanvas::LegacySaveFlagsToSaveLayerFlags(reader->readInt());
+ canvas->saveLayer(SkCanvas::SaveLayerRec(boundsPtr, paint, flags));
} break;
case SAVE_LAYER_SAVELAYERFLAGS: {
const SkRect* boundsPtr = get_rect_ptr(reader);