OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2006 The Android Open Source Project | 3 * Copyright 2006 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 #include "SkBlurMaskFilter.h" | 9 #include "SkBlurMaskFilter.h" |
10 #include "SkBlurMask.h" | 10 #include "SkBlurMask.h" |
(...skipping 628 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
639 | 639 |
640 static const GrCacheID::Domain gBlurProfileDomain = GrCacheID::GenerateDomai
n(); | 640 static const GrCacheID::Domain gBlurProfileDomain = GrCacheID::GenerateDomai
n(); |
641 GrCacheID::Key key; | 641 GrCacheID::Key key; |
642 memset(&key, 0, sizeof(key)); | 642 memset(&key, 0, sizeof(key)); |
643 key.fData32[0] = profile_size; | 643 key.fData32[0] = profile_size; |
644 key.fData32[1] = width; | 644 key.fData32[1] = width; |
645 key.fData32[2] = 1; | 645 key.fData32[2] = 1; |
646 GrCacheID horizontalCacheID(gBlurProfileDomain, key); | 646 GrCacheID horizontalCacheID(gBlurProfileDomain, key); |
647 | 647 |
648 uint8_t *profile = NULL; | 648 uint8_t *profile = NULL; |
649 SkAutoTDeleteArray<uint8_t> ada(profile); | 649 SkAutoTDeleteArray<uint8_t> ada(NULL); |
650 | 650 |
651 *horizontalScanline = context->findAndRefTexture(texDesc, horizontalCacheID,
¶ms); | 651 *horizontalScanline = context->findAndRefTexture(texDesc, horizontalCacheID,
¶ms); |
652 | 652 |
653 if (NULL == *horizontalScanline) { | 653 if (NULL == *horizontalScanline) { |
654 | 654 |
655 SkBlurMask::ComputeBlurProfile(sigma, &profile); | 655 SkBlurMask::ComputeBlurProfile(sigma, &profile); |
| 656 ada.reset(profile); |
656 | 657 |
657 SkAutoTMalloc<uint8_t> horizontalPixels(width); | 658 SkAutoTMalloc<uint8_t> horizontalPixels(width); |
658 SkBlurMask::ComputeBlurredScanline(horizontalPixels, profile, width, sig
ma); | 659 SkBlurMask::ComputeBlurredScanline(horizontalPixels, profile, width, sig
ma); |
659 | 660 |
660 *horizontalScanline = context->createTexture(¶ms, texDesc, horizonta
lCacheID, | 661 *horizontalScanline = context->createTexture(¶ms, texDesc, horizonta
lCacheID, |
661 horizontalPixels, 0); | 662 horizontalPixels, 0); |
662 | 663 |
663 if (NULL == *horizontalScanline) { | 664 if (NULL == *horizontalScanline) { |
664 return false; | 665 return false; |
665 } | 666 } |
666 } | 667 } |
667 | 668 |
668 texDesc.fWidth = 1; | 669 texDesc.fWidth = 1; |
669 texDesc.fHeight = height; | 670 texDesc.fHeight = height; |
670 key.fData32[1] = 1; | 671 key.fData32[1] = 1; |
671 key.fData32[2] = height; | 672 key.fData32[2] = height; |
672 GrCacheID verticalCacheID(gBlurProfileDomain, key); | 673 GrCacheID verticalCacheID(gBlurProfileDomain, key); |
673 | 674 |
674 *verticalScanline = context->findAndRefTexture(texDesc, verticalCacheID, &pa
rams); | 675 *verticalScanline = context->findAndRefTexture(texDesc, verticalCacheID, &pa
rams); |
675 if (NULL == *verticalScanline) { | 676 if (NULL == *verticalScanline) { |
676 if (NULL == profile) { | 677 if (NULL == profile) { |
677 SkBlurMask::ComputeBlurProfile(sigma, &profile); | 678 SkBlurMask::ComputeBlurProfile(sigma, &profile); |
| 679 ada.reset(profile); |
678 } | 680 } |
679 | 681 |
680 SkAutoTMalloc<uint8_t> verticalPixels(height); | 682 SkAutoTMalloc<uint8_t> verticalPixels(height); |
681 SkBlurMask::ComputeBlurredScanline(verticalPixels, profile, height, sigm
a); | 683 SkBlurMask::ComputeBlurredScanline(verticalPixels, profile, height, sigm
a); |
682 | 684 |
683 *verticalScanline = context->createTexture(¶ms, texDesc, verticalCac
heID, | 685 *verticalScanline = context->createTexture(¶ms, texDesc, verticalCac
heID, |
684 verticalPixels, 0); | 686 verticalPixels, 0); |
685 | 687 |
686 if (NULL == *verticalScanline) { | 688 if (NULL == *verticalScanline) { |
687 return false; | 689 return false; |
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
893 } else { | 895 } else { |
894 str->append("None"); | 896 str->append("None"); |
895 } | 897 } |
896 str->append("))"); | 898 str->append("))"); |
897 } | 899 } |
898 #endif | 900 #endif |
899 | 901 |
900 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkBlurMaskFilter) | 902 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkBlurMaskFilter) |
901 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBlurMaskFilterImpl) | 903 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkBlurMaskFilterImpl) |
902 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END | 904 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END |
OLD | NEW |