| 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 937 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 948 return fSaveLayerCount > 0; | 948 return fSaveLayerCount > 0; |
| 949 } | 949 } |
| 950 | 950 |
| 951 ///////////////////////////////////////////////////////////////////////////// | 951 ///////////////////////////////////////////////////////////////////////////// |
| 952 | 952 |
| 953 // can't draw it if its empty, or its too big for a fixed-point width or height | 953 // can't draw it if its empty, or its too big for a fixed-point width or height |
| 954 static bool reject_bitmap(const SkBitmap& bitmap) { | 954 static bool reject_bitmap(const SkBitmap& bitmap) { |
| 955 return bitmap.width() <= 0 || bitmap.height() <= 0; | 955 return bitmap.width() <= 0 || bitmap.height() <= 0; |
| 956 } | 956 } |
| 957 | 957 |
| 958 void SkCanvas::internalDrawBitmap(const SkBitmap& bitmap, const SkIRect* srcRect
, | 958 void SkCanvas::internalDrawBitmap(const SkBitmap& bitmap, |
| 959 const SkMatrix& matrix, const SkPaint* paint) { | 959 const SkMatrix& matrix, const SkPaint* paint) { |
| 960 if (reject_bitmap(bitmap)) { | 960 if (reject_bitmap(bitmap)) { |
| 961 return; | 961 return; |
| 962 } | 962 } |
| 963 | 963 |
| 964 SkLazyPaint lazy; | 964 SkLazyPaint lazy; |
| 965 if (NULL == paint) { | 965 if (NULL == paint) { |
| 966 paint = lazy.init(); | 966 paint = lazy.init(); |
| 967 } | 967 } |
| 968 this->commonDrawBitmap(bitmap, srcRect, matrix, *paint); | 968 |
| 969 SkDEBUGCODE(bitmap.validate();) |
| 970 CHECK_LOCKCOUNT_BALANCE(bitmap); |
| 971 |
| 972 LOOPER_BEGIN(*paint, SkDrawFilter::kBitmap_Type) |
| 973 |
| 974 while (iter.next()) { |
| 975 iter.fDevice->drawBitmap(iter, bitmap, matrix, looper.paint()); |
| 976 } |
| 977 |
| 978 LOOPER_END |
| 969 } | 979 } |
| 970 | 980 |
| 971 void SkCanvas::internalDrawDevice(SkDevice* srcDev, int x, int y, | 981 void SkCanvas::internalDrawDevice(SkDevice* srcDev, int x, int y, |
| 972 const SkPaint* paint) { | 982 const SkPaint* paint) { |
| 973 SkPaint tmp; | 983 SkPaint tmp; |
| 974 if (NULL == paint) { | 984 if (NULL == paint) { |
| 975 tmp.setDither(true); | 985 tmp.setDither(true); |
| 976 paint = &tmp; | 986 paint = &tmp; |
| 977 } | 987 } |
| 978 | 988 |
| (...skipping 747 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1726 if (paint) { | 1736 if (paint) { |
| 1727 (void)paint->computeFastBounds(bounds, &bounds); | 1737 (void)paint->computeFastBounds(bounds, &bounds); |
| 1728 } | 1738 } |
| 1729 if (this->quickReject(bounds)) { | 1739 if (this->quickReject(bounds)) { |
| 1730 return; | 1740 return; |
| 1731 } | 1741 } |
| 1732 } | 1742 } |
| 1733 | 1743 |
| 1734 SkMatrix matrix; | 1744 SkMatrix matrix; |
| 1735 matrix.setTranslate(x, y); | 1745 matrix.setTranslate(x, y); |
| 1736 this->internalDrawBitmap(bitmap, NULL, matrix, paint); | 1746 this->internalDrawBitmap(bitmap, matrix, paint); |
| 1737 } | 1747 } |
| 1738 | 1748 |
| 1739 // this one is non-virtual, so it can be called safely by other canvas apis | 1749 // this one is non-virtual, so it can be called safely by other canvas apis |
| 1740 void SkCanvas::internalDrawBitmapRect(const SkBitmap& bitmap, const SkRect* src, | 1750 void SkCanvas::internalDrawBitmapRect(const SkBitmap& bitmap, const SkRect* src, |
| 1741 const SkRect& dst, const SkPaint* paint) { | 1751 const SkRect& dst, const SkPaint* paint) { |
| 1742 if (bitmap.width() == 0 || bitmap.height() == 0 || dst.isEmpty()) { | 1752 if (bitmap.width() == 0 || bitmap.height() == 0 || dst.isEmpty()) { |
| 1743 return; | 1753 return; |
| 1744 } | 1754 } |
| 1745 | 1755 |
| 1746 CHECK_LOCKCOUNT_BALANCE(bitmap); | 1756 CHECK_LOCKCOUNT_BALANCE(bitmap); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 1772 | 1782 |
| 1773 void SkCanvas::drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* src, | 1783 void SkCanvas::drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* src, |
| 1774 const SkRect& dst, const SkPaint* paint) { | 1784 const SkRect& dst, const SkPaint* paint) { |
| 1775 SkDEBUGCODE(bitmap.validate();) | 1785 SkDEBUGCODE(bitmap.validate();) |
| 1776 this->internalDrawBitmapRect(bitmap, src, dst, paint); | 1786 this->internalDrawBitmapRect(bitmap, src, dst, paint); |
| 1777 } | 1787 } |
| 1778 | 1788 |
| 1779 void SkCanvas::drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& matrix, | 1789 void SkCanvas::drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& matrix, |
| 1780 const SkPaint* paint) { | 1790 const SkPaint* paint) { |
| 1781 SkDEBUGCODE(bitmap.validate();) | 1791 SkDEBUGCODE(bitmap.validate();) |
| 1782 this->internalDrawBitmap(bitmap, NULL, matrix, paint); | 1792 this->internalDrawBitmap(bitmap, matrix, paint); |
| 1783 } | |
| 1784 | |
| 1785 void SkCanvas::commonDrawBitmap(const SkBitmap& bitmap, const SkIRect* srcRect, | |
| 1786 const SkMatrix& matrix, const SkPaint& paint) { | |
| 1787 SkDEBUGCODE(bitmap.validate();) | |
| 1788 CHECK_LOCKCOUNT_BALANCE(bitmap); | |
| 1789 | |
| 1790 LOOPER_BEGIN(paint, SkDrawFilter::kBitmap_Type) | |
| 1791 | |
| 1792 while (iter.next()) { | |
| 1793 iter.fDevice->drawBitmap(iter, bitmap, srcRect, matrix, looper.paint()); | |
| 1794 } | |
| 1795 | |
| 1796 LOOPER_END | |
| 1797 } | 1793 } |
| 1798 | 1794 |
| 1799 void SkCanvas::internalDrawBitmapNine(const SkBitmap& bitmap, | 1795 void SkCanvas::internalDrawBitmapNine(const SkBitmap& bitmap, |
| 1800 const SkIRect& center, const SkRect& dst, | 1796 const SkIRect& center, const SkRect& dst, |
| 1801 const SkPaint* paint) { | 1797 const SkPaint* paint) { |
| 1802 if (NULL == paint || paint->canComputeFastBounds()) { | 1798 if (NULL == paint || paint->canComputeFastBounds()) { |
| 1803 SkRect storage; | 1799 SkRect storage; |
| 1804 const SkRect* bounds = &dst; | 1800 const SkRect* bounds = &dst; |
| 1805 if (paint) { | 1801 if (paint) { |
| 1806 bounds = &paint->computeFastBounds(dst, &storage); | 1802 bounds = &paint->computeFastBounds(dst, &storage); |
| (...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2217 return *paint; | 2213 return *paint; |
| 2218 } | 2214 } |
| 2219 | 2215 |
| 2220 const SkRegion& SkCanvas::LayerIter::clip() const { return fImpl->getClip(); } | 2216 const SkRegion& SkCanvas::LayerIter::clip() const { return fImpl->getClip(); } |
| 2221 int SkCanvas::LayerIter::x() const { return fImpl->getX(); } | 2217 int SkCanvas::LayerIter::x() const { return fImpl->getX(); } |
| 2222 int SkCanvas::LayerIter::y() const { return fImpl->getY(); } | 2218 int SkCanvas::LayerIter::y() const { return fImpl->getY(); } |
| 2223 | 2219 |
| 2224 /////////////////////////////////////////////////////////////////////////////// | 2220 /////////////////////////////////////////////////////////////////////////////// |
| 2225 | 2221 |
| 2226 SkCanvas::ClipVisitor::~ClipVisitor() { } | 2222 SkCanvas::ClipVisitor::~ClipVisitor() { } |
| OLD | NEW |