Commit 841521b1 authored by Fredrik Söderqvist's avatar Fredrik Söderqvist Committed by Chromium LUCI CQ

Fold GraphicsContext::SetShadow

It only has a single user, and folding the function makes it simpler.
Relocate the ShadowMode enumeration as suggested by the TODO.

Bug: 1159514
Change-Id: I2af6c08da74f199dcffc94f84e21e60da5037ede
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2618139Reviewed-by: default avatarStephen Chenney <schenney@chromium.org>
Reviewed-by: default avatarFernando Serboncini <fserb@chromium.org>
Commit-Queue: Fernando Serboncini <fserb@chromium.org>
Auto-Submit: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#842183}
parent 339975cc
......@@ -136,10 +136,13 @@ void BoxPainterBase::PaintNormalBoxShadow(const PaintInfo& info,
}
}
// Draw only the shadow.
context.SetShadow(shadow_offset, shadow_blur, shadow_color,
DrawLooperBuilder::kShadowRespectsTransforms,
DrawLooperBuilder::kShadowIgnoresAlpha, kDrawShadowOnly);
// Draw only the shadow. If the color of the shadow is transparent we will
// set an empty draw looper.
DrawLooperBuilder draw_looper_builder;
draw_looper_builder.AddShadow(shadow_offset, shadow_blur, shadow_color,
DrawLooperBuilder::kShadowRespectsTransforms,
DrawLooperBuilder::kShadowIgnoresAlpha);
context.SetDrawLooper(draw_looper_builder.DetachDrawLooper());
if (has_border_radius) {
FloatRoundedRect rounded_fill_rect = border;
......
......@@ -24,6 +24,12 @@ class CanvasStyle;
class CSSValue;
class Element;
enum ShadowMode {
kDrawShadowAndForeground,
kDrawShadowOnly,
kDrawForegroundOnly
};
class CanvasRenderingContext2DState final
: public GarbageCollected<CanvasRenderingContext2DState>,
public FontSelectorClient {
......
......@@ -223,32 +223,6 @@ DOMNodeId GraphicsContext::GetDOMNodeId() const {
return dom_node_id_;
}
void GraphicsContext::SetShadow(
const FloatSize& offset,
float blur,
const Color& color,
DrawLooperBuilder::ShadowTransformMode shadow_transform_mode,
DrawLooperBuilder::ShadowAlphaMode shadow_alpha_mode,
ShadowMode shadow_mode) {
DrawLooperBuilder draw_looper_builder;
if (!color.Alpha()) {
// When shadow-only but there is no shadow, we use an empty draw looper
// to disable rendering of the source primitive. When not shadow-only, we
// clear the looper.
SetDrawLooper(shadow_mode != kDrawShadowOnly
? nullptr
: draw_looper_builder.DetachDrawLooper());
return;
}
draw_looper_builder.AddShadow(offset, blur, color, shadow_transform_mode,
shadow_alpha_mode);
if (shadow_mode == kDrawShadowAndForeground) {
draw_looper_builder.AddUnmodifiedContent();
}
SetDrawLooper(draw_looper_builder.DetachDrawLooper());
}
void GraphicsContext::SetDrawLooper(sk_sp<SkDrawLooper> draw_looper) {
MutableState()->SetDrawLooper(std::move(draw_looper));
}
......
......@@ -348,15 +348,6 @@ class PLATFORM_EXPORT GraphicsContext {
// not necessarily non-empty), even when the context is disabled.
sk_sp<PaintRecord> EndRecording();
void SetShadow(const FloatSize& offset,
float blur,
const Color&,
DrawLooperBuilder::ShadowTransformMode =
DrawLooperBuilder::kShadowRespectsTransforms,
DrawLooperBuilder::ShadowAlphaMode =
DrawLooperBuilder::kShadowRespectsAlpha,
ShadowMode = kDrawShadowAndForeground);
void SetDrawLooper(sk_sp<SkDrawLooper>);
void DrawFocusRing(const Vector<IntRect>&,
......
......@@ -134,14 +134,6 @@ enum MailboxSyncMode {
kOrderingBarrier,
};
// TODO(junov): crbug.com/453113 Relocate ShadowMode to
// CanvasRenderingContext2DState.h once GraphicsContext no longer uses it.
enum ShadowMode {
kDrawShadowAndForeground,
kDrawShadowOnly,
kDrawForegroundOnly
};
enum AntiAliasingMode { kNotAntiAliased, kAntiAliased };
enum GradientSpreadMethod {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment