- 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
This commit is contained in:
reed 2015-08-04 18:46:38 -07:00 committed by Commit bot
parent fb8c1fcab1
commit 093b4e8f51
3 changed files with 43 additions and 19 deletions

View File

@ -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':
{

View File

@ -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*);

View File

@ -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;