diff options
Diffstat (limited to 'src/gpu/SkGpuDevice.cpp')
-rw-r--r-- | src/gpu/SkGpuDevice.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp index 0f1872666a..b8cc2bb4ce 100644 --- a/src/gpu/SkGpuDevice.cpp +++ b/src/gpu/SkGpuDevice.cpp @@ -481,6 +481,21 @@ bool SkGpuDevice::skPaint2GrPaintShader(const SkPaint& skPaint, GrSamplerState::SampleMode sampleMode = sk_bmp_type_to_sample_mode[bmptype]; if (-1 == sampleMode) { + SkShader::GradientInfo info; + SkColor color; + + info.fColors = &color; + info.fColorOffsets = NULL; + info.fColorCount = 1; + if (SkShader::kColor_GradientType == shader->asAGradient(&info)) { + SkPaint copy(skPaint); + copy.setShader(NULL); + copy.setColor(SkColorSetA(color, copy.getAlpha())); + return this->skPaint2GrPaintNoShader(copy, + false, + grPaint, + constantColor); + } return false; } GrSamplerState* sampler = grPaint->getTextureSampler(kShaderTextureIdx); |