diff options
Diffstat (limited to 'src/core/SkPictureStateTree.cpp')
-rw-r--r-- | src/core/SkPictureStateTree.cpp | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/src/core/SkPictureStateTree.cpp b/src/core/SkPictureStateTree.cpp index fdd86464a9..d2f0e6efcd 100644 --- a/src/core/SkPictureStateTree.cpp +++ b/src/core/SkPictureStateTree.cpp @@ -73,9 +73,10 @@ void SkPictureStateTree::appendClip(size_t offset) { this->appendNode(offset); } -SkPictureStateTree::Iterator SkPictureStateTree::getIterator(const SkTDArray<void*>& draws, - SkCanvas* canvas) { - return Iterator(draws, canvas, &fRoot); +void SkPictureStateTree::initIterator(SkPictureStateTree::Iterator* iter, + const SkTDArray<void*>& draws, + SkCanvas* canvas) { + iter->init(draws, canvas, &fRoot); } void SkPictureStateTree::appendNode(size_t offset) { @@ -88,15 +89,16 @@ void SkPictureStateTree::appendNode(size_t offset) { fCurrentState.fNode = n; } -SkPictureStateTree::Iterator::Iterator(const SkTDArray<void*>& draws, SkCanvas* canvas, Node* root) - : fDraws(&draws) - , fCanvas(canvas) - , fCurrentNode(root) - , fPlaybackMatrix(canvas->getTotalMatrix()) - , fCurrentMatrix(NULL) - , fPlaybackIndex(0) - , fSave(false) - , fValid(true) { +void SkPictureStateTree::Iterator::init(const SkTDArray<void*>& draws, SkCanvas* canvas, Node* root) { + SkASSERT(!fValid); + fDraws = &draws; + fCanvas = canvas; + fCurrentNode = root; + fPlaybackMatrix = canvas->getTotalMatrix(); + fCurrentMatrix = NULL; + fPlaybackIndex = 0; + fSave = false; + fValid = true; } void SkPictureStateTree::Iterator::setCurrentMatrix(const SkMatrix* matrix) { |