diff options
author | zmiao <zmiao.jamie@gmail.com> | 2019-08-21 22:32:05 +0300 |
---|---|---|
committer | zmiao <zmiao.jamie@gmail.com> | 2019-08-21 22:32:05 +0300 |
commit | 4fdf9db2a861c6ba052ce5d09790bdcc7052afc8 (patch) | |
tree | 302ab84588b4f646bbe801761bf826d3b36ee129 | |
parent | 001e948ce3278eaf6332f4c4f49b72f06b16cecf (diff) | |
download | qtlocation-mapboxgl-4fdf9db2a861c6ba052ce5d09790bdcc7052afc8.tar.gz |
revert renderableSegment change
-rw-r--r-- | src/mbgl/renderer/layers/render_symbol_layer.cpp | 35 |
1 files changed, 14 insertions, 21 deletions
diff --git a/src/mbgl/renderer/layers/render_symbol_layer.cpp b/src/mbgl/renderer/layers/render_symbol_layer.cpp index 353ba0a164..8e0eadb7d9 100644 --- a/src/mbgl/renderer/layers/render_symbol_layer.cpp +++ b/src/mbgl/renderer/layers/render_symbol_layer.cpp @@ -67,13 +67,15 @@ struct RenderableSegment { const LayerRenderData& renderData_, const SymbolBucket::PaintProperties& bucketPaintProperties_, float sortKey_, - bool isText_) : + bool isText_, + bool isSdf_) : segment(std::move(segment_)), tile(tile_), renderData(renderData_), bucketPaintProperties(bucketPaintProperties_), sortKey(sortKey_), - isText(isText_) {} + isText(isText_), + isSdf(isSdf_) {} SegmentWrapper segment; const RenderTile& tile; @@ -81,6 +83,7 @@ struct RenderableSegment { const SymbolBucket::PaintProperties& bucketPaintProperties; float sortKey; bool isText; + bool isSdf; friend bool operator < (const RenderableSegment& lhs, const RenderableSegment& rhs) { // Sort renderable segments by a sort key. @@ -286,7 +289,6 @@ void RenderSymbolLayer::render(PaintParameters& parameters) { const bool sortFeaturesByKey = !impl(baseImpl).layout.get<SymbolSortKey>().isUndefined(); std::multiset<RenderableSegment> renderableSegments; - std::multiset<RenderableSegment> sdfIconRenderableSegments; const auto draw = [¶meters, this] (auto& programInstance, const auto& uniformValues, @@ -363,20 +365,15 @@ void RenderSymbolLayer::render(PaintParameters& parameters) { assert(bucket.paintProperties.find(getID()) != bucket.paintProperties.end()); const auto& bucketPaintProperties = bucket.paintProperties.at(getID()); - auto addRenderables = - [&tile, renderData, &bucketPaintProperties](std::multiset<RenderableSegment>& renderableSegs, - auto& segments, bool isText) mutable { - auto it = renderableSegs.begin(); - for (auto& segment : segments) { - it = renderableSegs.emplace_hint(it, SegmentWrapper{ std::ref(segment) }, - tile, *renderData, bucketPaintProperties, - segment.sortKey, isText); - } - }; + auto addRenderables = [&renderableSegments, &tile, renderData, &bucketPaintProperties, it = renderableSegments.begin()] (auto& segments, bool isText, bool isSdf) mutable { + for (auto& segment : segments) { + it = renderableSegments.emplace_hint(it, SegmentWrapper{std::ref(segment)}, tile, *renderData, bucketPaintProperties, segment.sortKey, isText, isSdf); + } + }; if (bucket.hasIconData()) { if (sortFeaturesByKey) { - addRenderables(renderableSegments, bucket.icon.segments, false /*isText*/); + addRenderables(bucket.icon.segments, false /*isText*/, false /*isSdf*/); } else { drawIcon(draw, tile, *renderData, std::ref(bucket.icon.segments), bucketPaintProperties, parameters, false); } @@ -384,7 +381,7 @@ void RenderSymbolLayer::render(PaintParameters& parameters) { if (bucket.hasSdfIconData()) { if (sortFeaturesByKey) { - addRenderables(sdfIconRenderableSegments, bucket.sdfIcon.segments, false /*isText*/); + addRenderables(bucket.sdfIcon.segments, false /*isText*/, true /*isSdf*/); } else { drawIcon(draw, tile, *renderData, std::ref(bucket.sdfIcon.segments), bucketPaintProperties, parameters, true); } @@ -392,7 +389,7 @@ void RenderSymbolLayer::render(PaintParameters& parameters) { if (bucket.hasTextData()) { if (sortFeaturesByKey) { - addRenderables(renderableSegments, bucket.text.segments, true /*isText*/); + addRenderables(bucket.text.segments, true /*isText*/, false /*isSdf*/); } else { drawText(draw, tile, *renderData, std::ref(bucket.text.segments), bucketPaintProperties, parameters); } @@ -478,13 +475,9 @@ void RenderSymbolLayer::render(PaintParameters& parameters) { if (renderable.isText) { drawText(draw, renderable.tile, renderable.renderData, renderable.segment, renderable.bucketPaintProperties, parameters); } else { - drawIcon(draw, renderable.tile, renderable.renderData, renderable.segment, renderable.bucketPaintProperties, parameters, false); + drawIcon(draw, renderable.tile, renderable.renderData, renderable.segment, renderable.bucketPaintProperties, parameters, renderable.isSdf); } } - for (auto& renderable : sdfIconRenderableSegments) { - drawIcon(draw, renderable.tile, renderable.renderData, renderable.segment, - renderable.bucketPaintProperties, parameters, true); - } } } |