| 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 "SkRecordOpts.h" | 8 #include "SkRecordOpts.h" |
| 9 | 9 |
| 10 #include "SkRecordPattern.h" | 10 #include "SkRecordPattern.h" |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 struct SaveNoDrawsRestoreNooper { | 77 struct SaveNoDrawsRestoreNooper { |
| 78 // Star matches greedily, so we also have to exclude Save and Restore. | 78 // Star matches greedily, so we also have to exclude Save and Restore. |
| 79 typedef Pattern3<Is<Save>, | 79 typedef Pattern3<Is<Save>, |
| 80 Star<Not<Or3<Is<Save>, | 80 Star<Not<Or3<Is<Save>, |
| 81 Is<Restore>, | 81 Is<Restore>, |
| 82 IsDraw> > >, | 82 IsDraw> > >, |
| 83 Is<Restore> > | 83 Is<Restore> > |
| 84 Pattern; | 84 Pattern; |
| 85 | 85 |
| 86 bool onMatch(SkRecord* record, Pattern* pattern, unsigned begin, unsigned en
d) { | 86 bool onMatch(SkRecord* record, Pattern* pattern, unsigned begin, unsigned en
d) { |
| 87 // If restore doesn't revert both matrix and clip, this isn't safe to no
op away. | |
| 88 if (pattern->first<Save>()->flags != SkCanvas::kMatrixClip_SaveFlag) { | |
| 89 return false; | |
| 90 } | |
| 91 | |
| 92 // The entire span between Save and Restore (inclusively) does nothing. | 87 // The entire span between Save and Restore (inclusively) does nothing. |
| 93 for (unsigned i = begin; i < end; i++) { | 88 for (unsigned i = begin; i < end; i++) { |
| 94 record->replace<NoOp>(i); | 89 record->replace<NoOp>(i); |
| 95 } | 90 } |
| 96 return true; | 91 return true; |
| 97 } | 92 } |
| 98 }; | 93 }; |
| 99 void SkRecordNoopSaveRestores(SkRecord* record) { | 94 void SkRecordNoopSaveRestores(SkRecord* record) { |
| 100 SaveOnlyDrawsRestoreNooper onlyDraws; | 95 SaveOnlyDrawsRestoreNooper onlyDraws; |
| 101 SaveNoDrawsRestoreNooper noDraws; | 96 SaveNoDrawsRestoreNooper noDraws; |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 294 }; | 289 }; |
| 295 | 290 |
| 296 SkTDArray<Pair> fPushStack; | 291 SkTDArray<Pair> fPushStack; |
| 297 SkRecord* fRecord; | 292 SkRecord* fRecord; |
| 298 unsigned fIndex; | 293 unsigned fIndex; |
| 299 }; | 294 }; |
| 300 void SkRecordAnnotateCullingPairs(SkRecord* record) { | 295 void SkRecordAnnotateCullingPairs(SkRecord* record) { |
| 301 CullAnnotator pass; | 296 CullAnnotator pass; |
| 302 pass.apply(record); | 297 pass.apply(record); |
| 303 } | 298 } |
| OLD | NEW |