046733af07f24c4465a93ca9a935ebc7138f30dc
[WebKit-https.git] / WebCore / kcanvas / RenderSVGText.h
1 /*
2  * This file is part of the WebKit project.
3  *
4  * Copyright (C) 2006 Apple Computer, Inc.
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Library General Public
8  * License as published by the Free Software Foundation; either
9  * version 2 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Library General Public License for more details.
15  *
16  * You should have received a copy of the GNU Library General Public License
17  * along with this library; see the file COPYING.LIB.  If not, write to
18  * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19  * Boston, MA 02111-1307, USA.
20  *
21  */
22
23 #ifndef RenderSVGText_H
24 #define RenderSVGText_H
25 #ifdef SVG_SUPPORT
26
27 #include "RenderBlock.h"
28 #include "AffineTransform.h"
29
30 namespace WebCore {
31
32 class SVGTextElement;
33
34 class RenderSVGText : public RenderBlock
35 {
36 public:
37     RenderSVGText(SVGTextElement* node);
38
39     virtual const char *renderName() const { return "RenderSVGText"; }
40     
41     virtual AffineTransform localTransform() const { return m_transform; }
42     virtual void setLocalTransform(const AffineTransform& transform) { m_transform = transform; }
43     virtual void paint(PaintInfo& i, int _tx, int _ty);
44     virtual bool nodeAtPoint(NodeInfo&, int x, int y, int tx, int ty, HitTestAction);
45     virtual void absoluteRects(Vector<IntRect>&, int tx, int ty);
46     virtual void computeAbsoluteRepaintRect(IntRect& r, bool f);
47     virtual bool requiresLayer();
48     virtual void layout();
49     virtual FloatRect relativeBBox(bool includeStroke = true) const;
50     virtual InlineBox* createInlineBox(bool makePlaceHolderBox, bool isRootLineBox, bool isOnlyRun = false);
51  private:
52     AffineTransform m_transform;
53     IntRect m_absoluteBounds;
54 };
55
56 }
57
58 #endif // SVG_SUPPORT
59 #endif