Fixed some headers to match coding guidelines
[situare] / src / map / maptile.h
1 /*
2    Situare - A location system for Facebook
3    Copyright (C) 2010  Ixonos Plc. Authors:
4
5        Sami Rämö - sami.ramo@ixonos.com
6
7    Situare is free software; you can redistribute it and/or
8    modify it under the terms of the GNU General Public License
9    version 2 as published by the Free Software Foundation.
10
11    Situare 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
14    GNU General Public License for more details.
15
16    You should have received a copy of the GNU General Public License
17    along with Situare; if not, write to the Free Software
18    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
19    USA.
20 */
21
22 #ifndef MAPTILE_H
23 #define MAPTILE_H
24
25 #include <QGraphicsPixmapItem>
26 #include <QPoint>
27
28 /**
29 * @brief Map tile item
30 *
31 * @author Sami Rämö - sami.ramo (at) ixonos.com
32 */
33 class MapTile : public QGraphicsPixmapItem
34 {
35 public:
36     /**
37     * @brief Constructor
38     */
39     MapTile();
40
41 /*******************************************************************************
42  * CLASS SPECIFIC MEMBER FUNCTIONS AND SLOTS
43  ******************************************************************************/
44     /**
45     * @brief Set drawing level of the tile based on current zoom level
46     *
47     * Drawing order of MapTiles, which has the zoom level higher than the current
48     * zoom level, is reversed and those MapTiles are mapped between lower level MapTiles.
49     * Example: If maximum zoom level is 18 and current view zoomlevel is 15, then
50     * the drawing order from top to bottom is 15, 16, 14, 17, 13, 18, 12, 11, 10, ...
51     * @param currentZoomLevel current zoom level
52     */
53     void setSceneLevel(int currentZoomLevel);
54
55     /**
56     * @brief Setter for tile number
57     *
58     * Does also set the position for the item in the MapScene coordinate system
59     * @param tileNumber Tile number
60     */
61     void setTileNumber(QPoint tileNumber);
62
63     /**
64     * @brief Setter for zoom level
65     *
66     * @param zoomLevel Zoom level
67     */
68     void setZoomLevel(int zoomLevel);
69
70     /**
71     * @brief Getter for tile number
72     *
73     * @return Tile number
74     */
75     QPoint tileNumber();
76
77     /**
78     * @brief Getter for zoom level
79     *
80     * @return Zoom level
81     */
82     int zoomLevel();
83
84 private:
85     /**
86     * @brief Set position of the tile in the MapScene coordinate system
87     *
88     * Does set the position based on the m_zoomLevel and the m_TileNumber. Position is set to
89     * (UNDEFINED, UNDEFINED) if there is something wrong with zoom level or tile numbers
90     */
91     void setPosition();
92
93 /*******************************************************************************
94  * DATA MEMBERS
95  ******************************************************************************/
96 private:
97     QPoint m_tileNumber; ///< Tile number
98     int m_zoomLevel; ///< Zoom level
99 };
100
101 #endif // MAPTILE_H