Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(806)

Side by Side Diff: src/core/SkPictureStateTree.h

Issue 378343002: Refactor SkPicturePlayback for SkPictureReplacementPlayback (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Move StepIterator to be next to SkipIterTo Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/core/SkPicturePlayback.cpp ('k') | src/core/SkPictureStateTree.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2012 Google Inc. 3 * Copyright 2012 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 #ifndef SkPictureStateTree_DEFINED 9 #ifndef SkPictureStateTree_DEFINED
10 #define SkPictureStateTree_DEFINED 10 #define SkPictureStateTree_DEFINED
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 43
44 SkPictureStateTree(); 44 SkPictureStateTree();
45 ~SkPictureStateTree(); 45 ~SkPictureStateTree();
46 46
47 /** 47 /**
48 * Creates and returns a struct representing a draw at the given offset. 48 * Creates and returns a struct representing a draw at the given offset.
49 */ 49 */
50 Draw* appendDraw(size_t offset); 50 Draw* appendDraw(size_t offset);
51 51
52 /** 52 /**
53 * Given a list of draws, and a canvas, returns an iterator that produces th e correct sequence 53 * Given a list of draws, and a canvas, initialize an iterator that produces the correct
54 * of offsets into the command buffer to carry out those calls with correct matrix/clip state. 54 * sequence of offsets into the command buffer to carry out those calls with correct
55 * This handles saves/restores, and does all necessary matrix setup. 55 * matrix/clip state. This handles saves/restores, and does all necessary ma trix setup.
56 */ 56 */
57 Iterator getIterator(const SkTDArray<void*>& draws, SkCanvas* canvas); 57 void initIterator(SkPictureStateTree::Iterator* iter,
58 const SkTDArray<void*>& draws,
59 SkCanvas* canvas);
58 60
59 void appendSave(); 61 void appendSave();
60 void appendSaveLayer(size_t offset); 62 void appendSaveLayer(size_t offset);
61 void appendRestore(); 63 void appendRestore();
62 void appendTransform(const SkMatrix& trans); 64 void appendTransform(const SkMatrix& trans);
63 void appendClip(size_t offset); 65 void appendClip(size_t offset);
64 66
65 /** 67 /**
66 * Call this immediately after an appendRestore call that is associated 68 * Call this immediately after an appendRestore call that is associated
67 * a save or saveLayer that was removed from the command stream 69 * a save or saveLayer that was removed from the command stream
68 * due to a command pattern optimization in SkPicture. 70 * due to a command pattern optimization in SkPicture.
69 */ 71 */
70 void saveCollapsed(); 72 void saveCollapsed();
71 73
72 /** 74 /**
73 * Playback helper 75 * Playback helper
74 */ 76 */
75 class Iterator { 77 class Iterator {
76 public: 78 public:
77 /** Returns the next op offset needed to create the drawing state 79 /** Returns the next op offset needed to create the drawing state
78 required by the queued up draw operation or the offset of the queued 80 required by the queued up draw operation or the offset of the queued
79 up draw operation itself. In the latter case, the next draw operatio n 81 up draw operation itself. In the latter case, the next draw operatio n
80 will move into the queued up slot. 82 will move into the queued up slot.
81 It retuns kDrawComplete when done. 83 It retuns kDrawComplete when done.
82 TODO: this might be better named nextOp 84 TODO: this might be better named nextOp
83 */ 85 */
84 uint32_t nextDraw(); 86 uint32_t nextDraw();
85 static const uint32_t kDrawComplete = SK_MaxU32; 87 static const uint32_t kDrawComplete = SK_MaxU32;
86 Iterator() : fPlaybackMatrix(), fValid(false) { } 88 Iterator() : fValid(false) { }
87 bool isValid() const { return fValid; } 89 bool isValid() const { return fValid; }
88 90
89 private: 91 private:
90 Iterator(const SkTDArray<void*>& draws, SkCanvas* canvas, Node* root); 92 void init(const SkTDArray<void*>& draws, SkCanvas* canvas, Node* root);
91 93
92 void setCurrentMatrix(const SkMatrix*); 94 void setCurrentMatrix(const SkMatrix*);
93 95
94 // The draws this iterator is associated with 96 // The draws this iterator is associated with
95 const SkTDArray<void*>* fDraws; 97 const SkTDArray<void*>* fDraws;
96 98
97 // canvas this is playing into (so we can insert saves/restores as neces sary) 99 // canvas this is playing into (so we can insert saves/restores as neces sary)
98 SkCanvas* fCanvas; 100 SkCanvas* fCanvas;
99 101
100 // current state node 102 // current state node
101 Node* fCurrentNode; 103 Node* fCurrentNode;
102 104
103 // List of nodes whose state we need to apply to reach TargetNode 105 // List of nodes whose state we need to apply to reach TargetNode
104 SkTDArray<Node*> fNodes; 106 SkTDArray<Node*> fNodes;
105 107
106 // The matrix of the canvas we're playing back into 108 // The matrix of the canvas we're playing back into
107 const SkMatrix fPlaybackMatrix; 109 SkMatrix fPlaybackMatrix;
108 110
109 // Cache of current matrix, so we can avoid redundantly setting it 111 // Cache of current matrix, so we can avoid redundantly setting it
110 const SkMatrix* fCurrentMatrix; 112 const SkMatrix* fCurrentMatrix;
111 113
112 // current position in the array of draws 114 // current position in the array of draws
113 int fPlaybackIndex; 115 int fPlaybackIndex;
114 // Whether or not we need to do a save next iteration 116 // Whether or not we need to do a save next iteration
115 bool fSave; 117 bool fSave;
116 118
117 // Whether or not this is a valid iterator (the default public construct or sets this false) 119 // Whether or not this is a valid iterator (the default public construct or sets this false)
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 }; 153 };
152 }; 154 };
153 155
154 Node fRoot; 156 Node fRoot;
155 SkMatrix fRootMatrix; 157 SkMatrix fRootMatrix;
156 158
157 typedef SkRefCnt INHERITED; 159 typedef SkRefCnt INHERITED;
158 }; 160 };
159 161
160 #endif 162 #endif
OLDNEW
« no previous file with comments | « src/core/SkPicturePlayback.cpp ('k') | src/core/SkPictureStateTree.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698