Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: src/core/SkCanvas.cpp

Issue 20806003: Plumb in "bleed" flag (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Updated .skp version number Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 1730 matching lines...) Expand 10 before | Expand all | Expand 10 after
1741 } 1741 }
1742 } 1742 }
1743 1743
1744 SkMatrix matrix; 1744 SkMatrix matrix;
1745 matrix.setTranslate(x, y); 1745 matrix.setTranslate(x, y);
1746 this->internalDrawBitmap(bitmap, matrix, paint); 1746 this->internalDrawBitmap(bitmap, matrix, paint);
1747 } 1747 }
1748 1748
1749 // 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
1750 void SkCanvas::internalDrawBitmapRect(const SkBitmap& bitmap, const SkRect* src, 1750 void SkCanvas::internalDrawBitmapRect(const SkBitmap& bitmap, const SkRect* src,
1751 const SkRect& dst, const SkPaint* paint) { 1751 const SkRect& dst, const SkPaint* paint,
1752 DrawBitmapRectFlags flags) {
1752 if (bitmap.width() == 0 || bitmap.height() == 0 || dst.isEmpty()) { 1753 if (bitmap.width() == 0 || bitmap.height() == 0 || dst.isEmpty()) {
1753 return; 1754 return;
1754 } 1755 }
1755 1756
1756 CHECK_LOCKCOUNT_BALANCE(bitmap); 1757 CHECK_LOCKCOUNT_BALANCE(bitmap);
1757 1758
1758 if (NULL == paint || paint->canComputeFastBounds()) { 1759 if (NULL == paint || paint->canComputeFastBounds()) {
1759 SkRect storage; 1760 SkRect storage;
1760 const SkRect* bounds = &dst; 1761 const SkRect* bounds = &dst;
1761 if (paint) { 1762 if (paint) {
1762 bounds = &paint->computeFastBounds(dst, &storage); 1763 bounds = &paint->computeFastBounds(dst, &storage);
1763 } 1764 }
1764 if (this->quickReject(*bounds)) { 1765 if (this->quickReject(*bounds)) {
1765 return; 1766 return;
1766 } 1767 }
1767 } 1768 }
1768 1769
1769 SkLazyPaint lazy; 1770 SkLazyPaint lazy;
1770 if (NULL == paint) { 1771 if (NULL == paint) {
1771 paint = lazy.init(); 1772 paint = lazy.init();
1772 } 1773 }
1773 1774
1774 LOOPER_BEGIN(*paint, SkDrawFilter::kBitmap_Type) 1775 LOOPER_BEGIN(*paint, SkDrawFilter::kBitmap_Type)
1775 1776
1776 while (iter.next()) { 1777 while (iter.next()) {
1777 iter.fDevice->drawBitmapRect(iter, bitmap, src, dst, looper.paint()); 1778 iter.fDevice->drawBitmapRect(iter, bitmap, src, dst, looper.paint(), fla gs);
1778 } 1779 }
1779 1780
1780 LOOPER_END 1781 LOOPER_END
1781 } 1782 }
1782 1783
1783 void SkCanvas::drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* src, 1784 void SkCanvas::drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* src,
1784 const SkRect& dst, const SkPaint* paint) { 1785 const SkRect& dst, const SkPaint* paint,
1786 DrawBitmapRectFlags flags) {
1785 SkDEBUGCODE(bitmap.validate();) 1787 SkDEBUGCODE(bitmap.validate();)
1786 this->internalDrawBitmapRect(bitmap, src, dst, paint); 1788 this->internalDrawBitmapRect(bitmap, src, dst, paint, flags);
1787 } 1789 }
1788 1790
1789 void SkCanvas::drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& matrix, 1791 void SkCanvas::drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& matrix,
1790 const SkPaint* paint) { 1792 const SkPaint* paint) {
1791 SkDEBUGCODE(bitmap.validate();) 1793 SkDEBUGCODE(bitmap.validate();)
1792 this->internalDrawBitmap(bitmap, matrix, paint); 1794 this->internalDrawBitmap(bitmap, matrix, paint);
1793 } 1795 }
1794 1796
1795 void SkCanvas::internalDrawBitmapNine(const SkBitmap& bitmap, 1797 void SkCanvas::internalDrawBitmapNine(const SkBitmap& bitmap,
1796 const SkIRect& center, const SkRect& dst, 1798 const SkIRect& center, const SkRect& dst,
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
1846 1848
1847 s.fTop = srcY[y]; 1849 s.fTop = srcY[y];
1848 s.fBottom = srcY[y+1]; 1850 s.fBottom = srcY[y+1];
1849 d.fTop = dstY[y]; 1851 d.fTop = dstY[y];
1850 d.fBottom = dstY[y+1]; 1852 d.fBottom = dstY[y+1];
1851 for (int x = 0; x < 3; x++) { 1853 for (int x = 0; x < 3; x++) {
1852 s.fLeft = srcX[x]; 1854 s.fLeft = srcX[x];
1853 s.fRight = srcX[x+1]; 1855 s.fRight = srcX[x+1];
1854 d.fLeft = dstX[x]; 1856 d.fLeft = dstX[x];
1855 d.fRight = dstX[x+1]; 1857 d.fRight = dstX[x+1];
1856 this->internalDrawBitmapRect(bitmap, &s, d, paint); 1858 this->internalDrawBitmapRect(bitmap, &s, d, paint,
1859 kNone_DrawBitmapRectflag);
1857 } 1860 }
1858 } 1861 }
1859 } 1862 }
1860 1863
1861 void SkCanvas::drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, 1864 void SkCanvas::drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center,
1862 const SkRect& dst, const SkPaint* paint) { 1865 const SkRect& dst, const SkPaint* paint) {
edisonn 2013/07/29 14:51:14 I am wondering why drawBitmapNine does not take th
robertphillips 2013/07/29 15:27:32 drawBitmapNine operates on the entire bitmap rathe
1863 SkDEBUGCODE(bitmap.validate();) 1866 SkDEBUGCODE(bitmap.validate();)
1864 1867
1865 // Need a device entry-point, so gpu can use a mesh 1868 // Need a device entry-point, so gpu can use a mesh
1866 this->internalDrawBitmapNine(bitmap, center, dst, paint); 1869 this->internalDrawBitmapNine(bitmap, center, dst, paint);
1867 } 1870 }
1868 1871
1869 class SkDeviceFilteredPaint { 1872 class SkDeviceFilteredPaint {
1870 public: 1873 public:
1871 SkDeviceFilteredPaint(SkDevice* device, const SkPaint& paint) { 1874 SkDeviceFilteredPaint(SkDevice* device, const SkPaint& paint) {
1872 SkDevice::TextFlags flags; 1875 SkDevice::TextFlags flags;
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
2213 return *paint; 2216 return *paint;
2214 } 2217 }
2215 2218
2216 const SkRegion& SkCanvas::LayerIter::clip() const { return fImpl->getClip(); } 2219 const SkRegion& SkCanvas::LayerIter::clip() const { return fImpl->getClip(); }
2217 int SkCanvas::LayerIter::x() const { return fImpl->getX(); } 2220 int SkCanvas::LayerIter::x() const { return fImpl->getX(); }
2218 int SkCanvas::LayerIter::y() const { return fImpl->getY(); } 2221 int SkCanvas::LayerIter::y() const { return fImpl->getY(); }
2219 2222
2220 /////////////////////////////////////////////////////////////////////////////// 2223 ///////////////////////////////////////////////////////////////////////////////
2221 2224
2222 SkCanvas::ClipVisitor::~ClipVisitor() { } 2225 SkCanvas::ClipVisitor::~ClipVisitor() { }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698