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