Rename SkDrawPictureCallback to SkPicture::AbortCallback

Committed: https://skia.googlesource.com/skia/+/7ef197255deb4e2fa64c03c7130d56ddf164e83c

Review URL: https://codereview.chromium.org/829983003
This commit is contained in:
robertphillips 2015-01-07 07:28:41 -08:00 committed by Commit bot
parent c56fb00373
commit 783fe16b8e
14 changed files with 59 additions and 45 deletions

View File

@ -24,6 +24,7 @@
'SK_SUPPORT_LEGACY_CANVAS_VIRTUAL', 'SK_SUPPORT_LEGACY_CANVAS_VIRTUAL',
'SK_SUPPORT_LEGACY_ADDOVAL', 'SK_SUPPORT_LEGACY_ADDOVAL',
'SK_SUPPORT_LEGACY_ADDRRECT', 'SK_SUPPORT_LEGACY_ADDRRECT',
'SK_LEGACY_DRAWPICTURECALLBACK',
], ],
}, },
} }

View File

@ -15,6 +15,7 @@
'skia_for_chromium_defines': [ 'skia_for_chromium_defines': [
'SK_SUPPORT_LEGACY_DRAWDATA', 'SK_SUPPORT_LEGACY_DRAWDATA',
'SK_SUPPORT_LEGACY_CANVAS_VIRTUAL', 'SK_SUPPORT_LEGACY_CANVAS_VIRTUAL',
'SK_LEGACY_DRAWPICTURECALLBACK',
], ],
}, },
} }

View File

@ -10,6 +10,9 @@
#include "SkTypes.h" #include "SkTypes.h"
#ifdef SK_LEGACY_DRAWPICTURECALLBACK
#include "SkPicture.h"
/** /**
* Subclasses of this can be passed to canvas.drawPicture(). During the drawing * Subclasses of this can be passed to canvas.drawPicture(). During the drawing
* of the picture, this callback will periodically be invoked. If its * of the picture, this callback will periodically be invoked. If its
@ -20,12 +23,12 @@
* calls to save(), restore will automatically be called to return the state * calls to save(), restore will automatically be called to return the state
* to the same level it was before the drawPicture call was made. * to the same level it was before the drawPicture call was made.
*/ */
class SK_API SkDrawPictureCallback { class SK_API SkDrawPictureCallback : public SkPicture::AbortCallback {
public: public:
SkDrawPictureCallback() {}
virtual ~SkDrawPictureCallback() {}
virtual bool abortDrawing() = 0; virtual bool abortDrawing() = 0;
};
#endif//SkDrawPictureCallback_DEFINED bool abort() SK_OVERRIDE { return this->abortDrawing(); }
};
#endif
#endif // SkDrawPictureCallback_DEFINED

View File

@ -9,8 +9,6 @@
#ifndef SkPicture_DEFINED #ifndef SkPicture_DEFINED
#define SkPicture_DEFINED #define SkPicture_DEFINED
#include "SkBitmap.h"
#include "SkDrawPictureCallback.h"
#include "SkImageDecoder.h" #include "SkImageDecoder.h"
#include "SkRefCnt.h" #include "SkRefCnt.h"
#include "SkTDArray.h" #include "SkTDArray.h"
@ -19,6 +17,7 @@
class GrContext; class GrContext;
#endif #endif
class SkBitmap;
class SkBBoxHierarchy; class SkBBoxHierarchy;
class SkCanvas; class SkCanvas;
class SkData; class SkData;
@ -102,6 +101,24 @@ public:
~SkPicture(); ~SkPicture();
/**
* Subclasses of this can be passed to playback(). During the playback
* of the picture, this callback will periodically be invoked. If its
* abort() returns true, then picture playback will be interrupted.
*
* The resulting drawing is undefined, as there is no guarantee how often the
* callback will be invoked. If the abort happens inside some level of nested
* calls to save(), restore will automatically be called to return the state
* to the same level it was before the playback call was made.
*/
class SK_API AbortCallback {
public:
AbortCallback() {}
virtual ~AbortCallback() {}
virtual bool abort() = 0;
};
/** Replays the drawing commands on the specified canvas. Note that /** Replays the drawing commands on the specified canvas. Note that
this has the effect of unfurling this picture into the destination this has the effect of unfurling this picture into the destination
canvas. Using the SkCanvas::drawPicture entry point gives the destination canvas. Using the SkCanvas::drawPicture entry point gives the destination
@ -109,7 +126,7 @@ public:
@param canvas the canvas receiving the drawing commands. @param canvas the canvas receiving the drawing commands.
@param callback a callback that allows interruption of playback @param callback a callback that allows interruption of playback
*/ */
void playback(SkCanvas* canvas, SkDrawPictureCallback* = NULL) const; void playback(SkCanvas* canvas, AbortCallback* = NULL) const;
/** Return the cull rect used when creating this picture: { 0, 0, cullWidth, cullHeight }. /** Return the cull rect used when creating this picture: { 0, 0, cullWidth, cullHeight }.
It does not necessarily reflect the bounds of what has been recorded into the picture. It does not necessarily reflect the bounds of what has been recorded into the picture.

View File

@ -15,7 +15,6 @@
#include "SkBitmapDevice.h" #include "SkBitmapDevice.h"
#include "SkCanvas.h" #include "SkCanvas.h"
#include "SkChunkAlloc.h" #include "SkChunkAlloc.h"
#include "SkDrawPictureCallback.h"
#include "SkMessageBus.h" #include "SkMessageBus.h"
#include "SkPaintPriv.h" #include "SkPaintPriv.h"
#include "SkPathEffect.h" #include "SkPathEffect.h"
@ -310,7 +309,7 @@ SkPicture::AccelData::Domain SkPicture::AccelData::GenerateDomain() {
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
void SkPicture::playback(SkCanvas* canvas, SkDrawPictureCallback* callback) const { void SkPicture::playback(SkCanvas* canvas, AbortCallback* callback) const {
SkASSERT(canvas); SkASSERT(canvas);
// If the query contains the whole picture, don't bother with the BBH. // If the query contains the whole picture, don't bother with the BBH.

View File

@ -5,14 +5,11 @@
* found in the LICENSE file. * found in the LICENSE file.
*/ */
#include <new> #include <new>
#include "SkBBoxHierarchy.h"
#include "SkDrawPictureCallback.h"
#include "SkPictureData.h" #include "SkPictureData.h"
#include "SkPictureRecord.h" #include "SkPictureRecord.h"
#include "SkReadBuffer.h" #include "SkReadBuffer.h"
#include "SkTextBlob.h" #include "SkTextBlob.h"
#include "SkTypeface.h" #include "SkTypeface.h"
#include "SkTSort.h"
#include "SkWriteBuffer.h" #include "SkWriteBuffer.h"
#if SK_SUPPORT_GPU #if SK_SUPPORT_GPU

View File

@ -65,7 +65,7 @@ static SkBitmap shallow_copy(const SkBitmap& bitmap) {
return bitmap; return bitmap;
} }
void SkPicturePlayback::draw(SkCanvas* canvas, SkDrawPictureCallback* callback) { void SkPicturePlayback::draw(SkCanvas* canvas, SkPicture::AbortCallback* callback) {
AutoResetOpID aroi(this); AutoResetOpID aroi(this);
SkASSERT(0 == fCurOffset); SkASSERT(0 == fCurOffset);
@ -77,7 +77,7 @@ void SkPicturePlayback::draw(SkCanvas* canvas, SkDrawPictureCallback* callback)
SkAutoCanvasRestore acr(canvas, false); SkAutoCanvasRestore acr(canvas, false);
while (!reader.eof()) { while (!reader.eof()) {
if (callback && callback->abortDrawing()) { if (callback && callback->abort()) {
return; return;
} }

View File

@ -12,7 +12,6 @@
class SkBitmap; class SkBitmap;
class SkCanvas; class SkCanvas;
class SkDrawPictureCallback;
class SkPaint; class SkPaint;
class SkPictureData; class SkPictureData;
@ -25,7 +24,7 @@ public:
} }
virtual ~SkPicturePlayback() { } virtual ~SkPicturePlayback() { }
virtual void draw(SkCanvas* canvas, SkDrawPictureCallback*); virtual void draw(SkCanvas* canvas, SkPicture::AbortCallback*);
// TODO: remove the curOp calls after cleaning up GrGatherDevice // TODO: remove the curOp calls after cleaning up GrGatherDevice
// Return the ID of the operation currently being executed when playing // Return the ID of the operation currently being executed when playing

View File

@ -15,7 +15,7 @@ void SkRecordDraw(const SkRecord& record,
SkCanvasDrawable* const drawables[], SkCanvasDrawable* const drawables[],
int drawableCount, int drawableCount,
const SkBBoxHierarchy* bbh, const SkBBoxHierarchy* bbh,
SkDrawPictureCallback* callback) { SkPicture::AbortCallback* callback) {
SkAutoCanvasRestore saveRestore(canvas, true /*save now, restore at exit*/); SkAutoCanvasRestore saveRestore(canvas, true /*save now, restore at exit*/);
if (bbh) { if (bbh) {
@ -34,7 +34,7 @@ void SkRecordDraw(const SkRecord& record,
SkRecords::Draw draw(canvas, drawablePicts, drawables, drawableCount); SkRecords::Draw draw(canvas, drawablePicts, drawables, drawableCount);
for (int i = 0; i < ops.count(); i++) { for (int i = 0; i < ops.count(); i++) {
if (callback && callback->abortDrawing()) { if (callback && callback->abort()) {
return; return;
} }
// This visit call uses the SkRecords::Draw::operator() to call // This visit call uses the SkRecords::Draw::operator() to call
@ -46,7 +46,7 @@ void SkRecordDraw(const SkRecord& record,
// Draw all ops. // Draw all ops.
SkRecords::Draw draw(canvas, drawablePicts, drawables, drawableCount); SkRecords::Draw draw(canvas, drawablePicts, drawables, drawableCount);
for (unsigned i = 0; i < record.count(); i++) { for (unsigned i = 0; i < record.count(); i++) {
if (callback && callback->abortDrawing()) { if (callback && callback->abort()) {
return; return;
} }
// This visit call uses the SkRecords::Draw::operator() to call // This visit call uses the SkRecords::Draw::operator() to call

View File

@ -10,7 +10,6 @@
#include "SkBBoxHierarchy.h" #include "SkBBoxHierarchy.h"
#include "SkCanvas.h" #include "SkCanvas.h"
#include "SkDrawPictureCallback.h"
#include "SkMatrix.h" #include "SkMatrix.h"
#include "SkRecord.h" #include "SkRecord.h"
@ -27,7 +26,7 @@ void SkRecordComputeLayers(const SkRect& cullRect, const SkRecord& record,
// Draw an SkRecord into an SkCanvas. A convenience wrapper around SkRecords::Draw. // Draw an SkRecord into an SkCanvas. A convenience wrapper around SkRecords::Draw.
void SkRecordDraw(const SkRecord&, SkCanvas*, SkPicture const* const drawablePicts[], void SkRecordDraw(const SkRecord&, SkCanvas*, SkPicture const* const drawablePicts[],
SkCanvasDrawable* const drawables[], int drawableCount, SkCanvasDrawable* const drawables[], int drawableCount,
const SkBBoxHierarchy*, SkDrawPictureCallback*); const SkBBoxHierarchy*, SkPicture::AbortCallback*);
// Draw a portion of an SkRecord into an SkCanvas. // Draw a portion of an SkRecord into an SkCanvas.
// When drawing a portion of an SkRecord the CTM on the passed in canvas must be // When drawing a portion of an SkRecord the CTM on the passed in canvas must be

View File

@ -55,7 +55,7 @@ public:
const SkPicture* topLevelPicture, const SkPicture* topLevelPicture,
const SkPicture* picture, const SkPicture* picture,
const SkMatrix& initialMatrix, const SkMatrix& initialMatrix,
SkDrawPictureCallback* callback, SkPicture::AbortCallback* callback,
const unsigned* opIndices, int numIndices) const unsigned* opIndices, int numIndices)
: INHERITED(canvas, drawablePicts, NULL, drawableCount) : INHERITED(canvas, drawablePicts, NULL, drawableCount)
, fCanvas(canvas) , fCanvas(canvas)
@ -92,7 +92,7 @@ public:
bbh->search(query, &fOps); bbh->search(query, &fOps);
for (fIndex = 0; fIndex < fOps.count(); ++fIndex) { for (fIndex = 0; fIndex < fOps.count(); ++fIndex) {
if (fCallback && fCallback->abortDrawing()) { if (fCallback && fCallback->abort()) {
return fNumReplaced; return fNumReplaced;
} }
@ -101,7 +101,7 @@ public:
} else { } else {
for (fIndex = 0; fIndex < (int) record->count(); ++fIndex) { for (fIndex = 0; fIndex < (int) record->count(); ++fIndex) {
if (fCallback && fCallback->abortDrawing()) { if (fCallback && fCallback->abort()) {
return fNumReplaced; return fNumReplaced;
} }
@ -181,19 +181,19 @@ public:
} }
private: private:
SkCanvas* fCanvas; SkCanvas* fCanvas;
GrLayerCache* fLayerCache; GrLayerCache* fLayerCache;
const SkPicture* fTopLevelPicture; const SkPicture* fTopLevelPicture;
const SkPicture* fPicture; const SkPicture* fPicture;
const SkMatrix fInitialMatrix; const SkMatrix fInitialMatrix;
SkDrawPictureCallback* fCallback; SkPicture::AbortCallback* fCallback;
SkTDArray<unsigned> fOps; SkTDArray<unsigned> fOps;
int fIndex; int fIndex;
int fNumReplaced; int fNumReplaced;
// The op code indices of all the enclosing drawPicture and saveLayer calls // The op code indices of all the enclosing drawPicture and saveLayer calls
SkTDArray<unsigned> fOpIndexStack; SkTDArray<unsigned> fOpIndexStack;
typedef Draw INHERITED; typedef Draw INHERITED;
}; };
@ -202,7 +202,7 @@ int GrRecordReplaceDraw(const SkPicture* picture,
SkCanvas* canvas, SkCanvas* canvas,
GrLayerCache* layerCache, GrLayerCache* layerCache,
const SkMatrix& initialMatrix, const SkMatrix& initialMatrix,
SkDrawPictureCallback* callback) { SkPicture::AbortCallback* callback) {
SkAutoCanvasRestore saveRestore(canvas, true /*save now, restore at exit*/); SkAutoCanvasRestore saveRestore(canvas, true /*save now, restore at exit*/);
// TODO: drawablePicts? // TODO: drawablePicts?

View File

@ -8,12 +8,11 @@
#ifndef GrRecordReplaceDraw_DEFINED #ifndef GrRecordReplaceDraw_DEFINED
#define GrRecordReplaceDraw_DEFINED #define GrRecordReplaceDraw_DEFINED
#include "SkDrawPictureCallback.h" #include "SkPicture.h"
class GrLayerCache; class GrLayerCache;
class SkCanvas; class SkCanvas;
class SkMatrix; class SkMatrix;
class SkPicture;
// Draw an SkPicture into an SkCanvas replacing saveLayer/restore blocks with // Draw an SkPicture into an SkCanvas replacing saveLayer/restore blocks with
// drawBitmap calls. A convenience wrapper around SkRecords::Draw. // drawBitmap calls. A convenience wrapper around SkRecords::Draw.
@ -22,6 +21,6 @@ int GrRecordReplaceDraw(const SkPicture*,
SkCanvas*, SkCanvas*,
GrLayerCache* layerCache, GrLayerCache* layerCache,
const SkMatrix& initialMatrix, const SkMatrix& initialMatrix,
SkDrawPictureCallback*); SkPicture::AbortCallback*);
#endif // GrRecordReplaceDraw_DEFINED #endif // GrRecordReplaceDraw_DEFINED

View File

@ -9,7 +9,6 @@
#include "RecordTestUtils.h" #include "RecordTestUtils.h"
#include "SkDebugCanvas.h" #include "SkDebugCanvas.h"
#include "SkDrawPictureCallback.h"
#include "SkDropShadowImageFilter.h" #include "SkDropShadowImageFilter.h"
#include "SkImagePriv.h" #include "SkImagePriv.h"
#include "SkRecord.h" #include "SkRecord.h"
@ -21,11 +20,11 @@
static const int W = 1920, H = 1080; static const int W = 1920, H = 1080;
class JustOneDraw : public SkDrawPictureCallback { class JustOneDraw : public SkPicture::AbortCallback {
public: public:
JustOneDraw() : fCalls(0) {} JustOneDraw() : fCalls(0) {}
virtual bool abortDrawing() SK_OVERRIDE { return fCalls++ > 0; } virtual bool abort() SK_OVERRIDE { return fCalls++ > 0; }
private: private:
int fCalls; int fCalls;
}; };

View File

@ -22,11 +22,11 @@
static const int kWidth = 100; static const int kWidth = 100;
static const int kHeight = 100; static const int kHeight = 100;
class JustOneDraw : public SkDrawPictureCallback { class JustOneDraw : public SkPicture::AbortCallback {
public: public:
JustOneDraw() : fCalls(0) {} JustOneDraw() : fCalls(0) {}
virtual bool abortDrawing() SK_OVERRIDE { return fCalls++ > 0; } virtual bool abort() SK_OVERRIDE { return fCalls++ > 0; }
private: private:
int fCalls; int fCalls;
}; };