Index: src/core/SkRecordDraw.h |
diff --git a/src/core/SkRecordDraw.h b/src/core/SkRecordDraw.h |
index 9b39dd6adb903ab534ada47194af2ff11a601d07..8ea1bbd72fdc79e9fc63b488f31ba917512a4729 100644 |
--- a/src/core/SkRecordDraw.h |
+++ b/src/core/SkRecordDraw.h |
@@ -23,14 +23,17 @@ void SkRecordComputeLayers(const SkRect& cullRect, const SkRecord& record, |
SkBBoxHierarchy* bbh, SkLayerInfo* data); |
// Draw an SkRecord into an SkCanvas. A convenience wrapper around SkRecords::Draw. |
-void SkRecordDraw(const SkRecord&, SkCanvas*, const SkBBoxHierarchy*, SkDrawPictureCallback*); |
+void SkRecordDraw(const SkRecord&, SkCanvas*, SkPicture const* const drawablePicts[], int drawableCount, |
+ const SkBBoxHierarchy*, SkDrawPictureCallback*); |
// Draw a portion of an SkRecord into an SkCanvas while replacing clears with drawRects. |
// When drawing a portion of an SkRecord the CTM on the passed in canvas must be |
// the composition of the replay matrix with the record-time CTM (for the portion |
// of the record that is being replayed). For setMatrix calls to behave correctly |
// the initialCTM parameter must set to just the replay matrix. |
-void SkRecordPartialDraw(const SkRecord&, SkCanvas*, const SkRect&, unsigned start, unsigned stop, |
+void SkRecordPartialDraw(const SkRecord&, SkCanvas*, |
+ SkPicture const* const drawablePicts[], int drawableCount, |
+ const SkRect&, unsigned start, unsigned stop, |
const SkMatrix& initialCTM); |
namespace SkRecords { |
@@ -38,9 +41,13 @@ namespace SkRecords { |
// This is an SkRecord visitor that will draw that SkRecord to an SkCanvas. |
class Draw : SkNoncopyable { |
public: |
- explicit Draw(SkCanvas* canvas, const SkMatrix* initialCTM = NULL) |
+ explicit Draw(SkCanvas* canvas, SkPicture const* const drawablePicts[], int drawableCount, |
+ const SkMatrix* initialCTM = NULL) |
: fInitialCTM(initialCTM ? *initialCTM : canvas->getTotalMatrix()) |
- , fCanvas(canvas) {} |
+ , fCanvas(canvas) |
+ , fDrawablePicts(drawablePicts) |
+ , fDrawableCount(drawableCount) |
+ {} |
// This operator calls methods on the |canvas|. The various draw() wrapper |
// methods around SkCanvas are defined by the DRAW() macro in |
@@ -49,19 +56,26 @@ public: |
this->draw(r); |
} |
+protected: |
+ SkPicture const* const* drawablePicts() const { return fDrawablePicts; } |
+ int drawableCount() const { return fDrawableCount; } |
+ |
private: |
// No base case, so we'll be compile-time checked that we implement all possibilities. |
template <typename T> void draw(const T&); |
const SkMatrix fInitialCTM; |
SkCanvas* fCanvas; |
+ SkPicture const* const* fDrawablePicts; |
+ int fDrawableCount; |
}; |
// Used by SkRecordPartialDraw. |
class PartialDraw : public Draw { |
public: |
- PartialDraw(SkCanvas* canvas, const SkRect& clearRect, const SkMatrix& initialCTM) |
- : INHERITED(canvas, &initialCTM), fClearRect(clearRect) {} |
+ PartialDraw(SkCanvas* canvas, SkPicture const* const drawablePicts[], int drawableCount, |
+ const SkRect& clearRect, const SkMatrix& initialCTM) |
+ : INHERITED(canvas, drawablePicts, drawableCount, &initialCTM), fClearRect(clearRect) {} |
// Same as Draw for all ops except Clear. |
template <typename T> void operator()(const T& r) { |