aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/effects/SkPictureImageFilter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/effects/SkPictureImageFilter.cpp')
-rw-r--r--src/effects/SkPictureImageFilter.cpp37
1 files changed, 20 insertions, 17 deletions
diff --git a/src/effects/SkPictureImageFilter.cpp b/src/effects/SkPictureImageFilter.cpp
index 5611900e7e..c335474200 100644
--- a/src/effects/SkPictureImageFilter.cpp
+++ b/src/effects/SkPictureImageFilter.cpp
@@ -29,6 +29,16 @@ sk_sp<SkImageFilter> SkPictureImageFilter::Make(sk_sp<SkPicture> picture,
nullptr));
}
+sk_sp<SkImageFilter> SkPictureImageFilter::MakeForLocalSpace(sk_sp<SkPicture> picture,
+ const SkRect& cropRect,
+ SkFilterQuality filterQuality) {
+ return sk_sp<SkImageFilter>(new SkPictureImageFilter(std::move(picture),
+ cropRect,
+ kLocalSpace_PictureResolution,
+ filterQuality,
+ nullptr));
+}
+
SkPictureImageFilter::SkPictureImageFilter(sk_sp<SkPicture> picture)
: INHERITED(nullptr, 0, nullptr)
, fPicture(std::move(picture))
@@ -61,25 +71,14 @@ sk_sp<SkFlattenable> SkPictureImageFilter::CreateProc(SkReadBuffer& buffer) {
}
}
buffer.readRect(&cropRect);
+ PictureResolution pictureResolution = (PictureResolution)buffer.readInt();
- // NOTE: these two fields can be removed from the class once we have out-lived the need
- // to load pictures older than SkReadBuffer::kRemovePictureImageFilterLocalSpace
- //
- PictureResolution pictureResolution = kDeviceSpace_PictureResolution;
- SkFilterQuality filterQuality = kNone_SkFilterQuality;
-
- if (buffer.isVersionLT(SkReadBuffer::kRemovePictureImageFilterLocalSpace)) {
- pictureResolution = (PictureResolution)buffer.readInt();
- if (kLocalSpace_PictureResolution == pictureResolution) {
- //filterLevel is only serialized if pictureResolution is LocalSpace
- filterQuality = (SkFilterQuality)buffer.readInt();
- }
+ if (kLocalSpace_PictureResolution == pictureResolution) {
+ //filterLevel is only serialized if pictureResolution is LocalSpace
+ SkFilterQuality filterQuality = (SkFilterQuality)buffer.readInt();
+ return MakeForLocalSpace(picture, cropRect, filterQuality);
}
- return sk_sp<SkImageFilter>(new SkPictureImageFilter(picture,
- cropRect,
- pictureResolution,
- filterQuality,
- nullptr));
+ return Make(picture, cropRect);
}
void SkPictureImageFilter::flatten(SkWriteBuffer& buffer) const {
@@ -93,6 +92,10 @@ void SkPictureImageFilter::flatten(SkWriteBuffer& buffer) const {
}
}
buffer.writeRect(fCropRect);
+ buffer.writeInt(fPictureResolution);
+ if (kLocalSpace_PictureResolution == fPictureResolution) {
+ buffer.writeInt(fFilterQuality);
+ }
}
sk_sp<SkSpecialImage> SkPictureImageFilter::onFilterImage(SkSpecialImage* source,