aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/SkGpuDevice.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpu/SkGpuDevice.cpp')
-rw-r--r--src/gpu/SkGpuDevice.cpp15
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);