summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2016-05-31 17:34:11 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2016-06-01 17:37:01 -0700
commit0fba70d5a8465499b0dce900e5aa74f7189e4594 (patch)
tree7902b9bd29d25de0de6d116fc3245b1b269477f4 /include
parentcfd6757ecc9bd4d9b1f4c5266d19da48c529f58b (diff)
downloadqtlocation-mapboxgl-0fba70d5a8465499b0dce900e5aa74f7189e4594.tar.gz
[all] Rationalize annotation API
Diffstat (limited to 'include')
-rw-r--r--include/mbgl/annotation/annotation.hpp41
-rw-r--r--include/mbgl/annotation/point_annotation.hpp18
-rw-r--r--include/mbgl/annotation/shape_annotation.hpp37
-rw-r--r--include/mbgl/map/map.hpp13
-rw-r--r--include/mbgl/platform/default/glfw_view.hpp1
-rw-r--r--include/mbgl/util/geometry.hpp37
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