diff options
| author | djsollen@google.com <djsollen@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-12-07 21:52:34 +0000 |
|---|---|---|
| committer | djsollen@google.com <djsollen@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-12-07 21:52:34 +0000 |
| commit | bcedc220121e36b7c6f52aadb7000de1c5aee609 (patch) | |
| tree | bbcdae8175be6d9d05d6ceebd3b8fe8096fa2994 /samplecode/SamplePictFile.cpp | |
| parent | d3d377f1d6f2b4450ca34a3c1b9de880b8a0632c (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.cpp | 45 |
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); } } |
