Rename SkDrawPictureCallback to SkPicture::AbortCallback
Committed: https://skia.googlesource.com/skia/+/7ef197255deb4e2fa64c03c7130d56ddf164e83c Review URL: https://codereview.chromium.org/829983003
This commit is contained in:
parent
c56fb00373
commit
783fe16b8e
gyp
include/core
src
core
SkPicture.cppSkPictureData.cppSkPicturePlayback.cppSkPicturePlayback.hSkRecordDraw.cppSkRecordDraw.h
gpu
tests
@ -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',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -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',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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?
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
};
|
};
|
||||||
|
@ -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;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user