18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2006 Apple Computer, Inc. 35f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * Copyright (C) 2009 Google, Inc. 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Library General Public 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version. 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful, 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Library General Public License for more details. 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Library General Public License 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * along with this library; see the file COPYING.LIB. If not, write to 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Boston, MA 02110-1301, USA. 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#ifndef RenderSVGForeignObject_h 2265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#define RenderSVGForeignObject_h 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 24692e5dbf12901edacf14812a6fae25462920af42Steve Block#if ENABLE(SVG) && ENABLE(SVG_FOREIGN_OBJECT) 258a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block#include "AffineTransform.h" 268a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block#include "FloatPoint.h" 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "RenderSVGBlock.h" 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectclass SVGForeignObjectElement; 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass RenderSVGForeignObject : public RenderSVGBlock { 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic: 3565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch explicit RenderSVGForeignObject(SVGForeignObjectElement*); 3665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual ~RenderSVGForeignObject(); 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual const char* renderName() const { return "RenderSVGForeignObject"; } 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void paint(PaintInfo&, int parentX, int parentY); 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 42692e5dbf12901edacf14812a6fae25462920af42Steve Block virtual IntRect clippedOverflowRectForRepaint(RenderBoxModelObject* repaintContainer); 438f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian virtual void computeRectForRepaint(RenderBoxModelObject* repaintContainer, IntRect&, bool fixed = false); 44692e5dbf12901edacf14812a6fae25462920af42Steve Block 45635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project virtual bool requiresLayer() const { return false; } 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual void layout(); 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 48692e5dbf12901edacf14812a6fae25462920af42Steve Block virtual FloatRect objectBoundingBox() const { return m_viewport; } 49692e5dbf12901edacf14812a6fae25462920af42Steve Block virtual FloatRect strokeBoundingBox() const { return m_viewport; } 50692e5dbf12901edacf14812a6fae25462920af42Steve Block virtual FloatRect repaintRectInLocalCoordinates() const { return m_viewport; } 515f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 525f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian virtual bool nodeAtFloatPoint(const HitTestRequest&, HitTestResult&, const FloatPoint& pointInParent, HitTestAction); 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project virtual bool nodeAtPoint(const HitTestRequest&, HitTestResult&, int x, int y, int tx, int ty, HitTestAction); 54231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block virtual bool isSVGForeignObject() const { return true; } 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual void mapLocalToContainer(RenderBoxModelObject* repaintContainer, bool fixed , bool useTransforms, TransformState&) const; 57dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block virtual void setNeedsTransformUpdate() { m_needsTransformUpdate = true; } 58d0825bca7fe65beaee391d30da42e937db621564Steve Block 5965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochprivate: 60bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen virtual void computeLogicalWidth(); 61bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen virtual void computeLogicalHeight(); 625f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 63692e5dbf12901edacf14812a6fae25462920af42Steve Block virtual const AffineTransform& localToParentTransform() const; 648a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block virtual AffineTransform localTransform() const { return m_localTransform; } 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 66dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block bool m_needsTransformUpdate : 1; 67692e5dbf12901edacf14812a6fae25462920af42Steve Block FloatRect m_viewport; 688a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block AffineTransform m_localTransform; 698a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block mutable AffineTransform m_localToParentTransform; 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 72692e5dbf12901edacf14812a6fae25462920af42Steve Block} 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 74692e5dbf12901edacf14812a6fae25462920af42Steve Block#endif 75692e5dbf12901edacf14812a6fae25462920af42Steve Block#endif 76