mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-20 01:37:39 +03:00
92c08ad4ac
Instead of trying to layout SVG boxes as if they are regular CSS boxes, let's invent an "SVG formatting context" and let it manage SVG boxes. To facilitate this, Layout::SVGBox no longer inherits from ReplacedBox, and is instead a simple, "inline-block" style BlockBox.
36 lines
875 B
C++
36 lines
875 B
C++
/*
|
|
* Copyright (c) 2020, Matthew Olsson <mattco@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#include <LibWeb/Layout/SVGSVGBox.h>
|
|
|
|
namespace Web::Layout {
|
|
|
|
SVGSVGBox::SVGSVGBox(DOM::Document& document, SVG::SVGSVGElement& element, NonnullRefPtr<CSS::StyleProperties> properties)
|
|
: SVGGraphicsBox(document, element, properties)
|
|
{
|
|
}
|
|
|
|
void SVGSVGBox::before_children_paint(PaintContext& context, PaintPhase phase)
|
|
{
|
|
if (phase != PaintPhase::Foreground)
|
|
return;
|
|
|
|
if (!context.has_svg_context())
|
|
context.set_svg_context(SVGContext());
|
|
|
|
SVGGraphicsBox::before_children_paint(context, phase);
|
|
}
|
|
|
|
void SVGSVGBox::after_children_paint(PaintContext& context, PaintPhase phase)
|
|
{
|
|
SVGGraphicsBox::after_children_paint(context, phase);
|
|
if (phase != PaintPhase::Foreground)
|
|
return;
|
|
context.clear_svg_context();
|
|
}
|
|
|
|
}
|