#pragma once #include #include #include namespace mbgl { class TransformState; class RenderTile; class SymbolSizeBinder; class PlacedSymbol; namespace style { class SymbolPropertyValues; } // end namespace style struct TileDistance { TileDistance(float prevTileDistance_, float lastSegmentViewportDistance_) : prevTileDistance(prevTileDistance_), lastSegmentViewportDistance(lastSegmentViewportDistance_) {} float prevTileDistance; float lastSegmentViewportDistance; }; struct PlacedGlyph { PlacedGlyph() = default; PlacedGlyph(Point point_, float angle_, optional tileDistance_) : point(point_), angle(angle_), tileDistance(std::move(tileDistance_)) {} PlacedGlyph(PlacedGlyph&& other) noexcept : point(other.point), angle(other.angle), tileDistance(std::move(other.tileDistance)) {} PlacedGlyph(const PlacedGlyph& other) = default; Point point; float angle; optional tileDistance; }; float evaluateSizeForFeature(const ZoomEvaluatedSize& zoomEvaluatedSize, const PlacedSymbol& placedSymbol); mat4 getLabelPlaneMatrix(const mat4& posMatrix, bool pitchWithMap, bool rotateWithMap, const TransformState& state, float pixelsToTileUnits); mat4 getGlCoordMatrix(const mat4& posMatrix, bool pitchWithMap, bool rotateWithMap, const TransformState& state, float pixelsToTileUnits); using PointAndCameraDistance = std::pair,float>; PointAndCameraDistance project(const Point& point, const mat4& matrix); void reprojectLineLabels(gfx::VertexVector>&, const std::vector&, const mat4& posMatrix, bool pitchWithMap, bool rotateWithMap, bool keepUpright, const RenderTile&, const SymbolSizeBinder& sizeBinder, const TransformState&); optional> placeFirstAndLastGlyph(float fontScale, float lineOffsetX, float lineOffsetY, bool flip, const Point& anchorPoint, const Point& tileAnchorPoint, const PlacedSymbol& symbol, const mat4& labelPlaneMatrix, bool returnTileDistance); void hideGlyphs(std::size_t numGlyphs, gfx::VertexVector>& dynamicVertexArray); void addDynamicAttributes(const Point& anchorPoint, float angle, gfx::VertexVector>& dynamicVertexArray); } // end namespace mbgl