| 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 | 9 |
| 10 #include "SkBitmap.h" | 10 #include "SkBitmap.h" |
| (...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 365 static void apply_morphology_rect(GrDrawContext* drawContext, | 365 static void apply_morphology_rect(GrDrawContext* drawContext, |
| 366 const GrClip& clip, | 366 const GrClip& clip, |
| 367 GrTexture* texture, | 367 GrTexture* texture, |
| 368 const SkIRect& srcRect, | 368 const SkIRect& srcRect, |
| 369 const SkIRect& dstRect, | 369 const SkIRect& dstRect, |
| 370 int radius, | 370 int radius, |
| 371 GrMorphologyEffect::MorphologyType morphType, | 371 GrMorphologyEffect::MorphologyType morphType, |
| 372 float bounds[2], | 372 float bounds[2], |
| 373 Gr1DKernelEffect::Direction direction) { | 373 Gr1DKernelEffect::Direction direction) { |
| 374 GrPaint paint; | 374 GrPaint paint; |
| 375 // SRGBTODO: AllowSRGBInputs? |
| 375 paint.addColorFragmentProcessor(GrMorphologyEffect::Create(texture, | 376 paint.addColorFragmentProcessor(GrMorphologyEffect::Create(texture, |
| 376 direction, | 377 direction, |
| 377 radius, | 378 radius, |
| 378 morphType, | 379 morphType, |
| 379 bounds))->unref()
; | 380 bounds))->unref()
; |
| 380 paint.setPorterDuffXPFactory(SkXfermode::kSrc_Mode); | 381 paint.setPorterDuffXPFactory(SkXfermode::kSrc_Mode); |
| 381 drawContext->fillRectToRect(clip, paint, SkMatrix::I(), SkRect::Make(dstRect
), | 382 drawContext->fillRectToRect(clip, paint, SkMatrix::I(), SkRect::Make(dstRect
), |
| 382 SkRect::Make(srcRect)); | 383 SkRect::Make(srcRect)); |
| 383 } | 384 } |
| 384 | 385 |
| 385 static void apply_morphology_rect_no_bounds(GrDrawContext* drawContext, | 386 static void apply_morphology_rect_no_bounds(GrDrawContext* drawContext, |
| 386 const GrClip& clip, | 387 const GrClip& clip, |
| 387 GrTexture* texture, | 388 GrTexture* texture, |
| 388 const SkIRect& srcRect, | 389 const SkIRect& srcRect, |
| 389 const SkIRect& dstRect, | 390 const SkIRect& dstRect, |
| 390 int radius, | 391 int radius, |
| 391 GrMorphologyEffect::MorphologyType m
orphType, | 392 GrMorphologyEffect::MorphologyType m
orphType, |
| 392 Gr1DKernelEffect::Direction directio
n) { | 393 Gr1DKernelEffect::Direction directio
n) { |
| 393 GrPaint paint; | 394 GrPaint paint; |
| 395 // SRGBTODO: AllowSRGBInputs? |
| 394 paint.addColorFragmentProcessor(GrMorphologyEffect::Create(texture, | 396 paint.addColorFragmentProcessor(GrMorphologyEffect::Create(texture, |
| 395 direction, | 397 direction, |
| 396 radius, | 398 radius, |
| 397 morphType))->unre
f(); | 399 morphType))->unre
f(); |
| 398 paint.setPorterDuffXPFactory(SkXfermode::kSrc_Mode); | 400 paint.setPorterDuffXPFactory(SkXfermode::kSrc_Mode); |
| 399 drawContext->fillRectToRect(clip, paint, SkMatrix::I(), SkRect::Make(dstRect
), | 401 drawContext->fillRectToRect(clip, paint, SkMatrix::I(), SkRect::Make(dstRect
), |
| 400 SkRect::Make(srcRect)); | 402 SkRect::Make(srcRect)); |
| 401 } | 403 } |
| 402 | 404 |
| 403 static void apply_morphology_pass(GrDrawContext* drawContext, | 405 static void apply_morphology_pass(GrDrawContext* drawContext, |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 506 apply_morphology_pass(dstDrawContext, clip, srcTexture, | 508 apply_morphology_pass(dstDrawContext, clip, srcTexture, |
| 507 srcRect, dstRect, radius.fHeight, morphType, | 509 srcRect, dstRect, radius.fHeight, morphType, |
| 508 Gr1DKernelEffect::kY_Direction); | 510 Gr1DKernelEffect::kY_Direction); |
| 509 | 511 |
| 510 srcTexture.reset(scratch); | 512 srcTexture.reset(scratch); |
| 511 } | 513 } |
| 512 | 514 |
| 513 return SkSpecialImage::MakeFromGpu(input->internal_getProxy(), | 515 return SkSpecialImage::MakeFromGpu(input->internal_getProxy(), |
| 514 SkIRect::MakeWH(rect.width(), rect.height
()), | 516 SkIRect::MakeWH(rect.width(), rect.height
()), |
| 515 kNeedNewImageUniqueID_SpecialImage, | 517 kNeedNewImageUniqueID_SpecialImage, |
| 516 srcTexture); | 518 srcTexture, &input->props()); |
| 517 } | 519 } |
| 518 #endif | 520 #endif |
| 519 | 521 |
| 520 sk_sp<SkSpecialImage> SkMorphologyImageFilter::onFilterImage(SkSpecialImage* sou
rce, | 522 sk_sp<SkSpecialImage> SkMorphologyImageFilter::onFilterImage(SkSpecialImage* sou
rce, |
| 521 const Context& ctx, | 523 const Context& ctx, |
| 522 SkIPoint* offset) c
onst { | 524 SkIPoint* offset) c
onst { |
| 523 SkIPoint inputOffset = SkIPoint::Make(0, 0); | 525 SkIPoint inputOffset = SkIPoint::Make(0, 0); |
| 524 sk_sp<SkSpecialImage> input(this->filterInput(0, source, ctx, &inputOffset))
; | 526 sk_sp<SkSpecialImage> input(this->filterInput(0, source, ctx, &inputOffset))
; |
| 525 if (!input) { | 527 if (!input) { |
| 526 return nullptr; | 528 return nullptr; |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 614 call_proc_Y(procY, | 616 call_proc_Y(procY, |
| 615 inputPixmap.addr32(srcBounds.left(), srcBounds.top()), | 617 inputPixmap.addr32(srcBounds.left(), srcBounds.top()), |
| 616 inputPixmap.rowBytesAsPixels(), | 618 inputPixmap.rowBytesAsPixels(), |
| 617 &dst, height, srcBounds); | 619 &dst, height, srcBounds); |
| 618 } | 620 } |
| 619 offset->fX = bounds.left(); | 621 offset->fX = bounds.left(); |
| 620 offset->fY = bounds.top(); | 622 offset->fY = bounds.top(); |
| 621 | 623 |
| 622 return SkSpecialImage::MakeFromRaster(source->internal_getProxy(), | 624 return SkSpecialImage::MakeFromRaster(source->internal_getProxy(), |
| 623 SkIRect::MakeWH(bounds.width(), bounds
.height()), | 625 SkIRect::MakeWH(bounds.width(), bounds
.height()), |
| 624 dst); | 626 dst, &source->props()); |
| 625 } | 627 } |
| OLD | NEW |