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 981 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
992 LOOPER_BEGIN_DRAWDEVICE(*paint, SkDrawFilter::kBitmap_Type) | 992 LOOPER_BEGIN_DRAWDEVICE(*paint, SkDrawFilter::kBitmap_Type) |
993 while (iter.next()) { | 993 while (iter.next()) { |
994 SkDevice* dstDev = iter.fDevice; | 994 SkDevice* dstDev = iter.fDevice; |
995 paint = &looper.paint(); | 995 paint = &looper.paint(); |
996 SkImageFilter* filter = paint->getImageFilter(); | 996 SkImageFilter* filter = paint->getImageFilter(); |
997 SkIPoint pos = { x - iter.getX(), y - iter.getY() }; | 997 SkIPoint pos = { x - iter.getX(), y - iter.getY() }; |
998 if (filter && !dstDev->canHandleImageFilter(filter)) { | 998 if (filter && !dstDev->canHandleImageFilter(filter)) { |
999 SkDeviceImageFilterProxy proxy(dstDev); | 999 SkDeviceImageFilterProxy proxy(dstDev); |
1000 SkBitmap dst; | 1000 SkBitmap dst; |
1001 const SkBitmap& src = srcDev->accessBitmap(false); | 1001 const SkBitmap& src = srcDev->accessBitmap(false); |
1002 if (filter->filterImage(&proxy, src, *iter.fMatrix, &dst, &pos)) { | 1002 SkMatrix matrix = *iter.fMatrix; |
| 1003 matrix.postTranslate(SkIntToScalar(-x), SkIntToScalar(-y)); |
| 1004 if (filter->filterImage(&proxy, src, matrix, &dst, &pos)) { |
1003 SkPaint tmpUnfiltered(*paint); | 1005 SkPaint tmpUnfiltered(*paint); |
1004 tmpUnfiltered.setImageFilter(NULL); | 1006 tmpUnfiltered.setImageFilter(NULL); |
1005 dstDev->drawSprite(iter, dst, pos.x(), pos.y(), tmpUnfiltered); | 1007 dstDev->drawSprite(iter, dst, pos.x(), pos.y(), tmpUnfiltered); |
1006 } | 1008 } |
1007 } else { | 1009 } else { |
1008 dstDev->drawDevice(iter, srcDev, pos.x(), pos.y(), *paint); | 1010 dstDev->drawDevice(iter, srcDev, pos.x(), pos.y(), *paint); |
1009 } | 1011 } |
1010 } | 1012 } |
1011 LOOPER_END | 1013 LOOPER_END |
1012 } | 1014 } |
(...skipping 14 matching lines...) Expand all Loading... |
1027 | 1029 |
1028 LOOPER_BEGIN_DRAWDEVICE(*paint, SkDrawFilter::kBitmap_Type) | 1030 LOOPER_BEGIN_DRAWDEVICE(*paint, SkDrawFilter::kBitmap_Type) |
1029 | 1031 |
1030 while (iter.next()) { | 1032 while (iter.next()) { |
1031 paint = &looper.paint(); | 1033 paint = &looper.paint(); |
1032 SkImageFilter* filter = paint->getImageFilter(); | 1034 SkImageFilter* filter = paint->getImageFilter(); |
1033 SkIPoint pos = { x - iter.getX(), y - iter.getY() }; | 1035 SkIPoint pos = { x - iter.getX(), y - iter.getY() }; |
1034 if (filter && !iter.fDevice->canHandleImageFilter(filter)) { | 1036 if (filter && !iter.fDevice->canHandleImageFilter(filter)) { |
1035 SkDeviceImageFilterProxy proxy(iter.fDevice); | 1037 SkDeviceImageFilterProxy proxy(iter.fDevice); |
1036 SkBitmap dst; | 1038 SkBitmap dst; |
1037 if (filter->filterImage(&proxy, bitmap, *iter.fMatrix, | 1039 SkMatrix matrix = *iter.fMatrix; |
1038 &dst, &pos)) { | 1040 matrix.postTranslate(SkIntToScalar(-x), SkIntToScalar(-y)); |
| 1041 if (filter->filterImage(&proxy, bitmap, matrix, &dst, &pos)) { |
1039 SkPaint tmpUnfiltered(*paint); | 1042 SkPaint tmpUnfiltered(*paint); |
1040 tmpUnfiltered.setImageFilter(NULL); | 1043 tmpUnfiltered.setImageFilter(NULL); |
1041 iter.fDevice->drawSprite(iter, dst, pos.x(), pos.y(), | 1044 iter.fDevice->drawSprite(iter, dst, pos.x(), pos.y(), |
1042 tmpUnfiltered); | 1045 tmpUnfiltered); |
1043 } | 1046 } |
1044 } else { | 1047 } else { |
1045 iter.fDevice->drawSprite(iter, bitmap, pos.x(), pos.y(), *paint); | 1048 iter.fDevice->drawSprite(iter, bitmap, pos.x(), pos.y(), *paint); |
1046 } | 1049 } |
1047 } | 1050 } |
1048 LOOPER_END | 1051 LOOPER_END |
(...skipping 1170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2219 return *paint; | 2222 return *paint; |
2220 } | 2223 } |
2221 | 2224 |
2222 const SkRegion& SkCanvas::LayerIter::clip() const { return fImpl->getClip(); } | 2225 const SkRegion& SkCanvas::LayerIter::clip() const { return fImpl->getClip(); } |
2223 int SkCanvas::LayerIter::x() const { return fImpl->getX(); } | 2226 int SkCanvas::LayerIter::x() const { return fImpl->getX(); } |
2224 int SkCanvas::LayerIter::y() const { return fImpl->getY(); } | 2227 int SkCanvas::LayerIter::y() const { return fImpl->getY(); } |
2225 | 2228 |
2226 /////////////////////////////////////////////////////////////////////////////// | 2229 /////////////////////////////////////////////////////////////////////////////// |
2227 | 2230 |
2228 SkCanvas::ClipVisitor::~ClipVisitor() { } | 2231 SkCanvas::ClipVisitor::~ClipVisitor() { } |
OLD | NEW |