| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2012 The Android Open Source Project | 2 * Copyright 2012 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 "SkBitmap.h" | 8 #include "SkBitmap.h" |
| 9 #include "SkMagnifierImageFilter.h" | 9 #include "SkMagnifierImageFilter.h" |
| 10 #include "SkColorPriv.h" | 10 #include "SkColorPriv.h" |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 : INHERITED(factory) | 120 : INHERITED(factory) |
| 121 , fEffectMatrix(drawEffect.castEffect<GrMagnifierEffect>().coordsType()) { | 121 , fEffectMatrix(drawEffect.castEffect<GrMagnifierEffect>().coordsType()) { |
| 122 } | 122 } |
| 123 | 123 |
| 124 void GrGLMagnifierEffect::emitCode(GrGLShaderBuilder* builder, | 124 void GrGLMagnifierEffect::emitCode(GrGLShaderBuilder* builder, |
| 125 const GrDrawEffect&, | 125 const GrDrawEffect&, |
| 126 EffectKey key, | 126 EffectKey key, |
| 127 const char* outputColor, | 127 const char* outputColor, |
| 128 const char* inputColor, | 128 const char* inputColor, |
| 129 const TextureSamplerArray& samplers) { | 129 const TextureSamplerArray& samplers) { |
| 130 const char* coords; | 130 SkString coords; |
| 131 fEffectMatrix.emitCodeMakeFSCoords2D(builder, key, &coords); | 131 fEffectMatrix.emitCodeMakeFSCoords2D(builder, key, &coords); |
| 132 fOffsetVar = builder->addUniform( | 132 fOffsetVar = builder->addUniform( |
| 133 GrGLShaderBuilder::kFragment_ShaderType | | 133 GrGLShaderBuilder::kFragment_ShaderType | |
| 134 GrGLShaderBuilder::kVertex_ShaderType, | 134 GrGLShaderBuilder::kVertex_ShaderType, |
| 135 kVec2f_GrSLType, "uOffset"); | 135 kVec2f_GrSLType, "uOffset"); |
| 136 fZoomVar = builder->addUniform( | 136 fZoomVar = builder->addUniform( |
| 137 GrGLShaderBuilder::kFragment_ShaderType | | 137 GrGLShaderBuilder::kFragment_ShaderType | |
| 138 GrGLShaderBuilder::kVertex_ShaderType, | 138 GrGLShaderBuilder::kVertex_ShaderType, |
| 139 kVec2f_GrSLType, "uZoom"); | 139 kVec2f_GrSLType, "uZoom"); |
| 140 fInsetVar = builder->addUniform( | 140 fInsetVar = builder->addUniform( |
| 141 GrGLShaderBuilder::kFragment_ShaderType | | 141 GrGLShaderBuilder::kFragment_ShaderType | |
| 142 GrGLShaderBuilder::kVertex_ShaderType, | 142 GrGLShaderBuilder::kVertex_ShaderType, |
| 143 kVec2f_GrSLType, "uInset"); | 143 kVec2f_GrSLType, "uInset"); |
| 144 | 144 |
| 145 builder->fsCodeAppendf("\t\tvec2 coord = %s;\n", coords); | 145 builder->fsCodeAppendf("\t\tvec2 coord = %s;\n", coords.c_str()); |
| 146 builder->fsCodeAppendf("\t\tvec2 zoom_coord = %s + %s / %s;\n", | 146 builder->fsCodeAppendf("\t\tvec2 zoom_coord = %s + %s / %s;\n", |
| 147 builder->getUniformCStr(fOffsetVar), | 147 builder->getUniformCStr(fOffsetVar), |
| 148 coords, | 148 coords.c_str(), |
| 149 builder->getUniformCStr(fZoomVar)); | 149 builder->getUniformCStr(fZoomVar)); |
| 150 | 150 |
| 151 builder->fsCodeAppend("\t\tvec2 delta = min(coord, vec2(1.0, 1.0) - coord);\
n"); | 151 builder->fsCodeAppend("\t\tvec2 delta = min(coord, vec2(1.0, 1.0) - coord);\
n"); |
| 152 | 152 |
| 153 builder->fsCodeAppendf("\t\tdelta = delta / %s;\n", builder->getUniformCStr(
fInsetVar)); | 153 builder->fsCodeAppendf("\t\tdelta = delta / %s;\n", builder->getUniformCStr(
fInsetVar)); |
| 154 | 154 |
| 155 builder->fsCodeAppend("\t\tfloat weight = 0.0;\n"); | 155 builder->fsCodeAppend("\t\tfloat weight = 0.0;\n"); |
| 156 builder->fsCodeAppend("\t\tif (delta.s < 2.0 && delta.t < 2.0) {\n"); | 156 builder->fsCodeAppend("\t\tif (delta.s < 2.0 && delta.t < 2.0) {\n"); |
| 157 builder->fsCodeAppend("\t\t\tdelta = vec2(2.0, 2.0) - delta;\n"); | 157 builder->fsCodeAppend("\t\t\tdelta = vec2(2.0, 2.0) - delta;\n"); |
| 158 builder->fsCodeAppend("\t\t\tfloat dist = length(delta);\n"); | 158 builder->fsCodeAppend("\t\t\tfloat dist = length(delta);\n"); |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 342 | 342 |
| 343 int x_val = SkMin32(SkScalarFloorToInt(x_interp), width - 1); | 343 int x_val = SkMin32(SkScalarFloorToInt(x_interp), width - 1); |
| 344 int y_val = SkMin32(SkScalarFloorToInt(y_interp), height - 1); | 344 int y_val = SkMin32(SkScalarFloorToInt(y_interp), height - 1); |
| 345 | 345 |
| 346 *dptr = sptr[y_val * width + x_val]; | 346 *dptr = sptr[y_val * width + x_val]; |
| 347 dptr++; | 347 dptr++; |
| 348 } | 348 } |
| 349 } | 349 } |
| 350 return true; | 350 return true; |
| 351 } | 351 } |
| OLD | NEW |