OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright 2008 The Android Open Source Project | 2 * Copyright 2008 The Android Open Source Project |
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 "SkCanvasPriv.h" | 9 #include "SkCanvasPriv.h" |
10 #include "SkBitmapDevice.h" | 10 #include "SkBitmapDevice.h" |
(...skipping 1482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1493 // if the prev and curr clips disagree about aa -vs- not, favor the aa request. | 1493 // if the prev and curr clips disagree about aa -vs- not, favor the aa request. |
1494 // perhaps we need an API change to avoid this sort of mixed-signals about | 1494 // perhaps we need an API change to avoid this sort of mixed-signals about |
1495 // clipping. | 1495 // clipping. |
1496 if (element->isAA()) { | 1496 if (element->isAA()) { |
1497 edgeStyle = kSoft_ClipEdgeStyle; | 1497 edgeStyle = kSoft_ClipEdgeStyle; |
1498 } | 1498 } |
1499 } | 1499 } |
1500 op = SkRegion::kReplace_Op; | 1500 op = SkRegion::kReplace_Op; |
1501 } | 1501 } |
1502 | 1502 |
1503 devPath.setIsVolatile(true); | |
1503 rasterclip_path(&fMCRec->fRasterClip, this, devPath, op, edgeStyle); | 1504 rasterclip_path(&fMCRec->fRasterClip, this, devPath, op, edgeStyle); |
1504 } | 1505 } |
1505 | 1506 |
1506 void SkCanvas::clipRegion(const SkRegion& rgn, SkRegion::Op op) { | 1507 void SkCanvas::clipRegion(const SkRegion& rgn, SkRegion::Op op) { |
1507 this->onClipRegion(rgn, op); | 1508 this->onClipRegion(rgn, op); |
1508 } | 1509 } |
1509 | 1510 |
1510 void SkCanvas::onClipRegion(const SkRegion& rgn, SkRegion::Op op) { | 1511 void SkCanvas::onClipRegion(const SkRegion& rgn, SkRegion::Op op) { |
1511 AutoValidateClip avc(this); | 1512 AutoValidateClip avc(this); |
1512 | 1513 |
(...skipping 27 matching lines...) Expand all Loading... | |
1540 case SkClipStack::Element::kRect_Type: | 1541 case SkClipStack::Element::kRect_Type: |
1541 element->getRect().round(&ir); | 1542 element->getRect().round(&ir); |
1542 tmpClip.op(ir, element->getOp()); | 1543 tmpClip.op(ir, element->getOp()); |
1543 break; | 1544 break; |
1544 case SkClipStack::Element::kEmpty_Type: | 1545 case SkClipStack::Element::kEmpty_Type: |
1545 tmpClip.setEmpty(); | 1546 tmpClip.setEmpty(); |
1546 break; | 1547 break; |
1547 default: { | 1548 default: { |
1548 SkPath path; | 1549 SkPath path; |
1549 element->asPath(&path); | 1550 element->asPath(&path); |
1551 path.setIsVolatile(true); | |
bsalomon
2014/10/24 17:29:18
If this is coming out of the clipstack and copying
| |
1550 rasterclip_path(&tmpClip, this, path, element->getOp(), element- >isAA()); | 1552 rasterclip_path(&tmpClip, this, path, element->getOp(), element- >isAA()); |
1551 break; | 1553 break; |
1552 } | 1554 } |
1553 } | 1555 } |
1554 } | 1556 } |
1555 } | 1557 } |
1556 #endif | 1558 #endif |
1557 | 1559 |
1558 void SkCanvas::replayClips(ClipVisitor* visitor) const { | 1560 void SkCanvas::replayClips(ClipVisitor* visitor) const { |
1559 SkClipStack::B2TIter iter(fClipStack); | 1561 SkClipStack::B2TIter iter(fClipStack); |
(...skipping 990 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2550 } | 2552 } |
2551 | 2553 |
2552 if (matrix) { | 2554 if (matrix) { |
2553 canvas->concat(*matrix); | 2555 canvas->concat(*matrix); |
2554 } | 2556 } |
2555 } | 2557 } |
2556 | 2558 |
2557 SkAutoCanvasMatrixPaint::~SkAutoCanvasMatrixPaint() { | 2559 SkAutoCanvasMatrixPaint::~SkAutoCanvasMatrixPaint() { |
2558 fCanvas->restoreToCount(fSaveCount); | 2560 fCanvas->restoreToCount(fSaveCount); |
2559 } | 2561 } |
OLD | NEW |