#pragma once #include #include #include #include #include #include #include #include namespace mbgl { using AnnotationID = uint32_t; using AnnotationIDs = std::vector; class SymbolAnnotation { public: SymbolAnnotation(Point geometry_, std::string icon_ = {}) : geometry(std::move(geometry_)), icon(std::move(icon_)) {} Point geometry; std::string icon; }; using ShapeAnnotationGeometry = variant< LineString, Polygon, MultiLineString, MultiPolygon>; class LineAnnotation { public: LineAnnotation(ShapeAnnotationGeometry geometry_, style::DataDrivenPropertyValue opacity_ = 1.0f, style::DataDrivenPropertyValue width_ = 1.0f, style::DataDrivenPropertyValue color_ = Color::black()) : geometry(std::move(geometry_)), opacity(std::move(opacity_)), width(std::move(width_)), color(std::move(color_)) {} ShapeAnnotationGeometry geometry; style::DataDrivenPropertyValue opacity; style::DataDrivenPropertyValue width; style::DataDrivenPropertyValue color; }; class FillAnnotation { public: FillAnnotation(ShapeAnnotationGeometry geometry_, style::DataDrivenPropertyValue opacity_ = 1.0f, style::DataDrivenPropertyValue color_ = Color::black(), style::DataDrivenPropertyValue outlineColor_ = {}) : geometry(std::move(geometry_)), opacity(std::move(opacity_)), color(std::move(color_)), outlineColor(std::move(outlineColor_)) {} ShapeAnnotationGeometry geometry; style::DataDrivenPropertyValue opacity; style::DataDrivenPropertyValue color; style::DataDrivenPropertyValue outlineColor; }; using Annotation = variant< SymbolAnnotation, LineAnnotation, FillAnnotation>; } // namespace mbgl