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 927 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
938 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSweepGradient) | 938 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkSweepGradient) |
939 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkTwoPointRadialGradient) | 939 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkTwoPointRadialGradient) |
940 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkTwoPointConicalGradient) | 940 SK_DEFINE_FLATTENABLE_REGISTRAR_ENTRY(SkTwoPointConicalGradient) |
941 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END | 941 SK_DEFINE_FLATTENABLE_REGISTRAR_GROUP_END |
942 | 942 |
943 /////////////////////////////////////////////////////////////////////////////// | 943 /////////////////////////////////////////////////////////////////////////////// |
944 | 944 |
945 #if SK_SUPPORT_GPU | 945 #if SK_SUPPORT_GPU |
946 | 946 |
947 #include "effects/GrTextureStripAtlas.h" | 947 #include "effects/GrTextureStripAtlas.h" |
948 #include "GrTBackendEffectFactory.h" | 948 #include "GrTBackendProcessorFactory.h" |
949 #include "gl/builders/GrGLProgramBuilder.h" | 949 #include "gl/builders/GrGLProgramBuilder.h" |
950 #include "SkGr.h" | 950 #include "SkGr.h" |
951 | 951 |
952 GrGLGradientEffect::GrGLGradientEffect(const GrBackendEffectFactory& factory) | 952 GrGLGradientEffect::GrGLGradientEffect(const GrBackendProcessorFactory& factory) |
953 : INHERITED(factory) | 953 : INHERITED(factory) |
954 , fCachedYCoord(SK_ScalarMax) { | 954 , fCachedYCoord(SK_ScalarMax) { |
955 } | 955 } |
956 | 956 |
957 GrGLGradientEffect::~GrGLGradientEffect() { } | 957 GrGLGradientEffect::~GrGLGradientEffect() { } |
958 | 958 |
959 void GrGLGradientEffect::emitUniforms(GrGLProgramBuilder* builder, uint32_t base
Key) { | 959 void GrGLGradientEffect::emitUniforms(GrGLProgramBuilder* builder, uint32_t base
Key) { |
960 | 960 |
961 if (SkGradientShaderBase::kTwo_GpuColorType == ColorTypeFromKey(baseKey)) {
// 2 Color case | 961 if (SkGradientShaderBase::kTwo_GpuColorType == ColorTypeFromKey(baseKey)) {
// 2 Color case |
962 fColorStartUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visib
ility, | 962 fColorStartUni = builder->addUniform(GrGLProgramBuilder::kFragment_Visib
ility, |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
994 float a = SkColorGetA(*color) / 255.f; | 994 float a = SkColorGetA(*color) / 255.f; |
995 float aDiv255 = a / 255.f; | 995 float aDiv255 = a / 255.f; |
996 pdman.set4f(uni, | 996 pdman.set4f(uni, |
997 SkColorGetR(*color) * aDiv255, | 997 SkColorGetR(*color) * aDiv255, |
998 SkColorGetG(*color) * aDiv255, | 998 SkColorGetG(*color) * aDiv255, |
999 SkColorGetB(*color) * aDiv255, | 999 SkColorGetB(*color) * aDiv255, |
1000 a); | 1000 a); |
1001 } | 1001 } |
1002 | 1002 |
1003 void GrGLGradientEffect::setData(const GrGLProgramDataManager& pdman, | 1003 void GrGLGradientEffect::setData(const GrGLProgramDataManager& pdman, |
1004 const GrEffect& effect) { | 1004 const GrProcessor& processor) { |
1005 | 1005 |
1006 const GrGradientEffect& e = effect.cast<GrGradientEffect>(); | 1006 const GrGradientEffect& e = processor.cast<GrGradientEffect>(); |
1007 | 1007 |
1008 | 1008 |
1009 if (SkGradientShaderBase::kTwo_GpuColorType == e.getColorType()){ | 1009 if (SkGradientShaderBase::kTwo_GpuColorType == e.getColorType()){ |
1010 | 1010 |
1011 if (GrGradientEffect::kBeforeInterp_PremulType == e.getPremulType()) { | 1011 if (GrGradientEffect::kBeforeInterp_PremulType == e.getPremulType()) { |
1012 set_mul_color_uni(pdman, fColorStartUni, e.getColors(0)); | 1012 set_mul_color_uni(pdman, fColorStartUni, e.getColors(0)); |
1013 set_mul_color_uni(pdman, fColorEndUni, e.getColors(1)); | 1013 set_mul_color_uni(pdman, fColorEndUni, e.getColors(1)); |
1014 } else { | 1014 } else { |
1015 set_color_uni(pdman, fColorStartUni, e.getColors(0)); | 1015 set_color_uni(pdman, fColorStartUni, e.getColors(0)); |
1016 set_color_uni(pdman, fColorEndUni, e.getColors(1)); | 1016 set_color_uni(pdman, fColorEndUni, e.getColors(1)); |
(...skipping 14 matching lines...) Expand all Loading... |
1031 | 1031 |
1032 SkScalar yCoord = e.getYCoord(); | 1032 SkScalar yCoord = e.getYCoord(); |
1033 if (yCoord != fCachedYCoord) { | 1033 if (yCoord != fCachedYCoord) { |
1034 pdman.set1f(fFSYUni, yCoord); | 1034 pdman.set1f(fFSYUni, yCoord); |
1035 fCachedYCoord = yCoord; | 1035 fCachedYCoord = yCoord; |
1036 } | 1036 } |
1037 } | 1037 } |
1038 } | 1038 } |
1039 | 1039 |
1040 | 1040 |
1041 uint32_t GrGLGradientEffect::GenBaseGradientKey(const GrEffect& effect) { | 1041 uint32_t GrGLGradientEffect::GenBaseGradientKey(const GrProcessor& processor) { |
1042 const GrGradientEffect& e = effect.cast<GrGradientEffect>(); | 1042 const GrGradientEffect& e = processor.cast<GrGradientEffect>(); |
1043 | 1043 |
1044 uint32_t key = 0; | 1044 uint32_t key = 0; |
1045 | 1045 |
1046 if (SkGradientShaderBase::kTwo_GpuColorType == e.getColorType()) { | 1046 if (SkGradientShaderBase::kTwo_GpuColorType == e.getColorType()) { |
1047 key |= kTwoColorKey; | 1047 key |= kTwoColorKey; |
1048 } else if (SkGradientShaderBase::kThree_GpuColorType == e.getColorType()){ | 1048 } else if (SkGradientShaderBase::kThree_GpuColorType == e.getColorType()){ |
1049 key |= kThreeColorKey; | 1049 key |= kThreeColorKey; |
1050 } | 1050 } |
1051 | 1051 |
1052 if (GrGradientEffect::kBeforeInterp_PremulType == e.getPremulType()) { | 1052 if (GrGradientEffect::kBeforeInterp_PremulType == e.getPremulType()) { |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1178 } | 1178 } |
1179 this->addCoordTransform(&fCoordTransform); | 1179 this->addCoordTransform(&fCoordTransform); |
1180 } | 1180 } |
1181 | 1181 |
1182 GrGradientEffect::~GrGradientEffect() { | 1182 GrGradientEffect::~GrGradientEffect() { |
1183 if (this->useAtlas()) { | 1183 if (this->useAtlas()) { |
1184 fAtlas->unlockRow(fRow); | 1184 fAtlas->unlockRow(fRow); |
1185 } | 1185 } |
1186 } | 1186 } |
1187 | 1187 |
1188 bool GrGradientEffect::onIsEqual(const GrEffect& effect) const { | 1188 bool GrGradientEffect::onIsEqual(const GrProcessor& processor) const { |
1189 const GrGradientEffect& s = effect.cast<GrGradientEffect>(); | 1189 const GrGradientEffect& s = processor.cast<GrGradientEffect>(); |
1190 | 1190 |
1191 if (this->fColorType == s.getColorType()){ | 1191 if (this->fColorType == s.getColorType()){ |
1192 | 1192 |
1193 if (SkGradientShaderBase::kTwo_GpuColorType == fColorType) { | 1193 if (SkGradientShaderBase::kTwo_GpuColorType == fColorType) { |
1194 if (*this->getColors(0) != *s.getColors(0) || | 1194 if (*this->getColors(0) != *s.getColors(0) || |
1195 *this->getColors(1) != *s.getColors(1)) { | 1195 *this->getColors(1) != *s.getColors(1)) { |
1196 return false; | 1196 return false; |
1197 } | 1197 } |
1198 } else if (SkGradientShaderBase::kThree_GpuColorType == fColorType) { | 1198 } else if (SkGradientShaderBase::kThree_GpuColorType == fColorType) { |
1199 if (*this->getColors(0) != *s.getColors(0) || | 1199 if (*this->getColors(0) != *s.getColors(0) || |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1243 (*stops)[i] = stop; | 1243 (*stops)[i] = stop; |
1244 stop = i < outColors - 1 ? stop + random->nextUScalar1() * (1.f - st
op) : 1.f; | 1244 stop = i < outColors - 1 ? stop + random->nextUScalar1() * (1.f - st
op) : 1.f; |
1245 } | 1245 } |
1246 } | 1246 } |
1247 *tm = static_cast<SkShader::TileMode>(random->nextULessThan(SkShader::kTileM
odeCount)); | 1247 *tm = static_cast<SkShader::TileMode>(random->nextULessThan(SkShader::kTileM
odeCount)); |
1248 | 1248 |
1249 return outColors; | 1249 return outColors; |
1250 } | 1250 } |
1251 | 1251 |
1252 #endif | 1252 #endif |
OLD | NEW |