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