RenderSVGModelObject.h [plain text]
#ifndef RenderSVGModelObject_h
#define RenderSVGModelObject_h
#include "RenderElement.h"
#include "SVGElement.h"
#include "SVGRenderSupport.h"
namespace WebCore {
class SVGElement;
class RenderSVGModelObject : public RenderElement {
public:
virtual LayoutRect clippedOverflowRectForRepaint(const RenderLayerModelObject* repaintContainer) const override;
virtual void computeFloatRectForRepaint(const RenderLayerModelObject* repaintContainer, FloatRect&, bool fixed = false) const override final;
virtual LayoutRect outlineBoundsForRepaint(const RenderLayerModelObject* repaintContainer, const RenderGeometryMap*) const override final;
virtual void absoluteRects(Vector<IntRect>&, const LayoutPoint& accumulatedOffset) const override final;
virtual void absoluteQuads(Vector<FloatQuad>&, bool* wasFixed) const override;
virtual void mapLocalToContainer(const RenderLayerModelObject* repaintContainer, TransformState&, MapCoordinatesFlags = ApplyContainerFlip, bool* wasFixed = 0) const override final;
virtual const RenderObject* pushMappingToContainer(const RenderLayerModelObject* ancestorToStopAt, RenderGeometryMap&) const override final;
virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle) override;
static bool checkIntersection(RenderElement*, const FloatRect&);
static bool checkEnclosure(RenderElement*, const FloatRect&);
virtual FloatRect repaintRectInLocalCoordinatesExcludingSVGShadow() const { return repaintRectInLocalCoordinates(); }
bool hasSVGShadow() const { return m_hasSVGShadow; }
void setHasSVGShadow(bool hasShadow) { m_hasSVGShadow = hasShadow; }
SVGElement& element() const { return toSVGElement(nodeForNonAnonymous()); }
protected:
RenderSVGModelObject(SVGElement&, PassRef<RenderStyle>);
virtual void willBeDestroyed() override;
private:
virtual bool isRenderSVGModelObject() const override final { return true; }
virtual bool nodeAtPoint(const HitTestRequest&, HitTestResult&, const HitTestLocation& locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAction) override;
virtual void absoluteFocusRingQuads(Vector<FloatQuad>&) override final;
bool m_hasSVGShadow;
};
RENDER_OBJECT_TYPE_CASTS(RenderSVGModelObject, isRenderSVGModelObject());
}
#endif