/* Copyright (C) 2004, 2005, 2007 Nikolas Zimmermann 2004, 2005, 2007 Rob Buis Copyright (C) 2009 Google, Inc. All rights reserved. Copyright (C) 2009 Apple Inc. All rights reserved. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License aint with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef RenderSVGRoot_h #define RenderSVGRoot_h #if ENABLE(SVG) #include "RenderBox.h" #include "FloatRect.h" #include "SVGRenderSupport.h" namespace WebCore { class SVGStyledElement; class AffineTransform; class RenderSVGRoot : public RenderBox { public: RenderSVGRoot(SVGStyledElement*); const RenderObjectChildList* children() const { return &m_children; } RenderObjectChildList* children() { return &m_children; } private: virtual RenderObjectChildList* virtualChildren() { return children(); } virtual const RenderObjectChildList* virtualChildren() const { return children(); } virtual bool isSVGRoot() const { return true; } virtual const char* renderName() const { return "RenderSVGRoot"; } virtual int lineHeight(bool b, bool isRootLineBox = false) const; virtual int baselinePosition(bool b, bool isRootLineBox = false) const; virtual void calcPrefWidths(); virtual int calcReplacedWidth(bool includeMaxWidth = true) const; virtual int calcReplacedHeight() const; virtual void layout(); virtual void paint(PaintInfo&, int parentX, int parentY); virtual void destroy(); virtual const AffineTransform& localToParentTransform() const; bool fillContains(const FloatPoint&) const; bool strokeContains(const FloatPoint&) const; virtual FloatRect objectBoundingBox() const; virtual FloatRect strokeBoundingBox() const; virtual FloatRect repaintRectInLocalCoordinates() const; virtual bool nodeAtPoint(const HitTestRequest&, HitTestResult&, int x, int y, int tx, int ty, HitTestAction); virtual void computeRectForRepaint(RenderBoxModelObject* repaintContainer, IntRect& repaintRect, bool fixed); virtual void mapLocalToContainer(RenderBoxModelObject* repaintContainer, bool useTransforms, bool fixed, TransformState&) const; void calcViewport(); bool selfWillPaint() const; IntSize parentOriginToBorderBox() const; IntSize borderOriginToContentBox() const; AffineTransform localToRepaintContainerTransform(const IntPoint& parentOriginInContainer) const; AffineTransform localToBorderBoxTransform() const; RenderObjectChildList m_children; FloatSize m_viewportSize; mutable AffineTransform m_localToParentTransform; }; inline RenderSVGRoot* toRenderSVGRoot(RenderObject* object) { ASSERT(!object || object->isSVGRoot()); return static_cast(object); } inline const RenderSVGRoot* toRenderSVGRoot(const RenderObject* object) { ASSERT(!object || object->isSVGRoot()); return static_cast(object); } // This will catch anyone doing an unnecessary cast. void toRenderSVGRoot(const RenderSVGRoot*); } // namespace WebCore #endif // ENABLE(SVG) #endif // RenderSVGRoot_h