OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2012 The Android Open Source Project | 2 * Copyright 2012 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 "SkMatrixConvolutionImageFilter.h" | 8 #include "SkMatrixConvolutionImageFilter.h" |
9 #include "SkBitmap.h" | 9 #include "SkBitmap.h" |
10 #include "SkColorPriv.h" | 10 #include "SkColorPriv.h" |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
146 return *src.getAddr32(x, y); | 146 return *src.getAddr32(x, y); |
147 } | 147 } |
148 } | 148 } |
149 }; | 149 }; |
150 | 150 |
151 template<class PixelFetcher, bool convolveAlpha> | 151 template<class PixelFetcher, bool convolveAlpha> |
152 void SkMatrixConvolutionImageFilter::filterPixels(const SkBitmap& src, | 152 void SkMatrixConvolutionImageFilter::filterPixels(const SkBitmap& src, |
153 SkBitmap* result, | 153 SkBitmap* result, |
154 const SkIRect& rect, | 154 const SkIRect& rect, |
155 const SkIRect& bounds) const { | 155 const SkIRect& bounds) const { |
| 156 if (rect.isEmpty()) { |
| 157 return; |
| 158 } |
156 for (int y = rect.fTop; y < rect.fBottom; ++y) { | 159 for (int y = rect.fTop; y < rect.fBottom; ++y) { |
157 SkPMColor* dptr = result->getAddr32(rect.fLeft - bounds.fLeft, y - bound
s.fTop); | 160 SkPMColor* dptr = result->getAddr32(rect.fLeft - bounds.fLeft, y - bound
s.fTop); |
158 for (int x = rect.fLeft; x < rect.fRight; ++x) { | 161 for (int x = rect.fLeft; x < rect.fRight; ++x) { |
159 SkScalar sumA = 0, sumR = 0, sumG = 0, sumB = 0; | 162 SkScalar sumA = 0, sumR = 0, sumG = 0, sumB = 0; |
160 for (int cy = 0; cy < fKernelSize.fHeight; cy++) { | 163 for (int cy = 0; cy < fKernelSize.fHeight; cy++) { |
161 for (int cx = 0; cx < fKernelSize.fWidth; cx++) { | 164 for (int cx = 0; cx < fKernelSize.fWidth; cx++) { |
162 SkPMColor s = PixelFetcher::fetch(src, | 165 SkPMColor s = PixelFetcher::fetch(src, |
163 x + cx - fKernelOffset.fX, | 166 x + cx - fKernelOffset.fX, |
164 y + cy - fKernelOffset.fY, | 167 y + cy - fKernelOffset.fY, |
165 bounds); | 168 bounds); |
(...skipping 509 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
675 fBias, | 678 fBias, |
676 fKernelOffset, | 679 fKernelOffset, |
677 fTileMode, | 680 fTileMode, |
678 fConvolveAlpha); | 681 fConvolveAlpha); |
679 return true; | 682 return true; |
680 } | 683 } |
681 | 684 |
682 /////////////////////////////////////////////////////////////////////////////// | 685 /////////////////////////////////////////////////////////////////////////////// |
683 | 686 |
684 #endif | 687 #endif |
OLD | NEW |