| 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 866 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 877 kVec4f_GrSLType, "GradientMidColor"); | 877 kVec4f_GrSLType, "GradientMidColor"); |
| 878 fColorEndUni = builder->addUniform(GrGLShaderBuilder::kFragment_Visibili
ty, | 878 fColorEndUni = builder->addUniform(GrGLShaderBuilder::kFragment_Visibili
ty, |
| 879 kVec4f_GrSLType, "GradientEndColor"
); | 879 kVec4f_GrSLType, "GradientEndColor"
); |
| 880 | 880 |
| 881 } else { // if not a fast case | 881 } else { // if not a fast case |
| 882 fFSYUni = builder->addUniform(GrGLShaderBuilder::kFragment_Visibility, | 882 fFSYUni = builder->addUniform(GrGLShaderBuilder::kFragment_Visibility, |
| 883 kFloat_GrSLType, "GradientYCoordFS"); | 883 kFloat_GrSLType, "GradientYCoordFS"); |
| 884 } | 884 } |
| 885 } | 885 } |
| 886 | 886 |
| 887 static inline void set_color_uni(const GrGLUniformManager& uman, | 887 static inline void set_color_uni(const GrGLProgramDataManager& pdman, |
| 888 const GrGLUniformManager::UniformHandle uni, | 888 const GrGLProgramDataManager::UniformHandle uni
, |
| 889 const SkColor* color) { | 889 const SkColor* color) { |
| 890 uman.set4f(uni, | 890 pdman.set4f(uni, |
| 891 SkColorGetR(*color) / 255.f, | 891 SkColorGetR(*color) / 255.f, |
| 892 SkColorGetG(*color) / 255.f, | 892 SkColorGetG(*color) / 255.f, |
| 893 SkColorGetB(*color) / 255.f, | 893 SkColorGetB(*color) / 255.f, |
| 894 SkColorGetA(*color) / 255.f); | 894 SkColorGetA(*color) / 255.f); |
| 895 } | 895 } |
| 896 | 896 |
| 897 static inline void set_mul_color_uni(const GrGLUniformManager& uman, | 897 static inline void set_mul_color_uni(const GrGLProgramDataManager& pdman, |
| 898 const GrGLUniformManager::UniformHandle uni
, | 898 const GrGLProgramDataManager::UniformHandle
uni, |
| 899 const SkColor* color){ | 899 const SkColor* color){ |
| 900 float a = SkColorGetA(*color) / 255.f; | 900 float a = SkColorGetA(*color) / 255.f; |
| 901 float aDiv255 = a / 255.f; | 901 float aDiv255 = a / 255.f; |
| 902 uman.set4f(uni, | 902 pdman.set4f(uni, |
| 903 SkColorGetR(*color) * aDiv255, | 903 SkColorGetR(*color) * aDiv255, |
| 904 SkColorGetG(*color) * aDiv255, | 904 SkColorGetG(*color) * aDiv255, |
| 905 SkColorGetB(*color) * aDiv255, | 905 SkColorGetB(*color) * aDiv255, |
| 906 a); | 906 a); |
| 907 } | 907 } |
| 908 | 908 |
| 909 void GrGLGradientEffect::setData(const GrGLUniformManager& uman, | 909 void GrGLGradientEffect::setData(const GrGLProgramDataManager& pdman, |
| 910 const GrDrawEffect& drawEffect) { | 910 const GrDrawEffect& drawEffect) { |
| 911 | 911 |
| 912 const GrGradientEffect& e = drawEffect.castEffect<GrGradientEffect>(); | 912 const GrGradientEffect& e = drawEffect.castEffect<GrGradientEffect>(); |
| 913 | 913 |
| 914 | 914 |
| 915 if (SkGradientShaderBase::kTwo_GpuColorType == e.getColorType()){ | 915 if (SkGradientShaderBase::kTwo_GpuColorType == e.getColorType()){ |
| 916 | 916 |
| 917 if (GrGradientEffect::kBeforeInterp_PremulType == e.getPremulType()) { | 917 if (GrGradientEffect::kBeforeInterp_PremulType == e.getPremulType()) { |
| 918 set_mul_color_uni(uman, fColorStartUni, e.getColors(0)); | 918 set_mul_color_uni(pdman, fColorStartUni, e.getColors(0)); |
| 919 set_mul_color_uni(uman, fColorEndUni, e.getColors(1)); | 919 set_mul_color_uni(pdman, fColorEndUni, e.getColors(1)); |
| 920 } else { | 920 } else { |
| 921 set_color_uni(uman, fColorStartUni, e.getColors(0)); | 921 set_color_uni(pdman, fColorStartUni, e.getColors(0)); |
| 922 set_color_uni(uman, fColorEndUni, e.getColors(1)); | 922 set_color_uni(pdman, fColorEndUni, e.getColors(1)); |
| 923 } | 923 } |
| 924 | 924 |
| 925 } else if (SkGradientShaderBase::kThree_GpuColorType == e.getColorType()){ | 925 } else if (SkGradientShaderBase::kThree_GpuColorType == e.getColorType()){ |
| 926 | 926 |
| 927 if (GrGradientEffect::kBeforeInterp_PremulType == e.getPremulType()) { | 927 if (GrGradientEffect::kBeforeInterp_PremulType == e.getPremulType()) { |
| 928 set_mul_color_uni(uman, fColorStartUni, e.getColors(0)); | 928 set_mul_color_uni(pdman, fColorStartUni, e.getColors(0)); |
| 929 set_mul_color_uni(uman, fColorMidUni, e.getColors(1)); | 929 set_mul_color_uni(pdman, fColorMidUni, e.getColors(1)); |
| 930 set_mul_color_uni(uman, fColorEndUni, e.getColors(2)); | 930 set_mul_color_uni(pdman, fColorEndUni, e.getColors(2)); |
| 931 } else { | 931 } else { |
| 932 set_color_uni(uman, fColorStartUni, e.getColors(0)); | 932 set_color_uni(pdman, fColorStartUni, e.getColors(0)); |
| 933 set_color_uni(uman, fColorMidUni, e.getColors(1)); | 933 set_color_uni(pdman, fColorMidUni, e.getColors(1)); |
| 934 set_color_uni(uman, fColorEndUni, e.getColors(2)); | 934 set_color_uni(pdman, fColorEndUni, e.getColors(2)); |
| 935 } | 935 } |
| 936 } else { | 936 } else { |
| 937 | 937 |
| 938 SkScalar yCoord = e.getYCoord(); | 938 SkScalar yCoord = e.getYCoord(); |
| 939 if (yCoord != fCachedYCoord) { | 939 if (yCoord != fCachedYCoord) { |
| 940 uman.set1f(fFSYUni, yCoord); | 940 pdman.set1f(fFSYUni, yCoord); |
| 941 fCachedYCoord = yCoord; | 941 fCachedYCoord = yCoord; |
| 942 } | 942 } |
| 943 } | 943 } |
| 944 } | 944 } |
| 945 | 945 |
| 946 | 946 |
| 947 uint32_t GrGLGradientEffect::GenBaseGradientKey(const GrDrawEffect& drawEffect)
{ | 947 uint32_t GrGLGradientEffect::GenBaseGradientKey(const GrDrawEffect& drawEffect)
{ |
| 948 const GrGradientEffect& e = drawEffect.castEffect<GrGradientEffect>(); | 948 const GrGradientEffect& e = drawEffect.castEffect<GrGradientEffect>(); |
| 949 | 949 |
| 950 uint32_t key = 0; | 950 uint32_t key = 0; |
| (...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1148 (*stops)[i] = stop; | 1148 (*stops)[i] = stop; |
| 1149 stop = i < outColors - 1 ? stop + random->nextUScalar1() * (1.f - st
op) : 1.f; | 1149 stop = i < outColors - 1 ? stop + random->nextUScalar1() * (1.f - st
op) : 1.f; |
| 1150 } | 1150 } |
| 1151 } | 1151 } |
| 1152 *tm = static_cast<SkShader::TileMode>(random->nextULessThan(SkShader::kTileM
odeCount)); | 1152 *tm = static_cast<SkShader::TileMode>(random->nextULessThan(SkShader::kTileM
odeCount)); |
| 1153 | 1153 |
| 1154 return outColors; | 1154 return outColors; |
| 1155 } | 1155 } |
| 1156 | 1156 |
| 1157 #endif | 1157 #endif |
| OLD | NEW |