aboutsummaryrefslogtreecommitdiff
path: root/samplecode/SamplePictFile.cpp
diff options
context:
space:
mode:
authordjsollen@google.com <djsollen@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-12-07 21:52:34 +0000
committerdjsollen@google.com <djsollen@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-12-07 21:52:34 +0000
commitbcedc220121e36b7c6f52aadb7000de1c5aee609 (patch)
treebbcdae8175be6d9d05d6ceebd3b8fe8096fa2994 /samplecode/SamplePictFile.cpp
parentd3d377f1d6f2b4450ca34a3c1b9de880b8a0632c (diff)
Added the following 3 features to sample app.
1) Imported SKP files can now be run using the bbox playback ('b' key) 2) Imported SKP files are displayed using their basename 3) FPS counter has been updated to print time to draw all tiles Review URL: https://codereview.appspot.com/6904057 git-svn-id: http://skia.googlecode.com/svn/trunk@6718 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'samplecode/SamplePictFile.cpp')
-rw-r--r--samplecode/SamplePictFile.cpp45
1 files changed, 38 insertions, 7 deletions
diff --git a/samplecode/SamplePictFile.cpp b/samplecode/SamplePictFile.cpp
index 22c81d1d94..2321c042f8 100644
--- a/samplecode/SamplePictFile.cpp
+++ b/samplecode/SamplePictFile.cpp
@@ -13,6 +13,7 @@
#include "SkGradientShader.h"
#include "SkGraphics.h"
#include "SkImageDecoder.h"
+#include "SkOSFile.h"
#include "SkPath.h"
#include "SkPicture.h"
#include "SkRandom.h"
@@ -31,8 +32,10 @@
class PictFileView : public SampleView {
SkString fFilename;
SkPicture* fPicture;
+ SkPicture* fBBoxPicture;
+ bool fUseBBox;
- static SkPicture* LoadPicture(const char path[]) {
+ static SkPicture* LoadPicture(const char path[], bool useBBox) {
SkPicture* pic = NULL;
SkBitmap bm;
@@ -60,16 +63,30 @@ class PictFileView : public SampleView {
p2.serialize(&writer);
}
}
- return pic;
+
+ if (useBBox) {
+ SkPicture* bboxPicture = SkNEW(SkPicture);
+ pic->draw(bboxPicture->beginRecording(pic->width(), pic->height(),
+ SkPicture::kOptimizeForClippedPlayback_RecordingFlag));
+ bboxPicture->endRecording();
+ SkDELETE(pic);
+ return bboxPicture;
+
+ } else {
+ return pic;
+ }
}
public:
PictFileView(const char name[] = NULL) : fFilename(name) {
fPicture = NULL;
+ fBBoxPicture = NULL;
+ fUseBBox = false;
}
virtual ~PictFileView() {
SkSafeUnref(fPicture);
+ SkSafeUnref(fBBoxPicture);
}
protected:
@@ -77,19 +94,33 @@ protected:
virtual bool onQuery(SkEvent* evt) {
if (SampleCode::TitleQ(*evt)) {
SkString name("P:");
- name.append(fFilename);
+ char* basename = strrchr(fFilename.c_str(), SkPATH_SEPARATOR);
+ name.append(basename ? basename+1: fFilename.c_str());
+ if (fUseBBox) {
+ name.append(" <bbox>");
+ }
SampleCode::TitleR(evt, name.c_str());
return true;
}
return this->INHERITED::onQuery(evt);
}
+ virtual bool onEvent(const SkEvent& evt) {
+ if (evt.isType("PictFileView::toggleBBox")) {
+ fUseBBox = !fUseBBox;
+ return true;
+ }
+ return this->INHERITED::onEvent(evt);
+ }
+
virtual void onDrawContent(SkCanvas* canvas) {
- if (!fPicture) {
- fPicture = LoadPicture(fFilename.c_str());
+ SkPicture** picture = fUseBBox ? &fBBoxPicture : &fPicture;
+
+ if (!*picture) {
+ *picture = LoadPicture(fFilename.c_str(), fUseBBox);
}
- if (fPicture) {
- canvas->drawPicture(*fPicture);
+ if (*picture) {
+ canvas->drawPicture(**picture);
}
}