Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(527)

Side by Side Diff: src/effects/gradients/SkGradientShader.cpp

Issue 1316123003: Style Change: SkNEW->new; SkDELETE->delete (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: 2015-08-26 (Wednesday) 15:59:00 EDT Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2006 The Android Open Source Project 2 * Copyright 2006 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 "SkGradientShaderPriv.h" 8 #include "SkGradientShaderPriv.h"
9 #include "SkLinearGradient.h" 9 #include "SkLinearGradient.h"
10 #include "SkRadialGradient.h" 10 #include "SkRadialGradient.h"
(...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after
590 } 590 }
591 } 591 }
592 592
593 /* 593 /*
594 * The gradient holds a cache for the most recent value of alpha. Successive 594 * The gradient holds a cache for the most recent value of alpha. Successive
595 * callers with the same alpha value will share the same cache. 595 * callers with the same alpha value will share the same cache.
596 */ 596 */
597 SkGradientShaderBase::GradientShaderCache* SkGradientShaderBase::refCache(U8CPU alpha) const { 597 SkGradientShaderBase::GradientShaderCache* SkGradientShaderBase::refCache(U8CPU alpha) const {
598 SkAutoMutexAcquire ama(fCacheMutex); 598 SkAutoMutexAcquire ama(fCacheMutex);
599 if (!fCache || fCache->getAlpha() != alpha) { 599 if (!fCache || fCache->getAlpha() != alpha) {
600 fCache.reset(SkNEW_ARGS(GradientShaderCache, (alpha, *this))); 600 fCache.reset(new GradientShaderCache(alpha, *this));
601 } 601 }
602 // Increment the ref counter inside the mutex to ensure the returned pointer is still valid. 602 // Increment the ref counter inside the mutex to ensure the returned pointer is still valid.
603 // Otherwise, the pointer may have been overwritten on a different thread be fore the object's 603 // Otherwise, the pointer may have been overwritten on a different thread be fore the object's
604 // ref count was incremented. 604 // ref count was incremented.
605 fCache.get()->ref(); 605 fCache.get()->ref();
606 return fCache; 606 return fCache;
607 } 607 }
608 608
609 SK_DECLARE_STATIC_MUTEX(gGradientCacheMutex); 609 SK_DECLARE_STATIC_MUTEX(gGradientCacheMutex);
610 /* 610 /*
(...skipping 30 matching lines...) Expand all
641 SkASSERT(buffer - storage.get() == count); 641 SkASSERT(buffer - storage.get() == count);
642 642
643 /////////////////////////////////// 643 ///////////////////////////////////
644 644
645 static SkGradientBitmapCache* gCache; 645 static SkGradientBitmapCache* gCache;
646 // each cache cost 1K of RAM, since each bitmap will be 1x256 at 32bpp 646 // each cache cost 1K of RAM, since each bitmap will be 1x256 at 32bpp
647 static const int MAX_NUM_CACHED_GRADIENT_BITMAPS = 32; 647 static const int MAX_NUM_CACHED_GRADIENT_BITMAPS = 32;
648 SkAutoMutexAcquire ama(gGradientCacheMutex); 648 SkAutoMutexAcquire ama(gGradientCacheMutex);
649 649
650 if (NULL == gCache) { 650 if (NULL == gCache) {
651 gCache = SkNEW_ARGS(SkGradientBitmapCache, (MAX_NUM_CACHED_GRADIENT_BITM APS)); 651 gCache = new SkGradientBitmapCache(MAX_NUM_CACHED_GRADIENT_BITMAPS);
652 } 652 }
653 size_t size = count * sizeof(int32_t); 653 size_t size = count * sizeof(int32_t);
654 654
655 if (!gCache->find(storage.get(), size, bitmap)) { 655 if (!gCache->find(storage.get(), size, bitmap)) {
656 // force our cahce32pixelref to be built 656 // force our cahce32pixelref to be built
657 (void)cache->getCache32(); 657 (void)cache->getCache32();
658 bitmap->setInfo(SkImageInfo::MakeN32Premul(kCache32Count, 1)); 658 bitmap->setInfo(SkImageInfo::MakeN32Premul(kCache32Count, 1));
659 bitmap->setPixelRef(cache->getCache32PixelRef()); 659 bitmap->setPixelRef(cache->getCache32PixelRef());
660 660
661 gCache->add(storage.get(), size, *bitmap); 661 gCache->add(storage.get(), size, *bitmap);
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
772 if (!pts) { 772 if (!pts) {
773 return NULL; 773 return NULL;
774 } 774 }
775 if (!valid_grad(colors, pos, colorCount, mode)) { 775 if (!valid_grad(colors, pos, colorCount, mode)) {
776 return NULL; 776 return NULL;
777 } 777 }
778 EXPAND_1_COLOR(colorCount); 778 EXPAND_1_COLOR(colorCount);
779 779
780 SkGradientShaderBase::Descriptor desc; 780 SkGradientShaderBase::Descriptor desc;
781 desc_init(&desc, colors, pos, colorCount, mode, flags, localMatrix); 781 desc_init(&desc, colors, pos, colorCount, mode, flags, localMatrix);
782 return SkNEW_ARGS(SkLinearGradient, (pts, desc)); 782 return new SkLinearGradient(pts, desc);
783 } 783 }
784 784
785 SkShader* SkGradientShader::CreateRadial(const SkPoint& center, SkScalar radius, 785 SkShader* SkGradientShader::CreateRadial(const SkPoint& center, SkScalar radius,
786 const SkColor colors[], 786 const SkColor colors[],
787 const SkScalar pos[], int colorCount, 787 const SkScalar pos[], int colorCount,
788 SkShader::TileMode mode, 788 SkShader::TileMode mode,
789 uint32_t flags, 789 uint32_t flags,
790 const SkMatrix* localMatrix) { 790 const SkMatrix* localMatrix) {
791 if (radius <= 0) { 791 if (radius <= 0) {
792 return NULL; 792 return NULL;
793 } 793 }
794 if (!valid_grad(colors, pos, colorCount, mode)) { 794 if (!valid_grad(colors, pos, colorCount, mode)) {
795 return NULL; 795 return NULL;
796 } 796 }
797 EXPAND_1_COLOR(colorCount); 797 EXPAND_1_COLOR(colorCount);
798 798
799 SkGradientShaderBase::Descriptor desc; 799 SkGradientShaderBase::Descriptor desc;
800 desc_init(&desc, colors, pos, colorCount, mode, flags, localMatrix); 800 desc_init(&desc, colors, pos, colorCount, mode, flags, localMatrix);
801 return SkNEW_ARGS(SkRadialGradient, (center, radius, desc)); 801 return new SkRadialGradient(center, radius, desc);
802 } 802 }
803 803
804 SkShader* SkGradientShader::CreateTwoPointConical(const SkPoint& start, 804 SkShader* SkGradientShader::CreateTwoPointConical(const SkPoint& start,
805 SkScalar startRadius, 805 SkScalar startRadius,
806 const SkPoint& end, 806 const SkPoint& end,
807 SkScalar endRadius, 807 SkScalar endRadius,
808 const SkColor colors[], 808 const SkColor colors[],
809 const SkScalar pos[], 809 const SkScalar pos[],
810 int colorCount, 810 int colorCount,
811 SkShader::TileMode mode, 811 SkShader::TileMode mode,
(...skipping 10 matching lines...) Expand all
822 } 822 }
823 823
824 EXPAND_1_COLOR(colorCount); 824 EXPAND_1_COLOR(colorCount);
825 825
826 bool flipGradient = startRadius > endRadius; 826 bool flipGradient = startRadius > endRadius;
827 827
828 SkGradientShaderBase::Descriptor desc; 828 SkGradientShaderBase::Descriptor desc;
829 829
830 if (!flipGradient) { 830 if (!flipGradient) {
831 desc_init(&desc, colors, pos, colorCount, mode, flags, localMatrix); 831 desc_init(&desc, colors, pos, colorCount, mode, flags, localMatrix);
832 return SkNEW_ARGS(SkTwoPointConicalGradient, 832 return new SkTwoPointConicalGradient(start, startRadius, end, endRadius, flipGradient,
833 (start, startRadius, end, endRadius, flipGradient, des c)); 833 desc);
834 } else { 834 } else {
835 SkAutoSTArray<8, SkColor> colorsNew(colorCount); 835 SkAutoSTArray<8, SkColor> colorsNew(colorCount);
836 SkAutoSTArray<8, SkScalar> posNew(colorCount); 836 SkAutoSTArray<8, SkScalar> posNew(colorCount);
837 for (int i = 0; i < colorCount; ++i) { 837 for (int i = 0; i < colorCount; ++i) {
838 colorsNew[i] = colors[colorCount - i - 1]; 838 colorsNew[i] = colors[colorCount - i - 1];
839 } 839 }
840 840
841 if (pos) { 841 if (pos) {
842 for (int i = 0; i < colorCount; ++i) { 842 for (int i = 0; i < colorCount; ++i) {
843 posNew[i] = 1 - pos[colorCount - i - 1]; 843 posNew[i] = 1 - pos[colorCount - i - 1];
844 } 844 }
845 desc_init(&desc, colorsNew.get(), posNew.get(), colorCount, mode, fl ags, localMatrix); 845 desc_init(&desc, colorsNew.get(), posNew.get(), colorCount, mode, fl ags, localMatrix);
846 } else { 846 } else {
847 desc_init(&desc, colorsNew.get(), NULL, colorCount, mode, flags, loc alMatrix); 847 desc_init(&desc, colorsNew.get(), NULL, colorCount, mode, flags, loc alMatrix);
848 } 848 }
849 849
850 return SkNEW_ARGS(SkTwoPointConicalGradient, 850 return new SkTwoPointConicalGradient(end, endRadius, start, startRadius, flipGradient,
851 (end, endRadius, start, startRadius, flipGradient, des c)); 851 desc);
852 } 852 }
853 } 853 }
854 854
855 SkShader* SkGradientShader::CreateSweep(SkScalar cx, SkScalar cy, 855 SkShader* SkGradientShader::CreateSweep(SkScalar cx, SkScalar cy,
856 const SkColor colors[], 856 const SkColor colors[],
857 const SkScalar pos[], 857 const SkScalar pos[],
858 int colorCount, 858 int colorCount,
859 uint32_t flags, 859 uint32_t flags,
860 const SkMatrix* localMatrix) { 860 const SkMatrix* localMatrix) {
861 if (!valid_grad(colors, pos, colorCount, SkShader::kClamp_TileMode)) { 861 if (!valid_grad(colors, pos, colorCount, SkShader::kClamp_TileMode)) {
862 return NULL; 862 return NULL;
863 } 863 }
864 EXPAND_1_COLOR(colorCount); 864 EXPAND_1_COLOR(colorCount);
865 865
866 SkGradientShaderBase::Descriptor desc; 866 SkGradientShaderBase::Descriptor desc;
867 desc_init(&desc, colors, pos, colorCount, SkShader::kClamp_TileMode, flags, localMatrix); 867 desc_init(&desc, colors, pos, colorCount, SkShader::kClamp_TileMode, flags, localMatrix);
868 return SkNEW_ARGS(SkSweepGradient, (cx, cy, desc)); 868 return new SkSweepGradient(cx, cy, desc);
869 } 869 }
870 870
871 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkGradientShader) 871 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_START(SkGradientShader)
872 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLinearGradient) 872 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkLinearGradient)
873 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkRadialGradient) 873 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkRadialGradient)
874 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSweepGradient) 874 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSweepGradient)
875 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkTwoPointConicalGradient) 875 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkTwoPointConicalGradient)
876 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END 876 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END
877 877
878 /////////////////////////////////////////////////////////////////////////////// 878 ///////////////////////////////////////////////////////////////////////////////
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
1178 (*stops)[i] = stop; 1178 (*stops)[i] = stop;
1179 stop = i < outColors - 1 ? stop + random->nextUScalar1() * (1.f - st op) : 1.f; 1179 stop = i < outColors - 1 ? stop + random->nextUScalar1() * (1.f - st op) : 1.f;
1180 } 1180 }
1181 } 1181 }
1182 *tm = static_cast<SkShader::TileMode>(random->nextULessThan(SkShader::kTileM odeCount)); 1182 *tm = static_cast<SkShader::TileMode>(random->nextULessThan(SkShader::kTileM odeCount));
1183 1183
1184 return outColors; 1184 return outColors;
1185 } 1185 }
1186 1186
1187 #endif 1187 #endif
OLDNEW
« no previous file with comments | « src/effects/gradients/SkGradientBitmapCache.cpp ('k') | src/effects/gradients/SkLinearGradient.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698