aboutsummaryrefslogtreecommitdiff
path: root/samplecode/SamplePictFile.cpp
diff options
context:
space:
mode:
authorreed <reed@google.com>2016-08-22 07:41:46 -0700
committerCommit bot <commit-bot@chromium.org>2016-08-22 07:41:46 -0700
commitccebcec4aca71fd17626b45f27fbe613bfa18b64 (patch)
tree74593bae0dde80a1b4c9cab8336e82b69ae6ac30 /samplecode/SamplePictFile.cpp
parent35bb74b444bc4a9ed2f437d97c6a943012990fe3 (diff)
'F' will toggle filtering for the --picture sample
BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2263203002 TBR= Review-Url: https://codereview.chromium.org/2263203002
Diffstat (limited to 'samplecode/SamplePictFile.cpp')
-rw-r--r--samplecode/SamplePictFile.cpp26
1 files changed, 19 insertions, 7 deletions
diff --git a/samplecode/SamplePictFile.cpp b/samplecode/SamplePictFile.cpp
index c1958c8973..85483288c7 100644
--- a/samplecode/SamplePictFile.cpp
+++ b/samplecode/SamplePictFile.cpp
@@ -55,9 +55,14 @@ public:
fCount = 0;
}
- virtual ~PictFileView() {
+ ~PictFileView() override {
+ this->freePictures();
+ }
+
+ void freePictures() {
for (int i = 0; i < kBBoxTypeCount; ++i) {
SkSafeUnref(fPictures[i]);
+ fPictures[i] = nullptr;
}
}
@@ -94,6 +99,12 @@ protected:
case 'n': fCount += 1; this->inval(nullptr); return true;
case 'p': fCount -= 1; this->inval(nullptr); return true;
case 's': fCount = 0; this->inval(nullptr); return true;
+ case 'F':
+ fFilterQuality = (kNone_SkFilterQuality == fFilterQuality) ?
+ kHigh_SkFilterQuality : kNone_SkFilterQuality;
+ this->freePictures();
+ this->inval(nullptr);
+ return true;
default: break;
}
}
@@ -148,18 +159,19 @@ private:
BBoxType fBBox;
SkSize fTileSize;
int fCount;
+ SkFilterQuality fFilterQuality = kNone_SkFilterQuality;
sk_sp<SkPicture> LoadPicture(const char path[], BBoxType bbox) {
sk_sp<SkPicture> pic;
- SkBitmap bm;
- if (decode_file(path, &bm)) {
- bm.setImmutable();
+ if (sk_sp<SkImage> img = decode_file(path)) {
SkPictureRecorder recorder;
- SkCanvas* can = recorder.beginRecording(SkIntToScalar(bm.width()),
- SkIntToScalar(bm.height()),
+ SkCanvas* can = recorder.beginRecording(SkIntToScalar(img->width()),
+ SkIntToScalar(img->height()),
nullptr, 0);
- can->drawBitmap(bm, 0, 0, nullptr);
+ SkPaint paint;
+ paint.setFilterQuality(fFilterQuality);
+ can->drawImage(img, 0, 0, &paint);
pic = recorder.finishRecordingAsPicture();
} else {
SkFILEStream stream(path);