KHtml

render_list.h
1 /*
2  * This file is part of the HTML rendering engine for KDE.
3  *
4  * Copyright (C) 1999-2003 Lars Knoll ([email protected])
5  * (C) 1999 Antti Koivisto ([email protected])
6  * (C) 2004 Allan Sandfeld Jensen ([email protected])
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Library General Public
10  * License as published by the Free Software Foundation; either
11  * version 2 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Library General Public License for more details.
17  *
18  * You should have received a copy of the GNU Library General Public License
19  * along with this library; see the file COPYING.LIB. If not, write to
20  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21  * Boston, MA 02110-1301, USA.
22  *
23  */
24 #ifndef RENDER_LIST_H
25 #define RENDER_LIST_H
26 
27 #include "rendering/render_block.h"
28 
29 // ### list-style-position, list-style-image is still missing
30 
31 namespace khtml
32 {
33 
34 class RenderListItem;
35 class RenderListMarker;
36 class CounterNode;
37 
38 // -----------------------------------------------------------------------------
39 
40 class RenderListItem : public RenderBlock
41 {
42  friend class RenderListMarker;
43 // friend class CounterListItem;
44 
45 public:
46  RenderListItem(DOM::NodeImpl *);
47 
48  const char *renderName() const override
49  {
50  return "RenderListItem";
51  }
52 
53  void setStyle(RenderStyle *style) override;
54 
55  bool isListItem() const override
56  {
57  return true;
58  }
59 
60  void setValue(long v)
61  {
62  predefVal = v;
63  }
64 
65  void layout() override;
66  void detach() override;
67  void calcMinMaxWidth() override;
68  //virtual short marginLeft() const;
69  //virtual short marginRight() const;
70 
71  void setInsideList(bool b)
72  {
73  m_insideList = b;
74  }
75 
76 protected:
77 
78  void updateMarkerLocation();
79  void resetListMarker()
80  {
81  m_marker = nullptr;
82  }
83 
84  RenderListMarker *m_marker;
85  CounterNode *m_counter;
86  signed long predefVal : 30;
87  bool m_insideList : 1;
88  bool m_deleteMarker: 1;
89 };
90 
91 // -----------------------------------------------------------------------------
92 
93 class RenderListMarker : public RenderBox
94 {
95 public:
96  RenderListMarker(DOM::NodeImpl *node);
97  ~RenderListMarker();
98 
99  void setStyle(RenderStyle *style) override;
100 
101  const char *renderName() const override
102  {
103  return "RenderListMarker";
104  }
105  // so the marker gets to layout itself. Only needed for
106  // list-style-position: inside
107 
108  void paint(PaintInfo &i, int xoff, int yoff) override;
109  void layout() override;
110  void calcMinMaxWidth() override;
111 
112  short lineHeight(bool firstLine) const override;
113  short baselinePosition(bool firstLine) const override;
114 
115  void updatePixmap(const QRect &, CachedImage *) override;
116 
117  void calcWidth() override;
118 
119  bool isListMarker() const override
120  {
121  return true;
122  }
123 
124  virtual short markerWidth() const
125  {
126  return m_markerWidth;
127  }
128 
129  RenderListItem *listItem() const
130  {
131  return m_listItem;
132  }
133  void setListItem(RenderListItem *listItem)
134  {
135  m_listItem = listItem;
136  }
137 
138  bool listPositionInside() const
139  {
140  return !m_listItem->m_insideList || style()->listStylePosition() == INSIDE;
141  }
142 
143 protected:
144  friend class RenderListItem;
145 
146  QString m_item;
147  CachedImage *m_listImage;
148  short m_markerWidth;
149  RenderListItem *m_listItem;
150 };
151 
152 // Implementation of list-item counter
153 // ### should replace most list-item specific code in renderObject::getCounter
154 /*
155 class CounterListItem : public CounterNode
156 {
157 public:
158  int count() const;
159 
160  virtual void recount( bool first = false );
161  virtual void setSelfDirty();
162 
163 }; */
164 
165 } //namespace
166 
167 #endif
This file is part of the HTML rendering engine for KDE.
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Mon Oct 25 2021 22:48:20 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.