You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					278 lines
				
				8.3 KiB
			
		
		
			
		
	
	
					278 lines
				
				8.3 KiB
			| 
											5 years ago
										 | #ifndef QMAPBOXGL_H
 | ||
|  | #define QMAPBOXGL_H
 | ||
|  | 
 | ||
|  | #include <QImage>
 | ||
|  | #include <QMapbox>
 | ||
|  | #include <QMargins>
 | ||
|  | #include <QObject>
 | ||
|  | #include <QPointF>
 | ||
|  | #include <QSize>
 | ||
|  | #include <QString>
 | ||
|  | #include <QStringList>
 | ||
|  | 
 | ||
|  | #include <functional>
 | ||
|  | 
 | ||
|  | class QMapboxGLPrivate;
 | ||
|  | 
 | ||
|  | // This header follows the Qt coding style: https://wiki.qt.io/Qt_Coding_Style
 | ||
|  | 
 | ||
|  | class Q_MAPBOXGL_EXPORT QMapboxGLSettings
 | ||
|  | {
 | ||
|  | public:
 | ||
|  |     QMapboxGLSettings();
 | ||
|  | 
 | ||
|  |     enum GLContextMode {
 | ||
|  |         UniqueGLContext = 0,
 | ||
|  |         SharedGLContext
 | ||
|  |     };
 | ||
|  | 
 | ||
|  |     enum MapMode {
 | ||
|  |         Continuous = 0,
 | ||
|  |         Static
 | ||
|  |     };
 | ||
|  | 
 | ||
|  |     enum ConstrainMode {
 | ||
|  |         NoConstrain = 0,
 | ||
|  |         ConstrainHeightOnly,
 | ||
|  |         ConstrainWidthAndHeight
 | ||
|  |     };
 | ||
|  | 
 | ||
|  |     enum ViewportMode {
 | ||
|  |         DefaultViewport = 0,
 | ||
|  |         FlippedYViewport
 | ||
|  |     };
 | ||
|  | 
 | ||
|  |     GLContextMode contextMode() const;
 | ||
|  |     void setContextMode(GLContextMode);
 | ||
|  | 
 | ||
|  |     MapMode mapMode() const;
 | ||
|  |     void setMapMode(MapMode);
 | ||
|  | 
 | ||
|  |     ConstrainMode constrainMode() const;
 | ||
|  |     void setConstrainMode(ConstrainMode);
 | ||
|  | 
 | ||
|  |     ViewportMode viewportMode() const;
 | ||
|  |     void setViewportMode(ViewportMode);
 | ||
|  | 
 | ||
|  |     unsigned cacheDatabaseMaximumSize() const;
 | ||
|  |     void setCacheDatabaseMaximumSize(unsigned);
 | ||
|  | 
 | ||
|  |     QString cacheDatabasePath() const;
 | ||
|  |     void setCacheDatabasePath(const QString &);
 | ||
|  | 
 | ||
|  |     QString assetPath() const;
 | ||
|  |     void setAssetPath(const QString &);
 | ||
|  | 
 | ||
|  |     QString accessToken() const;
 | ||
|  |     void setAccessToken(const QString &);
 | ||
|  | 
 | ||
|  |     QString apiBaseUrl() const;
 | ||
|  |     void setApiBaseUrl(const QString &);
 | ||
|  | 
 | ||
|  |     QString localFontFamily() const;
 | ||
|  |     void setLocalFontFamily(const QString &);
 | ||
|  | 
 | ||
|  |     std::function<std::string(const std::string &)> resourceTransform() const;
 | ||
|  |     void setResourceTransform(const std::function<std::string(const std::string &)> &);
 | ||
|  | 
 | ||
|  | private:
 | ||
|  |     GLContextMode m_contextMode;
 | ||
|  |     MapMode m_mapMode;
 | ||
|  |     ConstrainMode m_constrainMode;
 | ||
|  |     ViewportMode m_viewportMode;
 | ||
|  | 
 | ||
|  |     unsigned m_cacheMaximumSize;
 | ||
|  |     QString m_cacheDatabasePath;
 | ||
|  |     QString m_assetPath;
 | ||
|  |     QString m_accessToken;
 | ||
|  |     QString m_apiBaseUrl;
 | ||
|  |     QString m_localFontFamily;
 | ||
|  |     std::function<std::string(const std::string &)> m_resourceTransform;
 | ||
|  | };
 | ||
|  | 
 | ||
|  | struct Q_MAPBOXGL_EXPORT QMapboxGLCameraOptions {
 | ||
|  |     QVariant center;  // Coordinate
 | ||
|  |     QVariant anchor;  // QPointF
 | ||
|  |     QVariant zoom;    // double
 | ||
|  |     QVariant bearing; // double
 | ||
|  |     QVariant pitch;   // double
 | ||
|  | };
 | ||
|  | 
 | ||
|  | class Q_MAPBOXGL_EXPORT QMapboxGL : public QObject
 | ||
|  | {
 | ||
|  |     Q_OBJECT
 | ||
|  |     Q_PROPERTY(double latitude READ latitude WRITE setLatitude)
 | ||
|  |     Q_PROPERTY(double longitude READ longitude WRITE setLongitude)
 | ||
|  |     Q_PROPERTY(double zoom READ zoom WRITE setZoom)
 | ||
|  |     Q_PROPERTY(double bearing READ bearing WRITE setBearing)
 | ||
|  |     Q_PROPERTY(double pitch READ pitch WRITE setPitch)
 | ||
|  |     Q_PROPERTY(QString styleJson READ styleJson WRITE setStyleJson)
 | ||
|  |     Q_PROPERTY(QString styleUrl READ styleUrl WRITE setStyleUrl)
 | ||
|  |     Q_PROPERTY(double scale READ scale WRITE setScale)
 | ||
|  |     Q_PROPERTY(QMapbox::Coordinate coordinate READ coordinate WRITE setCoordinate)
 | ||
|  |     Q_PROPERTY(QMargins margins READ margins WRITE setMargins)
 | ||
|  | 
 | ||
|  | public:
 | ||
|  |     enum MapChange {
 | ||
|  |         MapChangeRegionWillChange = 0,
 | ||
|  |         MapChangeRegionWillChangeAnimated,
 | ||
|  |         MapChangeRegionIsChanging,
 | ||
|  |         MapChangeRegionDidChange,
 | ||
|  |         MapChangeRegionDidChangeAnimated,
 | ||
|  |         MapChangeWillStartLoadingMap,
 | ||
|  |         MapChangeDidFinishLoadingMap,
 | ||
|  |         MapChangeDidFailLoadingMap,
 | ||
|  |         MapChangeWillStartRenderingFrame,
 | ||
|  |         MapChangeDidFinishRenderingFrame,
 | ||
|  |         MapChangeDidFinishRenderingFrameFullyRendered,
 | ||
|  |         MapChangeWillStartRenderingMap,
 | ||
|  |         MapChangeDidFinishRenderingMap,
 | ||
|  |         MapChangeDidFinishRenderingMapFullyRendered,
 | ||
|  |         MapChangeDidFinishLoadingStyle,
 | ||
|  |         MapChangeSourceDidChange
 | ||
|  |     };
 | ||
|  | 
 | ||
|  |     enum MapLoadingFailure {
 | ||
|  |         StyleParseFailure,
 | ||
|  |         StyleLoadFailure,
 | ||
|  |         NotFoundFailure,
 | ||
|  |         UnknownFailure
 | ||
|  |     };
 | ||
|  | 
 | ||
|  |     // Determines the orientation of the map.
 | ||
|  |     enum NorthOrientation {
 | ||
|  |         NorthUpwards, // Default
 | ||
|  |         NorthRightwards,
 | ||
|  |         NorthDownwards,
 | ||
|  |         NorthLeftwards,
 | ||
|  |     };
 | ||
|  | 
 | ||
|  |     QMapboxGL(QObject* parent = 0,
 | ||
|  |               const QMapboxGLSettings& = QMapboxGLSettings(),
 | ||
|  |               const QSize& size = QSize(),
 | ||
|  |               qreal pixelRatio = 1);
 | ||
|  |     virtual ~QMapboxGL();
 | ||
|  | 
 | ||
|  |     QString styleJson() const;
 | ||
|  |     QString styleUrl() const;
 | ||
|  | 
 | ||
|  |     void setStyleJson(const QString &);
 | ||
|  |     void setStyleUrl(const QString &);
 | ||
|  | 
 | ||
|  |     double latitude() const;
 | ||
|  |     void setLatitude(double latitude);
 | ||
|  | 
 | ||
|  |     double longitude() const;
 | ||
|  |     void setLongitude(double longitude);
 | ||
|  | 
 | ||
|  |     double scale() const;
 | ||
|  |     void setScale(double scale, const QPointF ¢er = QPointF());
 | ||
|  | 
 | ||
|  |     double zoom() const;
 | ||
|  |     void setZoom(double zoom);
 | ||
|  | 
 | ||
|  |     double minimumZoom() const;
 | ||
|  |     double maximumZoom() const;
 | ||
|  | 
 | ||
|  |     double bearing() const;
 | ||
|  |     void setBearing(double degrees);
 | ||
|  |     void setBearing(double degrees, const QPointF ¢er);
 | ||
|  | 
 | ||
|  |     double pitch() const;
 | ||
|  |     void setPitch(double pitch);
 | ||
|  |     void pitchBy(double pitch);
 | ||
|  | 
 | ||
|  |     NorthOrientation northOrientation() const;
 | ||
|  |     void setNorthOrientation(NorthOrientation);
 | ||
|  | 
 | ||
|  |     QMapbox::Coordinate coordinate() const;
 | ||
|  |     void setCoordinate(const QMapbox::Coordinate &);
 | ||
|  |     void setCoordinateZoom(const QMapbox::Coordinate &, double zoom);
 | ||
|  | 
 | ||
|  |     void jumpTo(const QMapboxGLCameraOptions&);
 | ||
|  | 
 | ||
|  |     void setGestureInProgress(bool inProgress);
 | ||
|  | 
 | ||
|  |     void setTransitionOptions(qint64 duration, qint64 delay = 0);
 | ||
|  | 
 | ||
|  |     void addAnnotationIcon(const QString &name, const QImage &sprite);
 | ||
|  | 
 | ||
|  |     QMapbox::AnnotationID addAnnotation(const QMapbox::Annotation &);
 | ||
|  |     void updateAnnotation(QMapbox::AnnotationID, const QMapbox::Annotation &);
 | ||
|  |     void removeAnnotation(QMapbox::AnnotationID);
 | ||
|  | 
 | ||
|  |     bool setLayoutProperty(const QString &layer, const QString &property, const QVariant &value);
 | ||
|  |     bool setPaintProperty(const QString &layer, const QString &property, const QVariant &value);
 | ||
|  | 
 | ||
|  |     bool isFullyLoaded() const;
 | ||
|  | 
 | ||
|  |     void moveBy(const QPointF &offset);
 | ||
|  |     void scaleBy(double scale, const QPointF ¢er = QPointF());
 | ||
|  |     void rotateBy(const QPointF &first, const QPointF &second);
 | ||
|  | 
 | ||
|  |     void resize(const QSize &size);
 | ||
|  | 
 | ||
|  |     double metersPerPixelAtLatitude(double latitude, double zoom) const;
 | ||
|  |     QMapbox::ProjectedMeters projectedMetersForCoordinate(const QMapbox::Coordinate &) const;
 | ||
|  |     QMapbox::Coordinate coordinateForProjectedMeters(const QMapbox::ProjectedMeters &) const;
 | ||
|  |     QPointF pixelForCoordinate(const QMapbox::Coordinate &) const;
 | ||
|  |     QMapbox::Coordinate coordinateForPixel(const QPointF &) const;
 | ||
|  | 
 | ||
|  |     QMapbox::CoordinateZoom coordinateZoomForBounds(const QMapbox::Coordinate &sw, QMapbox::Coordinate &ne) const;
 | ||
|  |     QMapbox::CoordinateZoom coordinateZoomForBounds(const QMapbox::Coordinate &sw, QMapbox::Coordinate &ne, double bearing, double pitch);
 | ||
|  | 
 | ||
|  |     void setMargins(const QMargins &margins);
 | ||
|  |     QMargins margins() const;
 | ||
|  | 
 | ||
|  |     void addSource(const QString &sourceID, const QVariantMap& params);
 | ||
|  |     bool sourceExists(const QString &sourceID);
 | ||
|  |     void updateSource(const QString &sourceID, const QVariantMap& params);
 | ||
|  |     void removeSource(const QString &sourceID);
 | ||
|  | 
 | ||
|  |     void addImage(const QString &name, const QImage &sprite);
 | ||
|  |     void removeImage(const QString &name);
 | ||
|  | 
 | ||
|  |     void addCustomLayer(const QString &id,
 | ||
|  |         QScopedPointer<QMapbox::CustomLayerHostInterface>& host,
 | ||
|  |         const QString& before = QString());
 | ||
|  |     void addLayer(const QVariantMap ¶ms, const QString& before = QString());
 | ||
|  |     bool layerExists(const QString &id);
 | ||
|  |     void removeLayer(const QString &id);
 | ||
|  | 
 | ||
|  |     QVector<QString> layerIds() const;
 | ||
|  | 
 | ||
|  |     void setFilter(const QString &layer, const QVariant &filter);
 | ||
|  |     QVariant getFilter(const QString &layer) const;
 | ||
|  |     // When rendering on a different thread,
 | ||
|  |     // should be called on the render thread.
 | ||
|  |     void createRenderer();
 | ||
|  |     void destroyRenderer();
 | ||
|  |     void setFramebufferObject(quint32 fbo, const QSize &size);
 | ||
|  | 
 | ||
|  | public slots:
 | ||
|  |     void render();
 | ||
|  |     void connectionEstablished();
 | ||
|  | 
 | ||
|  |     // Commit changes, load all the resources
 | ||
|  |     // and renders the map when completed.
 | ||
|  |     void startStaticRender();
 | ||
|  | 
 | ||
|  | signals:
 | ||
|  |     void needsRendering();
 | ||
|  |     void mapChanged(QMapboxGL::MapChange);
 | ||
|  |     void mapLoadingFailed(QMapboxGL::MapLoadingFailure, const QString &reason);
 | ||
|  |     void copyrightsChanged(const QString ©rightsHtml);
 | ||
|  | 
 | ||
|  |     void staticRenderFinished(const QString &error);
 | ||
|  | 
 | ||
|  | private:
 | ||
|  |     Q_DISABLE_COPY(QMapboxGL)
 | ||
|  | 
 | ||
|  |     QMapboxGLPrivate *d_ptr;
 | ||
|  | };
 | ||
|  | 
 | ||
|  | Q_DECLARE_METATYPE(QMapboxGL::MapChange);
 | ||
|  | Q_DECLARE_METATYPE(QMapboxGL::MapLoadingFailure);
 | ||
|  | 
 | ||
|  | #endif // QMAPBOXGL_H
 |