Chromium Code Reviews| Index: src/core/SkPicturePlayback.cpp |
| diff --git a/src/core/SkPicturePlayback.cpp b/src/core/SkPicturePlayback.cpp |
| index 187eeb96e14bb08498372cc3475fbde13f6ede80..b8173deab1503cd66e3c8a77e4c7d92709187626 100644 |
| --- a/src/core/SkPicturePlayback.cpp |
| +++ b/src/core/SkPicturePlayback.cpp |
| @@ -16,6 +16,23 @@ |
| #include "SkTDArray.h" |
| #include "SkTypes.h" |
| +// matches old SkCanvas::SaveFlags |
|
f(malita)
2015/12/19 18:20:21
Can we static_assert this (while SK_SUPPORT_LEGACY
reed1
2015/12/20 03:05:45
Done.
|
| +enum LegacySaveFlags { |
| + kHasAlphaLayer_LegacySaveFlags = 0x04, |
| + kClipToLayer_LegacySaveFlags = 0x10, |
| +}; |
| +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 +475,8 @@ void SkPicturePlayback::handleOp(SkReader32* reader, |
| 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); |