| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2008 The Android Open Source Project | 3 * Copyright 2008 The Android Open Source Project |
| 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 | 9 |
| 10 #include "SkCanvas.h" | 10 #include "SkCanvas.h" |
| (...skipping 1324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1335 devPath.setFillType(SkPath::kInverseEvenOdd_FillType); | 1335 devPath.setFillType(SkPath::kInverseEvenOdd_FillType); |
| 1336 const SkClipStack* clipStack = getClipStack(); | 1336 const SkClipStack* clipStack = getClipStack(); |
| 1337 SkClipStack::Iter iter(*clipStack, SkClipStack::Iter::kBottom_IterStart)
; | 1337 SkClipStack::Iter iter(*clipStack, SkClipStack::Iter::kBottom_IterStart)
; |
| 1338 const SkClipStack::Element* element; | 1338 const SkClipStack::Element* element; |
| 1339 while ((element = iter.next())) { | 1339 while ((element = iter.next())) { |
| 1340 SkClipStack::Element::Type type = element->getType(); | 1340 SkClipStack::Element::Type type = element->getType(); |
| 1341 if (type == SkClipStack::Element::kEmpty_Type) { | 1341 if (type == SkClipStack::Element::kEmpty_Type) { |
| 1342 continue; | 1342 continue; |
| 1343 } | 1343 } |
| 1344 SkPath operand; | 1344 SkPath operand; |
| 1345 if (type == SkClipStack::Element::kRect_Type) { | 1345 element->asPath(&operand); |
| 1346 operand.addRect(element->getRect()); | |
| 1347 } else if (type == SkClipStack::Element::kPath_Type) { | |
| 1348 operand = element->getPath(); | |
| 1349 } else { | |
| 1350 SkDEBUGFAIL("Unexpected type."); | |
| 1351 } | |
| 1352 SkRegion::Op elementOp = element->getOp(); | 1346 SkRegion::Op elementOp = element->getOp(); |
| 1353 if (elementOp == SkRegion::kReplace_Op) { | 1347 if (elementOp == SkRegion::kReplace_Op) { |
| 1354 devPath = operand; | 1348 devPath = operand; |
| 1355 } else { | 1349 } else { |
| 1356 Op(devPath, operand, (SkPathOp) elementOp, &devPath); | 1350 Op(devPath, operand, (SkPathOp) elementOp, &devPath); |
| 1357 } | 1351 } |
| 1358 // if the prev and curr clips disagree about aa -vs- not, favor the
aa request. | 1352 // if the prev and curr clips disagree about aa -vs- not, favor the
aa request. |
| 1359 // perhaps we need an API change to avoid this sort of mixed-signals
about | 1353 // perhaps we need an API change to avoid this sort of mixed-signals
about |
| 1360 // clipping. | 1354 // clipping. |
| 1361 doAA |= element->isAA(); | 1355 doAA |= element->isAA(); |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1498 void SkCanvas::replayClips(ClipVisitor* visitor) const { | 1492 void SkCanvas::replayClips(ClipVisitor* visitor) const { |
| 1499 SkClipStack::B2TIter iter(fClipStack); | 1493 SkClipStack::B2TIter iter(fClipStack); |
| 1500 const SkClipStack::Element* element; | 1494 const SkClipStack::Element* element; |
| 1501 | 1495 |
| 1502 static const SkRect kEmpty = { 0, 0, 0, 0 }; | 1496 static const SkRect kEmpty = { 0, 0, 0, 0 }; |
| 1503 while ((element = iter.next()) != NULL) { | 1497 while ((element = iter.next()) != NULL) { |
| 1504 switch (element->getType()) { | 1498 switch (element->getType()) { |
| 1505 case SkClipStack::Element::kPath_Type: | 1499 case SkClipStack::Element::kPath_Type: |
| 1506 visitor->clipPath(element->getPath(), element->getOp(), element-
>isAA()); | 1500 visitor->clipPath(element->getPath(), element->getOp(), element-
>isAA()); |
| 1507 break; | 1501 break; |
| 1502 case SkClipStack::Element::kRRect_Type: |
| 1503 visitor->clipRRect(element->getRRect(), element->getOp(), elemen
t->isAA()); |
| 1504 break; |
| 1508 case SkClipStack::Element::kRect_Type: | 1505 case SkClipStack::Element::kRect_Type: |
| 1509 visitor->clipRect(element->getRect(), element->getOp(), element-
>isAA()); | 1506 visitor->clipRect(element->getRect(), element->getOp(), element-
>isAA()); |
| 1510 break; | 1507 break; |
| 1511 case SkClipStack::Element::kEmpty_Type: | 1508 case SkClipStack::Element::kEmpty_Type: |
| 1512 visitor->clipRect(kEmpty, SkRegion::kIntersect_Op, false); | 1509 visitor->clipRect(kEmpty, SkRegion::kIntersect_Op, false); |
| 1513 break; | 1510 break; |
| 1514 } | 1511 } |
| 1515 } | 1512 } |
| 1516 } | 1513 } |
| 1517 | 1514 |
| (...skipping 763 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2281 return *paint; | 2278 return *paint; |
| 2282 } | 2279 } |
| 2283 | 2280 |
| 2284 const SkRegion& SkCanvas::LayerIter::clip() const { return fImpl->getClip(); } | 2281 const SkRegion& SkCanvas::LayerIter::clip() const { return fImpl->getClip(); } |
| 2285 int SkCanvas::LayerIter::x() const { return fImpl->getX(); } | 2282 int SkCanvas::LayerIter::x() const { return fImpl->getX(); } |
| 2286 int SkCanvas::LayerIter::y() const { return fImpl->getY(); } | 2283 int SkCanvas::LayerIter::y() const { return fImpl->getY(); } |
| 2287 | 2284 |
| 2288 /////////////////////////////////////////////////////////////////////////////// | 2285 /////////////////////////////////////////////////////////////////////////////// |
| 2289 | 2286 |
| 2290 SkCanvas::ClipVisitor::~ClipVisitor() { } | 2287 SkCanvas::ClipVisitor::~ClipVisitor() { } |
| OLD | NEW |