#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(Point point_, float angle_, optional tileDistance_) : point(point_), angle(angle_), tileDistance(tileDistance_) {} Point point; float angle; optional tileDistance; }; mat4 getLabelPlaneMatrix(const mat4& posMatrix, const bool pitchWithMap, const bool rotateWithMap, const TransformState& state, const float pixelsToTileUnits); mat4 getGlCoordMatrix(const mat4& posMatrix, const bool pitchWithMap, const bool rotateWithMap, const TransformState& state, const float pixelsToTileUnits); void reprojectLineLabels(gl::VertexVector&, const std::vector&, const mat4& posMatrix, const style::SymbolPropertyValues&, const RenderTile&, const SymbolSizeBinder& sizeBinder, const TransformState&); optional> placeFirstAndLastGlyph(const float fontScale, const float lineOffsetX, const float lineOffsetY, const bool flip, const Point& anchorPoint, const Point& tileAnchorPoint, const PlacedSymbol& symbol, const mat4& labelPlaneMatrix, const bool returnTileDistance); } // end namespace mbgl