map2d_widget
mapgraphicitem.h
Go to the documentation of this file.
1 
12 /*
13 * This program is free software; you can redistribute it and/or modify
14 * it under the terms of the GNU General Public License as published by
15 * the Free Software Foundation; either version 3 of the License, or
16 * (at your option) any later version.
17 *
18 * This program is distributed in the hope that it will be useful, but
19 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
20 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21 * for more details.
22 *
23 * You should have received a copy of the GNU General Public License along
24 * with this program; if not, write to the Free Software Foundation, Inc.,
25 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
26 */
27 #ifndef MAPGRAPHICITEM_H
28 #define MAPGRAPHICITEM_H
29 
30 #include <QGraphicsItem>
31 #include "../internals/core.h"
32 //#include "../internals/point.h"
33 #include "../core/diagnostics.h"
34 #include "configuration.h"
35 #include <QtGui>
36 #include <QTransform>
37 #include <QWidget>
38 #include <QBrush>
39 #include <QFont>
40 #include <QObject>
41 #include "waypointitem.h"
42 //#include "uavitem.h"
43 namespace mapcontrol
44 {
45  class OPMapWidget;
51  class MapGraphicItem:public QObject,public QGraphicsItem
52  {
54  Q_OBJECT
55  Q_INTERFACES(QGraphicsItem)
56  public:
57 
58 
67  QRectF boundingRect() const;
68  void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
69  QWidget *widget);
70 
71  QSize sizeHint()const;
78  core::Point FromLatLngToLocal(internals::PointLatLng const& point);
86  internals::PointLatLng FromLocalToLatLng(int x, int y);
92  bool IsDragging()const{return core->IsDragging();}
93 
94  QImage lastimage;
95 // QPainter* imagePainter;
97  void paintImage(QPainter* painter);
98  void ConstructLastImage(int const& zoomdiff);
99  internals::PureProjection* Projection()const{return core->Projection();}
100  double Zoom();
101  double ZoomDigi();
102  double ZoomTotal();
103 
104  protected:
105  void mouseMoveEvent ( QGraphicsSceneMouseEvent * event );
106  void mousePressEvent ( QGraphicsSceneMouseEvent * event );
107  void wheelEvent ( QGraphicsSceneWheelEvent * event );
108  void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
109  bool IsMouseOverMarker()const{return isMouseOverMarker;}
110 
116  int ZoomStep()const;
122  void SetZoomStep(int const& value);
123 
129  void SetShowDragons(bool const& value);
130  private:
131  bool showDragons;
132  bool SetZoomToFitRect(internals::RectLatLng const& rect);
134  Configuration *config;
135  bool showTileGridLines;
136  qreal MapRenderTransform;
137  void DrawMap2D(QPainter *painter);
143  int maxZoom;
149  int minZoom;
150  internals::RectLatLng selectedArea;
151  internals::PointLatLng selectionStart;
152  internals::PointLatLng selectionEnd;
153  double zoomReal;
154  double zoomDigi;
155  QRectF maprect;
156  bool isSelected;
157  bool isMouseOverMarker;
158  QPixmap dragons;
159  void SetIsMouseOverMarker(bool const& value){isMouseOverMarker = value;}
160 
161  qreal rotation;
170  QRectF boundingBox(QRectF const& rect, qreal const& angle);
176  int MaxZoom()const{return core->MaxZoom();}
182  int MinZoom()const{return minZoom;}
184  void SetSelectedArea(internals::RectLatLng const& value){selectedArea = value;this->update();}
185  internals::RectLatLng SelectedArea()const{return selectedArea;}
186  internals::RectLatLng BoundsOfMap;
187  void Offset(int const& x, int const& y);
188  bool CanDragMap()const{return core->CanDragMap;}
189  void SetCanDragMap(bool const& value){core->CanDragMap = value;}
190 
191  void SetZoom(double const& value);
192  void mapRotate ( qreal angle );
193  void start();
194  void ReloadMap(){core->ReloadMap();}
196  MapType::Types GetMapType(){return core->GetMapType();}
197  void SetMapType(MapType::Types const& value){core->SetMapType(value);}
198  private slots:
199  void Core_OnNeedInvalidation();
200  void ChildPosRefresh();
201  public slots:
207  void resize ( QRectF const &rect=QRectF() );
208  signals:
214  void zoomChanged(double zoomtotal,double zoomreal,double zoomdigi);
215  };
216 }
217 #endif // MAPGRAPHICITEM_H
Definition: opmapwidget.h:150
int MaxZoom() const
Returns the maximum zoom for the map.
Definition: opmapwidget.h:193
A graphicsItem representing a WayPoint.
void zoomChanged(double zoomtotal, double zoomreal, double zoomdigi)
Fired when the current zoom is changed.
bool CanDragMap() const
Definition: opmapwidget.h:217
double Zoom()
Definition: mapgraphicitem.cpp:469
QSize sizeHint() const
Definition: mapgraphicitem.cpp:577
Definition: rectlatlng.h:37
Types
Definition: maptype.h:39
Definition: accessmode.h:35
void SetCanDragMap(bool const &value)
Definition: opmapwidget.h:218
Definition: pointlatlng.h:35
QImage lastimage
Definition: mapgraphicitem.h:94
int ZoomStep() const
Returns current map zoom.
Definition: mapgraphicitem.cpp:529
MapType::Types GetMapType()
Definition: core.h:150
void ConstructLastImage(int const &zoomdiff)
Definition: mapgraphicitem.cpp:114
core::Point lastimagepoint
Definition: mapgraphicitem.h:96
Definition: core.h:68
int MaxZoom() const
Definition: core.h:146
void mouseMoveEvent(QGraphicsSceneMouseEvent *event)
Definition: mapgraphicitem.cpp:176
void ReloadMap()
Definition: opmapwidget.h:231
Configuration * configuration
Definition: opmapwidget.h:243
void SetSelectedArea(internals::RectLatLng const &value)
Definition: opmapwidget.h:215
internals::PointLatLng FromLocalToLatLng(int x, int y)
Converts from local item coordinates to LatLong point.
Definition: mapgraphicitem.cpp:456
MouseWheelZoomType::Types GetMouseWheelZoomType()
Definition: core.h:106
Types
Definition: mousewheelzoomtype.h:40
Definition: point.h:35
Definition: copyrightstrings.h:33
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
Definition: mapgraphicitem.cpp:245
A class that centralizes most of the mapcontrol configurations.
GeoCoderStatusCode::Types SetCurrentPositionByKeywords(QString const &keys)
Definition: opmapwidget.h:233
void resize(QRectF const &rect=QRectF())
To be called when the scene size changes.
Definition: mapgraphicitem.cpp:53
void SetShowDragons(bool const &value)
Ask Stacey.
A class that centralizes most of the mapcontrol configurations.
Definition: configuration.h:46
Types
Definition: geodecoderstatus.h:40
internals::PureProjection * Projection() const
Definition: mapgraphicitem.h:99
bool IsMouseOverMarker() const
Definition: mapgraphicitem.h:109
void wheelEvent(QGraphicsSceneWheelEvent *event)
Definition: mapgraphicitem.cpp:300
QRectF boundingRect() const
Definition: mapgraphicitem.cpp:72
core::Point FromLatLngToLocal(internals::PointLatLng const &point)
Convertes LatLong coordinates to local item coordinates.
Definition: mapgraphicitem.cpp:442
void paintImage(QPainter *painter)
Definition: mapgraphicitem.cpp:131
double ZoomTotal()
Definition: mapgraphicitem.cpp:477
void ReloadMap()
Definition: core.cpp:485
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
Definition: mapgraphicitem.cpp:151
internals::MouseWheelZoomType::Types GetMouseWheelZoomType()
Definition: opmapwidget.h:209
internals::RectLatLng SelectedArea() const
Definition: opmapwidget.h:214
void SetMapType(MapType::Types const &value)
Definition: core.cpp:285
Definition: pureprojection.h:42
double ZoomDigi()
Definition: mapgraphicitem.cpp:473
void SetZoom(double const &value)
Definition: opmapwidget.h:226
bool IsDragging() const
Returns true if map is being dragged.
Definition: mapgraphicitem.h:92
void mousePressEvent(QGraphicsSceneMouseEvent *event)
Definition: mapgraphicitem.cpp:216
The main graphicsItem used on the widget, contains the map and map logic.
Definition: mapgraphicitem.h:51
Definition: core.h:60
void SetMapType(MapType::Types const &value)
Definition: opmapwidget.h:239
void SetZoomStep(int const &value)
Sets map zoom.
Definition: mapgraphicitem.cpp:533
GeoCoderStatusCode::Types SetCurrentPositionByKeywords(QString const &keys)
Definition: core.cpp:421
MapType::Types GetMapType()
Definition: opmapwidget.h:238
int MinZoom() const
Definition: opmapwidget.h:201