| OLD | NEW |
| 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 882 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 893 GrGLGradientEffect::GrGLGradientEffect() | 893 GrGLGradientEffect::GrGLGradientEffect() |
| 894 : fCachedYCoord(SK_ScalarMax) { | 894 : fCachedYCoord(SK_ScalarMax) { |
| 895 } | 895 } |
| 896 | 896 |
| 897 GrGLGradientEffect::~GrGLGradientEffect() { } | 897 GrGLGradientEffect::~GrGLGradientEffect() { } |
| 898 | 898 |
| 899 void GrGLGradientEffect::emitUniforms(GrGLFPBuilder* builder, const GrGradientEf
fect& ge) { | 899 void GrGLGradientEffect::emitUniforms(GrGLFPBuilder* builder, const GrGradientEf
fect& ge) { |
| 900 | 900 |
| 901 if (SkGradientShaderBase::kTwo_GpuColorType == ge.getColorType()) { // 2 Col
or case | 901 if (SkGradientShaderBase::kTwo_GpuColorType == ge.getColorType()) { // 2 Col
or case |
| 902 fColorStartUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visib
ility, | 902 fColorStartUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visib
ility, |
| 903 kVec4f_GrSLType, "GradientStartColo
r"); | 903 kVec4f_GrSLType, kDefault_GrSLPreci
sion, |
| 904 "GradientStartColor"); |
| 904 fColorEndUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visibil
ity, | 905 fColorEndUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visibil
ity, |
| 905 kVec4f_GrSLType, "GradientEndColor"); | 906 kVec4f_GrSLType, kDefault_GrSLPrecisi
on, |
| 907 "GradientEndColor"); |
| 906 | 908 |
| 907 } else if (SkGradientShaderBase::kThree_GpuColorType == ge.getColorType()) {
// 3 Color Case | 909 } else if (SkGradientShaderBase::kThree_GpuColorType == ge.getColorType()) {
// 3 Color Case |
| 908 fColorStartUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visib
ility, | 910 fColorStartUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visib
ility, |
| 909 kVec4f_GrSLType, "GradientStartColo
r"); | 911 kVec4f_GrSLType, kDefault_GrSLPrec
ision, |
| 912 "GradientStartColor"); |
| 910 fColorMidUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visibil
ity, | 913 fColorMidUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visibil
ity, |
| 911 kVec4f_GrSLType, "GradientMidColor"); | 914 kVec4f_GrSLType, kDefault_GrSLPrecisi
on, |
| 915 "GradientMidColor"); |
| 912 fColorEndUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visibil
ity, | 916 fColorEndUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visibil
ity, |
| 913 kVec4f_GrSLType, "GradientEndColor"
); | 917 kVec4f_GrSLType, kDefault_GrSLPrecisi
on, |
| 918 "GradientEndColor"); |
| 914 | 919 |
| 915 } else { // if not a fast case | 920 } else { // if not a fast case |
| 916 fFSYUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility, | 921 fFSYUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visibility, |
| 917 kFloat_GrSLType, "GradientYCoordFS"); | 922 kFloat_GrSLType, kDefault_GrSLPrecision, |
| 923 "GradientYCoordFS"); |
| 918 } | 924 } |
| 919 } | 925 } |
| 920 | 926 |
| 921 static inline void set_color_uni(const GrGLProgramDataManager& pdman, | 927 static inline void set_color_uni(const GrGLProgramDataManager& pdman, |
| 922 const GrGLProgramDataManager::UniformHandle uni
, | 928 const GrGLProgramDataManager::UniformHandle uni
, |
| 923 const SkColor* color) { | 929 const SkColor* color) { |
| 924 pdman.set4f(uni, | 930 pdman.set4f(uni, |
| 925 SkColorGetR(*color) / 255.f, | 931 SkColorGetR(*color) / 255.f, |
| 926 SkColorGetG(*color) / 255.f, | 932 SkColorGetG(*color) / 255.f, |
| 927 SkColorGetB(*color) / 255.f, | 933 SkColorGetB(*color) / 255.f, |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1174 (*stops)[i] = stop; | 1180 (*stops)[i] = stop; |
| 1175 stop = i < outColors - 1 ? stop + random->nextUScalar1() * (1.f - st
op) : 1.f; | 1181 stop = i < outColors - 1 ? stop + random->nextUScalar1() * (1.f - st
op) : 1.f; |
| 1176 } | 1182 } |
| 1177 } | 1183 } |
| 1178 *tm = static_cast<SkShader::TileMode>(random->nextULessThan(SkShader::kTileM
odeCount)); | 1184 *tm = static_cast<SkShader::TileMode>(random->nextULessThan(SkShader::kTileM
odeCount)); |
| 1179 | 1185 |
| 1180 return outColors; | 1186 return outColors; |
| 1181 } | 1187 } |
| 1182 | 1188 |
| 1183 #endif | 1189 #endif |
| OLD | NEW |