18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Copyright (C) 2004, 2005, 2007 Nikolas Zimmermann <zimmermann@kde.org> 365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Copyright (C) 2004, 2005, 2007 Rob Buis <buis@kde.org> 465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Copyright (C) 2009 Google, Inc. 565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Copyright (C) 2009 Apple Inc. All rights reserved. 665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * This library is free software; you can redistribute it and/or 865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * modify it under the terms of the GNU Library General Public 965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * License as published by the Free Software Foundation; either 1065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * version 2 of the License, or (at your option) any later version. 1165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 1265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * This library is distributed in the hope that it will be useful, 1365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * but WITHOUT ANY WARRANTY; without even the implied warranty of 1465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Library General Public License for more details. 1665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 1765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * You should have received a copy of the GNU Library General Public License 1865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * along with this library; see the file COPYING.LIB. If not, write to 1965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 2065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Boston, MA 02110-1301, USA. 2165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch */ 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef RenderSVGViewportContainer_h 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define RenderSVGViewportContainer_h 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG) 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "RenderSVGContainer.h" 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 315f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian// This is used for non-root <svg> elements and <marker> elements, neither of which are SVGTransformable 325f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian// thus we inherit from RenderSVGContainer instead of RenderSVGTransformableContainer 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass RenderSVGViewportContainer : public RenderSVGContainer { 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic: 35a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch explicit RenderSVGViewportContainer(SVGStyledElement*); 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochprivate: 380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual bool isSVGContainer() const { return true; } 396b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner virtual bool isSVGViewportContainer() const { return true; } 400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch virtual const char* renderName() const { return "RenderSVGViewportContainer"; } 410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 428a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block AffineTransform viewportTransform() const; 438a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block virtual const AffineTransform& localToParentTransform() const; 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 455f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian virtual void calcViewport(); 465f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 475f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian virtual void applyViewportClip(PaintInfo&); 485f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian virtual bool pointIsInsideViewportClip(const FloatPoint& pointInParent); 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project FloatRect m_viewport; 518a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block mutable AffineTransform m_localToParentTransform; 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochinline RenderSVGViewportContainer* toRenderSVGViewportContainer(RenderObject* object) 550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ASSERT(!object || !strcmp(object->renderName(), "RenderSVGViewportContainer")); 570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return static_cast<RenderSVGViewportContainer*>(object); 580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch// This will catch anyone doing an unnecessary cast. 610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochvoid toRenderSVGViewportContainer(const RenderSVGViewportContainer*); 620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // ENABLE(SVG) 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // RenderSVGViewportContainer_h 67