diff options
author | Ansis Brammanis <brammanis@gmail.com> | 2016-02-08 14:22:53 -0800 |
---|---|---|
committer | Ansis Brammanis <brammanis@gmail.com> | 2016-02-08 14:22:53 -0800 |
commit | 29d61c0fe72ba96d0f60db1cd2bff2834c7c7657 (patch) | |
tree | a94dee2138729d8e3eb4af7423caa1b8f87f7ba6 | |
parent | 7c7de0bc570b2d8c4a9121577ea0dd20f1084829 (diff) | |
download | qtlocation-mapboxgl-29d61c0fe72ba96d0f60db1cd2bff2834c7c7657.tar.gz |
[node] add debug options to node bindings
fix #3579
-rw-r--r-- | platform/node/src/node_map.cpp | 26 | ||||
-rw-r--r-- | platform/node/test/render.test.js | 4 | ||||
-rw-r--r-- | src/mbgl/renderer/painter_debug.cpp | 4 | ||||
-rw-r--r-- | src/mbgl/renderer/painter_symbol.cpp | 32 |
4 files changed, 49 insertions, 17 deletions
diff --git a/platform/node/src/node_map.cpp b/platform/node/src/node_map.cpp index b8927ea334..5eefe402d6 100644 --- a/platform/node/src/node_map.cpp +++ b/platform/node/src/node_map.cpp @@ -25,6 +25,7 @@ struct NodeMap::RenderOptions { unsigned int width = 512; unsigned int height = 512; std::vector<std::string> classes; + mbgl::MapDebugOptions debugOptions = mbgl::MapDebugOptions::NoDebug; }; //////////////////////////////////////////////////////////////////////////////////////////////// @@ -240,6 +241,30 @@ NodeMap::RenderOptions NodeMap::ParseOptions(v8::Local<v8::Object> obj) { } } + if (Nan::Has(obj, Nan::New("debug").ToLocalChecked()).FromJust()) { + auto debug = Nan::Get(obj, Nan::New("debug").ToLocalChecked()).ToLocalChecked()->ToObject().As<v8::Object>(); + if (Nan::Has(debug, Nan::New("tileBorders").ToLocalChecked()).FromJust()) { + if (Nan::Get(debug, Nan::New("tileBorders").ToLocalChecked()).ToLocalChecked()->BooleanValue()) { + options.debugOptions = options.debugOptions | mbgl::MapDebugOptions::TileBorders; + } + } + if (Nan::Has(debug, Nan::New("parseStatus").ToLocalChecked()).FromJust()) { + if (Nan::Get(debug, Nan::New("parseStatus").ToLocalChecked()).ToLocalChecked()->BooleanValue()) { + options.debugOptions = options.debugOptions | mbgl::MapDebugOptions::ParseStatus; + } + } + if (Nan::Has(debug, Nan::New("timestamps").ToLocalChecked()).FromJust()) { + if (Nan::Get(debug, Nan::New("timestamps").ToLocalChecked()).ToLocalChecked()->BooleanValue()) { + options.debugOptions = options.debugOptions | mbgl::MapDebugOptions::Timestamps; + } + } + if (Nan::Has(debug, Nan::New("collision").ToLocalChecked()).FromJust()) { + if (Nan::Get(debug, Nan::New("collision").ToLocalChecked()).ToLocalChecked()->BooleanValue()) { + options.debugOptions = options.debugOptions | mbgl::MapDebugOptions::Collision; + } + } + } + return options; } @@ -302,6 +327,7 @@ void NodeMap::startRender(NodeMap::RenderOptions options) { map->setLatLngZoom(mbgl::LatLng(options.latitude, options.longitude), options.zoom); map->setBearing(options.bearing); map->setPitch(options.pitch); + map->setDebug(options.debugOptions); map->renderStill([this](const std::exception_ptr eptr, mbgl::PremultipliedImage&& result) { if (eptr) { diff --git a/platform/node/test/render.test.js b/platform/node/test/render.test.js index ae2a55277e..05a6b2ba68 100644 --- a/platform/node/test/render.test.js +++ b/platform/node/test/render.test.js @@ -41,6 +41,10 @@ suite.run('native', {tests: tests}, function (style, options, callback) { options.zoom = style.zoom; options.bearing = style.bearing; options.pitch = style.pitch; + options.debug = { + tileBorders: options.debug, + collision: options.collisionDebug + }; map.load(style); map.render(options, function (err, pixels) { diff --git a/src/mbgl/renderer/painter_debug.cpp b/src/mbgl/renderer/painter_debug.cpp index d6b1aec73c..739d23a66d 100644 --- a/src/mbgl/renderer/painter_debug.cpp +++ b/src/mbgl/renderer/painter_debug.cpp @@ -15,7 +15,9 @@ void Painter::renderTileDebug(const Tile& tile) { if (data.getDebug() != MapDebugOptions::NoDebug) { prepareTile(tile); renderDebugText(*tile.data, tile.matrix); - renderDebugFrame(tile.matrix); + if (data.getDebug() & MapDebugOptions::TileBorders) { + renderDebugFrame(tile.matrix); + } } } diff --git a/src/mbgl/renderer/painter_symbol.cpp b/src/mbgl/renderer/painter_symbol.cpp index 0538485824..81d35cd50c 100644 --- a/src/mbgl/renderer/painter_symbol.cpp +++ b/src/mbgl/renderer/painter_symbol.cpp @@ -137,22 +137,6 @@ void Painter::renderSymbol(SymbolBucket& bucket, const SymbolLayer& layer, const config.depthMask = GL_FALSE; - if (bucket.hasCollisionBoxData()) { - config.stencilOp.reset(); - config.stencilTest = GL_TRUE; - - config.program = collisionBoxShader->program; - collisionBoxShader->u_matrix = matrix; - collisionBoxShader->u_scale = std::pow(2, state.getZoom() - id.z); - collisionBoxShader->u_zoom = state.getZoom() * 10; - collisionBoxShader->u_maxzoom = (id.z + 1) * 10; - config.lineWidth = 1.0f; - - setDepthSublayer(0); - bucket.drawCollisionBoxes(*collisionBoxShader); - - } - // TODO remove the `true ||` when #1673 is implemented const bool drawAcrossEdges = (data.mode == MapMode::Continuous) && (true || !(layout.text.allowOverlap || layout.icon.allowOverlap || layout.text.ignorePlacement || layout.icon.ignorePlacement)); @@ -271,4 +255,20 @@ void Painter::renderSymbol(SymbolBucket& bucket, const SymbolLayer& layer, const &SymbolBucket::drawGlyphs); } + if (bucket.hasCollisionBoxData()) { + config.stencilOp.reset(); + config.stencilTest = GL_TRUE; + + config.program = collisionBoxShader->program; + collisionBoxShader->u_matrix = matrix; + collisionBoxShader->u_scale = std::pow(2, state.getZoom() - id.z); + collisionBoxShader->u_zoom = state.getZoom() * 10; + collisionBoxShader->u_maxzoom = (id.z + 1) * 10; + config.lineWidth = 1.0f; + + setDepthSublayer(0); + bucket.drawCollisionBoxes(*collisionBoxShader); + + } + } |