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 1578 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1589 if (NULL != renderTarget) { | 1589 if (NULL != renderTarget) { |
1590 return renderTarget->getContext(); | 1590 return renderTarget->getContext(); |
1591 } | 1591 } |
1592 } | 1592 } |
1593 #endif | 1593 #endif |
1594 | 1594 |
1595 return NULL; | 1595 return NULL; |
1596 | 1596 |
1597 } | 1597 } |
1598 | 1598 |
| 1599 void SkCanvas::drawDRRect(const SkRRect& outer, const SkRRect& inner, |
| 1600 const SkPaint& paint) { |
| 1601 if (outer.isEmpty()) { |
| 1602 return; |
| 1603 } |
| 1604 if (inner.isEmpty()) { |
| 1605 this->drawRRect(outer, paint); |
| 1606 return; |
| 1607 } |
| 1608 |
| 1609 // We don't have this method (yet), but technically this is what we should |
| 1610 // be able to assert... |
| 1611 // SkASSERT(outer.contains(inner)); |
| 1612 // |
| 1613 // For now at least check for containment of bounds |
| 1614 SkASSERT(outer.getBounds().contains(inner.getBounds())); |
| 1615 |
| 1616 this->onDrawDRRect(outer, inner, paint); |
| 1617 } |
| 1618 |
1599 ////////////////////////////////////////////////////////////////////////////// | 1619 ////////////////////////////////////////////////////////////////////////////// |
1600 // These are the virtual drawing methods | 1620 // These are the virtual drawing methods |
1601 ////////////////////////////////////////////////////////////////////////////// | 1621 ////////////////////////////////////////////////////////////////////////////// |
1602 | 1622 |
1603 void SkCanvas::clear(SkColor color) { | 1623 void SkCanvas::clear(SkColor color) { |
1604 SkDrawIter iter(this); | 1624 SkDrawIter iter(this); |
1605 this->predrawNotify(); | 1625 this->predrawNotify(); |
1606 while (iter.next()) { | 1626 while (iter.next()) { |
1607 iter.fDevice->clear(color); | 1627 iter.fDevice->clear(color); |
1608 } | 1628 } |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1724 | 1744 |
1725 LOOPER_BEGIN(paint, SkDrawFilter::kRRect_Type, bounds) | 1745 LOOPER_BEGIN(paint, SkDrawFilter::kRRect_Type, bounds) |
1726 | 1746 |
1727 while (iter.next()) { | 1747 while (iter.next()) { |
1728 iter.fDevice->drawRRect(iter, rrect, looper.paint()); | 1748 iter.fDevice->drawRRect(iter, rrect, looper.paint()); |
1729 } | 1749 } |
1730 | 1750 |
1731 LOOPER_END | 1751 LOOPER_END |
1732 } | 1752 } |
1733 | 1753 |
| 1754 void SkCanvas::onDrawDRRect(const SkRRect& outer, const SkRRect& inner, |
| 1755 const SkPaint& paint) { |
| 1756 CHECK_SHADER_NOSETCONTEXT(paint); |
| 1757 |
| 1758 SkRect storage; |
| 1759 const SkRect* bounds = NULL; |
| 1760 if (paint.canComputeFastBounds()) { |
| 1761 bounds = &paint.computeFastBounds(outer.getBounds(), &storage); |
| 1762 if (this->quickReject(*bounds)) { |
| 1763 return; |
| 1764 } |
| 1765 } |
| 1766 |
| 1767 LOOPER_BEGIN(paint, SkDrawFilter::kRRect_Type, bounds) |
| 1768 |
| 1769 while (iter.next()) { |
| 1770 iter.fDevice->drawDRRect(iter, outer, inner, looper.paint()); |
| 1771 } |
| 1772 |
| 1773 LOOPER_END |
| 1774 } |
1734 | 1775 |
1735 void SkCanvas::drawPath(const SkPath& path, const SkPaint& paint) { | 1776 void SkCanvas::drawPath(const SkPath& path, const SkPaint& paint) { |
1736 CHECK_SHADER_NOSETCONTEXT(paint); | 1777 CHECK_SHADER_NOSETCONTEXT(paint); |
1737 | 1778 |
1738 if (!path.isFinite()) { | 1779 if (!path.isFinite()) { |
1739 return; | 1780 return; |
1740 } | 1781 } |
1741 | 1782 |
1742 SkRect storage; | 1783 SkRect storage; |
1743 const SkRect* bounds = NULL; | 1784 const SkRect* bounds = NULL; |
(...skipping 499 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2243 return *paint; | 2284 return *paint; |
2244 } | 2285 } |
2245 | 2286 |
2246 const SkRegion& SkCanvas::LayerIter::clip() const { return fImpl->getClip(); } | 2287 const SkRegion& SkCanvas::LayerIter::clip() const { return fImpl->getClip(); } |
2247 int SkCanvas::LayerIter::x() const { return fImpl->getX(); } | 2288 int SkCanvas::LayerIter::x() const { return fImpl->getX(); } |
2248 int SkCanvas::LayerIter::y() const { return fImpl->getY(); } | 2289 int SkCanvas::LayerIter::y() const { return fImpl->getY(); } |
2249 | 2290 |
2250 /////////////////////////////////////////////////////////////////////////////// | 2291 /////////////////////////////////////////////////////////////////////////////// |
2251 | 2292 |
2252 SkCanvas::ClipVisitor::~ClipVisitor() { } | 2293 SkCanvas::ClipVisitor::~ClipVisitor() { } |
OLD | NEW |