| Index: src/core/SkRecordDraw.h
|
| diff --git a/src/core/SkRecordDraw.h b/src/core/SkRecordDraw.h
|
| index 033b76d34ae5d1cc0934a7d347a3f2136ff92c7e..75921d182fd3de1e5596114b7fce2e033cba696c 100644
|
| --- a/src/core/SkRecordDraw.h
|
| +++ b/src/core/SkRecordDraw.h
|
| @@ -11,6 +11,7 @@
|
| #include "SkBBoxHierarchy.h"
|
| #include "SkCanvas.h"
|
| #include "SkDrawPictureCallback.h"
|
| +#include "SkMatrix.h"
|
| #include "SkRecord.h"
|
|
|
| // Fill a BBH to be used by SkRecordDraw to accelerate playback.
|
| @@ -20,15 +21,21 @@ void SkRecordFillBounds(const SkRecord&, SkBBoxHierarchy*);
|
| void SkRecordDraw(const SkRecord&, SkCanvas*, const SkBBoxHierarchy*, SkDrawPictureCallback*);
|
|
|
| // Draw a portion of an SkRecord into an SkCanvas while replacing clears with drawRects.
|
| -void SkRecordPartialDraw(const SkRecord&, SkCanvas*, const SkRect&, unsigned start, unsigned stop);
|
| +// 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,
|
| + const SkMatrix& initialCTM);
|
|
|
| namespace SkRecords {
|
|
|
| // This is an SkRecord visitor that will draw that SkRecord to an SkCanvas.
|
| class Draw : SkNoncopyable {
|
| public:
|
| - explicit Draw(SkCanvas* canvas)
|
| - : fInitialCTM(canvas->getTotalMatrix()), fCanvas(canvas) {}
|
| + explicit Draw(SkCanvas* canvas, const SkMatrix* initialCTM = NULL)
|
| + : fInitialCTM(initialCTM ? *initialCTM : canvas->getTotalMatrix())
|
| + , fCanvas(canvas) {}
|
|
|
| template <typename T> void operator()(const T& r) {
|
| this->draw(r);
|
| @@ -45,8 +52,8 @@ private:
|
| // Used by SkRecordPartialDraw.
|
| class PartialDraw : public Draw {
|
| public:
|
| - PartialDraw(SkCanvas* canvas, const SkRect& clearRect)
|
| - : INHERITED(canvas), fClearRect(clearRect) {}
|
| + PartialDraw(SkCanvas* canvas, const SkRect& clearRect, const SkMatrix& initialCTM)
|
| + : INHERITED(canvas, &initialCTM), fClearRect(clearRect) {}
|
|
|
| // Same as Draw for all ops except Clear.
|
| template <typename T> void operator()(const T& r) {
|
|
|