Reapply (r6718) with fix for compiler error on linux.
git-svn-id: http://skia.googlecode.com/svn/trunk@6729 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
parent
570a48c0e1
commit
796763e0b2
@ -1051,6 +1051,10 @@ void SampleWindow::draw(SkCanvas* canvas) {
|
||||
this->updateMatrix();
|
||||
}
|
||||
|
||||
if (fMeasureFPS) {
|
||||
fMeasureFPS_Time = 0;
|
||||
}
|
||||
|
||||
if (fNClip) {
|
||||
this->INHERITED::draw(canvas);
|
||||
SkBitmap orig = capture_bitmap(canvas);
|
||||
@ -1111,6 +1115,11 @@ void SampleWindow::draw(SkCanvas* canvas) {
|
||||
magnify(canvas);
|
||||
}
|
||||
|
||||
if (fMeasureFPS && fMeasureFPS_Time) {
|
||||
this->updateTitle();
|
||||
this->postInvalDelay();
|
||||
}
|
||||
|
||||
// do this last
|
||||
fDevManager->publishCanvas(fDeviceType, canvas, this);
|
||||
}
|
||||
@ -1396,10 +1405,8 @@ void SampleWindow::afterChildren(SkCanvas* orig) {
|
||||
}
|
||||
|
||||
// Do this after presentGL and other finishing, rather than in afterChild
|
||||
if (fMeasureFPS && fMeasureFPS_Time) {
|
||||
fMeasureFPS_Time = SkTime::GetMSecs() - fMeasureFPS_Time;
|
||||
this->updateTitle();
|
||||
this->postInvalDelay();
|
||||
if (fMeasureFPS && fMeasureFPS_StartTime) {
|
||||
fMeasureFPS_Time += SkTime::GetMSecs() - fMeasureFPS_StartTime;
|
||||
}
|
||||
|
||||
// if ((fScrollTestX | fScrollTestY) != 0)
|
||||
@ -1471,9 +1478,8 @@ void SampleWindow::beforeChild(SkView* child, SkCanvas* canvas) {
|
||||
this->installDrawFilter(canvas);
|
||||
|
||||
if (fMeasureFPS) {
|
||||
fMeasureFPS_Time = 0; // 0 means the child is not aware of repeat-draw
|
||||
if (SampleView::SetRepeatDraw(child, FPS_REPEAT_COUNT)) {
|
||||
fMeasureFPS_Time = SkTime::GetMSecs();
|
||||
fMeasureFPS_StartTime = SkTime::GetMSecs();
|
||||
}
|
||||
} else {
|
||||
(void)SampleView::SetRepeatDraw(child, 1);
|
||||
@ -1778,6 +1784,13 @@ bool SampleWindow::onHandleChar(SkUnichar uni) {
|
||||
}
|
||||
|
||||
switch (uni) {
|
||||
case 'b':
|
||||
{
|
||||
postEventToSink(SkNEW_ARGS(SkEvent, ("PictFileView::toggleBBox")), curr_view(this));
|
||||
this->updateTitle();
|
||||
this->inval(NULL);
|
||||
break;
|
||||
}
|
||||
case 'B':
|
||||
// gIgnoreFastBlurRect = !gIgnoreFastBlurRect;
|
||||
this->inval(NULL);
|
||||
|
@ -168,6 +168,7 @@ private:
|
||||
bool fRequestGrabImage;
|
||||
bool fMeasureFPS;
|
||||
SkMSec fMeasureFPS_Time;
|
||||
SkMSec fMeasureFPS_StartTime;
|
||||
bool fMagnify;
|
||||
SkISize fTileCount;
|
||||
|
||||
|
@ -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);
|
||||
const 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 void onDrawContent(SkCanvas* canvas) {
|
||||
if (!fPicture) {
|
||||
fPicture = LoadPicture(fFilename.c_str());
|
||||
virtual bool onEvent(const SkEvent& evt) {
|
||||
if (evt.isType("PictFileView::toggleBBox")) {
|
||||
fUseBBox = !fUseBBox;
|
||||
return true;
|
||||
}
|
||||
if (fPicture) {
|
||||
canvas->drawPicture(*fPicture);
|
||||
return this->INHERITED::onEvent(evt);
|
||||
}
|
||||
|
||||
virtual void onDrawContent(SkCanvas* canvas) {
|
||||
SkPicture** picture = fUseBBox ? &fBBoxPicture : &fPicture;
|
||||
|
||||
if (!*picture) {
|
||||
*picture = LoadPicture(fFilename.c_str(), fUseBBox);
|
||||
}
|
||||
if (*picture) {
|
||||
canvas->drawPicture(**picture);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user