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

Side by Side Diff: src/gpu/GrReducedClip.cpp

Issue 163683002: Store SkRRects in SkClipStack (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: fix unhandled enum value warning in unit test Created 6 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « src/gpu/GrClipMaskManager.cpp ('k') | src/pdf/SkPDFDevice.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 #include "GrReducedClip.h" 9 #include "GrReducedClip.h"
10 10
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 SkRect isectRect; 65 SkRect isectRect;
66 if (stackBounds.contains(scalarQueryBounds)) { 66 if (stackBounds.contains(scalarQueryBounds)) {
67 *initialState = kAllIn_InitialState; 67 *initialState = kAllIn_InitialState;
68 if (NULL != tighterBounds) { 68 if (NULL != tighterBounds) {
69 *tighterBounds = queryBounds; 69 *tighterBounds = queryBounds;
70 } 70 }
71 if (NULL != requiresAA) { 71 if (NULL != requiresAA) {
72 *requiresAA = false; 72 *requiresAA = false;
73 } 73 }
74 } else if (isectRect.intersect(stackBounds, scalarQueryBounds)) { 74 } else if (isectRect.intersect(stackBounds, scalarQueryBounds)) {
75 // If the caller asked for tighter integer bounds we may be able to
76 // return kAllIn and give the bounds with no elements
75 if (NULL != tighterBounds) { 77 if (NULL != tighterBounds) {
76 isectRect.roundOut(tighterBounds); 78 isectRect.roundOut(tighterBounds);
77 SkRect scalarTighterBounds = SkRect::Make(*tighterBounds); 79 SkRect scalarTighterBounds = SkRect::Make(*tighterBounds);
78 if (scalarTighterBounds == isectRect) { 80 if (scalarTighterBounds == isectRect) {
79 // the round-out didn't add any area outside the clip rect. 81 // the round-out didn't add any area outside the clip rect.
80 if (NULL != requiresAA) { 82 if (NULL != requiresAA) {
81 *requiresAA = false; 83 *requiresAA = false;
82 } 84 }
83 *initialState = kAllIn_InitialState; 85 *initialState = kAllIn_InitialState;
84 return; 86 return;
85 } 87 }
86 *initialState = kAllOut_InitialState; 88 }
87 // iior should only be true if aa/non-aa status matches among al l elements. 89 *initialState = kAllOut_InitialState;
88 SkClipStack::Iter iter(stack, SkClipStack::Iter::kTop_IterStart) ; 90 // iior should only be true if aa/non-aa status matches among all el ements.
89 bool doAA = iter.prev()->isAA(); 91 SkClipStack::Iter iter(stack, SkClipStack::Iter::kTop_IterStart);
90 SkNEW_INSERT_AT_LLIST_HEAD(result, Element, (isectRect, SkRegion ::kReplace_Op, doAA)); 92 bool doAA = iter.prev()->isAA();
91 if (NULL != requiresAA) { 93 SkNEW_INSERT_AT_LLIST_HEAD(result, Element, (isectRect, SkRegion::kR eplace_Op, doAA));
92 *requiresAA = doAA; 94 if (NULL != requiresAA) {
93 } 95 *requiresAA = doAA;
94 } 96 }
95 } else { 97 } else {
96 *initialState = kAllOut_InitialState; 98 *initialState = kAllOut_InitialState;
97 if (NULL != requiresAA) { 99 if (NULL != requiresAA) {
98 *requiresAA = false; 100 *requiresAA = false;
99 } 101 }
100 } 102 }
101 return; 103 return;
102 } else { 104 } else {
103 if (SkClipStack::kNormal_BoundsType == stackBoundsType) { 105 if (SkClipStack::kNormal_BoundsType == stackBoundsType) {
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 441
440 if (0 == result->count()) { 442 if (0 == result->count()) {
441 if (*initialState == kAllIn_InitialState) { 443 if (*initialState == kAllIn_InitialState) {
442 *resultGenID = SkClipStack::kWideOpenGenID; 444 *resultGenID = SkClipStack::kWideOpenGenID;
443 } else { 445 } else {
444 *resultGenID = SkClipStack::kEmptyGenID; 446 *resultGenID = SkClipStack::kEmptyGenID;
445 } 447 }
446 } 448 }
447 } 449 }
448 } // namespace GrReducedClip 450 } // namespace GrReducedClip
OLDNEW
« no previous file with comments | « src/gpu/GrClipMaskManager.cpp ('k') | src/pdf/SkPDFDevice.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698