| Index: src/gpu/GrReducedClip.cpp
|
| diff --git a/src/gpu/GrReducedClip.cpp b/src/gpu/GrReducedClip.cpp
|
| index 89690d3663e6049b505769cde0bb32b78612551a..4a912d3b593773fc1046b6612bedb91057cdaa99 100644
|
| --- a/src/gpu/GrReducedClip.cpp
|
| +++ b/src/gpu/GrReducedClip.cpp
|
| @@ -74,7 +74,7 @@ GrReducedClip::GrReducedClip(const SkClipStack& stack, const SkRect& queryBounds
|
| fHasIBounds = true;
|
|
|
| // Implement the clip with an AA rect element.
|
| - fElements.addToHead(stackBounds, SkRegion::kReplace_Op, true/*doAA*/);
|
| + fElements.addToHead(stackBounds, SkCanvas::kReplace_Op, true/*doAA*/);
|
| fElementsGenID = stack.getTopmostGenID();
|
| fRequiresAA = true;
|
|
|
| @@ -146,7 +146,7 @@ void GrReducedClip::walkStack(const SkClipStack& stack, const SkRect& queryBound
|
| bool isFlip = false; // does this op just flip the in/out state of every point in the bounds
|
|
|
| switch (element->getOp()) {
|
| - case SkRegion::kDifference_Op:
|
| + case SkCanvas::kDifference_Op:
|
| // check if the shape subtracted either contains the entire bounds (and makes
|
| // the clip empty) or is outside the bounds and therefore can be skipped.
|
| if (element->isInverseFilled()) {
|
| @@ -172,7 +172,7 @@ void GrReducedClip::walkStack(const SkClipStack& stack, const SkRect& queryBound
|
| emsmallens = true;
|
| }
|
| break;
|
| - case SkRegion::kIntersect_Op:
|
| + case SkCanvas::kIntersect_Op:
|
| // check if the shape intersected contains the entire bounds and therefore can
|
| // be skipped or it is outside the entire bounds and therefore makes the clip
|
| // empty.
|
| @@ -205,7 +205,7 @@ void GrReducedClip::walkStack(const SkClipStack& stack, const SkRect& queryBound
|
| emsmallens = true;
|
| }
|
| break;
|
| - case SkRegion::kUnion_Op:
|
| + case SkCanvas::kUnion_Op:
|
| // If the union-ed shape contains the entire bounds then after this element
|
| // the bounds is entirely inside the clip. If the union-ed shape is outside the
|
| // bounds then this op can be skipped.
|
| @@ -228,7 +228,7 @@ void GrReducedClip::walkStack(const SkClipStack& stack, const SkRect& queryBound
|
| embiggens = true;
|
| }
|
| break;
|
| - case SkRegion::kXOR_Op:
|
| + case SkCanvas::kXOR_Op:
|
| // If the bounds is entirely inside the shape being xor-ed then the effect is
|
| // to flip the inside/outside state of every point in the bounds. We may be
|
| // able to take advantage of this in the forward pass. If the xor-ed shape
|
| @@ -250,7 +250,7 @@ void GrReducedClip::walkStack(const SkClipStack& stack, const SkRect& queryBound
|
| emsmallens = embiggens = true;
|
| }
|
| break;
|
| - case SkRegion::kReverseDifference_Op:
|
| + case SkCanvas::kReverseDifference_Op:
|
| // When the bounds is entirely within the rev-diff shape then this behaves like xor
|
| // and reverses every point inside the bounds. If the shape is completely outside
|
| // the bounds then we know after this element is applied that the bounds will be
|
| @@ -275,7 +275,7 @@ void GrReducedClip::walkStack(const SkClipStack& stack, const SkRect& queryBound
|
| }
|
| break;
|
|
|
| - case SkRegion::kReplace_Op:
|
| + case SkCanvas::kReplace_Op:
|
| // Replace will always terminate our walk. We will either begin the forward walk
|
| // at the replace op or detect here than the shape is either completely inside
|
| // or completely outside the bounds. In this latter case it can be skipped by
|
| @@ -325,9 +325,9 @@ void GrReducedClip::walkStack(const SkClipStack& stack, const SkRect& queryBound
|
|
|
| // if it is a flip, change it to a bounds-filling rect
|
| if (isFlip) {
|
| - SkASSERT(SkRegion::kXOR_Op == element->getOp() ||
|
| - SkRegion::kReverseDifference_Op == element->getOp());
|
| - fElements.addToHead(SkRect::Make(fIBounds), SkRegion::kReverseDifference_Op, false);
|
| + SkASSERT(SkCanvas::kXOR_Op == element->getOp() ||
|
| + SkCanvas::kReverseDifference_Op == element->getOp());
|
| + fElements.addToHead(SkRect::Make(fIBounds), SkCanvas::kReverseDifference_Op, false);
|
| } else {
|
| Element* newElement = fElements.addToHead(*element);
|
| if (newElement->isAA()) {
|
| @@ -336,11 +336,11 @@ void GrReducedClip::walkStack(const SkClipStack& stack, const SkRect& queryBound
|
| // Intersecting an inverse shape is the same as differencing the non-inverse shape.
|
| // Replacing with an inverse shape is the same as setting initialState=kAllIn and
|
| // differencing the non-inverse shape.
|
| - bool isReplace = SkRegion::kReplace_Op == newElement->getOp();
|
| + bool isReplace = SkCanvas::kReplace_Op == newElement->getOp();
|
| if (newElement->isInverseFilled() &&
|
| - (SkRegion::kIntersect_Op == newElement->getOp() || isReplace)) {
|
| + (SkCanvas::kIntersect_Op == newElement->getOp() || isReplace)) {
|
| newElement->invertShapeFillType();
|
| - newElement->setOp(SkRegion::kDifference_Op);
|
| + newElement->setOp(SkCanvas::kDifference_Op);
|
| if (isReplace) {
|
| SkASSERT(InitialTriState::kAllOut == initialTriState);
|
| initialTriState = InitialTriState::kAllIn;
|
| @@ -359,36 +359,36 @@ void GrReducedClip::walkStack(const SkClipStack& stack, const SkRect& queryBound
|
| while (element) {
|
| bool skippable = false;
|
| switch (element->getOp()) {
|
| - case SkRegion::kDifference_Op:
|
| + case SkCanvas::kDifference_Op:
|
| // subtracting from the empty set yields the empty set.
|
| skippable = InitialTriState::kAllOut == initialTriState;
|
| break;
|
| - case SkRegion::kIntersect_Op:
|
| + case SkCanvas::kIntersect_Op:
|
| // intersecting with the empty set yields the empty set
|
| if (InitialTriState::kAllOut == initialTriState) {
|
| skippable = true;
|
| } else {
|
| // We can clear to zero and then simply draw the clip element.
|
| initialTriState = InitialTriState::kAllOut;
|
| - element->setOp(SkRegion::kReplace_Op);
|
| + element->setOp(SkCanvas::kReplace_Op);
|
| }
|
| break;
|
| - case SkRegion::kUnion_Op:
|
| + case SkCanvas::kUnion_Op:
|
| if (InitialTriState::kAllIn == initialTriState) {
|
| // unioning the infinite plane with anything is a no-op.
|
| skippable = true;
|
| } else {
|
| // unioning the empty set with a shape is the shape.
|
| - element->setOp(SkRegion::kReplace_Op);
|
| + element->setOp(SkCanvas::kReplace_Op);
|
| }
|
| break;
|
| - case SkRegion::kXOR_Op:
|
| + case SkCanvas::kXOR_Op:
|
| if (InitialTriState::kAllOut == initialTriState) {
|
| // xor could be changed to diff in the kAllIn case, not sure it's a win.
|
| - element->setOp(SkRegion::kReplace_Op);
|
| + element->setOp(SkCanvas::kReplace_Op);
|
| }
|
| break;
|
| - case SkRegion::kReverseDifference_Op:
|
| + case SkCanvas::kReverseDifference_Op:
|
| if (InitialTriState::kAllIn == initialTriState) {
|
| // subtracting the whole plane will yield the empty set.
|
| skippable = true;
|
| @@ -401,11 +401,11 @@ void GrReducedClip::walkStack(const SkClipStack& stack, const SkRect& queryBound
|
| if (skippable) {
|
| initialTriState = InitialTriState::kAllIn;
|
| } else {
|
| - element->setOp(SkRegion::kReplace_Op);
|
| + element->setOp(SkCanvas::kReplace_Op);
|
| }
|
| }
|
| break;
|
| - case SkRegion::kReplace_Op:
|
| + case SkCanvas::kReplace_Op:
|
| skippable = false; // we would have skipped it in the backwards walk if we
|
| // could've.
|
| break;
|
| @@ -430,12 +430,12 @@ void GrReducedClip::walkStack(const SkClipStack& stack, const SkRect& queryBound
|
| fInitialState = static_cast<GrReducedClip::InitialState>(initialTriState);
|
| }
|
|
|
| -static bool element_is_pure_subtract(SkRegion::Op op) {
|
| +static bool element_is_pure_subtract(SkCanvas::ClipOp op) {
|
| SkASSERT(op >= 0);
|
| - return op <= SkRegion::kIntersect_Op;
|
| + return op <= SkCanvas::kIntersect_Op;
|
|
|
| - GR_STATIC_ASSERT(0 == SkRegion::kDifference_Op);
|
| - GR_STATIC_ASSERT(1 == SkRegion::kIntersect_Op);
|
| + GR_STATIC_ASSERT(0 == SkCanvas::kDifference_Op);
|
| + GR_STATIC_ASSERT(1 == SkCanvas::kIntersect_Op);
|
| }
|
|
|
| void GrReducedClip::addInteriorWindowRectangles(int maxWindowRectangles) {
|
| @@ -445,7 +445,7 @@ void GrReducedClip::addInteriorWindowRectangles(int maxWindowRectangles) {
|
| ElementList::Iter iter(fElements, ElementList::Iter::kTail_IterStart);
|
| for (; iter.get() && element_is_pure_subtract(iter.get()->getOp()); iter.prev()) {
|
| const Element* element = iter.get();
|
| - if (SkRegion::kDifference_Op != element->getOp()) {
|
| + if (SkCanvas::kDifference_Op != element->getOp()) {
|
| continue;
|
| }
|
|
|
| @@ -536,7 +536,7 @@ static bool stencil_element(GrDrawContext* dc,
|
| break;
|
| case Element::kRect_Type:
|
| return dc->drawContextPriv().drawAndStencilRect(clip, ss,
|
| - element->getOp(),
|
| + (SkRegion::Op)element->getOp(),
|
| element->isInverseFilled(),
|
| element->isAA(),
|
| viewMatrix, element->getRect());
|
| @@ -549,7 +549,7 @@ static bool stencil_element(GrDrawContext* dc,
|
| }
|
|
|
| return dc->drawContextPriv().drawAndStencilPath(clip, ss,
|
| - element->getOp(),
|
| + (SkRegion::Op)element->getOp(),
|
| element->isInverseFilled(),
|
| element->isAA(), viewMatrix, path);
|
| break;
|
| @@ -608,7 +608,7 @@ bool GrReducedClip::drawAlphaClipMask(GrDrawContext* dc) const {
|
| // walk through each clip element and perform its set op
|
| for (ElementList::Iter iter(fElements); iter.get(); iter.next()) {
|
| const Element* element = iter.get();
|
| - SkRegion::Op op = element->getOp();
|
| + SkRegion::Op op = (SkRegion::Op)element->getOp();
|
| bool invert = element->isInverseFilled();
|
| if (invert || SkRegion::kIntersect_Op == op || SkRegion::kReverseDifference_Op == op) {
|
| // draw directly into the result with the stencil set to make the pixels affected
|
| @@ -722,7 +722,7 @@ bool GrReducedClip::drawStencilClipMask(GrContext* context,
|
| // stencil with arbitrary stencil settings.
|
| GrPathRenderer::StencilSupport stencilSupport;
|
|
|
| - SkRegion::Op op = element->getOp();
|
| + SkRegion::Op op = (SkRegion::Op)element->getOp();
|
|
|
| GrPathRenderer* pr = nullptr;
|
| SkPath clipPath;
|
|
|