| 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 "SkMorphologyImageFilter.h" | 8 #include "SkMorphologyImageFilter.h" |
| 9 #include "SkBitmap.h" | 9 #include "SkBitmap.h" |
| 10 #include "SkColorPriv.h" | 10 #include "SkColorPriv.h" |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 136 radiusY, bounds.height(), bounds.width(), | 136 radiusY, bounds.height(), bounds.width(), |
| 137 src.rowBytesAsPixels(), dst->rowBytesAsPixels()); | 137 src.rowBytesAsPixels(), dst->rowBytesAsPixels()); |
| 138 } | 138 } |
| 139 | 139 |
| 140 bool SkMorphologyImageFilter::filterImageGeneric(SkMorphologyImageFilter::Proc p
rocX, | 140 bool SkMorphologyImageFilter::filterImageGeneric(SkMorphologyImageFilter::Proc p
rocX, |
| 141 SkMorphologyImageFilter::Proc p
rocY, | 141 SkMorphologyImageFilter::Proc p
rocY, |
| 142 Proxy* proxy, | 142 Proxy* proxy, |
| 143 const SkBitmap& source, | 143 const SkBitmap& source, |
| 144 const SkMatrix& ctm, | 144 const SkMatrix& ctm, |
| 145 SkBitmap* dst, | 145 SkBitmap* dst, |
| 146 SkIPoint* offset) { | 146 SkIPoint* offset) const { |
| 147 SkBitmap src = source; | 147 SkBitmap src = source; |
| 148 SkIPoint srcOffset = SkIPoint::Make(0, 0); | 148 SkIPoint srcOffset = SkIPoint::Make(0, 0); |
| 149 if (getInput(0) && !getInput(0)->filterImage(proxy, source, ctm, &src, &srcO
ffset)) { | 149 if (getInput(0) && !getInput(0)->filterImage(proxy, source, ctm, &src, &srcO
ffset)) { |
| 150 return false; | 150 return false; |
| 151 } | 151 } |
| 152 | 152 |
| 153 if (src.config() != SkBitmap::kARGB_8888_Config) { | 153 if (src.config() != SkBitmap::kARGB_8888_Config) { |
| 154 return false; | 154 return false; |
| 155 } | 155 } |
| 156 | 156 |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 207 } else if (height > 0) { | 207 } else if (height > 0) { |
| 208 callProcY(procY, src, dst, height, srcBounds); | 208 callProcY(procY, src, dst, height, srcBounds); |
| 209 } | 209 } |
| 210 offset->fX = bounds.left(); | 210 offset->fX = bounds.left(); |
| 211 offset->fY = bounds.top(); | 211 offset->fY = bounds.top(); |
| 212 return true; | 212 return true; |
| 213 } | 213 } |
| 214 | 214 |
| 215 bool SkErodeImageFilter::onFilterImage(Proxy* proxy, | 215 bool SkErodeImageFilter::onFilterImage(Proxy* proxy, |
| 216 const SkBitmap& source, const SkMatrix& c
tm, | 216 const SkBitmap& source, const SkMatrix& c
tm, |
| 217 SkBitmap* dst, SkIPoint* offset) { | 217 SkBitmap* dst, SkIPoint* offset) const { |
| 218 Proc erodeXProc = SkMorphologyGetPlatformProc(kErodeX_SkMorphologyProcType); | 218 Proc erodeXProc = SkMorphologyGetPlatformProc(kErodeX_SkMorphologyProcType); |
| 219 if (!erodeXProc) { | 219 if (!erodeXProc) { |
| 220 erodeXProc = erode<kX>; | 220 erodeXProc = erode<kX>; |
| 221 } | 221 } |
| 222 Proc erodeYProc = SkMorphologyGetPlatformProc(kErodeY_SkMorphologyProcType); | 222 Proc erodeYProc = SkMorphologyGetPlatformProc(kErodeY_SkMorphologyProcType); |
| 223 if (!erodeYProc) { | 223 if (!erodeYProc) { |
| 224 erodeYProc = erode<kY>; | 224 erodeYProc = erode<kY>; |
| 225 } | 225 } |
| 226 return this->filterImageGeneric(erodeXProc, erodeYProc, proxy, source, ctm,
dst, offset); | 226 return this->filterImageGeneric(erodeXProc, erodeYProc, proxy, source, ctm,
dst, offset); |
| 227 } | 227 } |
| 228 | 228 |
| 229 bool SkDilateImageFilter::onFilterImage(Proxy* proxy, | 229 bool SkDilateImageFilter::onFilterImage(Proxy* proxy, |
| 230 const SkBitmap& source, const SkMatrix&
ctm, | 230 const SkBitmap& source, const SkMatrix&
ctm, |
| 231 SkBitmap* dst, SkIPoint* offset) { | 231 SkBitmap* dst, SkIPoint* offset) const { |
| 232 Proc dilateXProc = SkMorphologyGetPlatformProc(kDilateX_SkMorphologyProcType
); | 232 Proc dilateXProc = SkMorphologyGetPlatformProc(kDilateX_SkMorphologyProcType
); |
| 233 if (!dilateXProc) { | 233 if (!dilateXProc) { |
| 234 dilateXProc = dilate<kX>; | 234 dilateXProc = dilate<kX>; |
| 235 } | 235 } |
| 236 Proc dilateYProc = SkMorphologyGetPlatformProc(kDilateY_SkMorphologyProcType
); | 236 Proc dilateYProc = SkMorphologyGetPlatformProc(kDilateY_SkMorphologyProcType
); |
| 237 if (!dilateYProc) { | 237 if (!dilateYProc) { |
| 238 dilateYProc = dilate<kY>; | 238 dilateYProc = dilate<kY>; |
| 239 } | 239 } |
| 240 return this->filterImageGeneric(dilateXProc, dilateYProc, proxy, source, ctm
, dst, offset); | 240 return this->filterImageGeneric(dilateXProc, dilateYProc, proxy, source, ctm
, dst, offset); |
| 241 } | 241 } |
| (...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 533 return SkImageFilterUtils::WrapTexture(src, rect.width(), rect.height(), dst
); | 533 return SkImageFilterUtils::WrapTexture(src, rect.width(), rect.height(), dst
); |
| 534 } | 534 } |
| 535 | 535 |
| 536 }; | 536 }; |
| 537 | 537 |
| 538 bool SkMorphologyImageFilter::filterImageGPUGeneric(bool dilate, | 538 bool SkMorphologyImageFilter::filterImageGPUGeneric(bool dilate, |
| 539 Proxy* proxy, | 539 Proxy* proxy, |
| 540 const SkBitmap& src, | 540 const SkBitmap& src, |
| 541 const SkMatrix& ctm, | 541 const SkMatrix& ctm, |
| 542 SkBitmap* result, | 542 SkBitmap* result, |
| 543 SkIPoint* offset) { | 543 SkIPoint* offset) const { |
| 544 SkBitmap input; | 544 SkBitmap input; |
| 545 SkIPoint srcOffset = SkIPoint::Make(0, 0); | 545 SkIPoint srcOffset = SkIPoint::Make(0, 0); |
| 546 if (!SkImageFilterUtils::GetInputResultGPU(getInput(0), proxy, src, ctm, &in
put, &srcOffset)) { | 546 if (!SkImageFilterUtils::GetInputResultGPU(getInput(0), proxy, src, ctm, &in
put, &srcOffset)) { |
| 547 return false; | 547 return false; |
| 548 } | 548 } |
| 549 SkIRect bounds; | 549 SkIRect bounds; |
| 550 input.getBounds(&bounds); | 550 input.getBounds(&bounds); |
| 551 bounds.offset(srcOffset); | 551 bounds.offset(srcOffset); |
| 552 if (!this->applyCropRect(&bounds, ctm)) { | 552 if (!this->applyCropRect(&bounds, ctm)) { |
| 553 return false; | 553 return false; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 575 if (!apply_morphology(input, srcBounds, type, | 575 if (!apply_morphology(input, srcBounds, type, |
| 576 SkISize::Make(width, height), result)) { | 576 SkISize::Make(width, height), result)) { |
| 577 return false; | 577 return false; |
| 578 } | 578 } |
| 579 offset->fX = bounds.left(); | 579 offset->fX = bounds.left(); |
| 580 offset->fY = bounds.top(); | 580 offset->fY = bounds.top(); |
| 581 return true; | 581 return true; |
| 582 } | 582 } |
| 583 | 583 |
| 584 bool SkDilateImageFilter::filterImageGPU(Proxy* proxy, const SkBitmap& src, cons
t SkMatrix& ctm, | 584 bool SkDilateImageFilter::filterImageGPU(Proxy* proxy, const SkBitmap& src, cons
t SkMatrix& ctm, |
| 585 SkBitmap* result, SkIPoint* offset) { | 585 SkBitmap* result, SkIPoint* offset) con
st { |
| 586 return this->filterImageGPUGeneric(true, proxy, src, ctm, result, offset); | 586 return this->filterImageGPUGeneric(true, proxy, src, ctm, result, offset); |
| 587 } | 587 } |
| 588 | 588 |
| 589 bool SkErodeImageFilter::filterImageGPU(Proxy* proxy, const SkBitmap& src, const
SkMatrix& ctm, | 589 bool SkErodeImageFilter::filterImageGPU(Proxy* proxy, const SkBitmap& src, const
SkMatrix& ctm, |
| 590 SkBitmap* result, SkIPoint* offset) { | 590 SkBitmap* result, SkIPoint* offset) cons
t { |
| 591 return this->filterImageGPUGeneric(false, proxy, src, ctm, result, offset); | 591 return this->filterImageGPUGeneric(false, proxy, src, ctm, result, offset); |
| 592 } | 592 } |
| 593 | 593 |
| 594 #endif | 594 #endif |
| OLD | NEW |