#ifndef RenderSVGForeignObject_h
#define RenderSVGForeignObject_h
#include "core/rendering/svg/RenderSVGBlock.h"
namespace WebCore {
class SVGForeignObjectElement;
class RenderSVGForeignObject FINAL : public RenderSVGBlock {
public:
explicit RenderSVGForeignObject(SVGForeignObjectElement*);
virtual ~RenderSVGForeignObject();
virtual const char* renderName() const OVERRIDE { return "RenderSVGForeignObject"; }
virtual bool isChildAllowed(RenderObject*, RenderStyle*) const OVERRIDE;
virtual void paint(PaintInfo&, const LayoutPoint&) OVERRIDE;
virtual void layout() OVERRIDE;
virtual FloatRect objectBoundingBox() const OVERRIDE { return FloatRect(FloatPoint(), m_viewport.size()); }
virtual FloatRect strokeBoundingBox() const OVERRIDE { return FloatRect(FloatPoint(), m_viewport.size()); }
virtual FloatRect repaintRectInLocalCoordinates() const OVERRIDE { return FloatRect(FloatPoint(), m_viewport.size()); }
virtual void computeRectForRepaint(const RenderLayerModelObject* repaintContainer, LayoutRect&, bool fixed = false) const OVERRIDE;
virtual bool nodeAtFloatPoint(const HitTestRequest&, HitTestResult&, const FloatPoint& pointInParent, HitTestAction) OVERRIDE;
virtual bool isSVGForeignObject() const OVERRIDE { return true; }
virtual void setNeedsTransformUpdate() OVERRIDE { m_needsTransformUpdate = true; }
private:
virtual void updateLogicalWidth() OVERRIDE;
virtual void computeLogicalHeight(LayoutUnit logicalHeight, LayoutUnit logicalTop, LogicalExtentComputedValues&) const OVERRIDE;
virtual const AffineTransform& localToParentTransform() const OVERRIDE;
bool m_needsTransformUpdate : 1;
FloatRect m_viewport;
mutable AffineTransform m_localToParentTransform;
};
}
#endif