From d2cf625d8fcc54ba7189a571d33bd4c884ef044c Mon Sep 17 00:00:00 2001 From: Julian Rex Date: Tue, 23 Jul 2019 07:16:09 -0400 Subject: Fix node-test fail. --- src/mbgl/renderer/layers/render_line_layer.cpp | 50 +++++++++++++------------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/src/mbgl/renderer/layers/render_line_layer.cpp b/src/mbgl/renderer/layers/render_line_layer.cpp index 7841a3883b..1161ae7706 100644 --- a/src/mbgl/renderer/layers/render_line_layer.cpp +++ b/src/mbgl/renderer/layers/render_line_layer.cpp @@ -217,36 +217,34 @@ void RenderLineLayer::render(PaintParameters& parameters) { namespace { optional offsetLine(const GeometryCollection& rings, const double offset) { - optional newRings = nullopt; - Point zero(0, 0); - for (const auto& ring : rings) { - if (offset == 0) { - break; - } else if (!newRings) { - newRings = {}; - } - - newRings->emplace_back(); - auto& newRing = newRings->back(); - - for (auto i = ring.begin(); i != ring.end(); i++) { - auto& p = *i; - - Point aToB = i == ring.begin() ? - zero : - util::perp(util::unit(convertPoint(p - *(i - 1)))); - Point bToC = i + 1 == ring.end() ? - zero : - util::perp(util::unit(convertPoint(*(i + 1) - p))); - Point extrude = util::unit(aToB + bToC); + optional newRings = {};//nullopt; + + if (offset != 0) { + Point zero(0, 0); + newRings = GeometryCollection();//{}; + for (const auto& ring : rings) { - const double cosHalfAngle = extrude.x * bToC.x + extrude.y * bToC.y; - extrude *= (1.0 / cosHalfAngle); + newRings->emplace_back(); + auto& newRing = newRings->back(); - newRing.push_back(convertPoint(extrude * offset) + p); + for (auto i = ring.begin(); i != ring.end(); i++) { + auto& p = *i; + + Point aToB = i == ring.begin() ? + zero : + util::perp(util::unit(convertPoint(p - *(i - 1)))); + Point bToC = i + 1 == ring.end() ? + zero : + util::perp(util::unit(convertPoint(*(i + 1) - p))); + Point extrude = util::unit(aToB + bToC); + + const double cosHalfAngle = extrude.x * bToC.x + extrude.y * bToC.y; + extrude *= (1.0 / cosHalfAngle); + + newRing.emplace_back(convertPoint(extrude * offset) + p); + } } } - return newRings; } -- cgit v1.2.1