OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #ifndef GrClipMaskCache_DEFINED | 8 #ifndef GrClipMaskCache_DEFINED |
9 #define GrClipMaskCache_DEFINED | 9 #define GrClipMaskCache_DEFINED |
10 | 10 |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
85 return SkClipStack::kInvalidGenID; | 85 return SkClipStack::kInvalidGenID; |
86 } | 86 } |
87 | 87 |
88 return ((GrClipStackFrame*) fStack.back())->fLastClipGenID; | 88 return ((GrClipStackFrame*) fStack.back())->fLastClipGenID; |
89 } | 89 } |
90 | 90 |
91 GrTexture* getLastMask() { | 91 GrTexture* getLastMask() { |
92 | 92 |
93 if (fStack.empty()) { | 93 if (fStack.empty()) { |
94 SkASSERT(false); | 94 SkASSERT(false); |
95 return NULL; | 95 return nullptr; |
96 } | 96 } |
97 | 97 |
98 GrClipStackFrame* back = (GrClipStackFrame*) fStack.back(); | 98 GrClipStackFrame* back = (GrClipStackFrame*) fStack.back(); |
99 | 99 |
100 return back->fLastMask; | 100 return back->fLastMask; |
101 } | 101 } |
102 | 102 |
103 const GrTexture* getLastMask() const { | 103 const GrTexture* getLastMask() const { |
104 | 104 |
105 if (fStack.empty()) { | 105 if (fStack.empty()) { |
106 SkASSERT(false); | 106 SkASSERT(false); |
107 return NULL; | 107 return nullptr; |
108 } | 108 } |
109 | 109 |
110 GrClipStackFrame* back = (GrClipStackFrame*) fStack.back(); | 110 GrClipStackFrame* back = (GrClipStackFrame*) fStack.back(); |
111 | 111 |
112 return back->fLastMask; | 112 return back->fLastMask; |
113 } | 113 } |
114 | 114 |
115 void acquireMask(int32_t clipGenID, | 115 void acquireMask(int32_t clipGenID, |
116 const GrSurfaceDesc& desc, | 116 const GrSurfaceDesc& desc, |
117 const SkIRect& bound) { | 117 const SkIRect& bound) { |
(...skipping 10 matching lines...) Expand all Loading... |
128 | 128 |
129 int getLastMaskWidth() const { | 129 int getLastMaskWidth() const { |
130 | 130 |
131 if (fStack.empty()) { | 131 if (fStack.empty()) { |
132 SkASSERT(false); | 132 SkASSERT(false); |
133 return -1; | 133 return -1; |
134 } | 134 } |
135 | 135 |
136 GrClipStackFrame* back = (GrClipStackFrame*) fStack.back(); | 136 GrClipStackFrame* back = (GrClipStackFrame*) fStack.back(); |
137 | 137 |
138 if (NULL == back->fLastMask) { | 138 if (nullptr == back->fLastMask) { |
139 return -1; | 139 return -1; |
140 } | 140 } |
141 | 141 |
142 return back->fLastMask->width(); | 142 return back->fLastMask->width(); |
143 } | 143 } |
144 | 144 |
145 int getLastMaskHeight() const { | 145 int getLastMaskHeight() const { |
146 | 146 |
147 if (fStack.empty()) { | 147 if (fStack.empty()) { |
148 SkASSERT(false); | 148 SkASSERT(false); |
149 return -1; | 149 return -1; |
150 } | 150 } |
151 | 151 |
152 GrClipStackFrame* back = (GrClipStackFrame*) fStack.back(); | 152 GrClipStackFrame* back = (GrClipStackFrame*) fStack.back(); |
153 | 153 |
154 if (NULL == back->fLastMask) { | 154 if (nullptr == back->fLastMask) { |
155 return -1; | 155 return -1; |
156 } | 156 } |
157 | 157 |
158 return back->fLastMask->height(); | 158 return back->fLastMask->height(); |
159 } | 159 } |
160 | 160 |
161 void getLastBound(SkIRect* bound) const { | 161 void getLastBound(SkIRect* bound) const { |
162 | 162 |
163 if (fStack.empty()) { | 163 if (fStack.empty()) { |
164 SkASSERT(false); | 164 SkASSERT(false); |
165 bound->setEmpty(); | 165 bound->setEmpty(); |
166 return; | 166 return; |
167 } | 167 } |
168 | 168 |
169 GrClipStackFrame* back = (GrClipStackFrame*) fStack.back(); | 169 GrClipStackFrame* back = (GrClipStackFrame*) fStack.back(); |
170 | 170 |
171 *bound = back->fLastBound; | 171 *bound = back->fLastBound; |
172 } | 172 } |
173 | 173 |
174 // TODO: Remove this when we hold cache keys instead of refs to textures. | 174 // TODO: Remove this when we hold cache keys instead of refs to textures. |
175 void purgeResources() { | 175 void purgeResources() { |
176 SkDeque::F2BIter iter(fStack); | 176 SkDeque::F2BIter iter(fStack); |
177 for (GrClipStackFrame* frame = (GrClipStackFrame*) iter.next(); | 177 for (GrClipStackFrame* frame = (GrClipStackFrame*) iter.next(); |
178 frame != NULL; | 178 frame != nullptr; |
179 frame = (GrClipStackFrame*) iter.next()) { | 179 frame = (GrClipStackFrame*) iter.next()) { |
180 frame->reset(); | 180 frame->reset(); |
181 } | 181 } |
182 } | 182 } |
183 | 183 |
184 private: | 184 private: |
185 struct GrClipStackFrame { | 185 struct GrClipStackFrame { |
186 | 186 |
187 GrClipStackFrame() { | 187 GrClipStackFrame() { |
188 this->reset(); | 188 this->reset(); |
(...skipping 12 matching lines...) Expand all Loading... |
201 fLastMask.reset(resourceProvider->createApproxTexture(desc, kFlags))
; | 201 fLastMask.reset(resourceProvider->createApproxTexture(desc, kFlags))
; |
202 | 202 |
203 fLastBound = bound; | 203 fLastBound = bound; |
204 } | 204 } |
205 | 205 |
206 void reset () { | 206 void reset () { |
207 fLastClipGenID = SkClipStack::kInvalidGenID; | 207 fLastClipGenID = SkClipStack::kInvalidGenID; |
208 | 208 |
209 GrSurfaceDesc desc; | 209 GrSurfaceDesc desc; |
210 | 210 |
211 fLastMask.reset(NULL); | 211 fLastMask.reset(nullptr); |
212 fLastBound.setEmpty(); | 212 fLastBound.setEmpty(); |
213 } | 213 } |
214 | 214 |
215 int32_t fLastClipGenID; | 215 int32_t fLastClipGenID; |
216 // The mask's width & height values are used by GrClipMaskManager to cor
rectly scale the | 216 // The mask's width & height values are used by GrClipMaskManager to cor
rectly scale the |
217 // texture coords for the geometry drawn with this mask. TODO: This shou
ld be a cache key | 217 // texture coords for the geometry drawn with this mask. TODO: This shou
ld be a cache key |
218 // and not a hard ref to a texture. | 218 // and not a hard ref to a texture. |
219 SkAutoTUnref<GrTexture> fLastMask; | 219 SkAutoTUnref<GrTexture> fLastMask; |
220 // fLastBound stores the bounding box of the clip mask in clip-stack spa
ce. This rect is | 220 // fLastBound stores the bounding box of the clip mask in clip-stack spa
ce. This rect is |
221 // used by GrClipMaskManager to position a rect and compute texture coor
ds for the mask. | 221 // used by GrClipMaskManager to position a rect and compute texture coor
ds for the mask. |
222 SkIRect fLastBound; | 222 SkIRect fLastBound; |
223 }; | 223 }; |
224 | 224 |
225 SkDeque fStack; | 225 SkDeque fStack; |
226 GrResourceProvider* fResourceProvider; | 226 GrResourceProvider* fResourceProvider; |
227 | 227 |
228 typedef SkNoncopyable INHERITED; | 228 typedef SkNoncopyable INHERITED; |
229 }; | 229 }; |
230 | 230 |
231 #endif // GrClipMaskCache_DEFINED | 231 #endif // GrClipMaskCache_DEFINED |
OLD | NEW |