#pragma once
#include "RenderInline.h"
#include "SVGGraphicsElement.h"
namespace WebCore {
class RenderSVGInline : public RenderInline {
public:
RenderSVGInline(SVGGraphicsElement&, RenderStyle&&);
SVGGraphicsElement& graphicsElement() const { return downcast<SVGGraphicsElement>(nodeForNonAnonymous()); }
private:
void element() const = delete;
const char* renderName() const override { return "RenderSVGInline"; }
bool requiresLayer() const final { return false; }
bool isSVGInline() const final { return true; }
void updateFromStyle() final;
FloatRect objectBoundingBox() const final;
FloatRect strokeBoundingBox() const final;
FloatRect repaintRectInLocalCoordinates() const final;
LayoutRect clippedOverflowRectForRepaint(const RenderLayerModelObject* repaintContainer) const final;
FloatRect computeFloatRectForRepaint(const FloatRect&, const RenderLayerModelObject* repaintContainer, bool fixed = false) const final;
void mapLocalToContainer(const RenderLayerModelObject* repaintContainer, TransformState&, MapCoordinatesFlags, bool* wasFixed) const final;
const RenderObject* pushMappingToContainer(const RenderLayerModelObject* ancestorToStopAt, RenderGeometryMap&) const final;
void absoluteQuads(Vector<FloatQuad>&, bool* wasFixed) const final;
std::unique_ptr<InlineFlowBox> createInlineFlowBox() final;
void willBeDestroyed() final;
void styleDidChange(StyleDifference, const RenderStyle* oldStyle) final;
void addChild(RenderObject* child, RenderObject* beforeChild = nullptr) final;
void removeChild(RenderObject&) final;
};
}
SPECIALIZE_TYPE_TRAITS_RENDER_OBJECT(RenderSVGInline, isSVGInline())