From 0fba70d5a8465499b0dce900e5aa74f7189e4594 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Tue, 31 May 2016 17:34:11 -0700 Subject: [all] Rationalize annotation API --- include/mbgl/annotation/annotation.hpp | 41 ++++++++++++++++++++++++++++ include/mbgl/annotation/point_annotation.hpp | 18 ------------ include/mbgl/annotation/shape_annotation.hpp | 37 ------------------------- include/mbgl/map/map.hpp | 13 ++------- include/mbgl/platform/default/glfw_view.hpp | 1 - include/mbgl/util/geometry.hpp | 37 +++++++++++++++++++++++++ 6 files changed, 80 insertions(+), 67 deletions(-) delete mode 100644 include/mbgl/annotation/point_annotation.hpp delete mode 100644 include/mbgl/annotation/shape_annotation.hpp create mode 100644 include/mbgl/util/geometry.hpp (limited to 'include') 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 + +#include +#include + #include #include +#include namespace mbgl { using AnnotationID = uint32_t; using AnnotationIDs = std::vector; +class SymbolAnnotation { +public: + Geometry geometry; + std::string icon; +}; + +class LineAnnotation { +public: + Geometry geometry; + float opacity = 1; + float width = 1; + Color color = {{ 0, 0, 0, 1 }}; +}; + +class FillAnnotation { +public: + Geometry 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 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 - -#include - -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 -#include - -#include -#include - -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& geometry_, const Properties& properties_) - : geometry(geometry_), properties(properties_) {} - - const Geometry 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&); - - AnnotationID addShapeAnnotation(const ShapeAnnotation&); - AnnotationIDs addShapeAnnotations(const std::vector&); - - 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 makeRandomPoint() const; static std::shared_ptr 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 +#include + +namespace mbgl { + +template +using Point = mapbox::geometry::point; + +template +using LineString = mapbox::geometry::line_string; + +template +using Polygon = mapbox::geometry::polygon; + +template +using MultiPoint = mapbox::geometry::multi_point; + +template +using MultiLineString = mapbox::geometry::multi_line_string; + +template +using MultiPolygon = mapbox::geometry::multi_polygon; + +template +using LinearRing = mapbox::geometry::linear_ring; + +template +using Geometry = mapbox::geometry::geometry; + +template +Point convertPoint(const Point& p) { + return Point(p.x, p.y); +} + +} // namespace mbgl -- cgit v1.2.1