Walls And Holes  1
mapview.h
Go to the documentation of this file.
1 #ifndef MAPVIEW_H
2 #define MAPVIEW_H
3 
4 #define MAP_BUFFER 5 //Tiles kept around the map for the purpose of scrolling.
5 
6 #include "array2d.h"
7 #include "mapcell.h"
8 #include "tilemap.h"
10 
11 #include <QObject>
12 #include <QGraphicsView>
13 #include <QKeyEvent>
14 #include <QResizeEvent>
15 
20 class MapView : public QGraphicsView
21 {
22  Q_OBJECT
23 
24 public:
25  MapView(QWidget *parent);
26  ~MapView();
27 
28  void clear();
29  void setMap(TileMap *tileMap);
30 
31  void setViewMode(int viewMode);
32 
33  TileMapPreviewGraphicsItem *previewItem() { return mPreviewItem; }
34 
43  QRectF tilesInFrame() const;
44 
45 private slots:
46  void mapSizeChanged();
47 
48 protected:
49  void wheelEvent(QWheelEvent *event) override;
50  void mouseMoveEvent(QMouseEvent *event) override;
51  void mousePressEvent(QMouseEvent *event) override;
52  void mouseReleaseEvent(QMouseEvent *event) override;
53 
54  void resizeEvent(QResizeEvent *) override;
55 
56 signals:
68  void cellActivated(int x, int y, QMouseEvent *event);
69 
81  void cellClicked(int x, int y, QMouseEvent *event);
82 
91  void cellReleased(int x, int y, QMouseEvent *event);
92 
93 
103  void cellHovered(int x, int y, QMouseEvent *event);
104 
105 
109  void mouseExitedMap(QMouseEvent *event);
110 
121  void mapViewChanged(QRectF rect);
122 
123 private:
129  void reMakeMap();
130 
131  float mScale;
132  int mOldX;
133  int mOldY;
134 
135  const TileMap *mTileMap;
136 
137  Array2D<MapCell *> mMapCells;
138  int mViewMode;
139 
140  QGraphicsRectItem *mMouseHoverRect;
141 
142  //this owns mPreviewItem
143  TileMapPreviewGraphicsItem *const mPreviewItem;
144 
145  QPoint mPreMousePoint;
146 };
147 
148 #endif // MAPVIEW_H
void setMap(TileMap *tileMap)
Definition: mapview.cpp:70
MapView(QWidget *parent)
Definition: mapview.cpp:11
void mouseMoveEvent(QMouseEvent *event) override
Definition: mapview.cpp:105
void mouseReleaseEvent(QMouseEvent *event) override
Definition: mapview.cpp:167
void mouseExitedMap(QMouseEvent *event)
Emitted when the mouse exits the map.
void cellActivated(int x, int y, QMouseEvent *event)
Emitted when the left mouse button is down over a new cell.
TileMapPreviewGraphicsItem * previewItem()
Definition: mapview.h:33
QRegion rect(QPoint start, QPoint end)
Definition: shaperegion.cpp:30
void wheelEvent(QWheelEvent *event) override
Definition: mapview.cpp:45
~MapView()
Definition: mapview.cpp:40
QRectF tilesInFrame() const
tilesInFrame
Definition: mapview.cpp:92
void resizeEvent(QResizeEvent *) override
Definition: mapview.cpp:176
The Array2D class is basically a 2D implementation of QVector.
Definition: array2d.h:35
void cellHovered(int x, int y, QMouseEvent *event)
Emitted when the mouse hovers over a new cell.
void cellClicked(int x, int y, QMouseEvent *event)
Emitted the first time the left mouse button is pressed over a cell.
void mapViewChanged(QRectF rect)
mapViewChanged
void cellReleased(int x, int y, QMouseEvent *event)
Emitted when the left mouse button is released over a cell.
void setViewMode(int viewMode)
Definition: mapview.cpp:85
void clear()
Definition: mapview.cpp:59
The MapView class Handles display of TileMap.
Definition: mapview.h:20
Definition: tilemappreviewgraphicsitem.h:9
Definition: tilemap.h:14
void mousePressEvent(QMouseEvent *event) override
Definition: mapview.cpp:157