Chromium Code Reviews| Index: Source/platform/graphics/GraphicsContext.cpp |
| diff --git a/Source/platform/graphics/GraphicsContext.cpp b/Source/platform/graphics/GraphicsContext.cpp |
| index 1fdbb54a9eca53d367f662b2f557efa68680b116..8f4b766ba4547f1030c3eba04bc0c8bdf1f26b72 100644 |
| --- a/Source/platform/graphics/GraphicsContext.cpp |
| +++ b/Source/platform/graphics/GraphicsContext.cpp |
| @@ -299,19 +299,26 @@ void GraphicsContext::setFillGradient(PassRefPtr<Gradient> gradient) |
| void GraphicsContext::setShadow(const FloatSize& offset, float blur, const Color& color, |
| DrawLooperBuilder::ShadowTransformMode shadowTransformMode, |
| - DrawLooperBuilder::ShadowAlphaMode shadowAlphaMode) |
| + DrawLooperBuilder::ShadowAlphaMode shadowAlphaMode, ShadowMode shadowMode) |
| { |
| if (contextDisabled()) |
| return; |
| + OwnPtr<DrawLooperBuilder> drawLooperBuilder = DrawLooperBuilder::create(); |
| if (!color.alpha() || (!offset.width() && !offset.height() && !blur)) { |
| + if (shadowMode == DrawShadowOnly) { |
| + // shadow only, but there is no shadow: use an empty draw looper to silence rendering. |
|
Stephen White
2014/10/15 17:15:30
Nit: suggest "silence rendering" -> "disable rende
|
| + setDrawLooper(drawLooperBuilder.release()); |
| + return; |
| + } |
| clearShadow(); |
| return; |
| } |
| - OwnPtr<DrawLooperBuilder> drawLooperBuilder = DrawLooperBuilder::create(); |
| drawLooperBuilder->addShadow(offset, blur, color, shadowTransformMode, shadowAlphaMode); |
| - drawLooperBuilder->addUnmodifiedContent(); |
| + if (shadowMode == DrawShadowAndForeground) { |
| + drawLooperBuilder->addUnmodifiedContent(); |
| + } |
| setDrawLooper(drawLooperBuilder.release()); |
| } |