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()); |
} |