summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzmiao <zmiao.jamie@gmail.com>2019-08-21 22:32:05 +0300
committerzmiao <zmiao.jamie@gmail.com>2019-08-21 22:32:05 +0300
commit4fdf9db2a861c6ba052ce5d09790bdcc7052afc8 (patch)
tree302ab84588b4f646bbe801761bf826d3b36ee129
parent001e948ce3278eaf6332f4c4f49b72f06b16cecf (diff)
downloadqtlocation-mapboxgl-4fdf9db2a861c6ba052ce5d09790bdcc7052afc8.tar.gz
revert renderableSegment change
-rw-r--r--src/mbgl/renderer/layers/render_symbol_layer.cpp35
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 = [&parameters, 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);
- }
}
}