diff options
author | Ansis Brammanis <brammanis@gmail.com> | 2014-08-13 16:16:08 -0700 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2014-08-15 15:52:53 +0200 |
commit | 32a1711d8cd00a5d85c61802f79619b85b9cc38a (patch) | |
tree | 06eafd07790c97fd4de063f766a04a06ed66c4db | |
parent | 478a1dae6701f73d2a1cbcc2b7c6470671f47c4a (diff) | |
download | qtlocation-mapboxgl-32a1711d8cd00a5d85c61802f79619b85b9cc38a.tar.gz |
remove support for composite layers
-rw-r--r-- | include/mbgl/renderer/painter.hpp | 6 | ||||
-rw-r--r-- | include/mbgl/shader/composite_shader.hpp | 29 | ||||
-rw-r--r-- | include/mbgl/style/property_key.hpp | 2 | ||||
-rw-r--r-- | include/mbgl/style/style_properties.hpp | 11 | ||||
-rw-r--r-- | include/mbgl/style/types.hpp | 2 | ||||
-rw-r--r-- | src/map/map.cpp | 34 | ||||
-rw-r--r-- | src/renderer/painter.cpp | 3 | ||||
-rw-r--r-- | src/renderer/painter_composite.cpp | 31 | ||||
-rw-r--r-- | src/renderer/painter_framebuffers.cpp | 124 | ||||
-rw-r--r-- | src/shader/composite.fragment.glsl | 9 | ||||
-rw-r--r-- | src/shader/composite.vertex.glsl | 9 | ||||
-rw-r--r-- | src/shader/composite_shader.cpp | 49 | ||||
-rw-r--r-- | src/style/property_fallback.cpp | 2 | ||||
-rw-r--r-- | src/style/style_layer.cpp | 8 | ||||
-rw-r--r-- | src/style/style_parser.cpp | 3 | ||||
-rw-r--r-- | src/style/style_properties.cpp | 1 | ||||
-rw-r--r-- | styles/bright/style.json | 103 |
17 files changed, 53 insertions, 373 deletions
diff --git a/include/mbgl/renderer/painter.hpp b/include/mbgl/renderer/painter.hpp index 1ef5fee836..eb5f427898 100644 --- a/include/mbgl/renderer/painter.hpp +++ b/include/mbgl/renderer/painter.hpp @@ -18,7 +18,6 @@ #include <mbgl/shader/raster_shader.hpp> #include <mbgl/shader/text_shader.hpp> #include <mbgl/shader/dot_shader.hpp> -#include <mbgl/shader/composite_shader.hpp> #include <mbgl/shader/gaussian_shader.hpp> #include <mbgl/map/transform_state.hpp> @@ -46,7 +45,6 @@ class PrerenderedTexture; struct FillProperties; struct RasterProperties; -struct CompositeProperties; class LayerDescription; class RasterTileData; @@ -111,13 +109,11 @@ public: void drawClippingMasks(const std::set<std::shared_ptr<StyleSource>> &sources); void drawClippingMask(const mat4& matrix, const ClipID& clip); - void clearFramebuffers(); void resetFramebuffer(); void bindFramebuffer(); void pushFramebuffer(); GLuint popFramebuffer(); void discardFramebuffers(); - void drawComposite(GLuint texture, const CompositeProperties &properties); bool needsAnimation() const; private: @@ -172,7 +168,6 @@ public: std::unique_ptr<RasterShader> rasterShader; std::unique_ptr<TextShader> textShader; std::unique_ptr<DotShader> dotShader; - std::unique_ptr<CompositeShader> compositeShader; std::unique_ptr<GaussianShader> gaussianShader; // Set up the stencil quad we're using to generate the stencil mask. @@ -193,7 +188,6 @@ public: VertexArrayObject coveringRasterArray; VertexArrayObject coveringGaussianArray; - VertexArrayObject compositeArray; VertexArrayObject matteArray; // Set up the tile boundary lines we're using to draw the tile outlines. diff --git a/include/mbgl/shader/composite_shader.hpp b/include/mbgl/shader/composite_shader.hpp deleted file mode 100644 index c0c1704f3d..0000000000 --- a/include/mbgl/shader/composite_shader.hpp +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef MBGL_SHADER_COMPOSITE_SHADER -#define MBGL_SHADER_COMPOSITE_SHADER - -#include <mbgl/shader/shader.hpp> - -namespace mbgl { - -class CompositeShader : public Shader { -public: - CompositeShader(); - - void bind(char *offset); - - void setImage(int32_t image); - void setOpacity(float opacity); - -private: - int32_t a_pos = -1; - - int32_t image = 0; - int32_t u_image = -1; - - float opacity = 0; - int32_t u_opacity = -1; -}; - -} - -#endif diff --git a/include/mbgl/style/property_key.hpp b/include/mbgl/style/property_key.hpp index aee5db0385..ec68ea991e 100644 --- a/include/mbgl/style/property_key.hpp +++ b/include/mbgl/style/property_key.hpp @@ -51,8 +51,6 @@ enum class PropertyKey { TextTranslateY, TextTranslateAnchor, - CompositeOpacity, - RasterOpacity, RasterHueRotate, RasterBrightness, // for transitions only diff --git a/include/mbgl/style/style_properties.hpp b/include/mbgl/style/style_properties.hpp index f12ab430e3..742ae63f0f 100644 --- a/include/mbgl/style/style_properties.hpp +++ b/include/mbgl/style/style_properties.hpp @@ -76,16 +76,6 @@ struct SymbolProperties { } }; - -struct CompositeProperties { - inline CompositeProperties() {} - float opacity = 1.0f; - - inline bool isVisible() const { - return opacity > 0; - } -}; - struct RasterProperties { inline RasterProperties() {} float opacity = 1.0f; @@ -109,7 +99,6 @@ typedef util::variant< FillProperties, LineProperties, SymbolProperties, - CompositeProperties, RasterProperties, BackgroundProperties, std::false_type diff --git a/include/mbgl/style/types.hpp b/include/mbgl/style/types.hpp index 55b7685fd3..fa21f819a5 100644 --- a/include/mbgl/style/types.hpp +++ b/include/mbgl/style/types.hpp @@ -19,7 +19,6 @@ enum class StyleLayerType : uint8_t { Line, Symbol, Raster, - Composite, Background }; @@ -29,7 +28,6 @@ MBGL_DEFINE_ENUM_CLASS(StyleLayerTypeClass, StyleLayerType, { { StyleLayerType::Line, "line" }, { StyleLayerType::Symbol, "symbol" }, { StyleLayerType::Raster, "raster" }, - { StyleLayerType::Composite, "composite" }, { StyleLayerType::Background, "background" }, { StyleLayerType(-1), "unknown" }, }); diff --git a/src/map/map.cpp b/src/map/map.cpp index b974c15329..dfac1ae6c7 100644 --- a/src/map/map.cpp +++ b/src/map/map.cpp @@ -539,10 +539,6 @@ void Map::prepare() { bool dimensionsChanged = oldState.getFramebufferWidth() != state.getFramebufferWidth() || oldState.getFramebufferHeight() != state.getFramebufferHeight(); - if (pixelRatioChanged || dimensionsChanged) { - painter.clearFramebuffers(); - } - animationTime = util::now(); updateSources(); style->updateProperties(state.getNormalizedZoom(), animationTime); @@ -564,8 +560,6 @@ void Map::render() { painter.clear(); - painter.resetFramebuffer(); - painter.resize(); painter.changeMatrix(); @@ -639,33 +633,7 @@ void Map::renderLayers(std::shared_ptr<StyleLayerGroup> group) { } void Map::renderLayer(std::shared_ptr<StyleLayer> layer_desc, RenderPass pass, const Tile::ID* id, const mat4* matrix) { - if (layer_desc->layers && layer_desc->type != StyleLayerType::Raster) { - // This is a layer group. We render them during our translucent render pass. - if (pass == RenderPass::Translucent) { - const CompositeProperties &properties = layer_desc->getProperties<CompositeProperties>(); - if (properties.isVisible()) { - gl::group group(std::string("group: ") + layer_desc->id); - - if (debug::renderTree) { - std::cout << std::string(indent++ * 4, ' ') << "+ " << layer_desc->id - << " (Composite) {" << std::endl; - } - - painter.pushFramebuffer(); - - renderLayers(layer_desc->layers); - - GLuint texture = painter.popFramebuffer(); - - // Render the previous texture onto the screen. - painter.drawComposite(texture, properties); - - if (debug::renderTree) { - std::cout << std::string(--indent * 4, ' ') << "}" << std::endl; - } - } - } - } else if (layer_desc->type == StyleLayerType::Background) { + if (layer_desc->type == StyleLayerType::Background) { // This layer defines the background color. } else { // This is a singular layer. diff --git a/src/renderer/painter.cpp b/src/renderer/painter.cpp index 5aba3b1b8a..e813ad24eb 100644 --- a/src/renderer/painter.cpp +++ b/src/renderer/painter.cpp @@ -45,7 +45,6 @@ void Painter::setup() { assert(rasterShader); assert(textShader); assert(dotShader); - assert(compositeShader); assert(gaussianShader); @@ -76,12 +75,10 @@ void Painter::setupShaders() { if (!rasterShader) rasterShader = std::make_unique<RasterShader>(); if (!textShader) textShader = std::make_unique<TextShader>(); if (!dotShader) dotShader = std::make_unique<DotShader>(); - if (!compositeShader) compositeShader = std::make_unique<CompositeShader>(); if (!gaussianShader) gaussianShader = std::make_unique<GaussianShader>(); } void Painter::cleanup() { - clearFramebuffers(); } void Painter::resize() { diff --git a/src/renderer/painter_composite.cpp b/src/renderer/painter_composite.cpp deleted file mode 100644 index 42d0ad5592..0000000000 --- a/src/renderer/painter_composite.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#include <mbgl/renderer/painter.hpp> -#include <mbgl/style/style_properties.hpp> - -#include <iostream> - -using namespace mbgl; - -void Painter::drawComposite(GLuint texture, const CompositeProperties &properties) { - // We're doing full-screen framebuffer blending, so no need to do stencil testing here. - glDisable(GL_STENCIL_TEST); - - useProgram(compositeShader->program); - compositeShader->setMatrix(nativeMatrix); - - glActiveTexture(GL_TEXTURE0); - glBindTexture(GL_TEXTURE_2D, texture); - compositeShader->setImage(0); - - // TODO: translate - compositeShader->setOpacity(properties.opacity); - - // Draw the full screen texture. - // TODO: Do more blend effects like multiply + blur - compositeArray.bind(*compositeShader, tileStencilBuffer, BUFFER_OFFSET(0)); - glDrawArrays(GL_TRIANGLES, 0, (GLsizei)tileStencilBuffer.index()); - - glBindTexture(GL_TEXTURE_2D, 0); - - // Reset back. - glEnable(GL_STENCIL_TEST); -} diff --git a/src/renderer/painter_framebuffers.cpp b/src/renderer/painter_framebuffers.cpp deleted file mode 100644 index f221b884ce..0000000000 --- a/src/renderer/painter_framebuffers.cpp +++ /dev/null @@ -1,124 +0,0 @@ -#include <mbgl/renderer/painter.hpp> -#include <mbgl/renderer/fill_bucket.hpp> -#include <mbgl/map/map.hpp> -#include <mbgl/map/view.hpp> -#include <mbgl/util/clip_ids.hpp> - -using namespace mbgl; - - -void Painter::clearFramebuffers() { - glBindFramebuffer(GL_FRAMEBUFFER, map.view.root_fbo()); - - // Delete any framebuffers that we might have allocated - glDeleteTextures((int)fbos_color.size(), fbos.data()); - fbos_color.clear(); - - if (fbo_depth_stencil != 0) { - glDeleteRenderbuffers(1, &fbo_depth_stencil); - fbo_depth_stencil = 0; - } - - glDeleteFramebuffers((int)fbos.size(), fbos.data()); - fbos.clear(); -} - -void Painter::bindFramebuffer() { - if (fbo_level < 0) { - glBindFramebuffer(GL_FRAMEBUFFER, map.view.root_fbo()); - } else if (fbos.size() > (size_t) fbo_level) { - GLuint fbo = fbos[fbo_level]; - glBindFramebuffer(GL_FRAMEBUFFER, fbo); -#if GL_EXT_discard_framebuffer - const GLenum discards[] = { GL_COLOR_ATTACHMENT0, GL_DEPTH_ATTACHMENT, GL_STENCIL_ATTACHMENT }; - glDiscardFramebufferEXT(GL_FRAMEBUFFER, 3, discards); -#endif - } else { - // TODO: Convert this to textures so we can composite them and use them in blend operations - - GLuint fbo_color; - glGenTextures(1, &fbo_color); - glBindTexture(GL_TEXTURE_2D, fbo_color); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, map.getState().getFramebufferWidth(), map.getState().getFramebufferHeight(), 0, GL_RGBA, GL_UNSIGNED_BYTE, 0); - glBindTexture(GL_TEXTURE_2D, 0); - fbos_color.emplace_back(fbo_color); - - // Use a shared depth/stencil buffer for all framebuffer objects - if (fbo_depth_stencil == 0) { - // Create depth/stencil buffer - glGenRenderbuffers(1, &fbo_depth_stencil); - glBindRenderbuffer(GL_RENDERBUFFER, fbo_depth_stencil); - glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, map.getState().getFramebufferWidth(), map.getState().getFramebufferHeight()); - glBindRenderbuffer(GL_RENDERBUFFER, 0); - } - - // Allocate new framebuffer - GLuint fbo = 0; - glGenFramebuffers(1, &fbo); - glBindFramebuffer(GL_FRAMEBUFFER, fbo); - fbos.emplace_back(fbo); - - // Assemble the FBO - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, fbo_color, 0); -#ifdef GL_ES_VERSION_2_0 - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, fbo_depth_stencil); - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, fbo_depth_stencil); -#else - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, fbo_depth_stencil); -#endif - GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); - if (status != GL_FRAMEBUFFER_COMPLETE) { - fprintf(stderr, "Couldn't create framebuffer: "); - switch (status) { - case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: fprintf(stderr, "incomplete attachment\n"); break; - case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: fprintf(stderr, "incomplete missing attachment\n"); break; -#ifdef GL_ES_VERSION_2_0 - case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS: fprintf(stderr, "incomplete dimensions\n"); break; -#else - case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER: fprintf(stderr, "incomplete draw buffer\n"); break; -#endif - case GL_FRAMEBUFFER_UNSUPPORTED: fprintf(stderr, "unsupported\n"); break; - default: fprintf(stderr, "other\n"); break; - } - return; - } - } -} - -void Painter::resetFramebuffer() { - if (fbo_level >= 0) { - fbo_level = -1; - bindFramebuffer(); - } - - fbo_depth_stencil_valid = false; -} - -void Painter::pushFramebuffer() { - fbo_level++; - bindFramebuffer(); - - if (fbo_depth_stencil_valid) { - glClear(GL_COLOR_BUFFER_BIT); - } else { - depthMask(true); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); - glColorMask(false, false, false, false); - - drawClippingMasks(map.getActiveSources()); - - glColorMask(true, true, true, true); - fbo_depth_stencil_valid = true; - } -} - -GLuint Painter::popFramebuffer() { - GLuint texture = fbos_color[fbo_level]; - fbo_level--; - bindFramebuffer(); - return texture; -} diff --git a/src/shader/composite.fragment.glsl b/src/shader/composite.fragment.glsl deleted file mode 100644 index d5adc402e6..0000000000 --- a/src/shader/composite.fragment.glsl +++ /dev/null @@ -1,9 +0,0 @@ -uniform sampler2D u_image; -uniform float u_opacity; - -varying vec2 v_pos; - -void main() { - vec4 color = texture2D(u_image, v_pos); - gl_FragColor = color * u_opacity; -} diff --git a/src/shader/composite.vertex.glsl b/src/shader/composite.vertex.glsl deleted file mode 100644 index d7e8f0a8af..0000000000 --- a/src/shader/composite.vertex.glsl +++ /dev/null @@ -1,9 +0,0 @@ -attribute vec2 a_pos; - -uniform mat4 u_matrix; -varying vec2 v_pos; - -void main() { - gl_Position = u_matrix * vec4(a_pos, 0, 1); - v_pos = (gl_Position.xy + 1.0) / 2.0; -} diff --git a/src/shader/composite_shader.cpp b/src/shader/composite_shader.cpp deleted file mode 100644 index 9ed0a1b83e..0000000000 --- a/src/shader/composite_shader.cpp +++ /dev/null @@ -1,49 +0,0 @@ -#include <mbgl/shader/composite_shader.hpp> -#include <mbgl/shader/shaders.hpp> -#include <mbgl/platform/gl.hpp> - -#include <cstdio> - -using namespace mbgl; - -CompositeShader::CompositeShader() - : Shader( - "composite", - shaders[COMPOSITE_SHADER].vertex, - shaders[COMPOSITE_SHADER].fragment - ) { - if (!valid) { - fprintf(stderr, "invalid composite shader\n"); - return; - } - - a_pos = glGetAttribLocation(program, "a_pos"); - - u_matrix = glGetUniformLocation(program, "u_matrix"); - u_image = glGetUniformLocation(program, "u_image"); - u_opacity = glGetUniformLocation(program, "u_opacity"); - - // fprintf(stderr, "CompositeShader:\n"); - // fprintf(stderr, " - u_matrix: %d\n", u_matrix); - // fprintf(stderr, " - u_image: %d\n", u_image); - // fprintf(stderr, " - u_opacity: %f\n", u_opacity); -} - -void CompositeShader::bind(char *offset) { - glEnableVertexAttribArray(a_pos); - glVertexAttribPointer(a_pos, 2, GL_SHORT, false, 0, offset); -} - -void CompositeShader::setImage(int32_t new_image) { - if (image != new_image) { - glUniform1i(u_image, new_image); - image = new_image; - } -} - -void CompositeShader::setOpacity(float new_opacity) { - if (opacity != new_opacity) { - glUniform1f(u_opacity, new_opacity); - opacity = new_opacity; - } -} diff --git a/src/style/property_fallback.cpp b/src/style/property_fallback.cpp index 4028980cbe..0f8335dd66 100644 --- a/src/style/property_fallback.cpp +++ b/src/style/property_fallback.cpp @@ -44,8 +44,6 @@ const std::map<PropertyKey, PropertyValue> PropertyFallbackValue::properties = { { PropertyKey::TextTranslateY, defaultStyleProperties<SymbolProperties>().text.translate[1] }, { PropertyKey::TextTranslateAnchor, defaultStyleProperties<SymbolProperties>().text.translate_anchor }, - { PropertyKey::CompositeOpacity, defaultStyleProperties<CompositeProperties>().opacity }, - { PropertyKey::RasterOpacity, defaultStyleProperties<RasterProperties>().opacity }, { PropertyKey::RasterHueRotate, defaultStyleProperties<RasterProperties>().hue_rotate }, { PropertyKey::RasterBrightnessLow, defaultStyleProperties<RasterProperties>().brightness[0] }, diff --git a/src/style/style_layer.cpp b/src/style/style_layer.cpp index 520c183780..d4e6d19db4 100644 --- a/src/style/style_layer.cpp +++ b/src/style/style_layer.cpp @@ -217,13 +217,6 @@ void StyleLayer::applyStyleProperties<SymbolProperties>(const float z, const tim } template <> -void StyleLayer::applyStyleProperties<CompositeProperties>(const float z, const timestamp now) { - properties.set<CompositeProperties>(); - CompositeProperties &composite = properties.get<CompositeProperties>(); - applyStyleProperty(PropertyKey::CompositeOpacity, composite.opacity, z, now); -} - -template <> void StyleLayer::applyStyleProperties<RasterProperties>(const float z, const timestamp now) { properties.set<RasterProperties>(); RasterProperties &raster = properties.get<RasterProperties>(); @@ -255,7 +248,6 @@ void StyleLayer::updateProperties(float z, const timestamp now) { case StyleLayerType::Line: applyStyleProperties<LineProperties>(z, now); break; case StyleLayerType::Symbol: applyStyleProperties<SymbolProperties>(z, now); break; case StyleLayerType::Raster: applyStyleProperties<RasterProperties>(z, now); break; - case StyleLayerType::Composite: applyStyleProperties<CompositeProperties>(z, now); break; case StyleLayerType::Background: applyStyleProperties<BackgroundProperties>(z, now); break; default: properties.set<std::false_type>(); break; } diff --git a/src/style/style_parser.cpp b/src/style/style_parser.cpp index 02a7835358..0c0636695e 100644 --- a/src/style/style_parser.cpp +++ b/src/style/style_parser.cpp @@ -628,9 +628,6 @@ void StyleParser::parseStyle(JSVal value, ClassProperties &klass) { parseOptionalProperty<Function<float>>("text-translate", { Key::TextTranslateX, Key::TextTranslateY }, klass, value); parseOptionalProperty<PropertyTransition>("transition-text-translate", Key::TextTranslate, klass, value); - parseOptionalProperty<Function<float>>("composite-opacity", Key::CompositeOpacity, klass, value); - parseOptionalProperty<PropertyTransition>("transition-composite-opacity", Key::CompositeOpacity, klass, value); - parseOptionalProperty<Function<float>>("raster-opacity", Key::RasterOpacity, klass, value); parseOptionalProperty<PropertyTransition>("transition-raster-opacity", Key::RasterOpacity, klass, value); parseOptionalProperty<Function<float>>("raster-hue-rotate", Key::RasterHueRotate, klass, value); diff --git a/src/style/style_properties.cpp b/src/style/style_properties.cpp index 1b05528d2f..29730fb85b 100644 --- a/src/style/style_properties.cpp +++ b/src/style/style_properties.cpp @@ -5,7 +5,6 @@ namespace mbgl { template<> const FillProperties &defaultStyleProperties() { static const FillProperties p; return p; } template<> const LineProperties &defaultStyleProperties() { static const LineProperties p; return p; } template<> const SymbolProperties &defaultStyleProperties() { static const SymbolProperties p; return p; } -template<> const CompositeProperties &defaultStyleProperties() { static const CompositeProperties p; return p; } template<> const RasterProperties &defaultStyleProperties() { static const RasterProperties p; return p; } template<> const BackgroundProperties &defaultStyleProperties() { static const BackgroundProperties p; return p; } diff --git a/styles/bright/style.json b/styles/bright/style.json index 4d6dad99cf..7b1c6e9c33 100644 --- a/styles/bright/style.json +++ b/styles/bright/style.json @@ -1,6 +1,6 @@ { "version": 4, - "sprite": "img/sprite", + "sprite": "https://www.mapbox.com/mapbox-gl-styles/sprites/bright", "glyphs": "https://mapbox.s3.amazonaws.com/gl-glyphs-256/{fontstack}/{range}.pbf", "constants": { "@name": "{name_en}", @@ -11,6 +11,7 @@ "@land": "#f8f4f0", "@water": "#a0c8f0", "@admin": "#446", + "@admin-opacity": 0.5, "@park": "#d8e8c8", "@cemetary": "#e0e4dd", "@hospital": "#fde", @@ -45,7 +46,7 @@ "@tunnel_line_dasharray": [{ "base": 1.5, "stops": [[12, 6], [20, 9]] }, { - "base": 1.5, "stops": [[12, 2], [20, 3]] + "base": 1.5, "stops": [[12, 2], [20, 3]] }], "@motorway_width": {"base": 1.2, "stops": [[6.5, 0], [7, 0.5], [20, 18]]}, "@motorway_casing_width": {"base": 1.2, "stops": [[5, 0.4], [6, 0.6], [7, 1.5], [20, 22]]}, @@ -55,14 +56,14 @@ "@main_casing_width": {"base": 1.2, "stops": [[5, 0.1], [6, 0.2], [7, 1.5], [20, 18]]}, "@street_width": {"base": 1.2, "stops": [[13.5, 0], [14, 2.5], [20, 11.5]]}, "@street_casing_width": {"base": 1.2, "stops": [[12, 0.5], [13, 1], [14, 4], [20, 15]]}, - "@street_casing_opacity": {"stops": [[12, 0], [12.5, 1]]}, + "@street_casing_opacity": {"stops": [[12, 0], [12.5, 1]]}, "@service_casing_width": {"base": 1.2, "stops": [[15, 1], [16, 4], [20, 11]]}, "@service_width": {"base": 1.2, "stops": [[15.5, 0], [16, 2], [20, 7.5]]}, "@path_width": {"base": 1.2, "stops": [[15, 1.2], [20, 4]]}, "@path_line_dasharray": [{ "base": 1.2, "stops": [[15, 2], [20, 4]] },{ - "base": 1.2, "stops": [[15, 1], [20, 2]] + "base": 1.2, "stops": [[15, 1], [20, 2]] }], "@rail_width": {"base": 1.4, "stops": [[14, 0.4], [15, 0.75], [20, 2]]}, "@rail_hatch_width": {"base": 1.4, "stops": [[14.5, 0], [15, 3], [20, 8]]}, @@ -74,7 +75,7 @@ "@admin_level_2_width": { "base": 1, "stops": [[4, 1.4], [5, 2], [12, 8]] - } + } }, "sources": { "mapbox": { @@ -186,7 +187,7 @@ "stops": [[13, 0.5], [20, 6]] } }, - "type": "line" + "type": "line" }, { "id": "water", "source": "mapbox", @@ -204,7 +205,7 @@ "fill-color": "white", "fill-opacity": 0.3, "fill-translate": [0, 2.5] - } + } }, { "id": "water_pattern", "ref": "water", @@ -230,7 +231,7 @@ "source": "mapbox", "source-layer": "aeroway", "min-zoom": 11, - "filter": { + "filter": { "$type": "LineString", "type": "runway" }, "style": { @@ -246,7 +247,7 @@ "source": "mapbox", "source-layer": "aeroway", "min-zoom": 11, - "filter": { + "filter": { "$type": "LineString", "type": "taxiway" }, "style": { @@ -294,7 +295,7 @@ "line-dasharray": "@tunnel_line_dasharray", "line-width": "@motorway_link_casing_width" }, - "type": "line" + "type": "line" }, { "id": "tunnel_service_casing", "source": "mapbox", @@ -309,7 +310,7 @@ "line-dasharray": "@tunnel_line_dasharray", "line-width": "@service_casing_width" }, - "type": "line" + "type": "line" }, { "id": "tunnel_street_casing", "source": "mapbox", @@ -324,7 +325,7 @@ "line-width": "@street_casing_width", "line-opacity": "@street_casing_opacity" }, - "type": "line" + "type": "line" }, { "id": "tunnel_main_casing", "source": "mapbox", @@ -339,7 +340,7 @@ "line-dasharray": "@tunnel_line_dasharray", "line-width": "@main_casing_width" }, - "type": "line" + "type": "line" }, { "id": "tunnel_motorway_casing", "source": "mapbox", @@ -365,42 +366,42 @@ "line-color": "@path", "line-dasharray": "@path_line_dasharray", "line-width": "@path_width" - } + } }, { "id": "tunnel_motorway_link", "ref": "tunnel_motorway_link_casing", "style": { "line-color": "@motorway", "line-width": "@motorway_link_width" - } + } }, { "id": "tunnel_service", "ref": "tunnel_service_casing", "style": { "line-color": "@street", "line-width": "@service_width" - } + } }, { "id": "tunnel_street", "ref": "tunnel_street_casing", "style": { "line-color": "@street", "line-width": "@street_width" - } + } }, { "id": "tunnel_main", "ref": "tunnel_main_casing", "style": { "line-color": "@main_tunnel", "line-width": "@main_width" - } + } }, { "id": "tunnel_motorway", "ref": "tunnel_motorway_casing", "style": { "line-color": "@motorway_tunnel", "line-width": "@motorway_width" - } + } }, { "id": "tunnel_major_rail", "source": "mapbox", @@ -418,7 +419,7 @@ "line-color": "@rail", "line-dasharray": "@rail_hatch_line_dasharray", "line-width": "@rail_hatch_width" - } + } }, { "id": "road_motorway_link_casing", "source": "mapbox", @@ -433,7 +434,7 @@ "line-color": "@motorway_casing", "line-width": "@motorway_link_casing_width" }, - "type": "line" + "type": "line" }, { "id": "road_service_casing", "source": "mapbox", @@ -447,7 +448,7 @@ "line-color": "@street_casing", "line-width": "@service_casing_width" }, - "type": "line" + "type": "line" }, { "id": "road_street_casing", "source": "mapbox", @@ -462,7 +463,7 @@ "line-width": "@street_casing_width", "line-opacity": "@street_casing_opacity" }, - "type": "line" + "type": "line" }, { "id": "road_main_casing", "source": "mapbox", @@ -476,7 +477,7 @@ "line-color": "@motorway_casing", "line-width": "@main_casing_width" }, - "type": "line" + "type": "line" }, { "id": "road_motorway_casing", "source": "mapbox", @@ -491,7 +492,7 @@ "line-color": "@motorway_casing", "line-width": "@motorway_casing_width" }, - "type": "line" + "type": "line" }, { "id": "road_path", "source": "mapbox", @@ -502,35 +503,35 @@ "line-dasharray": "@path_line_dasharray", "line-width": "@path_width" }, - "type": "line" + "type": "line" }, { "id": "road_motorway_link", "ref": "road_motorway_link_casing", "style": { "line-color": "@motorway", "line-width": "@motorway_link_width" - } + } }, { "id": "road_service", "ref": "road_service_casing", "style": { "line-color": "@street", "line-width": "@service_width" - } + } }, { "id": "road_street", "ref": "road_street_casing", "style": { "line-color": "@street", "line-width": "@street_width" - } + } }, { "id": "road_main", "ref": "road_main_casing", "style": { "line-color": "@main", "line-width": "@main_width" - } + } }, { "id": "road_motorway", "ref": "road_motorway_casing", @@ -538,7 +539,7 @@ "line-color": "@motorway", "line-width": "@motorway_width" }, - "type": "line" + "type": "line" }, { "id": "road_major_rail", "source": "mapbox", @@ -556,7 +557,7 @@ "line-color": "@rail", "line-dasharray": "@rail_hatch_line_dasharray", "line-width": "@rail_hatch_width" - } + } }, { "id": "bridge_motorway_link_casing", "source": "mapbox", @@ -569,7 +570,7 @@ "line-color": "@motorway_casing", "line-width": "@motorway_link_casing_width" }, - "type": "line" + "type": "line" }, { "id": "bridge_motorway_casing", "source": "mapbox", @@ -582,7 +583,7 @@ "line-color": "@motorway_casing", "line-width": "@motorway_casing_width" }, - "type": "line" + "type": "line" }, { "id": "bridge_service_casing", "source": "mapbox", @@ -595,7 +596,7 @@ "line-color": "@street_casing", "line-width": "@service_casing_width" }, - "type": "line" + "type": "line" }, { "id": "bridge_street_casing", "source": "mapbox", @@ -609,7 +610,7 @@ "line-width": "@street_casing_width", "line-opacity": "@street_casing_opacity" }, - "type": "line" + "type": "line" }, { "id": "bridge_main_casing", "source": "mapbox", @@ -622,7 +623,7 @@ "line-color": "@motorway_casing", "line-width": "@main_casing_width" }, - "type": "line" + "type": "line" }, { "id": "bridge_path", "source": "mapbox", @@ -633,42 +634,42 @@ "line-dasharray": "@path_line_dasharray", "line-width": "@path_width" }, - "type": "line" + "type": "line" }, { "id": "bridge_motorway_link", "ref": "bridge_motorway_link_casing", "style": { "line-color": "@motorway", "line-width": "@motorway_link_width" - } + } }, { "id": "bridge_service", "ref": "bridge_service_casing", "style": { "line-color": "@street", "line-width": "@service_width" - } + } }, { "id": "bridge_street", "ref": "bridge_street_casing", "style": { "line-color": "@street", "line-width": "@street_width" - } + } }, { "id": "bridge_main", "ref": "bridge_main_casing", "style": { "line-color": "@main", "line-width": "@main_width" - } + } }, { "id": "bridge_motorway", "ref": "bridge_motorway_casing", "style": { "line-color": "@motorway", "line-width": "@motorway_width" - } + } }, { "id": "bridge_major_rail", "source": "mapbox", @@ -852,7 +853,7 @@ "stops": [[4, 13], [7, 17]] } }, - "type": "symbol" + "type": "symbol" }, { "id": "country_label_4", "source": "mapbox", @@ -923,7 +924,7 @@ "stops": [[3, 18], [4, 22]] } }, - "type": "symbol" + "type": "symbol" }, { "id": "marine_label_point_2", "source": "mapbox", @@ -968,7 +969,7 @@ "stops": [[3, 14], [4, 16]] } }, - "type": "symbol" + "type": "symbol" }, { "id": "marine_label_3", "source": "mapbox", @@ -1013,7 +1014,7 @@ "stops": [[3, 11], [4, 14]] } }, - "type": "symbol" + "type": "symbol" }, { "id": "marine_label_4", "source": "mapbox", @@ -1058,7 +1059,7 @@ "stops": [[3, 11], [4, 12]] } }, - "type": "symbol" + "type": "symbol" }, { "id": "place_label_city", "source": "mapbox", @@ -1142,7 +1143,7 @@ "text-color": "#765", "text-size": 11 }, - "type": "symbol" + "type": "symbol" }, { "id": "road_label", "source": "mapbox", @@ -1163,7 +1164,7 @@ "stops": [[13, 12], [14, 13]] } }, - "type": "symbol" + "type": "symbol" }, { "id": "place_label_other", "source": "mapbox", @@ -1326,4 +1327,4 @@ }, "type": "symbol" }] -}
\ No newline at end of file +} |