1 /**********************************************************************
2 ** $NHDT-Date: 1524683840 2018/04/25 19:17:20 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.5 $
3 ** $Id: qttableview.h,v 1.2 2002/03/09 03:13:13 jwalz Exp $
4 **
5 ** Definition of QtTableView class
6 **
7 ** Created : 941115
8 **
9 ** Copyright (C) 1992-2000 Trolltech AS.  All rights reserved.
10 **
11 ** This file contains a class moved out of the Qt GUI Toolkit API. It
12 ** may be used, distributed and modified without limitation.
13 **
14 **********************************************************************/
15 
16 #ifndef QTTABLEVIEW_H
17 #define QTTABLEVIEW_H
18 
19 #ifndef QT_H
20 #include <qframe.h>
21 #endif // QT_H
22 
23 #ifndef QT_NO_QTTABLEVIEW
24 
25 class QScrollBar;
26 class QCornerSquare;
27 
28 class QtTableView : public QFrame
29 {
30     Q_OBJECT
31   public:
32     virtual void setBackgroundColor(const QColor &);
33     virtual void setPalette(const QPalette &);
34     void show();
35 
36     void repaint(bool erase = TRUE);
37     void repaint(int x, int y, int w, int h, bool erase = TRUE);
38     void repaint(const QRect &, bool erase = TRUE);
39 
40   protected:
41     QtTableView(QWidget *parent = 0, const char *name = 0, WFlags f = 0);
42     ~QtTableView();
43 
44     int numRows() const;
45     virtual void setNumRows(int);
46     int numCols() const;
47     virtual void setNumCols(int);
48 
49     int topCell() const;
50     virtual void setTopCell(int row);
51     int leftCell() const;
52     virtual void setLeftCell(int col);
53     virtual void setTopLeftCell(int row, int col);
54 
55     int xOffset() const;
56     virtual void setXOffset(int);
57     int yOffset() const;
58     virtual void setYOffset(int);
59     virtual void setOffset(int x, int y, bool updateScrBars = TRUE);
60 
61     virtual int cellWidth(int col);
62     virtual int cellHeight(int row);
63     int cellWidth() const;
64     int cellHeight() const;
65     virtual void setCellWidth(int);
66     virtual void setCellHeight(int);
67 
68     virtual int totalWidth();
69     virtual int totalHeight();
70 
71     uint tableFlags() const;
72     bool testTableFlags(uint f) const;
73     virtual void setTableFlags(uint f);
74     void clearTableFlags(uint f = ~0);
75 
76     bool autoUpdate() const;
77     virtual void setAutoUpdate(bool);
78 
79     void updateCell(int row, int column, bool erase = TRUE);
80 
81     QRect cellUpdateRect() const;
82     QRect viewRect() const;
83 
84     int lastRowVisible() const;
85     int lastColVisible() const;
86 
87     bool rowIsVisible(int row) const;
88     bool colIsVisible(int col) const;
89 
90     QScrollBar *verticalScrollBar() const;
91     QScrollBar *horizontalScrollBar() const;
92 
93   private slots:
94     void horSbValue(int);
95     void horSbSliding(int);
96     void horSbSlidingDone();
97     void verSbValue(int);
98     void verSbSliding(int);
99     void verSbSlidingDone();
100 
101   protected:
102     virtual void paintCell(QPainter *, int row, int col) = 0;
103     virtual void setupPainter(QPainter *);
104 
105     void paintEvent(QPaintEvent *);
106     void resizeEvent(QResizeEvent *);
107 
108     int findRow(int yPos) const;
109     int findCol(int xPos) const;
110 
111     bool rowYPos(int row, int *yPos) const;
112     bool colXPos(int col, int *xPos) const;
113 
114     int maxXOffset();
115     int maxYOffset();
116     int maxColOffset();
117     int maxRowOffset();
118 
119     int minViewX() const;
120     int minViewY() const;
121     int maxViewX() const;
122     int maxViewY() const;
123     int viewWidth() const;
124     int viewHeight() const;
125 
126     void scroll(int xPixels, int yPixels);
127     void updateScrollBars();
128     void updateTableSize();
129 
130   private:
131     void coverCornerSquare(bool);
132     void snapToGrid(bool horizontal, bool vertical);
133     virtual void setHorScrollBar(bool on, bool update = TRUE);
134     virtual void setVerScrollBar(bool on, bool update = TRUE);
135     void updateView();
136     int findRawRow(int yPos, int *cellMaxY, int *cellMinY = 0,
137                    bool goOutsideView = FALSE) const;
138     int findRawCol(int xPos, int *cellMaxX, int *cellMinX = 0,
139                    bool goOutsideView = FALSE) const;
140     int maxColsVisible() const;
141 
142     void updateScrollBars(uint);
143     void updateFrameSize();
144 
145     void doAutoScrollBars();
146     void showOrHideScrollBars();
147 
148     int nRows;
149     int nCols;
150     int xOffs, yOffs;
151     int xCellOffs, yCellOffs;
152     short xCellDelta, yCellDelta;
153     short cellH, cellW;
154 
155     uint eraseInPaint : 1;
156     uint verSliding : 1;
157     uint verSnappingOff : 1;
158     uint horSliding : 1;
159     uint horSnappingOff : 1;
160     uint coveringCornerSquare : 1;
161     uint sbDirty : 8;
162     uint inSbUpdate : 1;
163 
164     uint tFlags;
165     QRect cellUpdateR;
166 
167     QScrollBar *vScrollBar;
168     QScrollBar *hScrollBar;
169     QCornerSquare *cornerSquare;
170 
171   private: // Disabled copy constructor and operator=
172 #if defined(Q_DISABLE_COPY)
173     QtTableView(const QtTableView &);
174     QtTableView &operator=(const QtTableView &);
175 #endif
176 };
177 
178 const uint Tbl_vScrollBar = 0x00000001;
179 const uint Tbl_hScrollBar = 0x00000002;
180 const uint Tbl_autoVScrollBar = 0x00000004;
181 const uint Tbl_autoHScrollBar = 0x00000008;
182 const uint Tbl_autoScrollBars = 0x0000000C;
183 
184 const uint Tbl_clipCellPainting = 0x00000100;
185 const uint Tbl_cutCellsV = 0x00000200;
186 const uint Tbl_cutCellsH = 0x00000400;
187 const uint Tbl_cutCells = 0x00000600;
188 
189 const uint Tbl_scrollLastHCell = 0x00000800;
190 const uint Tbl_scrollLastVCell = 0x00001000;
191 const uint Tbl_scrollLastCell = 0x00001800;
192 
193 const uint Tbl_smoothHScrolling = 0x00002000;
194 const uint Tbl_smoothVScrolling = 0x00004000;
195 const uint Tbl_smoothScrolling = 0x00006000;
196 
197 const uint Tbl_snapToHGrid = 0x00008000;
198 const uint Tbl_snapToVGrid = 0x00010000;
199 const uint Tbl_snapToGrid = 0x00018000;
200 
201 inline int
numRows()202 QtTableView::numRows() const
203 {
204     return nRows;
205 }
206 
207 inline int
numCols()208 QtTableView::numCols() const
209 {
210     return nCols;
211 }
212 
213 inline int
topCell()214 QtTableView::topCell() const
215 {
216     return yCellOffs;
217 }
218 
219 inline int
leftCell()220 QtTableView::leftCell() const
221 {
222     return xCellOffs;
223 }
224 
225 inline int
xOffset()226 QtTableView::xOffset() const
227 {
228     return xOffs;
229 }
230 
231 inline int
yOffset()232 QtTableView::yOffset() const
233 {
234     return yOffs;
235 }
236 
237 inline int
cellHeight()238 QtTableView::cellHeight() const
239 {
240     return cellH;
241 }
242 
243 inline int
cellWidth()244 QtTableView::cellWidth() const
245 {
246     return cellW;
247 }
248 
249 inline uint
tableFlags()250 QtTableView::tableFlags() const
251 {
252     return tFlags;
253 }
254 
255 inline bool
testTableFlags(uint f)256 QtTableView::testTableFlags(uint f) const
257 {
258     return (tFlags & f) != 0;
259 }
260 
261 inline QRect
cellUpdateRect()262 QtTableView::cellUpdateRect() const
263 {
264     return cellUpdateR;
265 }
266 
267 inline bool
autoUpdate()268 QtTableView::autoUpdate() const
269 {
270     return isUpdatesEnabled();
271 }
272 
273 inline void
repaint(bool erase)274 QtTableView::repaint(bool erase)
275 {
276     repaint(0, 0, width(), height(), erase);
277 }
278 
279 inline void
repaint(const QRect & r,bool erase)280 QtTableView::repaint(const QRect &r, bool erase)
281 {
282     repaint(r.x(), r.y(), r.width(), r.height(), erase);
283 }
284 
285 inline void
updateScrollBars()286 QtTableView::updateScrollBars()
287 {
288     updateScrollBars(0);
289 }
290 
291 #endif // QT_NO_QTTABLEVIEW
292 
293 #endif // QTTABLEVIEW_H
294