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..c431e280370db130862470e507829647fe6fa26a 100644 |
| --- a/Source/platform/graphics/GraphicsContext.cpp |
| +++ b/Source/platform/graphics/GraphicsContext.cpp |
| @@ -299,22 +299,31 @@ 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; |
| - if (!color.alpha() || (!offset.width() && !offset.height() && !blur)) { |
| + OwnPtr<DrawLooperBuilder> drawLooperBuilder = DrawLooperBuilder::create(); |
| + if (shadowMode == DrawForegroundOnly || (!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/14 21:02:12
Not sure I understand this comment. "silence rende
|
| + setDrawLooper(drawLooperBuilder.release()); |
| + return; |
| + } |
| + // Drawing foreground only, or drawing shadow and forground with no shadow. |
| clearShadow(); |
| return; |
| } |
| - OwnPtr<DrawLooperBuilder> drawLooperBuilder = DrawLooperBuilder::create(); |
| drawLooperBuilder->addShadow(offset, blur, color, shadowTransformMode, shadowAlphaMode); |
| - drawLooperBuilder->addUnmodifiedContent(); |
| + if (shadowMode == DrawShadowAndForeground) { |
| + drawLooperBuilder->addUnmodifiedContent(); |
| + } |
| setDrawLooper(drawLooperBuilder.release()); |
| } |
| + |
|
jbroman
2014/10/14 21:09:48
nit: spurious newline
|
| void GraphicsContext::setDrawLooper(PassOwnPtr<DrawLooperBuilder> drawLooperBuilder) |
| { |
| if (contextDisabled()) |