aboutsummaryrefslogtreecommitdiffhomepage
path: root/samplecode
diff options
context:
space:
mode:
authorGravatar reed <reed@chromium.org>2015-08-04 18:46:38 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-08-04 18:46:38 -0700
commit093b4e8f51ab3432cc22ae506a2bd036d5716c98 (patch)
treefb90570216ab64003870957a8faa7aa78ecff6a7 /samplecode
parentfb8c1fcab19c99b56d2fdcf6234751d6f0465142 (diff)
- allow for stepping through a picture with 'n' and 'p'
- save current slide as .skp with 'K' BUG=skia: TBR= Review URL: https://codereview.chromium.org/1272063002
Diffstat (limited to 'samplecode')
-rw-r--r--samplecode/SampleApp.cpp30
-rw-r--r--samplecode/SampleApp.h4
-rw-r--r--samplecode/SamplePictFile.cpp28
3 files changed, 43 insertions, 19 deletions
diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp
index 318a8224c0..2d12bfd672 100644
--- a/samplecode/SampleApp.cpp
+++ b/samplecode/SampleApp.cpp
@@ -823,9 +823,7 @@ SampleWindow::SampleWindow(void* hwnd, int argc, char** argv, DeviceManager* dev
fMagnify = false;
fSaveToPdf = false;
-
- fTransitionNext = 6;
- fTransitionPrev = 2;
+ fSaveToSKP = false;
int sinkID = this->getSinkID();
fAppMenu = new SkOSMenu;
@@ -888,16 +886,7 @@ SampleWindow::SampleWindow(void* hwnd, int argc, char** argv, DeviceManager* dev
fAppMenu->assignKeyEquivalentToItem(itemID, 'z');
itemID = fAppMenu->appendSwitch("Magnify", "Magnify" , sinkID, fMagnify);
fAppMenu->assignKeyEquivalentToItem(itemID, 'm');
- itemID =fAppMenu->appendList("Transition-Next", "Transition-Next", sinkID,
- fTransitionNext, "Up", "Up and Right", "Right",
- "Down and Right", "Down", "Down and Left",
- "Left", "Up and Left", NULL);
- fAppMenu->assignKeyEquivalentToItem(itemID, 'j');
- itemID =fAppMenu->appendList("Transition-Prev", "Transition-Prev", sinkID,
- fTransitionPrev, "Up", "Up and Right", "Right",
- "Down and Right", "Down", "Down and Left",
- "Left", "Up and Left", NULL);
- fAppMenu->assignKeyEquivalentToItem(itemID, 'k');
+
itemID = fAppMenu->appendAction("Save to PDF", sinkID);
fAppMenu->assignKeyEquivalentToItem(itemID, 'e');
@@ -1259,6 +1248,12 @@ void SampleWindow::afterChildren(SkCanvas* orig) {
if (kPicture_DeviceType == fDeviceType) {
SkAutoTUnref<const SkPicture> picture(fRecorder.endRecording());
+ if (fSaveToSKP) {
+ SkFILEWStream stream("sample_app.skp");
+ picture->serialize(&stream);
+ fSaveToSKP = false;
+ }
+
if (true) {
if (true) {
SkImageInfo info;
@@ -1496,9 +1491,8 @@ bool SampleWindow::onEvent(const SkEvent& evt) {
SkOSMenu::FindListIndex(evt, "Hinting", &fHintingState) ||
SkOSMenu::FindSwitchState(evt, "Clip", &fUseClip) ||
SkOSMenu::FindSwitchState(evt, "Zoomer", &fShowZoomer) ||
- SkOSMenu::FindSwitchState(evt, "Magnify", &fMagnify) ||
- SkOSMenu::FindListIndex(evt, "Transition-Next", &fTransitionNext) ||
- SkOSMenu::FindListIndex(evt, "Transition-Prev", &fTransitionPrev)) {
+ SkOSMenu::FindSwitchState(evt, "Magnify", &fMagnify))
+ {
this->inval(NULL);
this->updateTitle();
return true;
@@ -1653,6 +1647,10 @@ bool SampleWindow::onHandleChar(SkUnichar uni) {
this->inval(NULL);
this->updateTitle();
return true;
+ case 'K':
+ fSaveToSKP = true;
+ this->inval(NULL);
+ return true;
#if SK_SUPPORT_GPU
case 'p':
{
diff --git a/samplecode/SampleApp.h b/samplecode/SampleApp.h
index 3258193110..97854fcb97 100644
--- a/samplecode/SampleApp.h
+++ b/samplecode/SampleApp.h
@@ -174,6 +174,7 @@ private:
DeviceManager* fDevManager;
bool fSaveToPdf;
+ bool fSaveToSKP;
SkAutoTUnref<SkDocument> fPDFDocument;
bool fUseClip;
@@ -218,9 +219,6 @@ private:
//Stores slide specific settings
SkOSMenu* fSlideMenu; // We pass ownership to SkWindow, when we call addMenu
- int fTransitionNext;
- int fTransitionPrev;
-
void loadView(SkView*);
void updateTitle();
bool getRawTitle(SkString*);
diff --git a/samplecode/SamplePictFile.cpp b/samplecode/SamplePictFile.cpp
index a0bab7da4e..c0973a5042 100644
--- a/samplecode/SamplePictFile.cpp
+++ b/samplecode/SamplePictFile.cpp
@@ -32,6 +32,18 @@
#include "SkGlyphCache.h"
+#include "SkDrawFilter.h"
+class SkCounterDrawFilter : public SkDrawFilter {
+public:
+ SkCounterDrawFilter(int count) : fCount(count) {}
+
+ bool filter(SkPaint*, Type t) override {
+ return --fCount >= 0;
+ }
+
+ int fCount;
+};
+
class PictFileView : public SampleView {
public:
PictFileView(const char name[] = NULL)
@@ -41,6 +53,7 @@ public:
for (int i = 0; i < kBBoxTypeCount; ++i) {
fPictures[i] = NULL;
}
+ fCount = 0;
}
virtual ~PictFileView() {
@@ -76,6 +89,15 @@ protected:
SampleCode::TitleR(evt, name.c_str());
return true;
}
+ SkUnichar uni;
+ if (SampleCode::CharQ(*evt, &uni)) {
+ switch (uni) {
+ 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;
+ default: break;
+ }
+ }
return this->INHERITED::onQuery(evt);
}
@@ -99,7 +121,12 @@ protected:
*picture = LoadPicture(fFilename.c_str(), fBBox);
}
if (*picture) {
+ SkCounterDrawFilter filter(fCount);
+ if (fCount > 0) {
+ canvas->setDrawFilter(&filter);
+ }
canvas->drawPicture(*picture);
+ canvas->setDrawFilter(NULL);
}
#ifdef SK_GLYPHCACHE_TRACK_HASH_STATS
@@ -121,6 +148,7 @@ private:
SkPicture* fPictures[kBBoxTypeCount];
BBoxType fBBox;
SkSize fTileSize;
+ int fCount;
SkPicture* LoadPicture(const char path[], BBoxType bbox) {
SkAutoTUnref<SkPicture> pic;