18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2006 Oliver Hunt <ojh16@student.canterbury.ac.nz>
365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Copyright (C) 2006 Apple Computer 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
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef RenderSVGInline_h
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define RenderSVGInline_h
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(SVG)
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "RenderInline.h"
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
27d0825bca7fe65beaee391d30da42e937db621564Steve Block#include "SVGRenderSupport.h"
28d0825bca7fe65beaee391d30da42e937db621564Steve Block
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
308f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
31ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Blockclass RenderSVGInline : public RenderInline {
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpublic:
33a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    explicit RenderSVGInline(Node*);
34dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block
358f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    virtual const char* renderName() const { return "RenderSVGInline"; }
368f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian    virtual bool requiresLayer() const { return false; }
3768513a70bcd92384395513322f1b801e7bf9c729Steve Block    virtual bool isSVGInline() const { return true; }
385f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian
39dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    // Chapter 10.4 of the SVG Specification say that we should use the
40dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    // object bounding box of the parent text element.
4106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    // We search for the root text element and take its bounding box.
42dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    // It is also necessary to take the stroke and repaint rect of
43dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    // this element, since we need it for filters.
44dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual FloatRect objectBoundingBox() const;
45dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual FloatRect strokeBoundingBox() const;
46dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    virtual FloatRect repaintRectInLocalCoordinates() const;
4706ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
4806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    virtual IntRect clippedOverflowRectForRepaint(RenderBoxModelObject* repaintContainer);
4906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    virtual void computeRectForRepaint(RenderBoxModelObject* repaintContainer, IntRect&, bool fixed = false);
5006ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    virtual void mapLocalToContainer(RenderBoxModelObject* repaintContainer, bool useTransforms, bool fixed, TransformState&) const;
5106ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    virtual void absoluteQuads(Vector<FloatQuad>&);
5206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
538f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qianprivate:
540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch    virtual InlineFlowBox* createInlineFlowBox();
55db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block
56db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    virtual void destroy();
575ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen    virtual void styleWillChange(StyleDifference, const RenderStyle* newStyle);
58db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle);
59db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block    virtual void updateFromElement();
608f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian};
618f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // ENABLE(SVG)
658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // !RenderSVGTSpan_H
66