diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2016-05-31 17:34:11 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2016-06-01 17:37:01 -0700 |
commit | 0fba70d5a8465499b0dce900e5aa74f7189e4594 (patch) | |
tree | 7902b9bd29d25de0de6d116fc3245b1b269477f4 /include | |
parent | cfd6757ecc9bd4d9b1f4c5266d19da48c529f58b (diff) | |
download | qtlocation-mapboxgl-0fba70d5a8465499b0dce900e5aa74f7189e4594.tar.gz |
[all] Rationalize annotation API
Diffstat (limited to 'include')
-rw-r--r-- | include/mbgl/annotation/annotation.hpp | 41 | ||||
-rw-r--r-- | include/mbgl/annotation/point_annotation.hpp | 18 | ||||
-rw-r--r-- | include/mbgl/annotation/shape_annotation.hpp | 37 | ||||
-rw-r--r-- | include/mbgl/map/map.hpp | 13 | ||||
-rw-r--r-- | include/mbgl/platform/default/glfw_view.hpp | 1 | ||||
-rw-r--r-- | include/mbgl/util/geometry.hpp | 37 |
6 files changed, 80 insertions, 67 deletions
diff --git a/include/mbgl/annotation/annotation.hpp b/include/mbgl/annotation/annotation.hpp index 52916549c9..3b2b7f3ade 100644 --- a/include/mbgl/annotation/annotation.hpp +++ b/include/mbgl/annotation/annotation.hpp @@ -1,11 +1,52 @@ #pragma once +#include <mbgl/style/types.hpp> + +#include <mbgl/util/geometry.hpp> +#include <mbgl/util/variant.hpp> + #include <cstdint> #include <vector> +#include <string> namespace mbgl { using AnnotationID = uint32_t; using AnnotationIDs = std::vector<AnnotationID>; +class SymbolAnnotation { +public: + Geometry<double> geometry; + std::string icon; +}; + +class LineAnnotation { +public: + Geometry<double> geometry; + float opacity = 1; + float width = 1; + Color color = {{ 0, 0, 0, 1 }}; +}; + +class FillAnnotation { +public: + Geometry<double> geometry; + float opacity = 1; + Color color = {{ 0, 0, 0, 1 }}; + Color outlineColor = {{ 0, 0, 0, -1 }}; +}; + +// An annotation whose type and properties are sourced from a style layer. +class StyleSourcedAnnotation { +public: + Geometry<double> geometry; + std::string layerID; +}; + +using Annotation = variant< + SymbolAnnotation, + LineAnnotation, + FillAnnotation, + StyleSourcedAnnotation>; + } // namespace mbgl diff --git a/include/mbgl/annotation/point_annotation.hpp b/include/mbgl/annotation/point_annotation.hpp deleted file mode 100644 index c9236c3c04..0000000000 --- a/include/mbgl/annotation/point_annotation.hpp +++ /dev/null @@ -1,18 +0,0 @@ -#pragma once - -#include <mbgl/util/geo.hpp> - -#include <string> - -namespace mbgl { - -class PointAnnotation { -public: - PointAnnotation(const LatLng& position_, const std::string& icon_ = "") - : position(position_.wrapped()), icon(icon_) {} - - const LatLng position; - const std::string icon; -}; - -} // namespace mbgl diff --git a/include/mbgl/annotation/shape_annotation.hpp b/include/mbgl/annotation/shape_annotation.hpp deleted file mode 100644 index 7dca1ec134..0000000000 --- a/include/mbgl/annotation/shape_annotation.hpp +++ /dev/null @@ -1,37 +0,0 @@ -#pragma once - -#include <mbgl/annotation/annotation.hpp> -#include <mbgl/style/types.hpp> - -#include <mbgl/util/geometry.hpp> -#include <mbgl/util/variant.hpp> - -namespace mbgl { - -struct FillAnnotationProperties { - float opacity = 1; - Color color = {{ 0, 0, 0, 1 }}; - Color outlineColor = {{ 0, 0, 0, -1 }}; -}; - -struct LineAnnotationProperties { - float opacity = 1; - float width = 1; - Color color = {{ 0, 0, 0, 1 }}; -}; - -class ShapeAnnotation { -public: - using Properties = variant< - FillAnnotationProperties, // creates a fill annotation - LineAnnotationProperties, // creates a line annotation - std::string>; // creates an annotation whose type and properties are sourced from a style layer - - ShapeAnnotation(const Geometry<double>& geometry_, const Properties& properties_) - : geometry(geometry_), properties(properties_) {} - - const Geometry<double> geometry; - const Properties properties; -}; - -} // namespace mbgl diff --git a/include/mbgl/map/map.hpp b/include/mbgl/map/map.hpp index f074a5ae54..a728e2dd62 100644 --- a/include/mbgl/map/map.hpp +++ b/include/mbgl/map/map.hpp @@ -23,8 +23,6 @@ namespace mbgl { class FileSource; class View; class SpriteImage; -class PointAnnotation; -class ShapeAnnotation; struct CameraOptions; struct AnimationOptions; @@ -142,16 +140,9 @@ public: void removeAnnotationIcon(const std::string&); double getTopOffsetPixelsForAnnotationIcon(const std::string&); - AnnotationID addPointAnnotation(const PointAnnotation&); - AnnotationIDs addPointAnnotations(const std::vector<PointAnnotation>&); - - AnnotationID addShapeAnnotation(const ShapeAnnotation&); - AnnotationIDs addShapeAnnotations(const std::vector<ShapeAnnotation>&); - - void updatePointAnnotation(AnnotationID, const PointAnnotation&); - + AnnotationID addAnnotation(const Annotation&); + void updateAnnotation(AnnotationID, const Annotation&); void removeAnnotation(AnnotationID); - void removeAnnotations(const AnnotationIDs&); AnnotationIDs getPointAnnotationsInBounds(const LatLngBounds&); diff --git a/include/mbgl/platform/default/glfw_view.hpp b/include/mbgl/platform/default/glfw_view.hpp index b3b6116ad7..b1204ce96d 100644 --- a/include/mbgl/platform/default/glfw_view.hpp +++ b/include/mbgl/platform/default/glfw_view.hpp @@ -44,7 +44,6 @@ public: void report(float duration); private: - mbgl::LatLng makeRandomLatLng() const; mbgl::Point<double> makeRandomPoint() const; static std::shared_ptr<const mbgl::SpriteImage> makeSpriteImage(int width, int height, float pixelRatio); diff --git a/include/mbgl/util/geometry.hpp b/include/mbgl/util/geometry.hpp new file mode 100644 index 0000000000..6b9c332bf2 --- /dev/null +++ b/include/mbgl/util/geometry.hpp @@ -0,0 +1,37 @@ +#pragma once + +#include <mapbox/geometry/geometry.hpp> +#include <mapbox/geometry/point_arithmetic.hpp> + +namespace mbgl { + +template <class T> +using Point = mapbox::geometry::point<T>; + +template <class T> +using LineString = mapbox::geometry::line_string<T>; + +template <class T> +using Polygon = mapbox::geometry::polygon<T>; + +template <class T> +using MultiPoint = mapbox::geometry::multi_point<T>; + +template <class T> +using MultiLineString = mapbox::geometry::multi_line_string<T>; + +template <class T> +using MultiPolygon = mapbox::geometry::multi_polygon<T>; + +template <class T> +using LinearRing = mapbox::geometry::linear_ring<T>; + +template <class T> +using Geometry = mapbox::geometry::geometry<T>; + +template <class S, class T> +Point<S> convertPoint(const Point<T>& p) { + return Point<S>(p.x, p.y); +} + +} // namespace mbgl |