aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/core
diff options
context:
space:
mode:
Diffstat (limited to 'include/core')
-rw-r--r--include/core/SkDrawPictureCallback.h13
-rw-r--r--include/core/SkPicture.h23
2 files changed, 28 insertions, 8 deletions
diff --git a/include/core/SkDrawPictureCallback.h b/include/core/SkDrawPictureCallback.h
index d5a360ee8e..ea30f59a24 100644
--- a/include/core/SkDrawPictureCallback.h
+++ b/include/core/SkDrawPictureCallback.h
@@ -10,6 +10,9 @@
#include "SkTypes.h"
+#ifdef SK_LEGACY_DRAWPICTURECALLBACK
+#include "SkPicture.h"
+
/**
* Subclasses of this can be passed to canvas.drawPicture(). During the drawing
* 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
* to the same level it was before the drawPicture call was made.
*/
-class SK_API SkDrawPictureCallback {
+class SK_API SkDrawPictureCallback : public SkPicture::AbortCallback {
public:
- SkDrawPictureCallback() {}
- virtual ~SkDrawPictureCallback() {}
-
virtual bool abortDrawing() = 0;
+
+ bool abort() SK_OVERRIDE { return this->abortDrawing(); }
};
+#endif
-#endif//SkDrawPictureCallback_DEFINED
+#endif // SkDrawPictureCallback_DEFINED
diff --git a/include/core/SkPicture.h b/include/core/SkPicture.h
index 35b4d056a5..a1493eb9a1 100644
--- a/include/core/SkPicture.h
+++ b/include/core/SkPicture.h
@@ -9,8 +9,6 @@
#ifndef SkPicture_DEFINED
#define SkPicture_DEFINED
-#include "SkBitmap.h"
-#include "SkDrawPictureCallback.h"
#include "SkImageDecoder.h"
#include "SkRefCnt.h"
#include "SkTDArray.h"
@@ -19,6 +17,7 @@
class GrContext;
#endif
+class SkBitmap;
class SkBBoxHierarchy;
class SkCanvas;
class SkData;
@@ -102,6 +101,24 @@ public:
~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 AbortCallback {
+ public:
+ AbortCallback() {}
+ virtual ~AbortCallback() {}
+
+ virtual bool abort() = 0;
+ };
+
/** Replays the drawing commands on the specified canvas. Note that
this has the effect of unfurling this picture into 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 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 }.
It does not necessarily reflect the bounds of what has been recorded into the picture.