Marble

MarbleMap.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-2.1-or-later
2//
3// SPDX-FileCopyrightText: 2006-2008 Torsten Rahn <tackat@kde.org>
4// SPDX-FileCopyrightText: 2007 Inge Wallin <ingwa@kde.org>
5// SPDX-FileCopyrightText: 2009 Jens-Michael Hoffmann <jensmh@gmx.de>
6//
7
8#ifndef MARBLE_MARBLEMAP_H
9#define MARBLE_MARBLEMAP_H
10
11/** @file
12 * This file contains the headers for MarbleMap.
13 *
14 * @author Torsten Rahn <tackat@kde.org>
15 * @author Inge Wallin <inge@lysator.liu.se>
16 */
17
18#include "GeoDataCoordinates.h" // In geodata/data/
19#include "GeoDataRelation.h"
20#include "marble_export.h"
21
22// Qt
23#include <QObject>
24#include <QRegion>
25
26class QFont;
27class QString;
28
29namespace Marble
30{
31
32// MarbleMap
33class MarbleMapPrivate;
34
35// Marble
36class GeoDataLatLonAltBox;
37class GeoDataFeature;
38class MarbleModel;
39class ViewportParams;
40class GeoPainter;
41class LayerInterface;
42class RenderPlugin;
43class RenderState;
44class AbstractDataPlugin;
45class AbstractDataPluginItem;
46class AbstractFloatItem;
47class TextureLayer;
48class VectorTileLayer;
49class TileCoordsPyramid;
50class GeoSceneTextureTileDataset;
51class StyleBuilder;
52
53/**
54 * @short A class that can paint a view of the earth.
55 *
56 * FIXME: Change this description when we are done.
57 *
58 * This class can paint a view of the earth or any other globe,
59 * depending on which dataset is used. It can be used to show the
60 * globe in a widget like MarbleWidget does, or on any other
61 * QPaintDevice.
62 *
63 * The projection and other view parameters that control how MarbleMap
64 * paints the map is given through the class ViewParams. If the
65 * programmer wants to allow the user to control the map, he/she has
66 * to provide a way for the user to interact with it. An example of
67 * this can be seen in the class MarbleWidgetInputHandler, that lets
68 * the user control a MarbleWidget that uses MarbleMap internally.
69 *
70 * The MarbleMap needs to be provided with a data model to
71 * work. This model is contained in the MarbleModel class. The widget
72 * can also construct its own model if none is given to the
73 * constructor. This data model contains 3 separate datatypes:
74 * <b>tiles</b> which provide the background, <b>vectors</b> which
75 * provide things like country borders and coastlines and
76 * <b>placemarks</b> which can show points of interest, such as
77 * cities, mountain tops or the poles.
78 *
79 * @see MarbleWidget
80 * @see MarbleModel
81 */
82
83class MARBLE_EXPORT MarbleMap : public QObject
84{
85 Q_OBJECT
86 Q_CLASSINFO("D-Bus Interface", "org.kde.MarbleMap")
87
88public:
89 friend class MarbleWidget;
90
91 /**
92 * @brief Construct a new MarbleMap.
93 *
94 * This constructor should be used when you will only use one
95 * MarbleMap. The widget will create its own MarbleModel when
96 * created.
97 */
98 MarbleMap();
99
100 /**
101 * @brief Construct a new MarbleMap.
102 * @param model the data model for the widget.
103 *
104 * This constructor should be used when you plan to use more than
105 * one MarbleMap for the same MarbleModel (not yet supported,
106 * but will be soon).
107 */
108 explicit MarbleMap(MarbleModel *model);
109
110 ~MarbleMap() override;
111
112 /**
113 * @brief Return the model that this view shows.
114 */
115 MarbleModel *model() const;
116
117 // Accessors to internal objects;
118 ViewportParams *viewport();
119 const ViewportParams *viewport() const;
120
121 /**
122 * @brief Get the Projection used for the map
123 * @return @c Spherical a Globe
124 * @return @c Equirectangular a flat map
125 * @return @c Mercator another flat map
126 */
127 Projection projection() const;
128
129 /**
130 * @brief Get the ID of the current map theme
131 * To ensure that a unique identifier is being used the theme does NOT
132 * get represented by its name but the by relative location of the file
133 * that specifies the theme:
134 *
135 * Example:
136 * maptheme = "earth/bluemarble/bluemarble.dgml"
137 */
138 QString mapThemeId() const;
139
140 void setMapQualityForViewContext(MapQuality qualityForViewContext, ViewContext viewContext);
141 MapQuality mapQuality(ViewContext viewContext) const;
142
143 /**
144 * @brief Return the current map quality.
145 */
146 MapQuality mapQuality() const;
147
148 void setViewContext(ViewContext viewContext);
149 ViewContext viewContext() const;
150
151 void setSize(int width, int height);
152 void setSize(const QSize &size);
153 QSize size() const;
154 int width() const;
155 int height() const;
156
157 /**
158 * @brief Return the radius of the globe in pixels.
159 */
160 int radius() const;
161
162 int preferredRadiusCeil(int radius) const;
163 int preferredRadiusFloor(int radius) const;
164
165 int tileZoomLevel() const;
166
167 /**
168 * @brief return the minimum zoom value for the current map theme.
169 */
170 int minimumZoom() const;
171
172 /**
173 * @brief return the minimum zoom value for the current map theme.
174 */
175 int maximumZoom() const;
176
177 bool discreteZoom() const;
178
179 /**
180 * @brief Get the screen coordinates corresponding to geographical coordinates in the map.
181 * @param lon the lon coordinate of the requested pixel position
182 * @param lat the lat coordinate of the requested pixel position
183 * @param x the x coordinate of the pixel is returned through this parameter
184 * @param y the y coordinate of the pixel is returned through this parameter
185 * @return @c true if the geographical coordinates are visible on the screen
186 * @c false if the geographical coordinates are not visible on the screen
187 */
188 bool screenCoordinates(qreal lon, qreal lat, qreal &x, qreal &y) const;
189
190 /**
191 * @brief Get the earth coordinates corresponding to a pixel in the map.
192 * @param x the x coordinate of the pixel
193 * @param y the y coordinate of the pixel
194 * @param lon the longitude angle is returned through this parameter
195 * @param lat the latitude angle is returned through this parameter
196 * @param unit the angle units
197 * @return @c true if the pixel (x, y) is within the globe
198 * @c false if the pixel (x, y) is outside the globe, i.e. in space.
199 */
200 bool geoCoordinates(int x, int y, qreal &lon, qreal &lat, GeoDataCoordinates::Unit = GeoDataCoordinates::Degree) const;
201
202 /**
203 * @brief Return the longitude of the center point.
204 * @return The longitude of the center point in degree.
205 */
206 qreal centerLongitude() const;
207
208 /**
209 * @brief Return the latitude of the center point.
210 * @return The latitude of the center point in degree.
211 */
212 qreal centerLatitude() const;
213
214 qreal heading() const;
215
216 /**
217 * @since 0.26.0
218 */
219 bool hasFeatureAt(const QPoint &) const;
220
221 QList<const GeoDataFeature *> whichFeatureAt(const QPoint &) const;
222
223 /**
224 * @brief Return the property value by name.
225 * @return The property value (usually: visibility).
226 */
227 bool propertyValue(const QString &name) const;
228
229 /**
230 * @brief Return whether the overview map is visible.
231 * @return The overview map visibility.
232 */
233 bool showOverviewMap() const;
234
235 /**
236 * @brief Return whether the scale bar is visible.
237 * @return The scale bar visibility.
238 */
239 bool showScaleBar() const;
240
241 /**
242 * @brief Return whether the compass bar is visible.
243 * @return The compass visibility.
244 */
245 bool showCompass() const;
246
247 /**
248 * @brief Return whether the cloud cover is visible.
249 * @return The cloud cover visibility.
250 */
251 bool showClouds() const;
252
253 /**
254 * @brief Return whether the night shadow is visible.
255 * @return visibility of night shadow
256 */
257 bool showSunShading() const;
258
259 /**
260 * @brief Return whether the city lights are shown instead of the night shadow.
261 * @return visibility of city lights
262 */
263 bool showCityLights() const;
264
265 /**
266 * @brief Return whether the globe is locked to the sub solar point
267 * @return if globe is locked to sub solar point
268 */
269 bool isLockedToSubSolarPoint() const;
270
271 /**
272 * @brief Return whether the sun icon is shown in the sub solar point.
273 * @return visibility of the sun icon in the sub solar point
274 */
275 bool isSubSolarPointIconVisible() const;
276
277 /**
278 * @brief Return whether the atmospheric glow is visible.
279 * @return The cloud cover visibility.
280 */
281 bool showAtmosphere() const;
282
283 /**
284 * @brief Return whether the crosshairs are visible.
285 * @return The crosshairs' visibility.
286 */
287 bool showCrosshairs() const;
288
289 /**
290 * @brief Return whether the coordinate grid is visible.
291 * @return The coordinate grid visibility.
292 */
293 bool showGrid() const;
294
295 /**
296 * @brief Return whether the place marks are visible.
297 * @return The place mark visibility.
298 */
299 bool showPlaces() const;
300
301 /**
302 * @brief Return whether the city place marks are visible.
303 * @return The city place mark visibility.
304 */
305 bool showCities() const;
306
307 /**
308 * @brief Return whether the terrain place marks are visible.
309 * @return The terrain place mark visibility.
310 */
311 bool showTerrain() const;
312
313 /**
314 * @brief Return whether other places are visible.
315 * @return The visibility of other places.
316 */
317 bool showOtherPlaces() const;
318
319 /**
320 * @brief Return whether the relief is visible.
321 * @return The relief visibility.
322 */
323 bool showRelief() const;
324
325 /**
326 * @brief Return whether the ice layer is visible.
327 * @return The ice layer visibility.
328 */
329 bool showIceLayer() const;
330
331 /**
332 * @brief Return whether the borders are visible.
333 * @return The border visibility.
334 */
335 bool showBorders() const;
336
337 /**
338 * @brief Return whether the rivers are visible.
339 * @return The rivers' visibility.
340 */
341 bool showRivers() const;
342
343 /**
344 * @brief Return whether the lakes are visible.
345 * @return The lakes' visibility.
346 */
347 bool showLakes() const;
348
349 /**
350 * @brief Return whether the frame rate gets displayed.
351 * @return the frame rates visibility
352 */
353 bool showFrameRate() const;
354
355 bool showBackground() const;
356
357 GeoDataRelation::RelationTypes visibleRelationTypes() const;
358
359 /**
360 * @brief Returns the limit in kilobytes of the volatile (in RAM) tile cache.
361 * @return the limit of volatile tile cache in kilobytes.
362 */
363 quint64 volatileTileCacheLimit() const;
364
365 /**
366 * @brief Returns a list of all RenderPlugins in the model, this includes float items
367 * @return the list of RenderPlugins
368 */
369 QList<RenderPlugin *> renderPlugins() const;
370 QList<AbstractFloatItem *> floatItems() const;
371
372 /**
373 * @brief Returns a list of all FloatItems in the model
374 * @return the list of the floatItems
375 */
376 AbstractFloatItem *floatItem(const QString &nameId) const;
377
378 /**
379 * @brief Returns a list of all DataPlugins on the layer
380 * @return the list of DataPlugins
381 */
382 QList<AbstractDataPlugin *> dataPlugins() const;
383
384 /**
385 * @brief Returns all widgets of dataPlugins on the position curpos
386 */
387 QList<AbstractDataPluginItem *> whichItemAt(const QPoint &curpos) const;
388
389 AngleUnit defaultAngleUnit() const;
390
391 QFont defaultFont() const;
392
393 TextureLayer *textureLayer() const;
394 VectorTileLayer *vectorTileLayer() const;
395
396 /**
397 * @brief Add a layer to be included in rendering.
398 */
399 void addLayer(LayerInterface *layer);
400
401 /**
402 * @brief Adds a texture sublayer
403 * @return Returns a key that identifies the texture sublayer
404 */
405 QString addTextureLayer(GeoSceneTextureTileDataset *texture);
406
407 /**
408 * @brief Removes a texture sublayer
409 * @param key a key that was returned from corresponding addTextureLayer
410 */
411 void removeTextureLayer(const QString &key);
412
413 /**
414 * @brief Remove a layer from being included in rendering.
415 */
416 void removeLayer(LayerInterface *layer);
417
418 RenderStatus renderStatus() const;
419
420 RenderState renderState() const;
421
422 /**
423 * @since 0.26.0
424 */
425 const StyleBuilder *styleBuilder() const;
426
427public Q_SLOTS:
428
429 /**
430 * @brief Paint the map using a give painter.
431 * @param painter The painter to use.
432 * @param dirtyRect the rectangle that actually needs repainting.
433 */
434 void paint(GeoPainter &painter, const QRect &dirtyRect);
435
436 /**
437 * @brief Set the radius of the globe in pixels.
438 * @param radius The new globe radius value in pixels.
439 */
440 void setRadius(int radius);
441
442 void setHeading(qreal heading);
443
444 /**
445 * @brief Rotate the view by the two angles phi and theta.
446 * @param deltaLon an angle that specifies the change in terms of longitude
447 * @param deltaLat an angle that specifies the change in terms of latitude
448 *
449 * This function rotates the view by two angles,
450 * deltaLon ("theta") and deltaLat ("phi").
451 * If we start at (0, 0), the result will be the exact equivalent
452 * of (lon, lat), otherwise the resulting angle will be the sum of
453 * the previous position and the two offsets.
454 */
455 void rotateBy(qreal deltaLon, qreal deltaLat);
456
457 /**
458 * @brief Center the view on a geographical point
459 * @param lat an angle parallel to the latitude lines
460 * +90(N) - -90(S)
461 * @param lon an angle parallel to the longitude lines
462 * +180(W) - -180(E)
463 */
464 void centerOn(const qreal lon, const qreal lat);
465
466 /**
467 * @brief Set the latitude for the center point
468 * @param lat the new value for the latitude in degree
469 */
470 void setCenterLatitude(qreal lat);
471
472 /**
473 * @brief Set the longitude for the center point
474 * @param lon the new value for the longitude in degree
475 */
476 void setCenterLongitude(qreal lon);
477
478 /**
479 * @brief Set the Projection used for the map
480 * @param projection projection type (e.g. Spherical, Equirectangular, Mercator)
481 */
482 void setProjection(Projection projection);
483
484 /**
485 * @brief Set a new map theme
486 * @param maptheme The ID of the new maptheme. To ensure that a unique
487 * identifier is being used the theme does NOT get represented by its
488 * name but the by relative location of the file that specifies the theme:
489 *
490 * Example:
491 * maptheme = "earth/bluemarble/bluemarble.dgml"
492 */
493 void setMapThemeId(const QString &maptheme);
494
495 /**
496 * @brief Sets the value of a map theme property
497 * @param name name of the property
498 * @param value value of the property (usually: visibility)
499 *
500 * Later on we might add a "setPropertyType and a QVariant
501 * if needed.
502 */
503 void setPropertyValue(const QString &name, bool value);
504
505 /**
506 * @brief Set whether the overview map overlay is visible
507 * @param visible visibility of the overview map
508 */
509 void setShowOverviewMap(bool visible);
510
511 /**
512 * @brief Set whether the scale bar overlay is visible
513 * @param visible visibility of the scale bar
514 */
515 void setShowScaleBar(bool visible);
516
517 /**
518 * @brief Set whether the compass overlay is visible
519 * @param visible visibility of the compass
520 */
521 void setShowCompass(bool visible);
522
523 /**
524 * @brief Set whether the cloud cover is visible
525 * @param visible visibility of the cloud cover
526 */
527 void setShowClouds(bool visible);
528
529 /**
530 * @brief Set whether the night shadow is visible.
531 * @param visible visibility of shadow
532 */
533 void setShowSunShading(bool visible);
534
535 /**
536 * @brief Set whether city lights instead of night shadow are visible.
537 * @param visible visibility of city lights
538 */
539 void setShowCityLights(bool visible);
540
541 /**
542 * @brief Set the globe locked to the sub solar point
543 * @param visible if globe is locked to the sub solar point
544 */
545 void setLockToSubSolarPoint(bool visible);
546
547 /**
548 * @brief Set whether the sun icon is shown in the sub solar point
549 * @param visible if the sun icon is shown in the sub solar point
550 */
551 void setSubSolarPointIconVisible(bool visible);
552
553 /**
554 * @brief Set whether the is tile is visible
555 * NOTE: This is part of the transitional debug API
556 * and might be subject to changes until Marble 0.8
557 * @param visible visibility of the tile
558 */
559 void setShowTileId(bool visible);
560
561 /**
562 * @brief Set whether the atmospheric glow is visible
563 * @param visible visibility of the atmospheric glow
564 */
565 void setShowAtmosphere(bool visible);
566
567 /**
568 * @brief Set whether the crosshairs are visible
569 * @param visible visibility of the crosshairs
570 */
571 void setShowCrosshairs(bool visible);
572
573 /**
574 * @brief Set whether the coordinate grid overlay is visible
575 * @param visible visibility of the coordinate grid
576 */
577 void setShowGrid(bool visible);
578
579 /**
580 * @brief Set whether the place mark overlay is visible
581 * @param visible visibility of the place marks
582 */
583 void setShowPlaces(bool visible);
584
585 /**
586 * @brief Set whether the city place mark overlay is visible
587 * @param visible visibility of the city place marks
588 */
589 void setShowCities(bool visible);
590
591 /**
592 * @brief Set whether the terrain place mark overlay is visible
593 * @param visible visibility of the terrain place marks
594 */
595 void setShowTerrain(bool visible);
596
597 /**
598 * @brief Set whether the other places overlay is visible
599 * @param visible visibility of other places
600 */
601 void setShowOtherPlaces(bool visible);
602
603 /**
604 * @brief Set whether the relief is visible
605 * @param visible visibility of the relief
606 */
607 void setShowRelief(bool visible);
608
609 /**
610 * @brief Set whether the ice layer is visible
611 * @param visible visibility of the ice layer
612 */
613 void setShowIceLayer(bool visible);
614
615 /**
616 * @brief Set whether the borders visible
617 * @param visible visibility of the borders
618 */
619 void setShowBorders(bool visible);
620
621 /**
622 * @brief Set whether the rivers are visible
623 * @param visible visibility of the rivers
624 */
625 void setShowRivers(bool visible);
626
627 /**
628 * @brief Set whether the lakes are visible
629 * @param visible visibility of the lakes
630 */
631 void setShowLakes(bool visible);
632
633 /**
634 * @brief Set whether the frame rate gets shown
635 * @param visible visibility of the frame rate
636 */
637 void setShowFrameRate(bool visible);
638
639 void setShowRuntimeTrace(bool visible);
640
641 bool showRuntimeTrace() const;
642
643 /**
644 * @brief Set whether to enter the debug mode for
645 * polygon node drawing
646 * @param visible visibility of the node debug mode
647 */
648 void setShowDebugPolygons(bool visible);
649
650 bool showDebugPolygons() const;
651
652 /**
653 * @brief Set whether to enter the debug mode for
654 * visualizing batch rendering
655 * @param visible visibility of the batch rendering
656 */
657 void setShowDebugBatchRender(bool visible);
658
659 bool showDebugBatchRender() const;
660
661 /**
662 * @brief Set whether to enter the debug mode for
663 * placemark drawing
664 * @param visible visibility of the node debug mode
665 */
666 void setShowDebugPlacemarks(bool visible);
667
668 bool showDebugPlacemarks() const;
669
670 /**
671 * @brief Set whether to enter the debug mode for
672 * level tags
673 * @param visible visibility according to OSM level tags
674 */
675 void setLevelTagDebugModeEnabled(bool visible);
676
677 bool levelTagDebugModeEnabled() const;
678
679 void setDebugLevelTag(int level);
680
681 int debugLevelTag() const;
682
683 void setShowBackground(bool visible);
684
685 void setVisibleRelationTypes(GeoDataRelation::RelationTypes relationTypes);
686
687 /**
688 * @brief used to notify about the position of the mouse click
689 */
690 void notifyMouseClick(int x, int y);
691
692 void clearVolatileTileCache();
693 /**
694 * @brief Set the limit of the volatile (in RAM) tile cache.
695 * @param kiloBytes The limit in kilobytes.
696 */
697 void setVolatileTileCacheLimit(quint64 kiloBytes);
698
699 void setDefaultAngleUnit(AngleUnit angleUnit);
700
701 void setDefaultFont(const QFont &font);
702
703 /**
704 * @brief Reload the currently displayed map by reloading texture tiles
705 * from the Internet. In the future this should be extended to all
706 * kinds of data which is used in the map.
707 */
708 void reload();
709
710 void downloadRegion(QList<TileCoordsPyramid> const &);
711
712 void highlightRouteRelation(qint64 osmId, bool enabled);
713
714Q_SIGNALS:
715 void tileLevelChanged(int level);
716
717 /**
718 * @brief Signal that the theme has changed
719 * @param theme Name of the new theme.
720 */
721 void themeChanged(const QString &theme);
722
723 void projectionChanged(Projection);
724
725 void radiusChanged(int radius);
726
727 void mouseMoveGeoPosition(const QString &geoPositionString);
728
729 void mouseClickGeoPosition(qreal lon, qreal lat, GeoDataCoordinates::Unit);
730
731 void framesPerSecond(qreal fps);
732
733 /**
734 * This signal is emitted when the repaint of the view was requested.
735 * If available with the @p dirtyRegion which is the region the view will change in.
736 * If dirtyRegion.isEmpty() returns true, the whole viewport has to be repainted.
737 */
738 void repaintNeeded(const QRegion &dirtyRegion = QRegion());
739
740 /**
741 * This signal is emitted when the visible region of the map changes. This typically happens
742 * when the user moves the map around or zooms.
743 */
744 void visibleLatLonAltBoxChanged(const GeoDataLatLonAltBox &visibleLatLonAltBox);
745
746 /**
747 * @brief This signal is emit when the settings of a plugin changed.
748 */
750
751 /**
752 * @brief Signal that a render item has been initialized
753 */
755
756 /**
757 * @brief Emitted when the layer rendering status has changed
758 * @param status New render status
759 */
761
762 void renderStateChanged(const RenderState &state);
763
764 void highlightedPlacemarksChanged(qreal, qreal, GeoDataCoordinates::Unit);
765
766 void viewContextChanged(ViewContext viewContext);
767
768 void visibleRelationTypesChanged(GeoDataRelation::RelationTypes relationTypes);
769
770 void propertyValueChanged(const QString &name, bool value);
771
772protected:
773 /**
774 * @brief Enables custom drawing onto the MarbleMap straight after
775 * @brief the globe and before all other layers have been rendered.
776 * @param painter
777 *
778 * @deprecated implement LayerInterface and add it using @p addLayer()
779 */
780 virtual void customPaint(GeoPainter *painter);
781
782private:
783 Q_PRIVATE_SLOT(d, void updateMapTheme())
784 Q_PRIVATE_SLOT(d, void updateProperty(const QString &, bool))
785 Q_PRIVATE_SLOT(d, void setDocument(QString))
786 Q_PRIVATE_SLOT(d, void updateTileLevel())
787 Q_PRIVATE_SLOT(d, void addPlugins())
788
789private:
790 Q_DISABLE_COPY(MarbleMap)
791 MarbleMapPrivate *const d;
792 friend class MarbleMapPrivate;
793
794 class CustomPaintLayer;
795 friend class CustomPaintLayer;
796};
797
798}
799
800#endif
The abstract class for float item plugins.
Unit
enum used constructor to specify the units used
A class that defines a 3D bounding box for geographic data.
A painter that allows to draw geometric primitives on the map.
Definition GeoPainter.h:86
A class that can paint a view of the earth.
Definition MarbleMap.h:84
void themeChanged(const QString &theme)
Signal that the theme has changed.
void visibleLatLonAltBoxChanged(const GeoDataLatLonAltBox &visibleLatLonAltBox)
This signal is emitted when the visible region of the map changes.
void pluginSettingsChanged()
This signal is emit when the settings of a plugin changed.
void renderPluginInitialized(RenderPlugin *renderPlugin)
Signal that a render item has been initialized.
void renderStatusChanged(RenderStatus status)
Emitted when the layer rendering status has changed.
void repaintNeeded(const QRegion &dirtyRegion=QRegion())
This signal is emitted when the repaint of the view was requested.
The data model (not based on QAbstractModel) for a MarbleWidget.
Definition MarbleModel.h:84
A widget class that displays a view of the earth.
The abstract class that creates a renderable item.
A public class that controls what is visible in the viewport of a Marble map.
Q_SCRIPTABLE CaptureState status()
Q_INVOKABLE void setProjection(uint proj)
Binds a QML item to a specific geodetic location in screen coordinates.
ViewContext
This enum is used to choose context in which map quality gets used.
AngleUnit
This enum is used to choose the unit chosen to measure angles.
Projection
This enum is used to choose the projection shown in the view.
MapQuality
This enum is used to choose the map quality shown in the view.
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Fri Nov 8 2024 12:02:44 by doxygen 1.12.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.