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

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

Issue 2405853002: [M54] Improve ColorStopOptimizer safety (Closed)
Patch Set: Created 4 years, 2 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "Sk4fLinearGradient.h" 8 #include "Sk4fLinearGradient.h"
9 #include "SkGradientShaderPriv.h" 9 #include "SkGradientShaderPriv.h"
10 #include "SkLinearGradient.h" 10 #include "SkLinearGradient.h"
(...skipping 872 matching lines...) Expand 10 before | Expand all | Expand 10 after
883 883
884 bool flipGradient = startRadius > endRadius; 884 bool flipGradient = startRadius > endRadius;
885 885
886 SkGradientShaderBase::Descriptor desc; 886 SkGradientShaderBase::Descriptor desc;
887 887
888 if (!flipGradient) { 888 if (!flipGradient) {
889 desc_init(&desc, opt.fColors, opt.fPos, opt.fCount, mode, flags, localMa trix); 889 desc_init(&desc, opt.fColors, opt.fPos, opt.fCount, mode, flags, localMa trix);
890 return sk_make_sp<SkTwoPointConicalGradient>(start, startRadius, end, en dRadius, 890 return sk_make_sp<SkTwoPointConicalGradient>(start, startRadius, end, en dRadius,
891 flipGradient, desc); 891 flipGradient, desc);
892 } else { 892 } else {
893 SkAutoSTArray<8, SkColor> colorsNew(colorCount); 893 SkAutoSTArray<8, SkColor> colorsNew(opt.fCount);
894 SkAutoSTArray<8, SkScalar> posNew(colorCount); 894 SkAutoSTArray<8, SkScalar> posNew(opt.fCount);
895 for (int i = 0; i < colorCount; ++i) { 895 for (int i = 0; i < opt.fCount; ++i) {
896 colorsNew[i] = opt.fColors[colorCount - i - 1]; 896 colorsNew[i] = opt.fColors[opt.fCount - i - 1];
897 } 897 }
898 898
899 if (pos) { 899 if (pos) {
900 for (int i = 0; i < colorCount; ++i) { 900 for (int i = 0; i < opt.fCount; ++i) {
901 posNew[i] = 1 - opt.fPos[colorCount - i - 1]; 901 posNew[i] = 1 - opt.fPos[opt.fCount - i - 1];
902 } 902 }
903 desc_init(&desc, colorsNew.get(), posNew.get(), colorCount, mode, fl ags, localMatrix); 903 desc_init(&desc, colorsNew.get(), posNew.get(), opt.fCount, mode, fl ags, localMatrix);
904 } else { 904 } else {
905 desc_init(&desc, colorsNew.get(), nullptr, colorCount, mode, flags, localMatrix); 905 desc_init(&desc, colorsNew.get(), nullptr, opt.fCount, mode, flags, localMatrix);
906 } 906 }
907 907
908 return sk_make_sp<SkTwoPointConicalGradient>(end, endRadius, start, star tRadius, 908 return sk_make_sp<SkTwoPointConicalGradient>(end, endRadius, start, star tRadius,
909 flipGradient, desc); 909 flipGradient, desc);
910 } 910 }
911 } 911 }
912 912
913 sk_sp<SkShader> SkGradientShader::MakeSweep(SkScalar cx, SkScalar cy, 913 sk_sp<SkShader> SkGradientShader::MakeSweep(SkScalar cx, SkScalar cy,
914 const SkColor colors[], 914 const SkColor colors[],
915 const SkScalar pos[], 915 const SkScalar pos[],
(...skipping 569 matching lines...) Expand 10 before | Expand all | Expand 10 after
1485 (*stops)[i] = stop; 1485 (*stops)[i] = stop;
1486 stop = i < outColors - 1 ? stop + random->nextUScalar1() * (1.f - st op) : 1.f; 1486 stop = i < outColors - 1 ? stop + random->nextUScalar1() * (1.f - st op) : 1.f;
1487 } 1487 }
1488 } 1488 }
1489 *tm = static_cast<SkShader::TileMode>(random->nextULessThan(SkShader::kTileM odeCount)); 1489 *tm = static_cast<SkShader::TileMode>(random->nextULessThan(SkShader::kTileM odeCount));
1490 1490
1491 return outColors; 1491 return outColors;
1492 } 1492 }
1493 1493
1494 #endif 1494 #endif
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698