Kstars

mapcanvas.h
1 /*
2  SPDX-FileCopyrightText: 2001 Jason Harris <[email protected]>
3 
4  SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 
7 #ifndef MAPCANVAS_H
8 #define MAPCANVAS_H
9 
10 #include <QFrame>
11 #include <QPixmap>
12 #include <QMouseEvent>
13 #include <QPaintEvent>
14 #include <geolocation.h>
15 
16 /** @class MapCanvas
17  *Used in LocationDialog for displaying a map of the Earth.
18  *In addition, cities in the database are drawn as grey or white dots.
19  *Also, the widget processes mouse clicks, to trim the list of
20  *cities to those near the mouse click.
21  *@short Widget used in the LocationDialog for displaying the world map.
22  *@author Jason Harris
23  *@version 1.0
24  */
25 
26 class LocationDialog;
27 class QPixmap;
28 
29 class MapCanvas : public QFrame
30 {
31  Q_OBJECT
32  public:
33  /**Default constructor. Initialize the widget: create pixmaps, load the
34  * world map image
35  * @param parent pointer to the parent LocationDialog
36  */
37  explicit MapCanvas(QWidget *parent);
38 
39  /**Destructor (empty) */
40  ~MapCanvas() override;
41 
42  /** Set location dialog */
43  // FIXME: This is temporary plug
44  void setLocationDialog(LocationDialog *loc) { ld = loc; }
45  public slots:
46  /**Set the geometry of the map widget (overloaded from QWidget).
47  * Resizes the size of the map pixmap to match the widget, and resets
48  * the Origin QPoint so it remains at the center of the widget.
49  * @note this is called automatically by resize events.
50  * @p x the x-position of the widget
51  * @p y the y-position of the widget
52  * @p w the width of the widget
53  * @p h the height of the widget
54  */
55  virtual void setGeometry(int x, int y, int w, int h);
56 
57  /**Set the geometry of the map widget (overloaded from QWidget).
58  * Resizes the size of the map pixmap to match the widget, and resets
59  * the Origin QPoint so it remains at the center of the widget.
60  * This function behaves just like the above function. It differs
61  * only in the data type of its argument.
62  * @note this is called automatically by resize events.
63  * @p r QRect describing geometry
64  */
65  virtual void setGeometry(const QRect &r);
66 
67  protected:
68  /**Draw the map. Draw grey dots on the locations of all cities,
69  * and highlight the cities which match the current filters as
70  * white dits. Also draw a red crosshairs on the
71  * currently-selected city.
72  * @see LocationDialog
73  */
74  void paintEvent(QPaintEvent *e) override;
75 
76  /**Trim the list of cities so that only those within 2 degrees
77  * of the mouse click are shown in the list.
78  * @see LocationDialog
79  */
80  void mousePressEvent(QMouseEvent *e) override;
81 
82  /**Convert geo co-ordinates to a scaled position on the map*/
83  void convertAndScale(QPoint &o, GeoLocation &g);
84 
85  private:
86  LocationDialog *ld;
87  QPixmap *bgImage;
88  QString BGColor;
89  QPoint origin;
90  double xsize;
91  double ysize;
92  double ximage;
93  double yimage;
94  double ratio;
95  double xscale;
96  double yscale;
97 };
98 
99 #endif
Q_OBJECTQ_OBJECT
void mousePressEvent(QMouseEvent *e) override
Trim the list of cities so that only those within 2 degrees of the mouse click are shown in the list.
Definition: mapcanvas.cpp:57
Widget used in the LocationDialog for displaying the world map.
Definition: mapcanvas.h:29
MapCanvas(QWidget *parent)
Default constructor.
Definition: mapcanvas.cpp:21
Geographic Location dialog.
~MapCanvas() override
Destructor (empty)
Definition: mapcanvas.cpp:38
virtual void setGeometry(int x, int y, int w, int h)
Set the geometry of the map widget (overloaded from QWidget).
Definition: mapcanvas.cpp:43
void setLocationDialog(LocationDialog *loc)
Set location dialog.
Definition: mapcanvas.h:44
void convertAndScale(QPoint &o, GeoLocation &g)
Convert geo co-ordinates to a scaled position on the map.
Definition: mapcanvas.cpp:137
void paintEvent(QPaintEvent *e) override
Draw the map.
Definition: mapcanvas.cpp:67
QObject * parent() const const
Relevant data about an observing location on Earth.
Definition: geolocation.h:27
This file is part of the KDE documentation.
Documentation copyright © 1996-2022 The KDE developers.
Generated on Fri Aug 19 2022 03:57:52 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.