#pragma once #include #include #include #include #include #include #include namespace mbgl { struct LineFloorwidth : style::DataDrivenPaintProperty { using EvaluatorType = DataDrivenPropertyEvaluator; static float defaultValue() { return 1.0; } }; class RenderLinePaintProperties : public style::ConcatenateProperties< style::LinePaintProperties, style::Properties> {}; class RenderLineLayer: public RenderLayer { public: using StyleLayerImpl = style::LineLayer::Impl; using PatternProperty = style::LinePattern; RenderLineLayer(Immutable); ~RenderLineLayer() final = default; void transition(const TransitionParameters&) override; void evaluate(const PropertyEvaluationParameters&) override; bool hasTransition() const override; bool hasCrossfade() const override; void render(PaintParameters&, RenderSource*) override; void update() final; bool queryIntersectsFeature( const GeometryCoordinates&, const GeometryTileFeature&, const float, const TransformState&, const float, const mat4&) const override; // Paint properties style::LinePaintProperties::Unevaluated unevaluated; RenderLinePaintProperties::PossiblyEvaluated evaluated; const style::LineLayer::Impl& impl() const; private: float getLineWidth(const GeometryTileFeature&, const float) const; void updateColorRamp(); CrossfadeParameters crossfade; PremultipliedImage colorRamp; optional colorRampTexture; }; inline const RenderLineLayer* toRenderLineLayer(const RenderLayer* layer) { return static_cast(layer); } } // namespace mbgl