KHtml

RenderPath.h
1 /*
2  Copyright (C) 2004, 2005, 2007 Nikolas Zimmermann <[email protected]>
3  2004, 2005 Rob Buis <[email protected]>
4  2005 Eric Seidel <[email protected]>
5  2006 Apple Computer, Inc
6 
7  This file is part of the KDE project
8 
9  This library is free software; you can redistribute it and/or
10  modify it under the terms of the GNU Library General Public
11  License as published by the Free Software Foundation; either
12  version 2 of the License, or (at your option) any later version.
13 
14  This library is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17  Library General Public License for more details.
18 
19  You should have received a copy of the GNU Library General Public License
20  aint with this library; see the file COPYING.LIB. If not, write to
21  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
22  Boston, MA 02110-1301, USA.
23 */
24 
25 #ifndef RenderPath_h
26 #define RenderPath_h
27 
28 #if ENABLE(SVG)
29 
30 #include "AffineTransform.h"
31 #include "FloatRect.h"
32 
33 #include "RenderObject.h"
34 
35 #include "IntRect.h"
36 #include "Path.h"
37 #include "FloatPoint.h"
38 
39 namespace WebCore
40 {
41 
42 class FloatPoint;
43 //class Path;
44 //class RenderSVGContainer;
45 class SVGStyledTransformableElement;
46 
47 class RenderPath : public RenderObject
48 {
49 public:
50  RenderPath(RenderStyle *, SVGStyledTransformableElement *);
51  virtual ~RenderPath();
52 
53  // Hit-detection separated for the fill and the stroke
54  virtual bool fillContains(const FloatPoint &, bool requiresFill = true) const;
55  /*virtual bool strokeContains(const FloatPoint&, bool requiresStroke = true) const;*/
56 
57  // Returns an unscaled bounding box (not even including localTransform()) for this vector path
58  FloatRect relativeBBox(bool includeStroke = true) const override;
59 
60  const khtml::Path &path() const;
61  void setPath(const khtml::Path &newPath);
62 
63  bool isRenderPath() const override
64  {
65  return true;
66  }
67  const char *renderName() const override
68  {
69  return "RenderPath";
70  }
71 
72  bool calculateLocalTransform();
73  AffineTransform localTransform() const override;
74 
75  void layout() override;
76  virtual IntRect absoluteClippedOverflowRect();
77  bool requiresLayer() const override;
78  short lineHeight(bool b) const override;
79  short baselinePosition(bool b) const override;
80  void paint(PaintInfo &, int parentX, int parentY) override;
81 
82  virtual void absoluteRects(Vector<IntRect> &, int tx, int ty, bool topLevel = true);
83  /*virtual void addFocusRingRects(GraphicsContext*, int tx, int ty);
84 
85  virtual bool nodeAtPoint(const HitTestRequest&, HitTestResult&, int x, int y, int tx, int ty, HitTestAction);
86 
87  FloatRect drawMarkersIfNeeded(GraphicsContext*, const FloatRect&, const Path&) const;*/
88  /*virtual FloatRect strokeBBox() const;*/
89 
90 private:
91  FloatPoint mapAbsolutePointToLocal(const FloatPoint &) const;
92 
93  mutable khtml::Path m_path;
94  mutable FloatRect m_fillBBox;
95  mutable FloatRect m_strokeBbox;
96  FloatRect m_markerBounds;
97  AffineTransform m_localTransform;
98  IntRect m_absoluteBounds;
99 };
100 
101 }
102 
103 #endif // ENABLE(SVG)
104 #endif
105 
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Mon Oct 25 2021 22:48:22 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.