#pragma once #include #include #include namespace mbgl { class LineLayoutProperties { public: LayoutProperty lineCap { LineCapType::Butt }; LayoutProperty lineJoin { LineJoinType::Miter }; LayoutProperty lineMiterLimit { 2.0f }; LayoutProperty lineRoundLimit { 1.0f }; }; class LinePaintProperties { public: PaintProperty lineOpacity { 1.0f }; PaintProperty lineColor { {{ 0, 0, 0, 1 }} }; PaintProperty> lineTranslate { {{ 0, 0 }} }; PaintProperty lineTranslateAnchor { TranslateAnchorType::Map }; PaintProperty lineWidth { 1 }; PaintProperty lineGapWidth { 0 }; PaintProperty lineBlur { 0 }; PaintProperty lineOffset { 0 }; PaintProperty, CrossFadedFunctionEvaluator> lineDasharray { {} }; PaintProperty linePattern { "" }; }; class LineLayer : public StyleLayer { public: LineLayer() : StyleLayer(Type::Line) {} std::unique_ptr clone() const override; void parseLayout(const JSValue&) override; void parsePaints(const JSValue&) override; void cascade(const StyleCascadeParameters&) override; bool recalculate(const StyleCalculationParameters&) override; std::unique_ptr createBucket(StyleBucketParameters&) const override; float getQueryRadius() const override; bool queryIntersectsGeometry( const GeometryCollection& queryGeometry, const GeometryCollection& geometry, const float bearing, const float pixelsToTileUnits) const override; LineLayoutProperties layout; LinePaintProperties paint; float dashLineWidth = 1; private: float getLineWidth() const; }; template <> inline bool StyleLayer::is() const { return type == Type::Line; } } // namespace mbgl