OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 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 #include "SkCanvas.h" | 8 #include "SkCanvas.h" |
9 #include "SkPictureData.h" | 9 #include "SkPictureData.h" |
10 #include "SkPicturePlayback.h" | 10 #include "SkPicturePlayback.h" |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
145 return; | 145 return; |
146 } | 146 } |
147 reader.setOffset(skipTo); | 147 reader.setOffset(skipTo); |
148 } | 148 } |
149 | 149 |
150 // Record this, so we can concat w/ it if we encounter a setMatrix() | 150 // Record this, so we can concat w/ it if we encounter a setMatrix() |
151 SkMatrix initialMatrix = canvas->getTotalMatrix(); | 151 SkMatrix initialMatrix = canvas->getTotalMatrix(); |
152 | 152 |
153 SkAutoCanvasRestore acr(canvas, false); | 153 SkAutoCanvasRestore acr(canvas, false); |
154 | 154 |
155 #ifdef SK_DEVELOPER | |
156 int opIndex = -1; | |
157 #endif | |
158 | |
159 while (!reader.eof()) { | 155 while (!reader.eof()) { |
160 if (callback && callback->abortDrawing()) { | 156 if (callback && callback->abortDrawing()) { |
161 return; | 157 return; |
162 } | 158 } |
163 | 159 |
164 if (NULL != fReplacements) { | 160 if (NULL != fReplacements) { |
165 // Potentially replace a block of operations with a single drawBitma
p call | 161 // Potentially replace a block of operations with a single drawBitma
p call |
166 SkPicturePlayback::PlaybackReplacements::ReplacementInfo* temp = | 162 SkPicturePlayback::PlaybackReplacements::ReplacementInfo* temp = |
167 fReplacements->lookupByStart(reader.offset()); | 163 fReplacements->lookupByStart(reader.offset()); |
168 if (NULL != temp) { | 164 if (NULL != temp) { |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 } | 221 } |
226 } | 222 } |
227 | 223 |
228 fCurOffset = reader.offset(); | 224 fCurOffset = reader.offset(); |
229 uint32_t size; | 225 uint32_t size; |
230 DrawType op = ReadOpAndSize(&reader, &size); | 226 DrawType op = ReadOpAndSize(&reader, &size); |
231 size_t skipTo = 0; | 227 size_t skipTo = 0; |
232 if (NOOP == op) { | 228 if (NOOP == op) { |
233 // NOOPs are to be ignored - do not propagate them any further | 229 // NOOPs are to be ignored - do not propagate them any further |
234 skipTo = fCurOffset + size; | 230 skipTo = fCurOffset + size; |
235 #ifdef SK_DEVELOPER | |
236 } else { | |
237 opIndex++; | |
238 if (this->preDraw(opIndex, op)) { | |
239 skipTo = fCurOffset + size; | |
240 } | |
241 #endif | |
242 } | 231 } |
243 | 232 |
244 if (0 != skipTo) { | 233 if (0 != skipTo) { |
245 if (it.isValid()) { | 234 if (it.isValid()) { |
246 // If using a bounding box hierarchy, advance the state tree | 235 // If using a bounding box hierarchy, advance the state tree |
247 // iterator until at or after skipTo | 236 // iterator until at or after skipTo |
248 uint32_t adjustedSkipTo; | 237 uint32_t adjustedSkipTo; |
249 do { | 238 do { |
250 adjustedSkipTo = it.nextDraw(); | 239 adjustedSkipTo = it.nextDraw(); |
251 } while (adjustedSkipTo < skipTo); | 240 } while (adjustedSkipTo < skipTo); |
252 skipTo = adjustedSkipTo; | 241 skipTo = adjustedSkipTo; |
253 } | 242 } |
254 if (kDrawComplete == skipTo) { | 243 if (kDrawComplete == skipTo) { |
255 break; | 244 break; |
256 } | 245 } |
257 reader.setOffset(skipTo); | 246 reader.setOffset(skipTo); |
258 continue; | 247 continue; |
259 } | 248 } |
260 | 249 |
261 this->handleOp(&reader, op, size, canvas, initialMatrix); | 250 this->handleOp(&reader, op, size, canvas, initialMatrix); |
262 | 251 |
263 #ifdef SK_DEVELOPER | |
264 this->postDraw(opIndex); | |
265 #endif | |
266 | |
267 if (it.isValid()) { | 252 if (it.isValid()) { |
268 uint32_t skipTo = it.nextDraw(); | 253 uint32_t skipTo = it.nextDraw(); |
269 if (kDrawComplete == skipTo) { | 254 if (kDrawComplete == skipTo) { |
270 break; | 255 break; |
271 } | 256 } |
272 reader.setOffset(skipTo); | 257 reader.setOffset(skipTo); |
273 } | 258 } |
274 } | 259 } |
275 } | 260 } |
276 | 261 |
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
581 case TRANSLATE: { | 566 case TRANSLATE: { |
582 SkScalar dx = reader->readScalar(); | 567 SkScalar dx = reader->readScalar(); |
583 SkScalar dy = reader->readScalar(); | 568 SkScalar dy = reader->readScalar(); |
584 canvas->translate(dx, dy); | 569 canvas->translate(dx, dy); |
585 } break; | 570 } break; |
586 default: | 571 default: |
587 SkASSERT(0); | 572 SkASSERT(0); |
588 } | 573 } |
589 } | 574 } |
590 | 575 |
OLD | NEW |