Index: src/core/SkPictureStateTree.h |
diff --git a/src/core/SkPictureStateTree.h b/src/core/SkPictureStateTree.h |
deleted file mode 100644 |
index 15bb02f354860f4ef871712d2d19789b3c7f65d3..0000000000000000000000000000000000000000 |
--- a/src/core/SkPictureStateTree.h |
+++ /dev/null |
@@ -1,162 +0,0 @@ |
- |
-/* |
- * Copyright 2012 Google Inc. |
- * |
- * Use of this source code is governed by a BSD-style license that can be |
- * found in the LICENSE file. |
- */ |
- |
-#ifndef SkPictureStateTree_DEFINED |
-#define SkPictureStateTree_DEFINED |
- |
-#include "SkTDArray.h" |
-#include "SkChunkAlloc.h" |
-#include "SkDeque.h" |
-#include "SkMatrix.h" |
-#include "SkRefCnt.h" |
- |
-class SkCanvas; |
- |
-/** |
- * Provides an interface that, given a sequence of draws into an SkPicture with corresponding |
- * offsets, allows for playback of an arbitrary subset of the draws (note that Z-order is only |
- * guaranteed if the draws are explicitly sorted). |
- */ |
-class SkPictureStateTree : public SkRefCnt { |
-private: |
- struct Node; |
-public: |
- SK_DECLARE_INST_COUNT(SkPictureStateTree) |
- |
- /** |
- * A draw call, stores offset into command buffer, a pointer to the matrix, and a pointer to |
- * the node in the tree that corresponds to its clip/layer state |
- */ |
- struct Draw { |
- SkMatrix* fMatrix; |
- Node* fNode; |
- uint32_t fOffset; |
- bool operator<(const Draw& other) const { return fOffset < other.fOffset; } |
- }; |
- |
- class Iterator; |
- |
- SkPictureStateTree(); |
- ~SkPictureStateTree(); |
- |
- /** |
- * Creates and returns a struct representing a draw at the given offset. |
- */ |
- Draw* appendDraw(size_t offset); |
- |
- /** |
- * Given a list of draws, and a canvas, initialize an iterator that produces the correct |
- * sequence of offsets into the command buffer to carry out those calls with correct |
- * matrix/clip state. This handles saves/restores, and does all necessary matrix setup. |
- */ |
- void initIterator(SkPictureStateTree::Iterator* iter, |
- const SkTDArray<void*>& draws, |
- SkCanvas* canvas); |
- |
- void appendSave(); |
- void appendSaveLayer(size_t offset); |
- void appendRestore(); |
- void appendTransform(const SkMatrix& trans); |
- void appendClip(size_t offset); |
- |
- /** |
- * Call this immediately after an appendRestore call that is associated |
- * a save or saveLayer that was removed from the command stream |
- * due to a command pattern optimization in SkPicture. |
- */ |
- void saveCollapsed(); |
- |
- /** |
- * Playback helper |
- */ |
- class Iterator { |
- public: |
- /** Returns the next op offset needed to create the drawing state |
- required by the queued up draw operation or the offset of the queued |
- up draw operation itself. In the latter case, the next draw operation |
- will move into the queued up slot. |
- It retuns kDrawComplete when done. |
- TODO: this might be better named nextOp |
- */ |
- uint32_t nextDraw(); |
- static const uint32_t kDrawComplete = SK_MaxU32; |
- Iterator() : fValid(false) { } |
- bool isValid() const { return fValid; } |
- |
- private: |
- void init(const SkTDArray<void*>& draws, SkCanvas* canvas, Node* root); |
- |
- void setCurrentMatrix(const SkMatrix*); |
- |
- // The draws this iterator is associated with |
- const SkTDArray<void*>* fDraws; |
- |
- // canvas this is playing into (so we can insert saves/restores as necessary) |
- SkCanvas* fCanvas; |
- |
- // current state node |
- Node* fCurrentNode; |
- |
- // List of nodes whose state we need to apply to reach TargetNode |
- SkTDArray<Node*> fNodes; |
- |
- // The matrix of the canvas we're playing back into |
- SkMatrix fPlaybackMatrix; |
- |
- // Cache of current matrix, so we can avoid redundantly setting it |
- const SkMatrix* fCurrentMatrix; |
- |
- // current position in the array of draws |
- int fPlaybackIndex; |
- // Whether or not we need to do a save next iteration |
- bool fSave; |
- |
- // Whether or not this is a valid iterator (the default public constructor sets this false) |
- bool fValid; |
- |
- uint32_t finish(); |
- |
- friend class SkPictureStateTree; |
- }; |
- |
-private: |
- |
- void appendNode(size_t offset); |
- |
- SkChunkAlloc fAlloc; |
- // Needed by saveCollapsed() because nodes do not currently store |
- // references to their children. If they did, we could just retrieve the |
- // last added child. |
- Node* fLastRestoredNode; |
- |
- // The currently active state |
- Draw fCurrentState; |
- // A stack of states for tracking save/restores |
- SkDeque fStateStack; |
- |
- // Represents a notable piece of state that requires an offset into the command buffer, |
- // corresponding to a clip/saveLayer/etc call, to apply. |
- struct Node { |
- Node* fParent; |
- uint32_t fOffset; |
- uint16_t fLevel; |
- uint16_t fFlags; |
- SkMatrix* fMatrix; |
- enum Flags { |
- kSave_Flag = 0x1, |
- kSaveLayer_Flag = 0x2 |
- }; |
- }; |
- |
- Node fRoot; |
- SkMatrix fRootMatrix; |
- |
- typedef SkRefCnt INHERITED; |
-}; |
- |
-#endif |