From 4c10d8dace3addad7c0a2cba9bcd70159250153c Mon Sep 17 00:00:00 2001 From: Volodymyr Agafonkin Date: Mon, 8 Jan 2024 17:51:34 +0200 Subject: [PATCH 01/25] Clean up shaders (GLSL 3.0, more specific preludes, removing legacy defines) (internal-1009) * move linear to sRGB conversion to more specific shaders * remove wireframe prelude from vertex shaders * move constants from prelude to specific places * move dither to fog prelude * remove duplicate code in terrain prelude * remove some legacy (WebGL1) shader branches * texture2D/textureCube -> texture * gl_FragColor -> explicitly defined glFragColor * attribute -> in * fragment varying -> in * fixup shader attributes * fixup * vertex varying -> out * remove legacy precision qualifiers * fixup shaders minification * fixup after merge * fixup * fixup --- .../shaders/_prelude_shadow.fragment.glsl | 14 ++-- .../fill_extrusion_depth.fragment.glsl | 4 +- .../shaders/fill_extrusion_depth.vertex.glsl | 6 +- 3d-style/shaders/ground_shadow.fragment.glsl | 12 ++- 3d-style/shaders/ground_shadow.vertex.glsl | 10 +-- 3d-style/shaders/model.fragment.glsl | 49 ++++++------ 3d-style/shaders/model.vertex.glsl | 31 ++++---- 3d-style/shaders/model_depth.fragment.glsl | 4 +- 3d-style/shaders/model_depth.vertex.glsl | 12 +-- src/render/program.js | 14 +--- src/shaders/_prelude.fragment.glsl | 30 +++----- src/shaders/_prelude.glsl | 42 +--------- src/shaders/_prelude.vertex.glsl | 13 ++-- src/shaders/_prelude_fog.fragment.glsl | 13 +++- src/shaders/_prelude_fog.vertex.glsl | 2 +- src/shaders/_prelude_lighting.glsl | 5 ++ src/shaders/_prelude_raster_array.glsl | 20 ++--- src/shaders/_prelude_terrain.vertex.glsl | 17 ++-- src/shaders/atmosphere.fragment.glsl | 14 ++-- src/shaders/atmosphere.vertex.glsl | 8 +- src/shaders/background.fragment.glsl | 6 +- src/shaders/background.vertex.glsl | 4 +- src/shaders/background_pattern.fragment.glsl | 8 +- src/shaders/background_pattern.vertex.glsl | 4 +- src/shaders/circle.fragment.glsl | 8 +- src/shaders/circle.vertex.glsl | 10 +-- src/shaders/clipping_mask.fragment.glsl | 2 +- src/shaders/clipping_mask.vertex.glsl | 2 +- src/shaders/collision_box.fragment.glsl | 10 +-- src/shaders/collision_box.vertex.glsl | 20 ++--- src/shaders/collision_circle.fragment.glsl | 10 +-- src/shaders/collision_circle.vertex.glsl | 14 ++-- src/shaders/debug.fragment.glsl | 6 +- src/shaders/debug.vertex.glsl | 6 +- src/shaders/fill.fragment.glsl | 4 +- src/shaders/fill.vertex.glsl | 2 +- src/shaders/fill_extrusion.fragment.glsl | 26 +++---- src/shaders/fill_extrusion.vertex.glsl | 32 ++++---- ...fill_extrusion_ground_effect.fragment.glsl | 18 ++--- .../fill_extrusion_ground_effect.vertex.glsl | 16 ++-- .../fill_extrusion_pattern.fragment.glsl | 14 ++-- .../fill_extrusion_pattern.vertex.glsl | 16 ++-- src/shaders/fill_outline.fragment.glsl | 6 +- src/shaders/fill_outline.vertex.glsl | 4 +- .../fill_outline_pattern.fragment.glsl | 10 +-- src/shaders/fill_outline_pattern.vertex.glsl | 6 +- src/shaders/fill_pattern.fragment.glsl | 8 +- src/shaders/fill_pattern.vertex.glsl | 4 +- src/shaders/globe_raster.fragment.glsl | 10 +-- src/shaders/globe_raster.vertex.glsl | 8 +- src/shaders/heatmap.fragment.glsl | 8 +- src/shaders/heatmap.vertex.glsl | 12 +-- src/shaders/heatmap_texture.fragment.glsl | 10 +-- src/shaders/heatmap_texture.vertex.glsl | 4 +- src/shaders/hillshade.fragment.glsl | 12 +-- src/shaders/hillshade.vertex.glsl | 6 +- src/shaders/hillshade_prepare.fragment.glsl | 6 +- src/shaders/hillshade_prepare.vertex.glsl | 6 +- src/shaders/line.fragment.glsl | 18 ++--- src/shaders/line.vertex.glsl | 18 ++--- src/shaders/line_pattern.fragment.glsl | 16 ++-- src/shaders/line_pattern.vertex.glsl | 16 ++-- src/shaders/raster.fragment.glsl | 20 ++--- src/shaders/raster.vertex.glsl | 28 +++---- src/shaders/shaders.js | 77 ++++++------------- src/shaders/skybox.fragment.glsl | 8 +- src/shaders/skybox.vertex.glsl | 4 +- src/shaders/skybox_capture.fragment.glsl | 6 +- src/shaders/skybox_capture.vertex.glsl | 4 +- src/shaders/skybox_gradient.fragment.glsl | 8 +- src/shaders/stars.fragment.glsl | 6 +- src/shaders/stars.vertex.glsl | 12 +-- src/shaders/symbol_icon.fragment.glsl | 16 ++-- src/shaders/symbol_icon.vertex.glsl | 24 +++--- src/shaders/symbol_sdf.fragment.glsl | 21 ++--- src/shaders/symbol_sdf.vertex.glsl | 26 +++---- .../symbol_text_and_icon.fragment.glsl | 25 +++--- src/shaders/symbol_text_and_icon.vertex.glsl | 24 +++--- src/shaders/terrain_depth.fragment.glsl | 6 +- src/shaders/terrain_depth.vertex.glsl | 6 +- src/shaders/terrain_raster.fragment.glsl | 16 ++-- src/shaders/terrain_raster.vertex.glsl | 12 +-- 82 files changed, 491 insertions(+), 604 deletions(-) diff --git a/3d-style/shaders/_prelude_shadow.fragment.glsl b/3d-style/shaders/_prelude_shadow.fragment.glsl index ab4e1078997..617dc89e84b 100644 --- a/3d-style/shaders/_prelude_shadow.fragment.glsl +++ b/3d-style/shaders/_prelude_shadow.fragment.glsl @@ -1,9 +1,5 @@ #ifdef RENDER_SHADOWS -#if defined(NATIVE) && __VERSION__ >= 300 -#define TEXTURE_GATHER -#endif - #ifdef DEPTH_TEXTURE uniform highp sampler2D u_shadowmap_0; uniform highp sampler2D u_shadowmap_1; @@ -23,9 +19,9 @@ uniform highp vec3 u_shadow_bias; highp float shadow_sample_1(highp vec2 uv, highp float compare) { highp float shadow_depth; #ifdef DEPTH_TEXTURE - shadow_depth = texture2D(u_shadowmap_1, uv).r; + shadow_depth = texture(u_shadowmap_1, uv).r; #else - shadow_depth = unpack_depth(texture2D(u_shadowmap_1, uv)) * 0.5 + 0.5; + shadow_depth = unpack_depth(texture(u_shadowmap_1, uv)) * 0.5 + 0.5; #endif return step(shadow_depth, compare); } @@ -33,9 +29,9 @@ highp float shadow_sample_1(highp vec2 uv, highp float compare) { highp float shadow_sample_0(highp vec2 uv, highp float compare) { highp float shadow_depth; #ifdef DEPTH_TEXTURE - shadow_depth = texture2D(u_shadowmap_0, uv).r; + shadow_depth = texture(u_shadowmap_0, uv).r; #else - shadow_depth = unpack_depth(texture2D(u_shadowmap_0, uv)) * 0.5 + 0.5; + shadow_depth = unpack_depth(texture(u_shadowmap_0, uv)) * 0.5 + 0.5; #endif return step(shadow_depth, compare); } @@ -50,7 +46,7 @@ float shadow_occlusion_0(highp vec4 pos, highp float bias) { // Perform percentage-closer filtering with a 2x2 sample grid. // Edge tap smoothing is used to weight each sample based on their contribution in the overall PCF kernel -#ifdef TEXTURE_GATHER +#ifdef NATIVE highp vec2 uv = pos.xy; highp vec4 samples = textureGather(u_shadowmap_0, uv, 0); lowp vec4 stepSamples = step(samples, vec4(compare0)); diff --git a/3d-style/shaders/fill_extrusion_depth.fragment.glsl b/3d-style/shaders/fill_extrusion_depth.fragment.glsl index d34d726eac6..534eff9e3c3 100644 --- a/3d-style/shaders/fill_extrusion_depth.fragment.glsl +++ b/3d-style/shaders/fill_extrusion_depth.fragment.glsl @@ -1,7 +1,7 @@ -varying highp float v_depth; +in highp float v_depth; void main() { #ifndef DEPTH_TEXTURE - gl_FragColor = pack_depth(v_depth); + glFragColor = pack_depth(v_depth); #endif } diff --git a/3d-style/shaders/fill_extrusion_depth.vertex.glsl b/3d-style/shaders/fill_extrusion_depth.vertex.glsl index 33d1b92fd5b..b34e8cd57d1 100644 --- a/3d-style/shaders/fill_extrusion_depth.vertex.glsl +++ b/3d-style/shaders/fill_extrusion_depth.vertex.glsl @@ -4,13 +4,13 @@ uniform mat4 u_matrix; uniform float u_edge_radius; uniform float u_vertical_scale; -attribute vec4 a_pos_normal_ed; -attribute vec2 a_centroid_pos; +in vec4 a_pos_normal_ed; +in vec2 a_centroid_pos; #pragma mapbox: define highp float base #pragma mapbox: define highp float height -varying highp float v_depth; +out highp float v_depth; void main() { #pragma mapbox: initialize highp float base diff --git a/3d-style/shaders/ground_shadow.fragment.glsl b/3d-style/shaders/ground_shadow.fragment.glsl index 162f6b17108..556e827e0fa 100644 --- a/3d-style/shaders/ground_shadow.fragment.glsl +++ b/3d-style/shaders/ground_shadow.fragment.glsl @@ -1,17 +1,15 @@ #include "_prelude_shadow.fragment.glsl" -#ifdef GL_ES precision highp float; -#endif uniform vec3 u_ground_shadow_factor; -varying vec4 v_pos_light_view_0; -varying vec4 v_pos_light_view_1; -varying float v_depth; +in vec4 v_pos_light_view_0; +in vec4 v_pos_light_view_1; +in float v_depth; #ifdef FOG -varying float v_fog_opacity; +in float v_fog_opacity; #endif void main() { @@ -29,5 +27,5 @@ void main() { shadow = mix(shadow, vec3(1.0), 1.0 - applyCutout(vec4(1.0)).r); #endif - gl_FragColor = vec4(shadow, 1.0); + glFragColor = vec4(shadow, 1.0); } diff --git a/3d-style/shaders/ground_shadow.vertex.glsl b/3d-style/shaders/ground_shadow.vertex.glsl index 2d94dc1fe8d..e4329b7e7ee 100644 --- a/3d-style/shaders/ground_shadow.vertex.glsl +++ b/3d-style/shaders/ground_shadow.vertex.glsl @@ -4,14 +4,14 @@ uniform mat4 u_matrix; uniform mat4 u_light_matrix_0; uniform mat4 u_light_matrix_1; -attribute vec2 a_pos; +in vec2 a_pos; -varying vec4 v_pos_light_view_0; -varying vec4 v_pos_light_view_1; -varying float v_depth; +out vec4 v_pos_light_view_0; +out vec4 v_pos_light_view_1; +out float v_depth; #ifdef FOG -varying float v_fog_opacity; +out float v_fog_opacity; #endif void main() { diff --git a/3d-style/shaders/model.fragment.glsl b/3d-style/shaders/model.fragment.glsl index 3d53dc36f0b..8faa1ab6fea 100644 --- a/3d-style/shaders/model.fragment.glsl +++ b/3d-style/shaders/model.fragment.glsl @@ -15,13 +15,13 @@ uniform float u_roughnessFactor; uniform float u_emissive_strength; -varying highp vec4 v_position_height; -varying lowp vec4 v_color_mix; +in highp vec4 v_position_height; +in lowp vec4 v_color_mix; #ifdef RENDER_SHADOWS -varying vec4 v_pos_light_view_0; -varying vec4 v_pos_light_view_1; -varying float v_depth_shadows; +in vec4 v_pos_light_view_0; +in vec4 v_pos_light_view_1; +in float v_depth_shadows; #endif #pragma mapbox: define-attribute highp vec3 normal_3f @@ -35,8 +35,8 @@ varying float v_depth_shadows; #pragma mapbox: initialize-attribute highp vec2 uv_2f #ifdef HAS_ATTRIBUTE_a_pbr -varying lowp vec4 v_roughness_metallic_emissive_alpha; -varying mediump vec4 v_height_based_emission_params; +in lowp vec4 v_roughness_metallic_emissive_alpha; +in mediump vec4 v_height_based_emission_params; #endif #ifdef HAS_TEXTURE_u_baseColorTexture @@ -61,22 +61,27 @@ uniform sampler2D u_emissionTexture; #endif #ifdef TERRAIN_FRAGMENT_OCCLUSION -varying highp float v_depth; +in highp float v_depth; uniform sampler2D u_depthTexture; uniform vec2 u_inv_depth_size; bool isOccluded() { vec2 coord = gl_FragCoord.xy * u_inv_depth_size; - highp float depth = unpack_depth(texture2D(u_depthTexture, coord)); + highp float depth = unpack_depth(texture(u_depthTexture, coord)); // Add some marging to avoid depth precision issues return v_depth > depth + 0.0005; } #endif -const float M_PI = 3.141592653589793; - #define saturate(_x) clamp(_x, 0., 1.) +// linear to sRGB approximation +vec3 linearTosRGB(vec3 color) { + return pow(color, vec3(1./2.2)); +} +vec3 sRGBToLinear(vec3 srgbIn) { + return pow(srgbIn, vec3(2.2)); +} float calculate_NdotL(vec3 normal, vec3 lightDir) { // Use slightly modified dot product for lambertian diffuse shading. This increase the range of NdotL to cover surfaces facing up to 45 degrees away from the light source. @@ -125,7 +130,7 @@ vec4 getBaseColor() { // texture Color #if defined (HAS_TEXTURE_u_baseColorTexture) && defined (HAS_ATTRIBUTE_a_uv_2f) - vec4 texColor = texture2D(u_baseColorTexture, uv_2f); + vec4 texColor = texture(u_baseColorTexture, uv_2f); if(u_alphaMask) { if (texColor.w < u_alphaCutoff) { discard; @@ -198,7 +203,7 @@ highp vec3 getNormal(){ #if defined(HAS_TEXTURE_u_normalTexture) && defined(HAS_ATTRIBUTE_a_uv_2f) // Perturb normal - vec3 nMap = texture2D( u_normalTexture, uv_2f).xyz; + vec3 nMap = texture( u_normalTexture, uv_2f).xyz; nMap = normalize(2.0* nMap - vec3(1.0)); highp vec3 v = normalize(-v_position_height.xyz); highp mat3 TBN = cotangentFrame(n, v, uv_2f); @@ -230,7 +235,7 @@ Material getPBRMaterial() { mat.baseColor.w *= v_roughness_metallic_emissive_alpha.w; #endif #if defined(HAS_TEXTURE_u_metallicRoughnessTexture) && defined(HAS_ATTRIBUTE_a_uv_2f) - vec4 mrSample = texture2D(u_metallicRoughnessTexture, uv_2f); + vec4 mrSample = texture(u_metallicRoughnessTexture, uv_2f); mat.perceptualRoughness *= mrSample.g; mat.metallic *= mrSample.b; #endif @@ -294,7 +299,7 @@ float D_GGX(highp float NdotH, float alphaRoughness) { highp float a4 = alphaRoughness * alphaRoughness; highp float f = (NdotH * a4 -NdotH) * NdotH + 1.0; - return a4 / (M_PI * f * f); + return a4 / (PI * f * f); } // Disney Implementation of diffuse from Physically-Based Shading at Disney by Brent Burley. See Section 5.3. @@ -303,7 +308,7 @@ vec3 diffuseBurley(Material mat, float LdotH, float NdotL, float NdotV) { float f90 = 2.0 * LdotH * LdotH * mat.alphaRoughness - 0.5; - return (mat.diffuseColor / M_PI) * (1.0 + f90 * pow((1.0 - NdotL), 5.0)) * (1.0 + f90 * pow((1.0 - NdotV), 5.0)); + return (mat.diffuseColor / PI) * (1.0 + f90 * pow((1.0 - NdotL), 5.0)) * (1.0 + f90 * pow((1.0 - NdotV), 5.0)); } vec3 diffuseLambertian(Material mat) @@ -313,7 +318,7 @@ vec3 diffuseLambertian(Material mat) // remove the PI division to achieve more integrated colors return mat.diffuseColor; #else - return mat.diffuseColor / M_PI; + return mat.diffuseColor / PI; #endif } @@ -429,7 +434,7 @@ vec4 finalColor; // For b3dm tiles where models contains occlusion textures we interpret them similarly to how // we handle baseColorTexture as an alpha mask (i.e one channel). // This is why we read the alpha component here (refer to getBaseColor to see how baseColorTexture.w is used to implement alpha masking). - float ao = (texture2D(u_occlusionTexture, uv_2f).r - 1.0) * u_aoIntensity + 1.0; + float ao = (texture(u_occlusionTexture, uv_2f).r - 1.0) * u_aoIntensity + 1.0; diffuse *= ao; #endif finalColor = vec4(diffuse, 1.0) * u_opacity; @@ -440,14 +445,14 @@ vec4 finalColor; // Ambient Occlusion float ao = 1.0; #if defined (HAS_TEXTURE_u_occlusionTexture) && defined(HAS_ATTRIBUTE_a_uv_2f) - ao = (texture2D(u_occlusionTexture, uv_2f).x - 1.0) * u_aoIntensity + 1.0; + ao = (texture(u_occlusionTexture, uv_2f).x - 1.0) * u_aoIntensity + 1.0; color *= ao; #endif // Emission vec4 emissive = u_emissiveFactor; #if defined(HAS_TEXTURE_u_emissionTexture) && defined(HAS_ATTRIBUTE_a_uv_2f) - emissive.rgb *= sRGBToLinear(texture2D(u_emissionTexture, uv_2f).rgb); + emissive.rgb *= sRGBToLinear(texture(u_emissionTexture, uv_2f).rgb); #endif color += emissive.rgb; @@ -488,10 +493,10 @@ vec4 finalColor; finalColor = applyCutout(finalColor); #endif - gl_FragColor = finalColor; + glFragColor = finalColor; #ifdef OVERDRAW_INSPECTOR - gl_FragColor = vec4(1.0); + glFragColor = vec4(1.0); #endif HANDLE_WIREFRAME_DEBUG; diff --git a/3d-style/shaders/model.vertex.glsl b/3d-style/shaders/model.vertex.glsl index 5cd221b217a..4b2b34a1759 100644 --- a/3d-style/shaders/model.vertex.glsl +++ b/3d-style/shaders/model.vertex.glsl @@ -1,7 +1,7 @@ #include "_prelude_fog.vertex.glsl" #include "_prelude_shadow.vertex.glsl" -attribute vec3 a_pos_3f; +in vec3 a_pos_3f; #pragma mapbox: define-attribute highp vec3 normal_3f #pragma mapbox: define-attribute highp vec2 uv_2f @@ -27,10 +27,10 @@ uniform vec3 u_camera_pos; uniform vec4 u_color_mix; #ifdef INSTANCED_ARRAYS -attribute vec4 a_normal_matrix0; -attribute vec4 a_normal_matrix1; -attribute vec4 a_normal_matrix2; -attribute vec4 a_normal_matrix3; +in vec4 a_normal_matrix0; +in vec4 a_normal_matrix1; +in vec4 a_normal_matrix2; +in vec4 a_normal_matrix3; #else uniform highp mat4 u_normal_matrix; #endif @@ -38,27 +38,32 @@ uniform highp mat4 u_normal_matrix; #ifdef RENDER_SHADOWS uniform mat4 u_light_matrix_0; uniform mat4 u_light_matrix_1; -varying vec4 v_pos_light_view_0; -varying vec4 v_pos_light_view_1; -varying float v_depth_shadows; +out vec4 v_pos_light_view_0; +out vec4 v_pos_light_view_1; +out float v_depth_shadows; #endif -varying vec4 v_position_height; -varying lowp vec4 v_color_mix; +out vec4 v_position_height; +out lowp vec4 v_color_mix; #ifdef TERRAIN_FRAGMENT_OCCLUSION -varying highp float v_depth; +out highp float v_depth; #endif #ifdef HAS_ATTRIBUTE_a_pbr -varying lowp vec4 v_roughness_metallic_emissive_alpha; -varying mediump vec4 v_height_based_emission_params; +out lowp vec4 v_roughness_metallic_emissive_alpha; +out mediump vec4 v_height_based_emission_params; // .x - height-based interpolation factor // .y - interpolation power // .z - min value // .w - max - min #endif +// sRGB to linear approximation +vec3 sRGBToLinear(vec3 srgbIn) { + return pow(srgbIn, vec3(2.2)); +} + void main() { #pragma mapbox: initialize-attribute highp vec3 normal_3f #pragma mapbox: initialize-attribute highp vec2 uv_2f diff --git a/3d-style/shaders/model_depth.fragment.glsl b/3d-style/shaders/model_depth.fragment.glsl index d34d726eac6..534eff9e3c3 100644 --- a/3d-style/shaders/model_depth.fragment.glsl +++ b/3d-style/shaders/model_depth.fragment.glsl @@ -1,7 +1,7 @@ -varying highp float v_depth; +in highp float v_depth; void main() { #ifndef DEPTH_TEXTURE - gl_FragColor = pack_depth(v_depth); + glFragColor = pack_depth(v_depth); #endif } diff --git a/3d-style/shaders/model_depth.vertex.glsl b/3d-style/shaders/model_depth.vertex.glsl index b516f2fe0ac..4f7cf996bc9 100644 --- a/3d-style/shaders/model_depth.vertex.glsl +++ b/3d-style/shaders/model_depth.vertex.glsl @@ -1,14 +1,14 @@ -attribute vec3 a_pos_3f; +in vec3 a_pos_3f; uniform mat4 u_matrix; -varying highp float v_depth; +out highp float v_depth; #ifdef MODEL_POSITION_ON_GPU #ifdef INSTANCED_ARRAYS -attribute vec4 a_normal_matrix0; -attribute vec4 a_normal_matrix1; -attribute vec4 a_normal_matrix2; -attribute vec4 a_normal_matrix3; +in vec4 a_normal_matrix0; +in vec4 a_normal_matrix1; +in vec4 a_normal_matrix2; +in vec4 a_normal_matrix3; #else uniform highp mat4 u_instance; #endif diff --git a/src/render/program.js b/src/render/program.js index da9baec6f47..f276e804fba 100644 --- a/src/render/program.js +++ b/src/render/program.js @@ -49,17 +49,6 @@ type ShaderSource = { fragmentIncludes: Array }; -function getTokenizedAttributes(array: Array): Array { - const result = []; - - for (let i = 0; i < array.length; i++) { - if (array[i] === null) continue; - const token = array[i].split(' '); - result.push(token.pop()); - } - return result; -} - const debugWireframe2DLayerProgramNames = [ 'fill', 'fillOutline', 'fillPattern', 'line', 'linePattern', @@ -114,9 +103,8 @@ class Program { this.name = name; this.fixedDefines = [...fixedDefines]; - const staticAttrInfo = getTokenizedAttributes(source.staticAttributes); const dynamicAttrInfo = configuration ? configuration.getBinderAttributes() : []; - const allAttrInfo = staticAttrInfo.concat(dynamicAttrInfo); + const allAttrInfo = (source.staticAttributes || []).concat(dynamicAttrInfo); let defines = configuration ? configuration.defines() : []; defines = defines.concat(fixedDefines.map((define) => `#define ${define}`)); diff --git a/src/shaders/_prelude.fragment.glsl b/src/shaders/_prelude.fragment.glsl index 61cab6d6921..b8095644e11 100644 --- a/src/shaders/_prelude.fragment.glsl +++ b/src/shaders/_prelude.fragment.glsl @@ -1,23 +1,6 @@ // NOTE: This prelude is injected in the fragment shader only -#if __VERSION__ >= 300 -#define varying in -#define gl_FragColor glFragColor -#define texture2D texture -#define textureCube texture out vec4 glFragColor; -#endif - -highp vec3 hash(highp vec2 p) { - highp vec3 p3 = fract(p.xyx * vec3(443.8975, 397.2973, 491.1871)); - p3 += dot(p3, p3.yxz + 19.19); - return fract((p3.xxy + p3.yzz) * p3.zyx); -} - -vec3 dither(vec3 color, highp vec2 seed) { - vec3 rnd = hash(seed) + hash(seed + 0.59374) - 0.5; - return color + rnd / 255.0; -} highp float unpack_depth(highp vec4 rgba_depth) { @@ -56,7 +39,16 @@ vec4 applyCutout(vec4 color) { #endif } +#ifdef DEBUG_WIREFRAME + // Debug wireframe uses premultiplied alpha blending (alpha channel is left unchanged) + #define HANDLE_WIREFRAME_DEBUG \ + glFragColor = vec4(0.7, 0.0, 0.0, 0.7); \ + gl_FragDepth = gl_FragCoord.z - 0.0001; // Apply depth for wireframe overlay to reduce z-fighting +#else + #define HANDLE_WIREFRAME_DEBUG +#endif + #ifdef RENDER_CUTOFF uniform highp vec4 u_cutoff_params; -varying float v_cutoff_opacity; -#endif \ No newline at end of file +in float v_cutoff_opacity; +#endif diff --git a/src/shaders/_prelude.glsl b/src/shaders/_prelude.glsl index 4357d97b236..cbc468c4696 100644 --- a/src/shaders/_prelude.glsl +++ b/src/shaders/_prelude.glsl @@ -4,46 +4,6 @@ #define EPSILON 0.0000001 #define PI 3.141592653589793 -#define EXTENT 8192.0 -#define HALF_PI PI / 2.0 -#define QUARTER_PI PI / 4.0 -#define RAD_TO_DEG 180.0 / PI -#define DEG_TO_RAD PI / 180.0 -#define GLOBE_RADIUS EXTENT / PI / 2.0 - -// linear to sRGB approximation -vec3 linearTosRGB(vec3 color) -{ - return pow(color, vec3(1./2.2)); -} - -// sRGB to linear approximation -vec3 sRGBToLinear(vec3 srgbIn) -{ - return pow(srgbIn, vec3(2.2)); -} - -// equivalent to linearTosRGB(sRGBToLinear(srgbIn) * k) -vec3 linearProduct(vec3 srgbIn, vec3 k) -{ - return srgbIn * pow(k, vec3(1./2.2)); -} - -// Apply depth for wireframe overlay to reduce z-fighting -#if __VERSION__ >= 300 - #define _HANDLE_WIREFRAME_DEPTH gl_FragDepth = gl_FragCoord.z - 0.0001; -#else - #define _HANDLE_WIREFRAME_DEPTH -#endif - -#ifdef DEBUG_WIREFRAME - // Debug wireframe uses premultiplied alpha blending (alpha channel is left unchanged) - #define HANDLE_WIREFRAME_DEBUG \ - gl_FragColor = vec4(0.7, 0.0, 0.0, 0.7); \ - _HANDLE_WIREFRAME_DEPTH; -#else - #define HANDLE_WIREFRAME_DEBUG -#endif #ifdef RENDER_CUTOFF // Calculates cutoff and fade out based on the supplied params and depth value @@ -57,4 +17,4 @@ float cutoff_opacity(vec4 cutoff_params, float depth) { float linearDepth = (depth - near) / (far - near); return clamp((linearDepth - cutoffStart) / (cutoffEnd - cutoffStart), 0.0, 1.0); } -#endif \ No newline at end of file +#endif diff --git a/src/shaders/_prelude.vertex.glsl b/src/shaders/_prelude.vertex.glsl index a15c3d6199f..4d2d06f6dd1 100644 --- a/src/shaders/_prelude.vertex.glsl +++ b/src/shaders/_prelude.vertex.glsl @@ -1,10 +1,9 @@ // NOTE: This prelude is injected in the vertex shader only -#if __VERSION__ >= 300 -#define attribute in -#define varying out -#define texture2D texture -#endif +#define EXTENT 8192.0 +#define RAD_TO_DEG 180.0 / PI +#define DEG_TO_RAD PI / 180.0 +#define GLOBE_RADIUS EXTENT / PI / 2.0 float wrap(float n, float min, float max) { float d = max - min; @@ -104,7 +103,7 @@ float mercatorXfromLng(float lng) { } float mercatorYfromLat(float lat) { - return (180.0 - (RAD_TO_DEG* log(tan(QUARTER_PI + lat / 2.0 * DEG_TO_RAD)))) / 360.0; + return (180.0 - (RAD_TO_DEG * log(tan(PI / 4.0 + lat / 2.0 * DEG_TO_RAD)))) / 360.0; } vec3 latLngToECEF(vec2 latLng) { @@ -125,7 +124,7 @@ vec3 latLngToECEF(vec2 latLng) { #ifdef RENDER_CUTOFF uniform vec4 u_cutoff_params; -varying float v_cutoff_opacity; +out float v_cutoff_opacity; #endif const vec4 AWAY = vec4(-1000.0, -1000.0, -1000.0, 1); // Normalized device coordinate that is not rendered. diff --git a/src/shaders/_prelude_fog.fragment.glsl b/src/shaders/_prelude_fog.fragment.glsl index cc3d7c48adc..4a5dc474598 100644 --- a/src/shaders/_prelude_fog.fragment.glsl +++ b/src/shaders/_prelude_fog.fragment.glsl @@ -1,3 +1,14 @@ +highp vec3 hash(highp vec2 p) { + highp vec3 p3 = fract(p.xyx * vec3(443.8975, 397.2973, 491.1871)); + p3 += dot(p3, p3.yxz + 19.19); + return fract((p3.xxy + p3.yzz) * p3.zyx); +} + +vec3 dither(vec3 color, highp vec2 seed) { + vec3 rnd = hash(seed) + hash(seed + 0.59374) - 0.5; + return color + rnd / 255.0; +} + #ifdef FOG uniform mediump vec4 u_fog_color; @@ -5,7 +16,7 @@ uniform mediump vec2 u_fog_range; uniform mediump float u_fog_horizon_blend; uniform mediump vec2 u_fog_vertical_limit; uniform mediump float u_fog_temporal_offset; -varying vec3 v_fog_pos; +in vec3 v_fog_pos; uniform highp vec3 u_frustum_tl; uniform highp vec3 u_frustum_tr; diff --git a/src/shaders/_prelude_fog.vertex.glsl b/src/shaders/_prelude_fog.vertex.glsl index 78a9788388c..e73397439e1 100644 --- a/src/shaders/_prelude_fog.vertex.glsl +++ b/src/shaders/_prelude_fog.vertex.glsl @@ -4,7 +4,7 @@ uniform mediump vec4 u_fog_color; uniform mediump vec2 u_fog_range; uniform mediump float u_fog_horizon_blend; uniform mediump mat4 u_fog_matrix; -varying vec3 v_fog_pos; +out vec3 v_fog_pos; float fog_range(float depth) { // Map [near, far] to [0, 1] without clamping diff --git a/src/shaders/_prelude_lighting.glsl b/src/shaders/_prelude_lighting.glsl index 365e3545545..41bf5b11347 100644 --- a/src/shaders/_prelude_lighting.glsl +++ b/src/shaders/_prelude_lighting.glsl @@ -33,6 +33,11 @@ float calculate_ambient_directional_factor(vec3 normal) { return vertical_factor * ambient_directional_factor; } +// equivalent to linearTosRGB(sRGBToLinear(srgbIn) * k) +vec3 linearProduct(vec3 srgbIn, vec3 k) { + return srgbIn * pow(k, vec3(1./2.2)); +} + // BEGIN Used for anisotropic ambient light // BEGIN Use with shadows, pass shadow light factor as dir_factor diff --git a/src/shaders/_prelude_raster_array.glsl b/src/shaders/_prelude_raster_array.glsl index a04f63b1eac..4832b8107e4 100644 --- a/src/shaders/_prelude_raster_array.glsl +++ b/src/shaders/_prelude_raster_array.glsl @@ -28,31 +28,31 @@ vec2 raTexture2D_image0_linear(vec2 texCoord, vec2 texResolution, vec4 colorMix, vec2 fxy; vec4 c = _raTexLinearCoord(texCoord, texResolution, fxy); return _raTexLinearMix(fxy, colorMix, colorOffset, - texture2D(u_image0, c.yz), - texture2D(u_image0, c.xz), - texture2D(u_image0, c.yw), - texture2D(u_image0, c.xw) + texture(u_image0, c.yz), + texture(u_image0, c.xz), + texture(u_image0, c.yw), + texture(u_image0, c.xw) ); } vec2 raTexture2D_image1_linear(vec2 texCoord, vec2 texResolution, vec4 colorMix, float colorOffset) { vec2 fxy; vec4 c = _raTexLinearCoord(texCoord, texResolution, fxy); return _raTexLinearMix(fxy, colorMix, colorOffset, - texture2D(u_image1, c.yz), - texture2D(u_image1, c.xz), - texture2D(u_image1, c.yw), - texture2D(u_image1, c.xw) + texture(u_image1, c.yz), + texture(u_image1, c.xz), + texture(u_image1, c.yw), + texture(u_image1, c.xw) ); } // Decode raster array data and return nearest neighbor sample // Returns: vec2(value, nodata_alpha) vec2 raTexture2D_image0_nearest(vec2 texCoord, vec2 texResolution, vec4 colorMix, float colorOffset) { - vec4 t = texture2D(u_image0, texCoord); + vec4 t = texture(u_image0, texCoord); return t == NODATA ? vec2(0) : vec2(colorOffset + dot(t, colorMix), 1); } vec2 raTexture2D_image1_nearest(vec2 texCoord, vec2 texResolution, vec4 colorMix, float colorOffset) { - vec4 t = texture2D(u_image1, texCoord); + vec4 t = texture(u_image1, texCoord); return t == NODATA ? vec2(0) : vec2(colorOffset + dot(t, colorMix), 1); } diff --git a/src/shaders/_prelude_terrain.vertex.glsl b/src/shaders/_prelude_terrain.vertex.glsl index 07483d88125..7fd8f974f37 100644 --- a/src/shaders/_prelude_terrain.vertex.glsl +++ b/src/shaders/_prelude_terrain.vertex.glsl @@ -115,7 +115,7 @@ highp float unpack_depth(highp vec4 rgba_depth) bool isOccluded(vec4 frag) { vec3 coord = frag.xyz / frag.w; - float depth = unpack_depth(texture2D(u_depth, (coord.xy + 1.0) * 0.5)); + float depth = unpack_depth(texture(u_depth, (coord.xy + 1.0) * 0.5)); return coord.z > depth + 0.0005; } @@ -125,10 +125,10 @@ float occlusionFade(vec4 frag) { vec3 df = vec3(5.0 * u_depth_size_inv, 0.0); vec2 uv = 0.5 * coord.xy + 0.5; vec4 depth = vec4( - unpack_depth(texture2D(u_depth, uv - df.xz)), - unpack_depth(texture2D(u_depth, uv + df.xz)), - unpack_depth(texture2D(u_depth, uv - df.zy)), - unpack_depth(texture2D(u_depth, uv + df.zy)) + unpack_depth(texture(u_depth, uv - df.xz)), + unpack_depth(texture(u_depth, uv + df.xz)), + unpack_depth(texture(u_depth, uv - df.zy)), + unpack_depth(texture(u_depth, uv + df.zy)) ); return dot(vec4(0.25), vec4(1.0) - clamp(300.0 * (vec4(coord.z - 0.001) - depth), 0.0, 1.0)); } @@ -138,17 +138,10 @@ float occlusionFade(vec4 frag) { // This is so that rendering changes are reflected on CPU side for feature querying. vec4 fourSample(vec2 pos, vec2 off) { -#ifdef TERRAIN_DEM_FLOAT_FORMAT float tl = texture(u_dem, pos).r; float tr = texture(u_dem, pos + vec2(off.x, 0.0)).r; float bl = texture(u_dem, pos + vec2(0.0, off.y)).r; float br = texture(u_dem, pos + off).r; -#else - float tl = texture(u_dem, pos).r; - float tr = texture(u_dem, pos + vec2(off.x, 0.0)).r; - float bl = texture(u_dem, pos + vec2(0.0, off.y)).r; - float br = texture(u_dem, pos + off).r; -#endif return vec4(tl, tr, bl, br); } diff --git a/src/shaders/atmosphere.fragment.glsl b/src/shaders/atmosphere.fragment.glsl index f89a5e126b0..ca0375b2f55 100644 --- a/src/shaders/atmosphere.fragment.glsl +++ b/src/shaders/atmosphere.fragment.glsl @@ -10,8 +10,8 @@ uniform vec4 u_space_color; uniform float u_horizon_angle; -varying highp vec3 v_ray_dir; -varying highp vec3 v_horizon_dir; +in highp vec3 v_ray_dir; +in highp vec3 v_horizon_dir; void main() { highp vec3 dir = normalize(v_ray_dir); @@ -26,14 +26,14 @@ void main() { // antialiasing that might be applied from globe_raster.fragment.glsl if (norm_dist_from_center < 0.98) { #ifdef ALPHA_PASS - gl_FragColor = vec4(0, 0, 0, 0); + glFragColor = vec4(0, 0, 0, 0); return; #else #ifdef NATIVE // Needed for render test parity since white canvas is assumed - gl_FragColor = vec4(1, 1, 1, 1); + glFragColor = vec4(1, 1, 1, 1); #else - gl_FragColor = vec4(0, 0, 0, 1); + glFragColor = vec4(0, 0, 0, 1); #endif return; #endif @@ -87,7 +87,7 @@ void main() { float a2 = mix(a0, a1, t); float a = mix(alpha_2, a2, t); - gl_FragColor = vec4(1.0, 1.0, 1.0, a); + glFragColor = vec4(1.0, 1.0, 1.0, a); #else vec3 c0 = mix(color_stop_2, color_stop_1, alpha_1); vec3 c1 = mix(c0, color_stop_0, alpha_0); @@ -103,6 +103,6 @@ void main() { #endif // Blending with background space color - gl_FragColor = vec4(c * t, t); + glFragColor = vec4(c * t, t); #endif } diff --git a/src/shaders/atmosphere.vertex.glsl b/src/shaders/atmosphere.vertex.glsl index a3336b3236b..61edafa1217 100644 --- a/src/shaders/atmosphere.vertex.glsl +++ b/src/shaders/atmosphere.vertex.glsl @@ -1,5 +1,5 @@ -attribute vec3 a_pos; -attribute vec2 a_uv; +in vec3 a_pos; +in vec2 a_uv; // View frustum direction vectors pointing from the camera position to of each the corner points uniform vec3 u_frustum_tl; @@ -8,8 +8,8 @@ uniform vec3 u_frustum_br; uniform vec3 u_frustum_bl; uniform float u_horizon; -varying highp vec3 v_ray_dir; -varying highp vec3 v_horizon_dir; +out highp vec3 v_ray_dir; +out highp vec3 v_horizon_dir; void main() { v_ray_dir = mix( diff --git a/src/shaders/background.fragment.glsl b/src/shaders/background.fragment.glsl index 81a21eab09e..b4d61edae78 100644 --- a/src/shaders/background.fragment.glsl +++ b/src/shaders/background.fragment.glsl @@ -5,7 +5,7 @@ uniform vec4 u_color; uniform float u_opacity; #ifdef LIGHTING_3D_MODE -varying vec4 v_color; +in vec4 v_color; #endif void main() { @@ -19,10 +19,10 @@ void main() { out_color = fog_dither(fog_apply_premultiplied(out_color, v_fog_pos)); #endif - gl_FragColor = out_color * u_opacity; + glFragColor = out_color * u_opacity; #ifdef OVERDRAW_INSPECTOR - gl_FragColor = vec4(1.0); + glFragColor = vec4(1.0); #endif HANDLE_WIREFRAME_DEBUG; diff --git a/src/shaders/background.vertex.glsl b/src/shaders/background.vertex.glsl index 0901475093b..6cc521bd143 100644 --- a/src/shaders/background.vertex.glsl +++ b/src/shaders/background.vertex.glsl @@ -1,13 +1,13 @@ #include "_prelude_fog.vertex.glsl" #include "_prelude_lighting.glsl" -attribute vec2 a_pos; +in vec2 a_pos; uniform mat4 u_matrix; #ifdef LIGHTING_3D_MODE uniform mediump vec4 u_color; -varying vec4 v_color; +out vec4 v_color; uniform float u_emissive_strength; #endif diff --git a/src/shaders/background_pattern.fragment.glsl b/src/shaders/background_pattern.fragment.glsl index 62601ae0dc1..122b183da0f 100644 --- a/src/shaders/background_pattern.fragment.glsl +++ b/src/shaders/background_pattern.fragment.glsl @@ -9,12 +9,12 @@ uniform float u_emissive_strength; uniform sampler2D u_image; -varying vec2 v_pos; +in vec2 v_pos; void main() { vec2 imagecoord = mod(v_pos, 1.0); vec2 pos = mix(u_pattern_tl / u_texsize, u_pattern_br / u_texsize, imagecoord); - vec4 out_color = texture2D(u_image, pos); + vec4 out_color = texture(u_image, pos); #ifdef LIGHTING_3D_MODE out_color = apply_lighting_with_emission_ground(out_color, u_emissive_strength); @@ -23,10 +23,10 @@ void main() { out_color = fog_dither(fog_apply_premultiplied(out_color, v_fog_pos)); #endif - gl_FragColor = out_color * u_opacity; + glFragColor = out_color * u_opacity; #ifdef OVERDRAW_INSPECTOR - gl_FragColor = vec4(1.0); + glFragColor = vec4(1.0); #endif HANDLE_WIREFRAME_DEBUG; diff --git a/src/shaders/background_pattern.vertex.glsl b/src/shaders/background_pattern.vertex.glsl index c49cb53c4ba..2cf40e743de 100644 --- a/src/shaders/background_pattern.vertex.glsl +++ b/src/shaders/background_pattern.vertex.glsl @@ -6,9 +6,9 @@ uniform vec2 u_pixel_coord_upper; uniform vec2 u_pixel_coord_lower; uniform float u_tile_units_to_pixels; -attribute vec2 a_pos; +in vec2 a_pos; -varying vec2 v_pos; +out vec2 v_pos; void main() { gl_Position = u_matrix * vec4(a_pos, 0, 1); diff --git a/src/shaders/circle.fragment.glsl b/src/shaders/circle.fragment.glsl index 34f7cbe0a74..1cc124f5f3a 100644 --- a/src/shaders/circle.fragment.glsl +++ b/src/shaders/circle.fragment.glsl @@ -1,8 +1,8 @@ #include "_prelude_fog.fragment.glsl" #include "_prelude_lighting.glsl" -varying vec3 v_data; -varying float v_visibility; +in vec3 v_data; +in float v_visibility; #pragma mapbox: define highp vec4 color #pragma mapbox: define mediump float radius @@ -45,9 +45,9 @@ void main() { out_color = fog_apply_premultiplied(out_color, v_fog_pos); #endif - gl_FragColor = out_color * (v_visibility * opacity_t); + glFragColor = out_color * (v_visibility * opacity_t); #ifdef OVERDRAW_INSPECTOR - gl_FragColor = vec4(1.0); + glFragColor = vec4(1.0); #endif } diff --git a/src/shaders/circle.vertex.glsl b/src/shaders/circle.vertex.glsl index b804295b038..726112780bf 100644 --- a/src/shaders/circle.vertex.glsl +++ b/src/shaders/circle.vertex.glsl @@ -12,11 +12,11 @@ uniform mat2 u_extrude_scale; uniform lowp float u_device_pixel_ratio; uniform highp float u_camera_to_center_distance; -attribute vec2 a_pos; +in vec2 a_pos; #ifdef PROJECTION_GLOBE_VIEW -attribute vec3 a_pos_3; // Projected position on the globe -attribute vec3 a_pos_normal_3; // Surface normal at the position +in vec3 a_pos_3; // Projected position on the globe +in vec3 a_pos_normal_3; // Surface normal at the position // Uniforms required for transition between globe and mercator uniform mat4 u_inv_rot_matrix; @@ -26,8 +26,8 @@ uniform float u_zoom_transition; uniform vec3 u_up_dir; #endif -varying vec3 v_data; -varying float v_visibility; +out vec3 v_data; +out float v_visibility; #pragma mapbox: define highp vec4 color #pragma mapbox: define mediump float radius diff --git a/src/shaders/clipping_mask.fragment.glsl b/src/shaders/clipping_mask.fragment.glsl index fdd1a9285a6..c453278a792 100644 --- a/src/shaders/clipping_mask.fragment.glsl +++ b/src/shaders/clipping_mask.fragment.glsl @@ -1,3 +1,3 @@ void main() { - gl_FragColor = vec4(1.0); + glFragColor = vec4(1.0); } diff --git a/src/shaders/clipping_mask.vertex.glsl b/src/shaders/clipping_mask.vertex.glsl index 866c3cd2f39..46f9eaa1244 100644 --- a/src/shaders/clipping_mask.vertex.glsl +++ b/src/shaders/clipping_mask.vertex.glsl @@ -1,4 +1,4 @@ -attribute vec2 a_pos; +in vec2 a_pos; uniform mat4 u_matrix; diff --git a/src/shaders/collision_box.fragment.glsl b/src/shaders/collision_box.fragment.glsl index f53471da06d..63a95b9aa2e 100644 --- a/src/shaders/collision_box.fragment.glsl +++ b/src/shaders/collision_box.fragment.glsl @@ -1,10 +1,10 @@ -varying float v_placed; -varying float v_notUsed; +in float v_placed; +in float v_notUsed; void main() { vec4 red = vec4(1.0, 0.0, 0.0, 1.0); // Red = collision, hide label vec4 blue = vec4(0.0, 0.0, 1.0, 0.5); // Blue = no collision, label is showing - gl_FragColor = mix(red, blue, step(0.5, v_placed)) * 0.5; - gl_FragColor *= mix(1.0, 0.1, step(0.5, v_notUsed)); -} \ No newline at end of file + glFragColor = mix(red, blue, step(0.5, v_placed)) * 0.5; + glFragColor *= mix(1.0, 0.1, step(0.5, v_notUsed)); +} diff --git a/src/shaders/collision_box.vertex.glsl b/src/shaders/collision_box.vertex.glsl index e3dcc9fe33c..12e2718fe87 100644 --- a/src/shaders/collision_box.vertex.glsl +++ b/src/shaders/collision_box.vertex.glsl @@ -1,20 +1,20 @@ #include "_prelude_terrain.vertex.glsl" -attribute vec3 a_pos; -attribute vec2 a_anchor_pos; -attribute vec2 a_extrude; -attribute vec2 a_placed; -attribute vec2 a_shift; -attribute float a_size_scale; -attribute vec2 a_padding; -attribute float a_z_offset; +in vec3 a_pos; +in vec2 a_anchor_pos; +in vec2 a_extrude; +in vec2 a_placed; +in vec2 a_shift; +in float a_size_scale; +in vec2 a_padding; +in float a_z_offset; uniform mat4 u_matrix; uniform vec2 u_extrude_scale; uniform float u_camera_to_center_distance; -varying float v_placed; -varying float v_notUsed; +out float v_placed; +out float v_notUsed; void main() { vec4 projectedPoint = u_matrix * vec4(a_pos + elevationVector(a_anchor_pos) * (a_z_offset + elevation(a_anchor_pos)), 1); diff --git a/src/shaders/collision_circle.fragment.glsl b/src/shaders/collision_circle.fragment.glsl index 3cd66b1155e..67bd43a0815 100644 --- a/src/shaders/collision_circle.fragment.glsl +++ b/src/shaders/collision_circle.fragment.glsl @@ -1,7 +1,7 @@ -varying float v_radius; -varying vec2 v_extrude; -varying float v_perspective_ratio; -varying float v_collision; +in float v_radius; +in vec2 v_extrude; +in float v_perspective_ratio; +in float v_collision; void main() { float alpha = 0.5 * min(v_perspective_ratio, 1.0); @@ -13,5 +13,5 @@ void main() { vec4 color = mix(vec4(0.0, 0.0, 1.0, 0.5), vec4(1.0, 0.0, 0.0, 1.0), v_collision); - gl_FragColor = color * alpha * opacity_t; + glFragColor = color * alpha * opacity_t; } diff --git a/src/shaders/collision_circle.vertex.glsl b/src/shaders/collision_circle.vertex.glsl index 764dd900aa6..1af105a127b 100644 --- a/src/shaders/collision_circle.vertex.glsl +++ b/src/shaders/collision_circle.vertex.glsl @@ -1,16 +1,16 @@ -attribute vec2 a_pos_2f; -attribute float a_radius; -attribute vec2 a_flags; +in vec2 a_pos_2f; +in float a_radius; +in vec2 a_flags; uniform mat4 u_matrix; uniform mat4 u_inv_matrix; uniform vec2 u_viewport_size; uniform float u_camera_to_center_distance; -varying float v_radius; -varying vec2 v_extrude; -varying float v_perspective_ratio; -varying float v_collision; +out float v_radius; +out vec2 v_extrude; +out float v_perspective_ratio; +out float v_collision; vec3 toTilePosition(vec2 screenPos) { // Shoot a ray towards the ground to reconstruct the depth-value diff --git a/src/shaders/debug.fragment.glsl b/src/shaders/debug.fragment.glsl index c15a694bd1b..f337ad66c26 100644 --- a/src/shaders/debug.fragment.glsl +++ b/src/shaders/debug.fragment.glsl @@ -1,9 +1,9 @@ uniform highp vec4 u_color; uniform sampler2D u_overlay; -varying vec2 v_uv; +in vec2 v_uv; void main() { - vec4 overlay_color = texture2D(u_overlay, v_uv); - gl_FragColor = mix(u_color, overlay_color, overlay_color.a); + vec4 overlay_color = texture(u_overlay, v_uv); + glFragColor = mix(u_color, overlay_color, overlay_color.a); } diff --git a/src/shaders/debug.vertex.glsl b/src/shaders/debug.vertex.glsl index 570a4a76782..ef8b6ed9661 100644 --- a/src/shaders/debug.vertex.glsl +++ b/src/shaders/debug.vertex.glsl @@ -1,10 +1,10 @@ #include "_prelude_terrain.vertex.glsl" -attribute vec2 a_pos; +in vec2 a_pos; #ifdef PROJECTION_GLOBE_VIEW -attribute vec3 a_pos_3; +in vec3 a_pos_3; #endif -varying vec2 v_uv; +out vec2 v_uv; uniform mat4 u_matrix; uniform float u_overlay_scale; diff --git a/src/shaders/fill.fragment.glsl b/src/shaders/fill.fragment.glsl index a6462013962..ded717f1e52 100644 --- a/src/shaders/fill.fragment.glsl +++ b/src/shaders/fill.fragment.glsl @@ -19,10 +19,10 @@ void main() { out_color = fog_dither(fog_apply_premultiplied(out_color, v_fog_pos)); #endif - gl_FragColor = out_color * opacity; + glFragColor = out_color * opacity; #ifdef OVERDRAW_INSPECTOR - gl_FragColor = vec4(1.0); + glFragColor = vec4(1.0); #endif HANDLE_WIREFRAME_DEBUG; diff --git a/src/shaders/fill.vertex.glsl b/src/shaders/fill.vertex.glsl index 5b140beb0e2..fa497509e78 100644 --- a/src/shaders/fill.vertex.glsl +++ b/src/shaders/fill.vertex.glsl @@ -1,6 +1,6 @@ #include "_prelude_fog.vertex.glsl" -attribute vec2 a_pos; +in vec2 a_pos; uniform mat4 u_matrix; diff --git a/src/shaders/fill_extrusion.fragment.glsl b/src/shaders/fill_extrusion.fragment.glsl index 45317b306eb..ff3a79075db 100644 --- a/src/shaders/fill_extrusion.fragment.glsl +++ b/src/shaders/fill_extrusion.fragment.glsl @@ -2,28 +2,28 @@ #include "_prelude_shadow.fragment.glsl" #include "_prelude_lighting.glsl" -varying vec4 v_color; -varying vec4 v_flat; +in vec4 v_color; +in vec4 v_flat; #ifdef RENDER_SHADOWS -varying highp vec4 v_pos_light_view_0; -varying highp vec4 v_pos_light_view_1; -varying float v_depth; +in highp vec4 v_pos_light_view_0; +in highp vec4 v_pos_light_view_1; +in float v_depth; #endif uniform lowp float u_opacity; #ifdef FAUX_AO uniform lowp vec2 u_ao; -varying vec2 v_ao; +in vec2 v_ao; #endif #if defined(ZERO_ROOF_RADIUS) && !defined(LIGHTING_3D_MODE) -varying vec4 v_roof_color; +in vec4 v_roof_color; #endif #if defined(ZERO_ROOF_RADIUS) || defined(RENDER_SHADOWS) || defined(LIGHTING_3D_MODE) -varying highp vec3 v_normal; +in highp vec3 v_normal; #endif uniform vec3 u_flood_light_color; @@ -32,13 +32,13 @@ uniform float u_flood_light_intensity; uniform vec3 u_ground_shadow_factor; #if defined(LIGHTING_3D_MODE) && defined(FLOOD_LIGHT) -varying float v_flood_radius; -varying float v_has_floodlight; +in float v_flood_radius; +in float v_has_floodlight; #endif uniform float u_emissive_strength; -varying float v_height; +in float v_height; void main() { @@ -129,10 +129,10 @@ float flood_radiance = 0.0; color = applyCutout(color); #endif - gl_FragColor = color; + glFragColor = color; #ifdef OVERDRAW_INSPECTOR - gl_FragColor = vec4(1.0); + glFragColor = vec4(1.0); #endif HANDLE_WIREFRAME_DEBUG; diff --git a/src/shaders/fill_extrusion.vertex.glsl b/src/shaders/fill_extrusion.vertex.glsl index 1189d9497bc..66e1c352a8e 100644 --- a/src/shaders/fill_extrusion.vertex.glsl +++ b/src/shaders/fill_extrusion.vertex.glsl @@ -3,11 +3,9 @@ #include "_prelude_shadow.vertex.glsl" #include "_prelude_lighting.glsl" -#if __VERSION__ >= 300 #ifdef RENDER_CUTOFF invariant gl_Position; #endif -#endif uniform mat4 u_matrix; uniform vec3 u_lightcolor; @@ -17,12 +15,12 @@ uniform float u_vertical_gradient; uniform lowp float u_opacity; uniform float u_edge_radius; -attribute vec4 a_pos_normal_ed; -attribute vec2 a_centroid_pos; +in vec4 a_pos_normal_ed; +in vec2 a_centroid_pos; #ifdef PROJECTION_GLOBE_VIEW -attribute vec3 a_pos_3; // Projected position on the globe -attribute vec3 a_pos_normal_3; // Surface normal at the position +in vec3 a_pos_3; // Projected position on the globe +in vec3 a_pos_normal_3; // Surface normal at the position uniform mat4 u_inv_rot_matrix; uniform vec2 u_merc_center; @@ -34,37 +32,37 @@ uniform float u_height_lift; uniform highp float u_vertical_scale; -varying vec4 v_color; -varying vec4 v_flat; +out vec4 v_color; +out vec4 v_flat; #ifdef RENDER_SHADOWS uniform mat4 u_light_matrix_0; uniform mat4 u_light_matrix_1; -varying highp vec4 v_pos_light_view_0; -varying highp vec4 v_pos_light_view_1; -varying float v_depth; +out highp vec4 v_pos_light_view_0; +out highp vec4 v_pos_light_view_1; +out float v_depth; #endif #if defined(ZERO_ROOF_RADIUS) && !defined(LIGHTING_3D_MODE) -varying vec4 v_roof_color; +out vec4 v_roof_color; #endif #if defined(ZERO_ROOF_RADIUS) || defined(RENDER_SHADOWS) || defined(LIGHTING_3D_MODE) -varying highp vec3 v_normal; +out highp vec3 v_normal; #endif #ifdef FAUX_AO uniform lowp vec2 u_ao; -varying vec2 v_ao; +out vec2 v_ao; #endif #if defined(LIGHTING_3D_MODE) && defined(FLOOD_LIGHT) -varying float v_flood_radius; -varying float v_has_floodlight; +out float v_flood_radius; +out float v_has_floodlight; #endif -varying float v_height; +out float v_height; #pragma mapbox: define highp float base #pragma mapbox: define highp float height diff --git a/src/shaders/fill_extrusion_ground_effect.fragment.glsl b/src/shaders/fill_extrusion_ground_effect.fragment.glsl index a753363ca02..07aa9e36e09 100644 --- a/src/shaders/fill_extrusion_ground_effect.fragment.glsl +++ b/src/shaders/fill_extrusion_ground_effect.fragment.glsl @@ -10,10 +10,10 @@ uniform sampler2D u_fb; uniform float u_fb_size; #ifdef SDF_SUBPASS -varying highp vec2 v_pos; -varying highp vec4 v_line_segment; -varying highp float v_flood_light_radius_tile; -varying highp vec2 v_ao; +in highp vec2 v_pos; +in highp vec4 v_line_segment; +in highp float v_flood_light_radius_tile; +in highp vec2 v_ao; float line_df(highp vec2 a, highp vec2 b, highp vec2 p) { highp vec2 ba = b - a; @@ -23,7 +23,7 @@ float line_df(highp vec2 a, highp vec2 b, highp vec2 p) { } #ifdef FOG -varying highp float v_fog; +in highp float v_fog; #endif // FOG #endif // SDF_SUBPASS @@ -36,9 +36,9 @@ void main() { #ifdef CLEAR_SUBPASS vec4 color = vec4(1.0); #ifdef CLEAR_FROM_TEXTURE - color = texture2D(u_fb, gl_FragCoord.xy / vec2(u_fb_size)); + color = texture(u_fb, gl_FragCoord.xy / vec2(u_fb_size)); #endif // CLEAR_FROM_TEXTURE - gl_FragColor = color; + glFragColor = color; #else // CLEAR_SUBPASS #ifdef SDF_SUBPASS highp float d = line_df(v_line_segment.xy, v_line_segment.zw, v_pos); @@ -54,13 +54,13 @@ void main() { #ifdef RENDER_CUTOFF fog *= v_cutoff_opacity; #endif // RENDER_CUTOFF - gl_FragColor = vec4(vec3(0.0), mix(1.0, d, effect_intensity * u_opacity * fog)); + glFragColor = vec4(vec3(0.0), mix(1.0, d, effect_intensity * u_opacity * fog)); #else // SDF_SUBPASS vec4 color = mix(vec4(u_flood_light_color, 1.0), vec4(vec3(0.0), 1.0), u_ao_pass); #ifdef OVERDRAW_INSPECTOR color = vec4(1.0); #endif - gl_FragColor = color; + glFragColor = color; HANDLE_WIREFRAME_DEBUG; #endif // !SDF_SUBPASS #endif // !CLEAR_SUBPASS diff --git a/src/shaders/fill_extrusion_ground_effect.vertex.glsl b/src/shaders/fill_extrusion_ground_effect.vertex.glsl index 276fe4ea536..84b29def4a3 100644 --- a/src/shaders/fill_extrusion_ground_effect.vertex.glsl +++ b/src/shaders/fill_extrusion_ground_effect.vertex.glsl @@ -1,16 +1,16 @@ #include "_prelude_fog.vertex.glsl" -attribute highp vec4 a_pos_end; -attribute highp float a_angular_offset_factor; -attribute highp float a_hidden_by_landmark; +in highp vec4 a_pos_end; +in highp float a_angular_offset_factor; +in highp float a_hidden_by_landmark; #ifdef SDF_SUBPASS -varying highp vec2 v_pos; -varying highp vec4 v_line_segment; -varying highp float v_flood_light_radius_tile; -varying highp vec2 v_ao; +out highp vec2 v_pos; +out highp vec4 v_line_segment; +out highp float v_flood_light_radius_tile; +out highp vec2 v_ao; #ifdef FOG -varying highp float v_fog; +out highp float v_fog; #endif #endif diff --git a/src/shaders/fill_extrusion_pattern.fragment.glsl b/src/shaders/fill_extrusion_pattern.fragment.glsl index d72ba3f452f..59cad9018e5 100644 --- a/src/shaders/fill_extrusion_pattern.fragment.glsl +++ b/src/shaders/fill_extrusion_pattern.fragment.glsl @@ -7,15 +7,15 @@ uniform sampler2D u_image; #ifdef FAUX_AO uniform lowp vec2 u_ao; -varying vec3 v_ao; +in vec3 v_ao; #endif #ifdef LIGHTING_3D_MODE -varying vec3 v_normal; +in vec3 v_normal; #endif -varying vec2 v_pos; -varying vec4 v_lighting; +in vec2 v_pos; +in vec4 v_lighting; uniform lowp float u_opacity; @@ -35,7 +35,7 @@ void main() { vec2 imagecoord = mod(v_pos, 1.0); vec2 pos = mix(pattern_tl / u_texsize, pattern_br / u_texsize, imagecoord); - vec4 out_color = texture2D(u_image, pos); + vec4 out_color = texture(u_image, pos); #ifdef LIGHTING_3D_MODE out_color = apply_lighting(out_color, normalize(v_normal)) * u_opacity; @@ -63,10 +63,10 @@ void main() { out_color = applyCutout(out_color); #endif - gl_FragColor = out_color; + glFragColor = out_color; #ifdef OVERDRAW_INSPECTOR - gl_FragColor = vec4(1.0); + glFragColor = vec4(1.0); #endif HANDLE_WIREFRAME_DEBUG; diff --git a/src/shaders/fill_extrusion_pattern.vertex.glsl b/src/shaders/fill_extrusion_pattern.vertex.glsl index e748f5959e3..3fde3697bf2 100644 --- a/src/shaders/fill_extrusion_pattern.vertex.glsl +++ b/src/shaders/fill_extrusion_pattern.vertex.glsl @@ -14,12 +14,12 @@ uniform vec3 u_lightcolor; uniform lowp vec3 u_lightpos; uniform lowp float u_lightintensity; -attribute vec4 a_pos_normal_ed; -attribute vec2 a_centroid_pos; +in vec4 a_pos_normal_ed; +in vec2 a_centroid_pos; #ifdef PROJECTION_GLOBE_VIEW -attribute vec3 a_pos_3; // Projected position on the globe -attribute vec3 a_pos_normal_3; // Surface normal at the position +in vec3 a_pos_3; // Projected position on the globe +in vec3 a_pos_normal_3; // Surface normal at the position uniform mat4 u_inv_rot_matrix; uniform vec2 u_merc_center; @@ -29,16 +29,16 @@ uniform vec3 u_up_dir; uniform float u_height_lift; #endif -varying vec2 v_pos; -varying vec4 v_lighting; +out vec2 v_pos; +out vec4 v_lighting; #ifdef FAUX_AO uniform lowp vec2 u_ao; -varying vec3 v_ao; +out vec3 v_ao; #endif #ifdef LIGHTING_3D_MODE -varying vec3 v_normal; +out vec3 v_normal; #endif #pragma mapbox: define highp float base diff --git a/src/shaders/fill_outline.fragment.glsl b/src/shaders/fill_outline.fragment.glsl index af7c5e3c873..27b60491f13 100644 --- a/src/shaders/fill_outline.fragment.glsl +++ b/src/shaders/fill_outline.fragment.glsl @@ -1,7 +1,7 @@ #include "_prelude_fog.fragment.glsl" #include "_prelude_lighting.glsl" -varying vec2 v_pos; +in vec2 v_pos; uniform float u_emissive_strength; @@ -23,10 +23,10 @@ void main() { out_color = fog_dither(fog_apply_premultiplied(out_color, v_fog_pos)); #endif - gl_FragColor = out_color * (alpha * opacity); + glFragColor = out_color * (alpha * opacity); #ifdef OVERDRAW_INSPECTOR - gl_FragColor = vec4(1.0); + glFragColor = vec4(1.0); #endif HANDLE_WIREFRAME_DEBUG; } diff --git a/src/shaders/fill_outline.vertex.glsl b/src/shaders/fill_outline.vertex.glsl index a5b27a2c4f8..fcb45a05eeb 100644 --- a/src/shaders/fill_outline.vertex.glsl +++ b/src/shaders/fill_outline.vertex.glsl @@ -1,11 +1,11 @@ #include "_prelude_fog.vertex.glsl" -attribute vec2 a_pos; +in vec2 a_pos; uniform mat4 u_matrix; uniform vec2 u_world; -varying vec2 v_pos; +out vec2 v_pos; #pragma mapbox: define highp vec4 outline_color #pragma mapbox: define lowp float opacity diff --git a/src/shaders/fill_outline_pattern.fragment.glsl b/src/shaders/fill_outline_pattern.fragment.glsl index e7d1134097d..e5173561b3d 100644 --- a/src/shaders/fill_outline_pattern.fragment.glsl +++ b/src/shaders/fill_outline_pattern.fragment.glsl @@ -5,8 +5,8 @@ uniform vec2 u_texsize; uniform sampler2D u_image; uniform float u_emissive_strength; -varying vec2 v_pos; -varying vec2 v_pos_world; +in vec2 v_pos; +in vec2 v_pos_world; #pragma mapbox: define lowp float opacity #pragma mapbox: define lowp vec4 pattern @@ -26,7 +26,7 @@ void main() { float dist = length(v_pos_world - gl_FragCoord.xy); float alpha = 1.0 - smoothstep(0.0, 1.0, dist); - vec4 out_color = texture2D(u_image, pos); + vec4 out_color = texture(u_image, pos); #ifdef LIGHTING_3D_MODE out_color = apply_lighting_with_emission_ground(out_color, u_emissive_strength); @@ -35,10 +35,10 @@ void main() { out_color = fog_dither(fog_apply_premultiplied(out_color, v_fog_pos)); #endif - gl_FragColor = out_color * (alpha * opacity); + glFragColor = out_color * (alpha * opacity); #ifdef OVERDRAW_INSPECTOR - gl_FragColor = vec4(1.0); + glFragColor = vec4(1.0); #endif HANDLE_WIREFRAME_DEBUG; diff --git a/src/shaders/fill_outline_pattern.vertex.glsl b/src/shaders/fill_outline_pattern.vertex.glsl index 3c3d7b74a57..b0f696904c8 100644 --- a/src/shaders/fill_outline_pattern.vertex.glsl +++ b/src/shaders/fill_outline_pattern.vertex.glsl @@ -6,10 +6,10 @@ uniform vec2 u_pixel_coord_upper; uniform vec2 u_pixel_coord_lower; uniform float u_tile_units_to_pixels; -attribute vec2 a_pos; +in vec2 a_pos; -varying vec2 v_pos; -varying vec2 v_pos_world; +out vec2 v_pos; +out vec2 v_pos_world; #pragma mapbox: define lowp float opacity #pragma mapbox: define lowp vec4 pattern diff --git a/src/shaders/fill_pattern.fragment.glsl b/src/shaders/fill_pattern.fragment.glsl index 0c80d0828ac..7c75dd323dd 100644 --- a/src/shaders/fill_pattern.fragment.glsl +++ b/src/shaders/fill_pattern.fragment.glsl @@ -5,7 +5,7 @@ uniform vec2 u_texsize; uniform sampler2D u_image; -varying vec2 v_pos; +in vec2 v_pos; uniform float u_emissive_strength; @@ -21,7 +21,7 @@ void main() { vec2 imagecoord = mod(v_pos, 1.0); vec2 pos = mix(pattern_tl / u_texsize, pattern_br / u_texsize, imagecoord); - vec4 out_color = texture2D(u_image, pos); + vec4 out_color = texture(u_image, pos); #ifdef LIGHTING_3D_MODE out_color = apply_lighting_with_emission_ground(out_color, u_emissive_strength); @@ -30,10 +30,10 @@ void main() { out_color = fog_dither(fog_apply_premultiplied(out_color, v_fog_pos)); #endif - gl_FragColor = out_color * opacity; + glFragColor = out_color * opacity; #ifdef OVERDRAW_INSPECTOR - gl_FragColor = vec4(1.0); + glFragColor = vec4(1.0); #endif HANDLE_WIREFRAME_DEBUG; diff --git a/src/shaders/fill_pattern.vertex.glsl b/src/shaders/fill_pattern.vertex.glsl index 3436ee9c7ec..714dfac8b14 100644 --- a/src/shaders/fill_pattern.vertex.glsl +++ b/src/shaders/fill_pattern.vertex.glsl @@ -5,9 +5,9 @@ uniform vec2 u_pixel_coord_upper; uniform vec2 u_pixel_coord_lower; uniform float u_tile_units_to_pixels; -attribute vec2 a_pos; +in vec2 a_pos; -varying vec2 v_pos; +out vec2 v_pos; #pragma mapbox: define lowp float opacity #pragma mapbox: define lowp vec4 pattern diff --git a/src/shaders/globe_raster.fragment.glsl b/src/shaders/globe_raster.fragment.glsl index 952aaad578a..248c9220b74 100644 --- a/src/shaders/globe_raster.fragment.glsl +++ b/src/shaders/globe_raster.fragment.glsl @@ -2,7 +2,7 @@ #include "_prelude_lighting.glsl" uniform sampler2D u_image0; -varying vec2 v_pos0; +in vec2 v_pos0; #ifndef FOG uniform highp vec3 u_frustum_tl; @@ -33,7 +33,7 @@ void main() { float antialias_factor = antialias_pixel * fwidth(norm_dist_from_center); float antialias = smoothstep(0.0, antialias_factor, norm_dist_from_center); - vec4 raster = texture2D(u_image0, v_pos0); + vec4 raster = texture(u_image0, v_pos0); #ifdef LIGHTING_3D_MODE #ifdef LIGHTING_3D_ALPHA_EMISSIVENESS raster = apply_lighting_with_emission_ground(raster, raster.a); @@ -46,7 +46,7 @@ void main() { color = vec4(raster.rgb * antialias, raster.a * antialias); #endif // !LIGHTING_3D_MODE #else // CUSTOM_ANTIALIASING - color = texture2D(u_image0, v_pos0); + color = texture(u_image0, v_pos0); #ifdef LIGHTING_3D_MODE #ifdef LIGHTING_3D_ALPHA_EMISSIVENESS color = apply_lighting_with_emission_ground(color, color.a); @@ -59,9 +59,9 @@ void main() { #ifdef FOG color = fog_dither(fog_apply_premultiplied(color, v_fog_pos)); #endif - gl_FragColor = color; + glFragColor = color; #ifdef OVERDRAW_INSPECTOR - gl_FragColor = vec4(1.0); + glFragColor = vec4(1.0); #endif HANDLE_WIREFRAME_DEBUG; } diff --git a/src/shaders/globe_raster.vertex.glsl b/src/shaders/globe_raster.vertex.glsl index 8099ec6e3c2..b54e0c7cc68 100644 --- a/src/shaders/globe_raster.vertex.glsl +++ b/src/shaders/globe_raster.vertex.glsl @@ -11,13 +11,13 @@ uniform mat3 u_grid_matrix; uniform float u_skirt_height; #ifdef GLOBE_POLES -attribute vec3 a_globe_pos; -attribute vec2 a_uv; +in vec3 a_globe_pos; +in vec2 a_uv; #else -attribute vec2 a_pos; // .xy - grid coords, .z - 1 - skirt, 0 - grid +in vec2 a_pos; // .xy - grid coords, .z - 1 - skirt, 0 - grid #endif -varying vec2 v_pos0; +out vec2 v_pos0; void main() { #ifdef GLOBE_POLES diff --git a/src/shaders/heatmap.fragment.glsl b/src/shaders/heatmap.fragment.glsl index 5d2d215ceee..3c2c0452b0a 100644 --- a/src/shaders/heatmap.fragment.glsl +++ b/src/shaders/heatmap.fragment.glsl @@ -2,7 +2,7 @@ uniform highp float u_intensity; -varying vec2 v_extrude; +in vec2 v_extrude; #pragma mapbox: define highp float weight @@ -16,7 +16,7 @@ void main() { float d = -0.5 * 3.0 * 3.0 * dot(v_extrude, v_extrude); float val = weight * u_intensity * GAUSS_COEF * exp(d); - gl_FragColor = vec4(val, 1.0, 1.0, 1.0); + glFragColor = vec4(val, 1.0, 1.0, 1.0); #ifdef FOG // Globe uses a fixed range and heatmaps preserve @@ -26,12 +26,12 @@ void main() { // Heatmaps work differently than other layers, so we operate on the accumulated // density rather than a final color. The power is chosen so that the density // fades into the fog at a reasonable rate. - gl_FragColor.r *= pow(1.0 - fog_opacity(v_fog_pos), 2.0); + glFragColor.r *= pow(1.0 - fog_opacity(v_fog_pos), 2.0); } #endif #ifdef OVERDRAW_INSPECTOR - gl_FragColor = vec4(1.0); + glFragColor = vec4(1.0); #endif HANDLE_WIREFRAME_DEBUG; diff --git a/src/shaders/heatmap.vertex.glsl b/src/shaders/heatmap.vertex.glsl index 15b493be158..2ab30120661 100644 --- a/src/shaders/heatmap.vertex.glsl +++ b/src/shaders/heatmap.vertex.glsl @@ -6,11 +6,11 @@ uniform float u_extrude_scale; uniform float u_opacity; uniform float u_intensity; -attribute vec2 a_pos; +in vec2 a_pos; #ifdef PROJECTION_GLOBE_VIEW -attribute vec3 a_pos_3; // Projected position on the globe -attribute vec3 a_pos_normal_3; // Surface normal at the position +in vec3 a_pos_3; // Projected position on the globe +in vec3 a_pos_normal_3; // Surface normal at the position // Uniforms required for transition between globe and mercator uniform mat4 u_inv_rot_matrix; @@ -20,7 +20,7 @@ uniform float u_zoom_transition; uniform vec3 u_up_dir; #endif -varying vec2 v_extrude; +out vec2 v_extrude; #pragma mapbox: define highp float weight #pragma mapbox: define mediump float radius @@ -43,7 +43,7 @@ void main(void) { // This 'extrude' comes in ranging from [-1, -1], to [1, 1]. We'll use // it to produce the vertices of a square mesh framing the point feature // we're adding to the kernel density texture. We'll also pass it as - // a varying, so that the fragment shader can determine the distance of + // a out, so that the fragment shader can determine the distance of // each fragment from the point feature. // Before we do so, we need to scale it up sufficiently so that the // kernel falls effectively to zero at the edge of the mesh. @@ -53,7 +53,7 @@ void main(void) { // S = sqrt(-2.0 * log(ZERO / (weight * u_intensity * GAUSS_COEF))) / 3.0 float S = sqrt(-2.0 * log(ZERO / weight / u_intensity / GAUSS_COEF)) / 3.0; - // Pass the varying in units of radius + // Pass the out in units of radius v_extrude = S * unscaled_extrude; // Scale by radius and the zoom-based scale factor to produce actual diff --git a/src/shaders/heatmap_texture.fragment.glsl b/src/shaders/heatmap_texture.fragment.glsl index 5a564bbfe9d..ce2d3e05221 100644 --- a/src/shaders/heatmap_texture.fragment.glsl +++ b/src/shaders/heatmap_texture.fragment.glsl @@ -1,16 +1,16 @@ uniform sampler2D u_image; uniform sampler2D u_color_ramp; uniform float u_opacity; -varying vec2 v_pos; +in vec2 v_pos; void main() { - float t = texture2D(u_image, v_pos).r; - vec4 color = texture2D(u_color_ramp, vec2(t, 0.5)); + float t = texture(u_image, v_pos).r; + vec4 color = texture(u_color_ramp, vec2(t, 0.5)); - gl_FragColor = color * u_opacity; + glFragColor = color * u_opacity; #ifdef OVERDRAW_INSPECTOR - gl_FragColor = vec4(0.0); + glFragColor = vec4(0.0); #endif HANDLE_WIREFRAME_DEBUG; diff --git a/src/shaders/heatmap_texture.vertex.glsl b/src/shaders/heatmap_texture.vertex.glsl index 439877b6e7a..03fdf59482e 100644 --- a/src/shaders/heatmap_texture.vertex.glsl +++ b/src/shaders/heatmap_texture.vertex.glsl @@ -1,5 +1,5 @@ -attribute vec2 a_pos; -varying vec2 v_pos; +in vec2 a_pos; +out vec2 v_pos; void main() { gl_Position = vec4(a_pos, 0, 1); diff --git a/src/shaders/hillshade.fragment.glsl b/src/shaders/hillshade.fragment.glsl index dfe7e85d891..f4c18e8b80f 100644 --- a/src/shaders/hillshade.fragment.glsl +++ b/src/shaders/hillshade.fragment.glsl @@ -2,7 +2,7 @@ #include "_prelude_lighting.glsl" uniform sampler2D u_image; -varying vec2 v_pos; +in vec2 v_pos; uniform vec2 u_latrange; uniform vec2 u_light; @@ -12,7 +12,7 @@ uniform vec4 u_accent; uniform float u_emissive_strength; void main() { - vec4 pixel = texture2D(u_image, v_pos); + vec4 pixel = texture(u_image, v_pos); vec2 deriv = ((pixel.rg * 2.0) - 1.0); @@ -46,17 +46,17 @@ void main() { vec4 accent_color = (1.0 - accent) * u_accent * clamp(intensity * 2.0, 0.0, 1.0); float shade = abs(mod((aspect + azimuth) / PI + 0.5, 2.0) - 1.0); vec4 shade_color = mix(u_shadow, u_highlight, shade) * sin(scaledSlope) * clamp(intensity * 2.0, 0.0, 1.0); - gl_FragColor = accent_color * (1.0 - shade_color.a) + shade_color; + glFragColor = accent_color * (1.0 - shade_color.a) + shade_color; #ifdef LIGHTING_3D_MODE - gl_FragColor = apply_lighting_with_emission_ground(gl_FragColor, u_emissive_strength); + glFragColor = apply_lighting_with_emission_ground(glFragColor, u_emissive_strength); #endif #ifdef FOG - gl_FragColor = fog_dither(fog_apply_premultiplied(gl_FragColor, v_fog_pos)); + glFragColor = fog_dither(fog_apply_premultiplied(glFragColor, v_fog_pos)); #endif #ifdef OVERDRAW_INSPECTOR - gl_FragColor = vec4(1.0); + glFragColor = vec4(1.0); #endif HANDLE_WIREFRAME_DEBUG; diff --git a/src/shaders/hillshade.vertex.glsl b/src/shaders/hillshade.vertex.glsl index 69e8cdb2a9c..44ed6c806bf 100644 --- a/src/shaders/hillshade.vertex.glsl +++ b/src/shaders/hillshade.vertex.glsl @@ -2,10 +2,10 @@ uniform mat4 u_matrix; -attribute vec2 a_pos; -attribute vec2 a_texture_pos; +in vec2 a_pos; +in vec2 a_texture_pos; -varying vec2 v_pos; +out vec2 v_pos; void main() { gl_Position = u_matrix * vec4(a_pos, 0, 1); diff --git a/src/shaders/hillshade_prepare.fragment.glsl b/src/shaders/hillshade_prepare.fragment.glsl index 2272f926c73..9ab1d905abc 100644 --- a/src/shaders/hillshade_prepare.fragment.glsl +++ b/src/shaders/hillshade_prepare.fragment.glsl @@ -1,9 +1,7 @@ -#ifdef GL_ES precision highp float; -#endif uniform sampler2D u_image; -varying vec2 v_pos; +in vec2 v_pos; uniform vec2 u_dimension; uniform float u_zoom; @@ -58,7 +56,7 @@ void main() { (f + g + g + h) - (a + b + b + c) ) / pow(2.0, exaggeration + (19.2562 - u_zoom)); - gl_FragColor = clamp(vec4( + glFragColor = clamp(vec4( deriv.x / 2.0 + 0.5, deriv.y / 2.0 + 0.5, 1.0, diff --git a/src/shaders/hillshade_prepare.vertex.glsl b/src/shaders/hillshade_prepare.vertex.glsl index 582397d6df0..4133d46a575 100644 --- a/src/shaders/hillshade_prepare.vertex.glsl +++ b/src/shaders/hillshade_prepare.vertex.glsl @@ -1,10 +1,10 @@ uniform mat4 u_matrix; uniform vec2 u_dimension; -attribute vec2 a_pos; -attribute vec2 a_texture_pos; +in vec2 a_pos; +in vec2 a_texture_pos; -varying vec2 v_pos; +out vec2 v_pos; void main() { gl_Position = u_matrix * vec4(a_pos, 0, 1); diff --git a/src/shaders/line.fragment.glsl b/src/shaders/line.fragment.glsl index 7b4dba196af..e84f22f2182 100644 --- a/src/shaders/line.fragment.glsl +++ b/src/shaders/line.fragment.glsl @@ -5,14 +5,14 @@ uniform lowp float u_device_pixel_ratio; uniform float u_alpha_discard_threshold; uniform highp vec2 u_trim_offset; -varying vec2 v_width2; -varying vec2 v_normal; -varying float v_gamma_scale; -varying highp vec4 v_uv; +in vec2 v_width2; +in vec2 v_normal; +in float v_gamma_scale; +in highp vec4 v_uv; #ifdef RENDER_LINE_DASH uniform sampler2D u_dash_image; -varying vec2 v_tex; +in vec2 v_tex; #endif #ifdef RENDER_LINE_GRADIENT @@ -56,7 +56,7 @@ void main() { float blur2 = (blur + 1.0 / u_device_pixel_ratio) * v_gamma_scale; float alpha = clamp(min(dist - (v_width2.t - blur2), v_width2.s - dist) / blur2, 0.0, 1.0); #ifdef RENDER_LINE_DASH - float sdfdist = texture2D(u_dash_image, v_tex).a; + float sdfdist = texture(u_dash_image, v_tex).a; float sdfgamma = 1.0 / (2.0 * u_device_pixel_ratio) / dash.z; alpha *= linearstep(0.5 - sdfgamma / floorwidth, 0.5 + sdfgamma / floorwidth, sdfdist); #endif @@ -64,7 +64,7 @@ void main() { highp vec4 out_color; #ifdef RENDER_LINE_GRADIENT // For gradient lines, v_uv.xy are the coord specify where the texture will be simpled. - out_color = texture2D(u_gradient_image, v_uv.xy); + out_color = texture(u_gradient_image, v_uv.xy); #else out_color = color; #endif @@ -133,10 +133,10 @@ void main() { out_color = applyCutout(out_color); #endif - gl_FragColor = out_color; + glFragColor = out_color; #ifdef OVERDRAW_INSPECTOR - gl_FragColor = vec4(1.0); + glFragColor = vec4(1.0); #endif HANDLE_WIREFRAME_DEBUG; diff --git a/src/shaders/line.vertex.glsl b/src/shaders/line.vertex.glsl index 8fab8328b10..2abc326aee1 100644 --- a/src/shaders/line.vertex.glsl +++ b/src/shaders/line.vertex.glsl @@ -8,17 +8,17 @@ // #define scale 63.0 #define EXTRUDE_SCALE 0.015873016 -attribute vec2 a_pos_normal; -attribute vec4 a_data; +in vec2 a_pos_normal; +in vec4 a_data; // Includes in order: a_uv_x, a_split_index, a_clip_start, a_clip_end // to reduce attribute count on older devices. // Only line-gradient and line-trim-offset will requires a_packed info. #if defined(RENDER_LINE_GRADIENT) || defined(RENDER_LINE_TRIM_OFFSET) -attribute highp vec4 a_packed; +in highp vec4 a_packed; #endif #ifdef RENDER_LINE_DASH -attribute float a_linesofar; +in float a_linesofar; #endif uniform mat4 u_matrix; @@ -26,15 +26,15 @@ uniform mat2 u_pixels_to_tile_units; uniform vec2 u_units_to_pixels; uniform lowp float u_device_pixel_ratio; -varying vec2 v_normal; -varying vec2 v_width2; -varying float v_gamma_scale; -varying highp vec4 v_uv; +out vec2 v_normal; +out vec2 v_width2; +out float v_gamma_scale; +out highp vec4 v_uv; #ifdef RENDER_LINE_DASH uniform vec2 u_texsize; uniform float u_tile_units_to_pixels; -varying vec2 v_tex; +out vec2 v_tex; #endif #ifdef RENDER_LINE_GRADIENT diff --git a/src/shaders/line_pattern.fragment.glsl b/src/shaders/line_pattern.fragment.glsl index 5f9e0ff4bab..2902e307fe3 100644 --- a/src/shaders/line_pattern.fragment.glsl +++ b/src/shaders/line_pattern.fragment.glsl @@ -7,11 +7,11 @@ uniform float u_tile_units_to_pixels; uniform sampler2D u_image; -varying vec2 v_normal; -varying vec2 v_width2; -varying float v_linesofar; -varying float v_gamma_scale; -varying float v_width; +in vec2 v_normal; +in vec2 v_width2; +in float v_linesofar; +in float v_gamma_scale; +in float v_width; #pragma mapbox: define lowp vec4 pattern #pragma mapbox: define lowp float pixel_ratio @@ -50,7 +50,7 @@ void main() { vec2 texel_size = 1.0 / u_texsize; vec2 pos = mix(pattern_tl * texel_size - texel_size, pattern_br * texel_size + texel_size, vec2(x, y)); - vec4 color = texture2D(u_image, pos); + vec4 color = texture(u_image, pos); #ifdef LIGHTING_3D_MODE color = apply_lighting_ground(color); @@ -65,10 +65,10 @@ void main() { color = applyCutout(color); #endif - gl_FragColor = color; + glFragColor = color; #ifdef OVERDRAW_INSPECTOR - gl_FragColor = vec4(1.0); + glFragColor = vec4(1.0); #endif HANDLE_WIREFRAME_DEBUG; diff --git a/src/shaders/line_pattern.vertex.glsl b/src/shaders/line_pattern.vertex.glsl index c9147cc66d9..059ffe22f96 100644 --- a/src/shaders/line_pattern.vertex.glsl +++ b/src/shaders/line_pattern.vertex.glsl @@ -8,20 +8,20 @@ // #define scale 63.0 #define scale 0.015873016 -attribute vec2 a_pos_normal; -attribute vec4 a_data; -attribute float a_linesofar; +in vec2 a_pos_normal; +in vec4 a_data; +in float a_linesofar; uniform mat4 u_matrix; uniform vec2 u_units_to_pixels; uniform mat2 u_pixels_to_tile_units; uniform lowp float u_device_pixel_ratio; -varying vec2 v_normal; -varying vec2 v_width2; -varying float v_linesofar; -varying float v_gamma_scale; -varying float v_width; +out vec2 v_normal; +out vec2 v_width2; +out float v_linesofar; +out float v_gamma_scale; +out float v_width; #pragma mapbox: define lowp float blur #pragma mapbox: define lowp float opacity diff --git a/src/shaders/raster.fragment.glsl b/src/shaders/raster.fragment.glsl index f428de72a44..f7a7b260cff 100644 --- a/src/shaders/raster.fragment.glsl +++ b/src/shaders/raster.fragment.glsl @@ -6,9 +6,9 @@ uniform float u_fade_t; uniform float u_opacity; uniform highp float u_raster_elevation; -varying vec2 v_pos0; -varying vec2 v_pos1; -varying float v_depth; +in vec2 v_pos0; +in vec2 v_pos1; +in float v_depth; uniform float u_brightness_low; uniform float u_brightness_high; @@ -59,11 +59,11 @@ void main() { // Divide the scalar value by "alpha" to smoothly fade to no data if (value.y > 0.0) value.x /= value.y; #else - color = mix(texture2D(u_image0, v_pos0), texture2D(u_image1, v_pos1), u_fade_t); + color = mix(texture(u_image0, v_pos0), texture(u_image1, v_pos1), u_fade_t); value = vec2(u_colorization_offset + dot(color.rgb, u_colorization_mix.rgb), color.a); #endif - color = texture2D(u_color_ramp, vec2(value.x, 0.5)); + color = texture(u_color_ramp, vec2(value.x, 0.5)); // Apply input alpha on top of color ramp alpha if (color.a > 0.0) color.rgb /= color.a; @@ -72,8 +72,8 @@ void main() { #else // read and cross-fade colors from the main and parent tiles - color0 = texture2D(u_image0, v_pos0); - color1 = texture2D(u_image1, v_pos1); + color0 = texture(u_image0, v_pos0); + color1 = texture(u_image1, v_pos1); if (color0.a > 0.0) color0.rgb /= color0.a; if (color1.a > 0.0) color1.rgb /= color1.a; @@ -112,14 +112,14 @@ void main() { out_color = fog_dither(fog_apply(out_color, v_fog_pos, fog_limit)); #endif - gl_FragColor = vec4(out_color * color.a, color.a); + glFragColor = vec4(out_color * color.a, color.a); #ifdef RENDER_CUTOFF - gl_FragColor = gl_FragColor * cutoff_opacity(u_cutoff_params, v_depth); + glFragColor = glFragColor * cutoff_opacity(u_cutoff_params, v_depth); #endif #ifdef OVERDRAW_INSPECTOR - gl_FragColor = vec4(1.0); + glFragColor = vec4(1.0); #endif HANDLE_WIREFRAME_DEBUG; diff --git a/src/shaders/raster.vertex.glsl b/src/shaders/raster.vertex.glsl index 02e00536449..bfd8e294e4a 100644 --- a/src/shaders/raster.vertex.glsl +++ b/src/shaders/raster.vertex.glsl @@ -14,31 +14,27 @@ uniform vec4 u_tl_br; uniform float u_zoom_transition; uniform vec2 u_merc_center; +#define GLOBE_UPSCALE GLOBE_RADIUS / 6371008.8; + #ifdef GLOBE_POLES -attribute vec3 a_globe_pos; -attribute vec2 a_uv; +in vec3 a_globe_pos; +in vec2 a_uv; #elif defined(PROJECTION_GLOBE_VIEW) -attribute vec2 a_pos; +in vec2 a_pos; #else -attribute vec2 a_pos; -attribute vec2 a_texture_pos; +in vec2 a_pos; +in vec2 a_texture_pos; #endif -varying vec2 v_pos0; -varying vec2 v_pos1; -varying float v_depth; - -float getGlobeUpScale() { - float earth_radius = 6371008.8; - float globe_radius = EXTENT / HALF_PI; - return globe_radius / earth_radius; -} +out vec2 v_pos0; +out vec2 v_pos1; +out float v_depth; void main() { vec2 uv; #ifdef GLOBE_POLES vec3 globe_pos = a_globe_pos; - globe_pos += normalize(globe_pos) * u_raster_elevation * getGlobeUpScale(); + globe_pos += normalize(globe_pos) * u_raster_elevation * GLOBE_UPSCALE; gl_Position = u_matrix * u_globe_matrix * vec4(globe_pos , 1.0); uv = a_uv; #ifdef FOG @@ -61,7 +57,7 @@ void main() { vec2 merc_pos = vec2(mercatorX, mercatorY); uv = vec2(uvX, uvY); - globe_pos += normalize(globe_pos) * u_raster_elevation * getGlobeUpScale(); + globe_pos += normalize(globe_pos) * u_raster_elevation * GLOBE_UPSCALE; vec4 globe_world_pos = u_globe_matrix * vec4(globe_pos, 1.0); vec4 merc_world_pos = vec4(0.0); diff --git a/src/shaders/shaders.js b/src/shaders/shaders.js index 3638cb8cdce..7431e51908f 100644 --- a/src/shaders/shaders.js +++ b/src/shaders/shaders.js @@ -114,42 +114,8 @@ export const prelude = compile(preludeFrag, preludeVert); export const preludeCommonSource = preludeCommon; export const preludeLightingSource = preludeLighting; -export const preludeVertPrecisionQualifiers = ` -#ifdef GL_ES -precision highp float; -#else - -#if !defined(lowp) -#define lowp -#endif - -#if !defined(mediump) -#define mediump -#endif - -#if !defined(highp) -#define highp -#endif - -#endif`; -export const preludeFragPrecisionQualifiers = ` -#ifdef GL_ES -precision mediump float; -#else - -#if !defined(lowp) -#define lowp -#endif - -#if !defined(mediump) -#define mediump -#endif - -#if !defined(highp) -#define highp -#endif - -#endif`; +export const preludeVertPrecisionQualifiers = `precision highp float;`; +export const preludeFragPrecisionQualifiers = `precision mediump float;`; export default { background: compile(backgroundFrag, backgroundVert), @@ -216,15 +182,18 @@ export function parseUsedPreprocessorDefines(source, defines) { export function compile(fragmentSource, vertexSource) { const includeRegex = /#include\s+"([^"]+)"/g; const pragmaRegex = /#pragma mapbox: ([\w\-]+) ([\w]+) ([\w]+) ([\w]+)/g; - const attributeRegex = /attribute(\S*) (highp |mediump |lowp )?([\w]+) ([\w]+)/g; + const attributeRegex = /(attribute(\S*)|(^\s*|;)in) (highp |mediump |lowp )?([\w]+) ([\w]+)/gm; let staticAttributes = vertexSource.match(attributeRegex); - // remove duplicates as Safari does not support lookbehind in regex - // so we need to get rid of initialize-* expressions + if (staticAttributes) { - staticAttributes = staticAttributes.filter((element, index) => { - return staticAttributes.indexOf(element) === index; + staticAttributes = staticAttributes.map((str) => { + const tokens = str.split(' '); + return tokens[tokens.length - 1]; }); + // remove duplicates as Safari does not support lookbehind in regex + // so we need to get rid of initialize-* expressions + staticAttributes = [...new Set(staticAttributes)]; } const fragmentPragmas = {}; @@ -258,7 +227,7 @@ export function compile(fragmentSource, vertexSource) { if (operation === 'define') { return ` #ifndef HAS_UNIFORM_u_${name} -varying ${precision} ${type} ${name}; +in ${precision} ${type} ${name}; #else uniform ${precision} ${type} u_${name}; #endif @@ -272,7 +241,7 @@ uniform ${precision} ${type} u_${name}; } else if (operation === 'define-attribute') { return ` #ifdef HAS_ATTRIBUTE_a_${name} - varying ${precision} ${type} ${name}; + in ${precision} ${type} ${name}; #endif `; } else if (operation === 'initialize-attribute') { @@ -288,7 +257,7 @@ uniform ${precision} ${type} u_${name}; if (operation === 'define-attribute-vertex-shader-only') { return ` #ifdef HAS_ATTRIBUTE_a_${name} -attribute ${precision} ${type} a_${name}; +in ${precision} ${type} a_${name}; #endif `; } else if (fragmentPragmas[name]) { @@ -296,8 +265,8 @@ attribute ${precision} ${type} a_${name}; return ` #ifndef HAS_UNIFORM_u_${name} uniform lowp float u_${name}_t; -attribute ${precision} ${attrType} a_${name}; -varying ${precision} ${type} ${name}; +in ${precision} ${attrType} a_${name}; +out ${precision} ${type} ${name}; #else uniform ${precision} ${type} u_${name}; #endif @@ -324,8 +293,8 @@ uniform ${precision} ${type} u_${name}; } else if (operation === 'define-attribute') { return ` #ifdef HAS_ATTRIBUTE_a_${name} - attribute ${precision} ${type} a_${name}; - varying ${precision} ${type} ${name}; + in ${precision} ${type} a_${name}; + out ${precision} ${type} ${name}; #endif `; } else if (operation === 'initialize-attribute') { @@ -340,7 +309,7 @@ uniform ${precision} ${type} u_${name}; return ` #ifndef HAS_UNIFORM_u_${name} uniform lowp float u_${name}_t; -attribute ${precision} ${attrType} a_${name}; +in ${precision} ${attrType} a_${name}; #else uniform ${precision} ${type} u_${name}; #endif @@ -349,10 +318,10 @@ uniform ${precision} ${type} u_${name}; if (unpackType === 'mat4') { return ` #ifdef INSTANCED_ARRAYS -attribute vec4 a_${name}0; -attribute vec4 a_${name}1; -attribute vec4 a_${name}2; -attribute vec4 a_${name}3; +in vec4 a_${name}0; +in vec4 a_${name}1; +in vec4 a_${name}2; +in vec4 a_${name}3; #else uniform ${precision} ${type} u_${name}; #endif @@ -360,7 +329,7 @@ uniform ${precision} ${type} u_${name}; } else { return ` #ifdef INSTANCED_ARRAYS -attribute ${precision} ${attrType} a_${name}; +in ${precision} ${attrType} a_${name}; #else uniform ${precision} ${type} u_${name}; #endif diff --git a/src/shaders/skybox.fragment.glsl b/src/shaders/skybox.fragment.glsl index 9e603832143..d3bbf803d10 100644 --- a/src/shaders/skybox.fragment.glsl +++ b/src/shaders/skybox.fragment.glsl @@ -2,7 +2,7 @@ // [1] Banding in games http://loopit.dk/banding_in_games.pdf -varying lowp vec3 v_uv; +in lowp vec3 v_uv; uniform lowp samplerCube u_cubemap; uniform lowp float u_opacity; @@ -42,7 +42,7 @@ void main() { // (0.0,1.0) to (-1.0,1.0) on y. The inverse operation is applied when generating. uv.y = map(uv.y, 0.0, 1.0, -1.0, 1.0); - vec3 sky_color = textureCube(u_cubemap, uv).rgb; + vec3 sky_color = texture(u_cubemap, uv).rgb; #ifdef FOG // Apply fog contribution if enabled @@ -55,9 +55,9 @@ void main() { // Add sun disk sky_color += 0.1 * sun_disk(v_uv, u_sun_direction); - gl_FragColor = vec4(sky_color * u_opacity, u_opacity); + glFragColor = vec4(sky_color * u_opacity, u_opacity); #ifdef OVERDRAW_INSPECTOR - gl_FragColor = vec4(1.0); + glFragColor = vec4(1.0); #endif } diff --git a/src/shaders/skybox.vertex.glsl b/src/shaders/skybox.vertex.glsl index b4d4cfb8932..e2e3afc274c 100644 --- a/src/shaders/skybox.vertex.glsl +++ b/src/shaders/skybox.vertex.glsl @@ -1,8 +1,8 @@ -attribute highp vec3 a_pos_3f; +in highp vec3 a_pos_3f; uniform lowp mat4 u_matrix; -varying highp vec3 v_uv; +out highp vec3 v_uv; void main() { const mat3 half_neg_pi_around_x = mat3(1.0, 0.0, 0.0, diff --git a/src/shaders/skybox_capture.fragment.glsl b/src/shaders/skybox_capture.fragment.glsl index da483aff7b5..92ca1d11fd5 100644 --- a/src/shaders/skybox_capture.fragment.glsl +++ b/src/shaders/skybox_capture.fragment.glsl @@ -2,7 +2,7 @@ // [2] Earth Fact Sheet https://nssdc.gsfc.nasa.gov/planetary/factsheet/earthfact.html // [3] Tonemapping Operators http://filmicworlds.com/blog/filmic-tonemapping-operators -varying highp vec3 v_position; +in highp vec3 v_position; uniform highp float u_sun_intensity; uniform highp float u_luminance; @@ -10,9 +10,7 @@ uniform lowp vec3 u_sun_direction; uniform highp vec4 u_color_tint_r; uniform highp vec4 u_color_tint_m; -#ifdef GL_ES precision highp float; -#endif // [1] equation (1) section 2.1. for λ = (680, 550, 440) nm, // which corresponds to scattering coefficients at sea level @@ -137,5 +135,5 @@ void main() { float white_scale = 1.0748724675633854; // 1.0 / uncharted2_tonemap(1000.0) color = uncharted2_tonemap((log2(2.0 / pow(u_luminance, 4.0))) * color) * white_scale; - gl_FragColor = vec4(color, 1.0); + glFragColor = vec4(color, 1.0); } diff --git a/src/shaders/skybox_capture.vertex.glsl b/src/shaders/skybox_capture.vertex.glsl index 6427e8c1951..202f0a42bb6 100644 --- a/src/shaders/skybox_capture.vertex.glsl +++ b/src/shaders/skybox_capture.vertex.glsl @@ -1,8 +1,8 @@ -attribute highp vec3 a_pos_3f; +in highp vec3 a_pos_3f; uniform mat3 u_matrix_3f; -varying highp vec3 v_position; +out highp vec3 v_position; float map(float value, float start, float end, float new_start, float new_end) { return ((value - start) * (new_end - new_start)) / (end - start) + new_start; diff --git a/src/shaders/skybox_gradient.fragment.glsl b/src/shaders/skybox_gradient.fragment.glsl index 63105808542..422cefefe8e 100644 --- a/src/shaders/skybox_gradient.fragment.glsl +++ b/src/shaders/skybox_gradient.fragment.glsl @@ -1,6 +1,6 @@ #include "_prelude_fog.fragment.glsl" -varying highp vec3 v_uv; +in highp vec3 v_uv; uniform lowp sampler2D u_color_ramp; uniform highp vec3 u_center_direction; @@ -10,7 +10,7 @@ uniform highp float u_temporal_offset; void main() { float progress = acos(dot(normalize(v_uv), u_center_direction)) / u_radius; - vec4 color = texture2D(u_color_ramp, vec2(progress, 0.5)); + vec4 color = texture(u_color_ramp, vec2(progress, 0.5)); #ifdef FOG // Apply fog contribution if enabled, make sure to un/post multiply alpha before/after @@ -24,9 +24,9 @@ void main() { // Dither color.rgb = dither(color.rgb, gl_FragCoord.xy + u_temporal_offset); - gl_FragColor = color; + glFragColor = color; #ifdef OVERDRAW_INSPECTOR - gl_FragColor = vec4(1.0); + glFragColor = vec4(1.0); #endif } diff --git a/src/shaders/stars.fragment.glsl b/src/shaders/stars.fragment.glsl index 19c36c57add..54519b95edf 100644 --- a/src/shaders/stars.fragment.glsl +++ b/src/shaders/stars.fragment.glsl @@ -1,5 +1,5 @@ -varying highp vec2 v_uv; -varying mediump float v_intensity; +in highp vec2 v_uv; +in mediump float v_intensity; // TODO: // - check other shapes compared to circle, e.g. astroid @@ -30,7 +30,7 @@ void main() { float alpha = shapeCircle(v_uv); vec3 color = vec3(1.0, 1.0, 1.0); alpha *= v_intensity; - gl_FragColor = vec4(color * alpha, alpha); + glFragColor = vec4(color * alpha, alpha); HANDLE_WIREFRAME_DEBUG; } diff --git a/src/shaders/stars.vertex.glsl b/src/shaders/stars.vertex.glsl index e72dddbbc92..0266e1e6252 100644 --- a/src/shaders/stars.vertex.glsl +++ b/src/shaders/stars.vertex.glsl @@ -1,11 +1,11 @@ // Position -attribute vec3 a_pos_3f; +in vec3 a_pos_3f; // Offset from center ([-1, -1], ...) -attribute vec2 a_uv; +in vec2 a_uv; // Per-star size multiplier -attribute float a_size_scale; +in float a_size_scale; // Per-star transparency multiplier -attribute float a_fade_opacity; +in float a_fade_opacity; // mvp uniform mat4 u_matrix; @@ -17,8 +17,8 @@ uniform vec3 u_right; // Global stars transparency multiplier uniform float u_intensity_multiplier; -varying highp vec2 v_uv; -varying mediump float v_intensity; +out highp vec2 v_uv; +out mediump float v_intensity; void main() { v_uv = a_uv; diff --git a/src/shaders/symbol_icon.fragment.glsl b/src/shaders/symbol_icon.fragment.glsl index f7189427ce3..da28f1dc41f 100644 --- a/src/shaders/symbol_icon.fragment.glsl +++ b/src/shaders/symbol_icon.fragment.glsl @@ -5,10 +5,10 @@ uniform sampler2D u_texture; uniform float u_icon_transition; #endif -varying float v_fade_opacity; -varying vec2 v_tex_a; +in float v_fade_opacity; +in vec2 v_tex_a; #ifdef ICON_TRANSITION -varying vec2 v_tex_b; +in vec2 v_tex_b; #endif #pragma mapbox: define lowp float opacity @@ -22,21 +22,21 @@ void main() { vec4 out_color; #ifdef ICON_TRANSITION - vec4 a = texture2D(u_texture, v_tex_a) * (1.0 - u_icon_transition); - vec4 b = texture2D(u_texture, v_tex_b) * u_icon_transition; + vec4 a = texture(u_texture, v_tex_a) * (1.0 - u_icon_transition); + vec4 b = texture(u_texture, v_tex_b) * u_icon_transition; out_color = (a + b) * alpha; #else - out_color = texture2D(u_texture, v_tex_a) * alpha; + out_color = texture(u_texture, v_tex_a) * alpha; #endif #ifdef LIGHTING_3D_MODE out_color = apply_lighting_with_emission_ground(out_color, emissive_strength); #endif - gl_FragColor = out_color; + glFragColor = out_color; #ifdef OVERDRAW_INSPECTOR - gl_FragColor = vec4(1.0); + glFragColor = vec4(1.0); #endif HANDLE_WIREFRAME_DEBUG; diff --git a/src/shaders/symbol_icon.vertex.glsl b/src/shaders/symbol_icon.vertex.glsl index 715415935aa..7e734f1df8f 100644 --- a/src/shaders/symbol_icon.vertex.glsl +++ b/src/shaders/symbol_icon.vertex.glsl @@ -1,19 +1,19 @@ #include "_prelude_terrain.vertex.glsl" -attribute vec4 a_pos_offset; -attribute vec4 a_tex_size; -attribute vec4 a_pixeloffset; -attribute vec4 a_projected_pos; -attribute float a_fade_opacity; +in vec4 a_pos_offset; +in vec4 a_tex_size; +in vec4 a_pixeloffset; +in vec4 a_projected_pos; +in float a_fade_opacity; #ifdef Z_OFFSET -attribute float a_z_offset; +in float a_z_offset; #endif #ifdef PROJECTION_GLOBE_VIEW -attribute vec3 a_globe_anchor; -attribute vec3 a_globe_normal; +in vec3 a_globe_anchor; +in vec3 a_globe_normal; #endif #ifdef ICON_TRANSITION -attribute vec2 a_texb; +in vec2 a_texb; #endif uniform bool u_is_size_zoom_constant; @@ -45,11 +45,11 @@ uniform vec3 u_ecef_origin; uniform mat4 u_tile_matrix; #endif -varying vec2 v_tex_a; +out vec2 v_tex_a; #ifdef ICON_TRANSITION -varying vec2 v_tex_b; +out vec2 v_tex_b; #endif -varying float v_fade_opacity; +out float v_fade_opacity; #pragma mapbox: define lowp float opacity #pragma mapbox: define lowp float emissive_strength diff --git a/src/shaders/symbol_sdf.fragment.glsl b/src/shaders/symbol_sdf.fragment.glsl index d6165acec27..13b1a8a7aba 100644 --- a/src/shaders/symbol_sdf.fragment.glsl +++ b/src/shaders/symbol_sdf.fragment.glsl @@ -8,11 +8,9 @@ uniform lowp float u_device_pixel_ratio; uniform bool u_is_text; uniform bool u_is_halo; -#if __VERSION__ >= 300 -flat varying float v_draw_halo; -#endif -varying vec2 v_data0; -varying vec3 v_data1; +flat in float v_draw_halo; +in vec2 v_data0; +in vec3 v_data1; #pragma mapbox: define highp vec4 fill_color #pragma mapbox: define highp vec4 halo_color @@ -42,19 +40,14 @@ void main() { highp float gamma = EDGE_GAMMA / (fontScale * u_gamma_scale); lowp float buff = (256.0 - 64.0) / 256.0; - bool draw_halo; -#if __VERSION__ >= 300 - draw_halo = v_draw_halo > 0.0; -#else - draw_halo = u_is_halo; -#endif + bool draw_halo = v_draw_halo > 0.0; if (draw_halo) { color = halo_color; gamma = (halo_blur * 1.19 / SDF_PX + EDGE_GAMMA) / (fontScale * u_gamma_scale); buff = (6.0 - halo_width / fontScale) / SDF_PX; } - lowp float dist = texture2D(u_texture, tex).a; + lowp float dist = texture(u_texture, tex).a; highp float gamma_scaled = gamma * gamma_scale; highp float alpha = smoothstep(buff - gamma_scaled, buff + gamma_scaled, dist); @@ -64,10 +57,10 @@ void main() { out_color = apply_lighting_with_emission_ground(out_color, emissive_strength); #endif - gl_FragColor = out_color; + glFragColor = out_color; #ifdef OVERDRAW_INSPECTOR - gl_FragColor = vec4(1.0); + glFragColor = vec4(1.0); #endif HANDLE_WIREFRAME_DEBUG; diff --git a/src/shaders/symbol_sdf.vertex.glsl b/src/shaders/symbol_sdf.vertex.glsl index 5629aa16a1a..c1ba4f11a5f 100644 --- a/src/shaders/symbol_sdf.vertex.glsl +++ b/src/shaders/symbol_sdf.vertex.glsl @@ -1,16 +1,16 @@ #include "_prelude_terrain.vertex.glsl" -attribute vec4 a_pos_offset; -attribute vec4 a_tex_size; -attribute vec4 a_pixeloffset; -attribute vec4 a_projected_pos; -attribute float a_fade_opacity; +in vec4 a_pos_offset; +in vec4 a_tex_size; +in vec4 a_pixeloffset; +in vec4 a_projected_pos; +in float a_fade_opacity; #ifdef Z_OFFSET -attribute float a_z_offset; +in float a_z_offset; #endif #ifdef PROJECTION_GLOBE_VIEW -attribute vec3 a_globe_anchor; -attribute vec3 a_globe_normal; +in vec3 a_globe_anchor; +in vec3 a_globe_normal; #endif // contents of a_size vary based on the type of property value @@ -47,11 +47,9 @@ uniform vec3 u_ecef_origin; uniform mat4 u_tile_matrix; #endif -#if __VERSION__ >= 300 -flat varying float v_draw_halo; -#endif -varying vec2 v_data0; -varying vec3 v_data1; +flat out float v_draw_halo; +out vec2 v_data0; +out vec3 v_data1; #pragma mapbox: define highp vec4 fill_color #pragma mapbox: define highp vec4 halo_color @@ -196,10 +194,8 @@ void main() { #endif float gamma_scale = gl_Position.w; -#if __VERSION__ >= 300 // Cast to float is required to fix a rendering error in Swiftshader v_draw_halo = (u_is_halo && float(gl_InstanceID) == 0.0) ? 1.0 : 0.0; -#endif v_data0 = a_tex / u_texsize; v_data1 = vec3(gamma_scale, size, out_fade_opacity); diff --git a/src/shaders/symbol_text_and_icon.fragment.glsl b/src/shaders/symbol_text_and_icon.fragment.glsl index 266ceb35177..7654498c48c 100644 --- a/src/shaders/symbol_text_and_icon.fragment.glsl +++ b/src/shaders/symbol_text_and_icon.fragment.glsl @@ -11,11 +11,9 @@ uniform highp float u_gamma_scale; uniform lowp float u_device_pixel_ratio; uniform bool u_is_halo; -#if __VERSION__ >= 300 -flat varying float v_draw_halo; -#endif -varying vec4 v_data0; -varying vec4 v_data1; +flat in float v_draw_halo; +in vec4 v_data0; +in vec4 v_data1; #pragma mapbox: define highp vec4 fill_color #pragma mapbox: define highp vec4 halo_color @@ -37,10 +35,10 @@ void main() { if (v_data1.w == ICON) { vec2 tex_icon = v_data0.zw; lowp float alpha = opacity * fade_opacity; - gl_FragColor = texture2D(u_texture_icon, tex_icon) * alpha; + glFragColor = texture(u_texture_icon, tex_icon) * alpha; #ifdef OVERDRAW_INSPECTOR - gl_FragColor = vec4(1.0); + glFragColor = vec4(1.0); #endif return; } @@ -58,19 +56,14 @@ void main() { highp float gamma = EDGE_GAMMA / (fontScale * u_gamma_scale); lowp float buff = (256.0 - 64.0) / 256.0; - bool draw_halo; -#if __VERSION__ >= 300 - draw_halo = v_draw_halo > 0.0; -#else - draw_halo = u_is_halo; -#endif + bool draw_halo = v_draw_halo > 0.0; if (draw_halo) { color = halo_color; gamma = (halo_blur * 1.19 / SDF_PX + EDGE_GAMMA) / (fontScale * u_gamma_scale); buff = (6.0 - halo_width / fontScale) / SDF_PX; } - lowp float dist = texture2D(u_texture, tex).a; + lowp float dist = texture(u_texture, tex).a; highp float gamma_scaled = gamma * gamma_scale; highp float alpha = smoothstep(buff - gamma_scaled, buff + gamma_scaled, dist); @@ -80,10 +73,10 @@ void main() { out_color = apply_lighting_with_emission_ground(out_color, emissive_strength); #endif - gl_FragColor = out_color; + glFragColor = out_color; #ifdef OVERDRAW_INSPECTOR - gl_FragColor = vec4(1.0); + glFragColor = vec4(1.0); #endif HANDLE_WIREFRAME_DEBUG; diff --git a/src/shaders/symbol_text_and_icon.vertex.glsl b/src/shaders/symbol_text_and_icon.vertex.glsl index 7ef283181a5..ecb9dde6587 100644 --- a/src/shaders/symbol_text_and_icon.vertex.glsl +++ b/src/shaders/symbol_text_and_icon.vertex.glsl @@ -1,15 +1,15 @@ #include "_prelude_terrain.vertex.glsl" -attribute vec4 a_pos_offset; -attribute vec4 a_tex_size; -attribute vec4 a_projected_pos; -attribute float a_fade_opacity; +in vec4 a_pos_offset; +in vec4 a_tex_size; +in vec4 a_projected_pos; +in float a_fade_opacity; #ifdef Z_OFFSET -attribute float a_z_offset; +in float a_z_offset; #endif #ifdef PROJECTION_GLOBE_VIEW -attribute vec3 a_globe_anchor; -attribute vec3 a_globe_normal; +in vec3 a_globe_anchor; +in vec3 a_globe_normal; #endif // contents of a_size vary based on the type of property value @@ -47,11 +47,9 @@ uniform vec3 u_ecef_origin; uniform mat4 u_tile_matrix; #endif -#if __VERSION__ >= 300 -flat varying float v_draw_halo; -#endif -varying vec4 v_data0; -varying vec4 v_data1; +flat out float v_draw_halo; +out vec4 v_data0; +out vec4 v_data1; #pragma mapbox: define highp vec4 fill_color #pragma mapbox: define highp vec4 halo_color @@ -190,10 +188,8 @@ void main() { #endif float gamma_scale = gl_Position.w; -#if __VERSION__ >= 300 // Cast to float is required to fix a rendering error in Swiftshader v_draw_halo = (u_is_halo && float(gl_InstanceID) == 0.0) ? 1.0 : 0.0; -#endif v_data0.xy = a_tex / u_texsize; v_data0.zw = a_tex / u_texsize_icon; diff --git a/src/shaders/terrain_depth.fragment.glsl b/src/shaders/terrain_depth.fragment.glsl index 064ef75ff7a..004bce42d48 100644 --- a/src/shaders/terrain_depth.fragment.glsl +++ b/src/shaders/terrain_depth.fragment.glsl @@ -1,9 +1,7 @@ -#ifdef GL_ES precision highp float; -#endif -varying float v_depth; +in float v_depth; void main() { - gl_FragColor = pack_depth(v_depth); + glFragColor = pack_depth(v_depth); } diff --git a/src/shaders/terrain_depth.vertex.glsl b/src/shaders/terrain_depth.vertex.glsl index 3c87f9a65fd..f2ebb5cdc73 100644 --- a/src/shaders/terrain_depth.vertex.glsl +++ b/src/shaders/terrain_depth.vertex.glsl @@ -1,12 +1,12 @@ #include "_prelude_terrain.vertex.glsl" uniform mat4 u_matrix; -attribute vec2 a_pos; +in vec2 a_pos; -varying float v_depth; +out float v_depth; void main() { float elevation = elevation(a_pos); gl_Position = u_matrix * vec4(a_pos, elevation, 1.0); v_depth = gl_Position.z / gl_Position.w; -} \ No newline at end of file +} diff --git a/src/shaders/terrain_raster.fragment.glsl b/src/shaders/terrain_raster.fragment.glsl index 86f5e066508..48729e5b386 100644 --- a/src/shaders/terrain_raster.fragment.glsl +++ b/src/shaders/terrain_raster.fragment.glsl @@ -3,22 +3,22 @@ #include "_prelude_lighting.glsl" uniform sampler2D u_image0; -varying vec2 v_pos0; +in vec2 v_pos0; #ifdef FOG -varying float v_fog_opacity; +in float v_fog_opacity; #endif #ifdef RENDER_SHADOWS -varying vec4 v_pos_light_view_0; -varying vec4 v_pos_light_view_1; -varying float v_depth; +in vec4 v_pos_light_view_0; +in vec4 v_pos_light_view_1; +in float v_depth; #endif uniform vec3 u_ground_shadow_factor; void main() { - vec4 image_color = texture2D(u_image0, v_pos0); + vec4 image_color = texture(u_image0, v_pos0); vec4 color; #ifdef LIGHTING_3D_MODE @@ -68,9 +68,9 @@ void main() { color = fog_dither(fog_apply_from_vert(color, v_fog_opacity)); #endif #endif - gl_FragColor = color; + glFragColor = color; #ifdef OVERDRAW_INSPECTOR - gl_FragColor = vec4(1.0); + glFragColor = vec4(1.0); #endif HANDLE_WIREFRAME_DEBUG; diff --git a/src/shaders/terrain_raster.vertex.glsl b/src/shaders/terrain_raster.vertex.glsl index b92cfb0528e..40e319158fb 100644 --- a/src/shaders/terrain_raster.vertex.glsl +++ b/src/shaders/terrain_raster.vertex.glsl @@ -4,20 +4,20 @@ uniform mat4 u_matrix; uniform float u_skirt_height; -attribute vec2 a_pos; +in vec2 a_pos; -varying vec2 v_pos0; +out vec2 v_pos0; #ifdef FOG -varying float v_fog_opacity; +out float v_fog_opacity; #endif #ifdef RENDER_SHADOWS uniform mat4 u_light_matrix_0; uniform mat4 u_light_matrix_1; -varying vec4 v_pos_light_view_0; -varying vec4 v_pos_light_view_1; -varying float v_depth; +out vec4 v_pos_light_view_0; +out vec4 v_pos_light_view_1; +out float v_depth; #endif void main() { From 6d05e5f70ee89cdca3589b593bad75540ff0fe76 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Jan 2024 11:34:09 +0200 Subject: [PATCH 02/25] Bump postcss from 8.4.32 to 8.4.33 (internal-1032) Bumps [postcss](https://github.com/postcss/postcss) from 8.4.32 to 8.4.33. - [Release notes](https://github.com/postcss/postcss/releases) - [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/postcss/postcss/compare/8.4.32...8.4.33) --- updated-dependencies: - dependency-name: postcss dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 6f757cdae35..356b8b4f50f 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,7 @@ "npm-run-all": "^4.1.5", "nyc": "^15.1.0", "pixelmatch": "^5.3.0", - "postcss": "^8.4.32", + "postcss": "^8.4.33", "postcss-cli": "^11.0.0", "postcss-inline-svg": "^6.0.0", "pretty-bytes": "^6.0.0", diff --git a/yarn.lock b/yarn.lock index 56ccce9b2be..a6c04c63af3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6601,10 +6601,10 @@ postcss-value-parser@^4.2.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.4.28, postcss@^8.4.32: - version "8.4.32" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.32.tgz#1dac6ac51ab19adb21b8b34fd2d93a86440ef6c9" - integrity sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw== +postcss@^8.4.28, postcss@^8.4.33: + version "8.4.33" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.33.tgz#1378e859c9f69bf6f638b990a0212f43e2aaa742" + integrity sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg== dependencies: nanoid "^3.3.7" picocolors "^1.0.0" From f15213690ec0e6c3d8fd3c18921521e446bff439 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Jan 2024 11:34:20 +0200 Subject: [PATCH 03/25] Bump puppeteer-core from 21.6.1 to 21.7.0 (internal-1031) Bumps [puppeteer-core](https://github.com/puppeteer/puppeteer) from 21.6.1 to 21.7.0. - [Release notes](https://github.com/puppeteer/puppeteer/releases) - [Changelog](https://github.com/puppeteer/puppeteer/blob/main/release-please-config.json) - [Commits](https://github.com/puppeteer/puppeteer/compare/puppeteer-core-v21.6.1...puppeteer-core-v21.7.0) --- updated-dependencies: - dependency-name: puppeteer-core dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 38 +++++++++++++++++++------------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 356b8b4f50f..0e4b721319e 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,7 @@ "postcss-cli": "^11.0.0", "postcss-inline-svg": "^6.0.0", "pretty-bytes": "^6.0.0", - "puppeteer-core": "^21.6.1", + "puppeteer-core": "^21.7.0", "qrcode-terminal": "^0.12.0", "rollup": "3.29.4", "rollup-plugin-sourcemaps": "^0.6.3", diff --git a/yarn.lock b/yarn.lock index a6c04c63af3..96716dbcdcc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -720,10 +720,10 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@puppeteer/browsers@1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@puppeteer/browsers/-/browsers-1.9.0.tgz#dfd0aad0bdc039572f1b57648f189525d627b7ff" - integrity sha512-QwguOLy44YBGC8vuPP2nmpX4MUN2FzWbsnvZJtiCzecU3lHmVZkaC1tq6rToi9a200m8RzlVtDyxCS0UIDrxUg== +"@puppeteer/browsers@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@puppeteer/browsers/-/browsers-1.9.1.tgz#384ee8b09786f0e8f62b1925e4c492424cb549ee" + integrity sha512-PuvK6xZzGhKPvlx3fpfdM2kYY3P/hB1URtK8wA7XUJ6prn6pp22zvJHu48th0SGcHL9SutbPHrFuQgfXTFobWA== dependencies: debug "4.3.4" extract-zip "2.0.1" @@ -1950,10 +1950,10 @@ chownr@^2.0.0: resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== -chromium-bidi@0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/chromium-bidi/-/chromium-bidi-0.5.1.tgz#390c1af350c4887824a33d82190de1cc5c5680fc" - integrity sha512-dcCqOgq9fHKExc2R4JZs/oKbOghWpUNFAJODS8WKRtLhp3avtIH5UDCBrutdqZdh3pARogH8y1ObXm87emwb3g== +chromium-bidi@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/chromium-bidi/-/chromium-bidi-0.5.2.tgz#358b03bb7c53e0f8d0fd77d596ea67ee30f7ff06" + integrity sha512-PbVOSddxgKyj+JByqavWMNqWPCoCaT6XK5Z1EFe168sxnB/BM51LnZEPXSbFcFAJv/+u2B4XNTs9uXxy4GW3cQ== dependencies: mitt "3.0.1" urlpattern-polyfill "9.0.0" @@ -6770,17 +6770,17 @@ punycode@^2.0.0, punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -puppeteer-core@^21.6.1: - version "21.6.1" - resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-21.6.1.tgz#10eccb4dc3167c8c26bc21122fabb45a9fda9ca7" - integrity sha512-0chaaK/RL9S1U3bsyR4fUeUfoj51vNnjWvXgG6DcsyMjwYNpLcAThv187i1rZCo7QhJP0wZN8plQkjNyrq2h+A== +puppeteer-core@^21.7.0: + version "21.7.0" + resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-21.7.0.tgz#c0abb98cbd17dbd7ee317b4257958337fa25d2c7" + integrity sha512-elPYPozrgiM3phSy7VDUJCVWQ07SPnOm78fpSaaSNFoQx5sur/MqhTSro9Wz8lOEjqCykGC6WRkwxDgmqcy1dQ== dependencies: - "@puppeteer/browsers" "1.9.0" - chromium-bidi "0.5.1" + "@puppeteer/browsers" "1.9.1" + chromium-bidi "0.5.2" cross-fetch "4.0.0" debug "4.3.4" devtools-protocol "0.0.1203626" - ws "8.15.1" + ws "8.16.0" qrcode-terminal@^0.12.0: version "0.12.0" @@ -8966,10 +8966,10 @@ write-file-atomic@^5.0.1: imurmurhash "^0.1.4" signal-exit "^4.0.1" -ws@8.15.1, ws@>=8.14.2: - version "8.15.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.15.1.tgz#271ba33a45ca0cc477940f7f200cd7fba7ee1997" - integrity sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ== +ws@8.16.0, ws@>=8.14.2: + version "8.16.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.16.0.tgz#d1cd774f36fbc07165066a60e40323eab6446fd4" + integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== ws@^7, ws@^7.0.0, ws@^7.5.5: version "7.5.9" From 90dc8924c164c2136eaa9039a3044f1da3702464 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Jan 2024 11:34:29 +0200 Subject: [PATCH 04/25] Bump cssnano from 6.0.2 to 6.0.3 (internal-1029) Bumps [cssnano](https://github.com/cssnano/cssnano) from 6.0.2 to 6.0.3. - [Release notes](https://github.com/cssnano/cssnano/releases) - [Commits](https://github.com/cssnano/cssnano/compare/cssnano@6.0.2...cssnano@6.0.3) --- updated-dependencies: - dependency-name: cssnano dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 207 ++++++++++++++++++++++++--------------------------- 2 files changed, 97 insertions(+), 112 deletions(-) diff --git a/package.json b/package.json index 0e4b721319e..65c1a6e469c 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "chalk": "^5.0.1", "chokidar": "^3.5.3", "cross-env": "^7.0.3", - "cssnano": "^6.0.2", + "cssnano": "^6.0.3", "d3-queue": "^3.0.7", "diff": "^5.1.0", "ejs": "^3.1.8", diff --git a/yarn.lock b/yarn.lock index 96716dbcdcc..52464ad8a91 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1684,16 +1684,6 @@ browserslist@^4.0.0: node-releases "^2.0.6" update-browserslist-db "^1.0.5" -browserslist@^4.21.4: - version "4.21.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987" - integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw== - dependencies: - caniuse-lite "^1.0.30001400" - electron-to-chromium "^1.4.251" - node-releases "^2.0.6" - update-browserslist-db "^1.0.9" - browserslist@^4.22.2: version "4.22.2" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.2.tgz#704c4943072bd81ea18997f3bd2180e89c77874b" @@ -1860,7 +1850,7 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001370, caniuse-lite@^1.0.30001400: +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001370: version "1.0.30001489" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001489.tgz" integrity sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ== @@ -2322,7 +2312,7 @@ crypto-browserify@^3.0.0: randombytes "^2.0.0" randomfill "^1.0.3" -css-declaration-sorter@^7.0.0: +css-declaration-sorter@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-7.1.1.tgz#9796bcc257b4647c39993bda8d431ce32b666f80" integrity sha512-dZ3bVTEEc1vxr3Bek9vGwfB5Z6ESPULhcRvO472mfjVnj8jRcTnKO8/JTczlvxM10Myb+wBM++1MtdO76eWcaQ== @@ -2343,7 +2333,7 @@ css-select@^5.1.0: domutils "^3.0.1" nth-check "^2.0.1" -css-tree@^2.2.1, css-tree@^2.3.1: +css-tree@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== @@ -2374,55 +2364,55 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-default@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-6.0.2.tgz#0cc13e2da462b0d1632b1ebea4af78e7484592e8" - integrity sha512-VnZybFeZ63AiVqIUNlxqMxpj9VU8B5j0oKgP7WyVt/7mkyf97KsYkNzsPTV/RVmy54Pg7cBhOK4WATbdCB44gw== +cssnano-preset-default@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-6.0.3.tgz#b4ce755974f4dc8d3d09ac13bb6281cce3ced45e" + integrity sha512-4y3H370aZCkT9Ev8P4SO4bZbt+AExeKhh8wTbms/X7OLDo5E7AYUUy6YPxa/uF5Grf+AJwNcCnxKhZynJ6luBA== dependencies: - css-declaration-sorter "^7.0.0" + css-declaration-sorter "^7.1.1" cssnano-utils "^4.0.1" postcss-calc "^9.0.1" - postcss-colormin "^6.0.1" - postcss-convert-values "^6.0.1" + postcss-colormin "^6.0.2" + postcss-convert-values "^6.0.2" postcss-discard-comments "^6.0.1" postcss-discard-duplicates "^6.0.1" postcss-discard-empty "^6.0.1" postcss-discard-overridden "^6.0.1" - postcss-merge-longhand "^6.0.1" - postcss-merge-rules "^6.0.2" + postcss-merge-longhand "^6.0.2" + postcss-merge-rules "^6.0.3" postcss-minify-font-values "^6.0.1" postcss-minify-gradients "^6.0.1" - postcss-minify-params "^6.0.1" - postcss-minify-selectors "^6.0.1" + postcss-minify-params "^6.0.2" + postcss-minify-selectors "^6.0.2" postcss-normalize-charset "^6.0.1" postcss-normalize-display-values "^6.0.1" postcss-normalize-positions "^6.0.1" postcss-normalize-repeat-style "^6.0.1" postcss-normalize-string "^6.0.1" postcss-normalize-timing-functions "^6.0.1" - postcss-normalize-unicode "^6.0.1" + postcss-normalize-unicode "^6.0.2" postcss-normalize-url "^6.0.1" postcss-normalize-whitespace "^6.0.1" postcss-ordered-values "^6.0.1" - postcss-reduce-initial "^6.0.1" + postcss-reduce-initial "^6.0.2" postcss-reduce-transforms "^6.0.1" - postcss-svgo "^6.0.1" - postcss-unique-selectors "^6.0.1" + postcss-svgo "^6.0.2" + postcss-unique-selectors "^6.0.2" cssnano-utils@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-4.0.1.tgz#fd18b42f95938bf55ab47967705355d6047bf1da" integrity sha512-6qQuYDqsGoiXssZ3zct6dcMxiqfT6epy7x4R0TQJadd4LWO3sPR6JH6ZByOvVLoZ6EdwPGgd7+DR1EmX3tiXQQ== -cssnano@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-6.0.2.tgz#7b49d60ce51e1dea3d569795f751ee49e97124c9" - integrity sha512-Tu9wv8UdN6CoiQnIVkCNvi+0rw/BwFWOJBlg2bVfEyKaadSuE3Gq/DD8tniVvggTJGwK88UjqZp7zL5sv6t1aA== +cssnano@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-6.0.3.tgz#46db972da71aa159437287fb4c6bc9c5d3cc5d93" + integrity sha512-MRq4CIj8pnyZpcI2qs6wswoYoDD1t0aL28n+41c1Ukcpm56m1h6mCexIHBGjfZfnTqtGSSCP4/fB1ovxgjBOiw== dependencies: - cssnano-preset-default "^6.0.2" + cssnano-preset-default "^6.0.3" lilconfig "^3.0.0" -csso@5.0.5: +csso@^5.0.5: version "5.0.5" resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6" integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== @@ -2830,11 +2820,6 @@ electron-to-chromium@^1.4.202: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.233.tgz#aa142e45468bda111b88abc9cc59d573b75d6a60" integrity sha512-ejwIKXTg1wqbmkcRJh9Ur3hFGHFDZDw1POzdsVrB2WZjgRuRMHIQQKNpe64N/qh3ZtH2otEoRoS+s6arAAuAAw== -electron-to-chromium@^1.4.251: - version "1.4.254" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.254.tgz#c6203583890abf88dfc0be046cd72d3b48f8beb6" - integrity sha512-Sh/7YsHqQYkA6ZHuHMy24e6TE4eX6KZVsZb9E/DvU1nQRIrH4BflO/4k+83tfdYvDl+MObvlqHPRICzEdC9c6Q== - electron-to-chromium@^1.4.601: version "1.4.610" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.610.tgz#e17b22203f4aa2e1ed77759c720546d95a51186f" @@ -6364,22 +6349,22 @@ postcss-cli@^11.0.0: slash "^5.0.0" yargs "^17.0.0" -postcss-colormin@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-6.0.1.tgz#3aa61d38a88dbdeeb7252fae67809a7ac547a129" - integrity sha512-Tb9aR2wCJCzKuNjIeMzVNd0nXjQy25HDgFmmaRsHnP0eP/k8uQWE4S8voX5S2coO5CeKrp+USFs1Ayv9Tpxx6w== +postcss-colormin@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-6.0.2.tgz#2af9ce753937b08e058dbc6879e4aedfab42806b" + integrity sha512-TXKOxs9LWcdYo5cgmcSHPkyrLAh86hX1ijmyy6J8SbOhyv6ua053M3ZAM/0j44UsnQNIWdl8gb5L7xX2htKeLw== dependencies: - browserslist "^4.21.4" + browserslist "^4.22.2" caniuse-api "^3.0.0" colord "^2.9.1" postcss-value-parser "^4.2.0" -postcss-convert-values@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-6.0.1.tgz#a1451cb7e53b67b3db95c37276c5decb997409f2" - integrity sha512-zTd4Vh0HxGkhg5aHtfCogcRHzGkvblfdWlQ53lIh1cJhYcGyIxh2hgtKoVh40AMktRERet+JKdB04nNG19kjmA== +postcss-convert-values@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-6.0.2.tgz#c4a7509aeb1cc7ac3f6948fcbffc2bf8cac7c56a" + integrity sha512-aeBmaTnGQ+NUSVQT8aY0sKyAD/BaLJenEKZ03YK0JnDE1w1Rr8XShoxdal2V2H26xTJKr3v5haByOhJuyT4UYw== dependencies: - browserslist "^4.21.4" + browserslist "^4.22.2" postcss-value-parser "^4.2.0" postcss-discard-comments@^6.0.1: @@ -6420,23 +6405,23 @@ postcss-load-config@^5.0.0: lilconfig "^3.0.0" yaml "^2.3.4" -postcss-merge-longhand@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-6.0.1.tgz#5a1145868c615e643ca0996d9e9c3f09ad8de854" - integrity sha512-vmr/HZQzaPXc45FRvSctqFTF05UaDnTn5ABX+UtQPJznDWT/QaFbVc/pJ5C2YPxx2J2XcfmWowlKwtCDwiQ5hA== +postcss-merge-longhand@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-6.0.2.tgz#cd4e83014851da59545e9a906b245615550f4064" + integrity sha512-+yfVB7gEM8SrCo9w2lCApKIEzrTKl5yS1F4yGhV3kSim6JzbfLGJyhR1B6X+6vOT0U33Mgx7iv4X9MVWuaSAfw== dependencies: postcss-value-parser "^4.2.0" - stylehacks "^6.0.1" + stylehacks "^6.0.2" -postcss-merge-rules@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-6.0.2.tgz#b0f0063a05d671b7093a86f0faa6d2c6695dc036" - integrity sha512-6lm8bl0UfriSfxI+F/cezrebqqP8w702UC6SjZlUlBYwuRVNbmgcJuQU7yePIvD4MNT53r/acQCUAyulrpgmeQ== +postcss-merge-rules@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-6.0.3.tgz#08fcf714faaad75b1980ecd961b080ae2f8ddeb3" + integrity sha512-yfkDqSHGohy8sGYIJwBmIGDv4K4/WrJPX355XrxQb/CSsT4Kc/RxDi6akqn5s9bap85AWgv21ArcUWwWdGNSHA== dependencies: - browserslist "^4.21.4" + browserslist "^4.22.2" caniuse-api "^3.0.0" cssnano-utils "^4.0.1" - postcss-selector-parser "^6.0.5" + postcss-selector-parser "^6.0.15" postcss-minify-font-values@^6.0.1: version "6.0.1" @@ -6454,21 +6439,21 @@ postcss-minify-gradients@^6.0.1: cssnano-utils "^4.0.1" postcss-value-parser "^4.2.0" -postcss-minify-params@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-6.0.1.tgz#79b83947bae2aa991df12646c7f463276abb0aef" - integrity sha512-eFvGWArqh4khPIgPDu6SZNcaLctx97nO7c59OXnRtGntAp5/VS4gjMhhW9qUFsK6mQ27pEZGt2kR+mPizI+Z9g== +postcss-minify-params@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-6.0.2.tgz#bd64af642fa5610281b8a9461598bbb91f92ae05" + integrity sha512-zwQtbrPEBDj+ApELZ6QylLf2/c5zmASoOuA4DzolyVGdV38iR2I5QRMsZcHkcdkZzxpN8RS4cN7LPskOkTwTZw== dependencies: - browserslist "^4.21.4" + browserslist "^4.22.2" cssnano-utils "^4.0.1" postcss-value-parser "^4.2.0" -postcss-minify-selectors@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-6.0.1.tgz#7b2f05651a2f734da1fa50dea62cfc47e67d68f9" - integrity sha512-mfReq5wrS6vkunxvJp6GDuOk+Ak6JV7134gp8L+ANRnV9VwqzTvBtX6lpohooVU750AR0D3pVx2Zn6uCCwOAfQ== +postcss-minify-selectors@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-6.0.2.tgz#62065b38d3453ddc6627ba50e4f4a2154b031aa0" + integrity sha512-0b+m+w7OAvZejPQdN2GjsXLv5o0jqYHX3aoV0e7RBKPCsB7TYG5KKWBFhGnB/iP3213Ts8c5H4wLPLMm7z28Sg== dependencies: - postcss-selector-parser "^6.0.5" + postcss-selector-parser "^6.0.15" postcss-normalize-charset@^6.0.1: version "6.0.1" @@ -6510,12 +6495,12 @@ postcss-normalize-timing-functions@^6.0.1: dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-unicode@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.1.tgz#a652faa02fc8ce5d1429ac0782575d8d66a60d9b" - integrity sha512-ok9DsI94nEF79MkvmLfHfn8ddnKXA7w+8YuUoz5m7b6TOdoaRCpvu/QMHXQs9+DwUbvp+ytzz04J55CPy77PuQ== +postcss-normalize-unicode@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.2.tgz#361026744ff11baebaec771b60c2a5f36f274fd0" + integrity sha512-Ff2VdAYCTGyMUwpevTZPZ4w0+mPjbZzLLyoLh/RMpqUqeQKZ+xMm31hkxBavDcGKcxm6ACzGk0nBfZ8LZkStKA== dependencies: - browserslist "^4.21.4" + browserslist "^4.22.2" postcss-value-parser "^4.2.0" postcss-normalize-url@^6.0.1: @@ -6540,12 +6525,12 @@ postcss-ordered-values@^6.0.1: cssnano-utils "^4.0.1" postcss-value-parser "^4.2.0" -postcss-reduce-initial@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-6.0.1.tgz#37621ba31a18fd75eb9c76e818cca2a2adb13238" - integrity sha512-cgzsI2ThG1PMSdSyM9A+bVxiiVgPIVz9f5c6H+TqEv0CA89iCOO81mwLWRWLgOKFtQkKob9nNpnkxG/1RlgFcA== +postcss-reduce-initial@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-6.0.2.tgz#763d25902406c872264041df69f182eb15a5d9be" + integrity sha512-YGKalhNlCLcjcLvjU5nF8FyeCTkCO5UtvJEt0hrPZVCTtRLSOH4z00T1UntQPj4dUmIYZgMj8qK77JbSX95hSw== dependencies: - browserslist "^4.21.4" + browserslist "^4.22.2" caniuse-api "^3.0.0" postcss-reduce-transforms@^6.0.1: @@ -6573,7 +6558,7 @@ postcss-safe-parser@^6.0.0: resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz#bb4c29894171a94bc5c996b9a30317ef402adaa1" integrity sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ== -postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.13, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5: +postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.13: version "6.0.13" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== @@ -6581,20 +6566,28 @@ postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.13, postcss-select cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-svgo@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-6.0.1.tgz#6bf63713ef5cb40f1bedd2c2cfca2486b41d5184" - integrity sha512-eWV4Rrqa06LzTgqirOv5Ln6WTGyU7Pbeqj9WEyKo9tpnWixNATVJMeaEcOHOW1ZYyjcG8wSJwX/28DvU3oy3HA== +postcss-selector-parser@^6.0.15: + version "6.0.15" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz#11cc2b21eebc0b99ea374ffb9887174855a01535" + integrity sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-svgo@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-6.0.2.tgz#dbc9d03e7f346bc0d82443078602a951e0214836" + integrity sha512-IH5R9SjkTkh0kfFOQDImyy1+mTCb+E830+9SV1O+AaDcoHTvfsvt6WwJeo7KwcHbFnevZVCsXhDmjFiGVuwqFQ== dependencies: postcss-value-parser "^4.2.0" - svgo "^3.0.5" + svgo "^3.2.0" -postcss-unique-selectors@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-6.0.1.tgz#e6d071c2ea64ce265eb55ea9c170ff951183c712" - integrity sha512-/KCCEpNNR7oXVJ38/Id7GC9Nt0zxO1T3zVbhVaq6F6LSG+3gU3B7+QuTHfD0v8NPEHlzewAout29S0InmB78EQ== +postcss-unique-selectors@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-6.0.2.tgz#09a34a5a31a649d3e9bca5962af0616f39d071d2" + integrity sha512-8IZGQ94nechdG7Y9Sh9FlIY2b4uS8/k8kdKRX040XHsS3B6d1HrJAkXrBSsSu4SuARruSsUjW3nlSw8BHkaAYQ== dependencies: - postcss-selector-parser "^6.0.5" + postcss-selector-parser "^6.0.15" postcss-value-parser@^4.2.0: version "4.2.0" @@ -7917,13 +7910,13 @@ styled_string@0.0.1: resolved "https://registry.yarnpkg.com/styled_string/-/styled_string-0.0.1.tgz#d22782bd81295459bc4f1df18c4bad8e94dd124a" integrity sha512-DU2KZiB6VbPkO2tGSqQ9n96ZstUPjW7X4sGO6V2m1myIQluX0p1Ol8BrA/l6/EesqhMqXOIXs3cJNOy1UuU2BA== -stylehacks@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-6.0.1.tgz#c103f0149e268a290a0dda3fce8fd4c5459a13c3" - integrity sha512-jTqG2aIoX2fYg0YsGvqE4ooE/e75WmaEjnNiP6Ag7irLtHxML8NJRxRxS0HyDpde8DRGuEXTFVHVfR5Tmbxqzg== +stylehacks@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-6.0.2.tgz#5bf2654561752547d4548765f35c9a49659b3742" + integrity sha512-00zvJGnCu64EpMjX8b5iCZ3us2Ptyw8+toEkb92VdmkEaRaSGBNKAoK6aWZckhXxmQP8zWiTaFaiMGIU8Ve8sg== dependencies: - browserslist "^4.21.4" - postcss-selector-parser "^6.0.4" + browserslist "^4.22.2" + postcss-selector-parser "^6.0.15" stylelint-config-recommended@^13.0.0: version "13.0.0" @@ -8029,17 +8022,17 @@ svg-tags@^1.0.0: resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" integrity sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA== -svgo@^3.0.5: - version "3.1.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.1.0.tgz#7e63855c8da73297d5d5765e968f9679a0f8d24a" - integrity sha512-R5SnNA89w1dYgNv570591F66v34b3eQShpIBcQtZtM5trJwm1VvxbIoMpRYY3ybTAutcKTLEmTsdnaknOHbiQA== +svgo@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.2.0.tgz#7a5dff2938d8c6096e00295c2390e8e652fa805d" + integrity sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ== dependencies: "@trysound/sax" "0.2.0" commander "^7.2.0" css-select "^5.1.0" - css-tree "^2.2.1" + css-tree "^2.3.1" css-what "^6.1.0" - csso "5.0.5" + csso "^5.0.5" picocolors "^1.0.0" symbol-tree@^3.2.2: @@ -8653,14 +8646,6 @@ update-browserslist-db@^1.0.5: escalade "^3.1.1" picocolors "^1.0.0" -update-browserslist-db@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz#2924d3927367a38d5c555413a7ce138fc95fcb18" - integrity sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" From d967627a35777677fc47901a81d224699a97a38f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Jan 2024 11:34:39 +0200 Subject: [PATCH 05/25] Bump eslint-plugin-jsdoc from 47.0.2 to 48.0.2 (internal-1030) Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 47.0.2 to 48.0.2. - [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases) - [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc) - [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v47.0.2...v48.0.2) --- updated-dependencies: - dependency-name: eslint-plugin-jsdoc dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 65c1a6e469c..71ceba7f7b8 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "eslint-plugin-flowtype": "^7.0.0", "eslint-plugin-html": "^7.1.0", "eslint-plugin-import": "^2.29.1", - "eslint-plugin-jsdoc": "^47.0.2", + "eslint-plugin-jsdoc": "^48.0.2", "flow-bin": "0.191.0", "gl": "6.0.2", "glob": "^10.3.10", diff --git a/yarn.lock b/yarn.lock index 52464ad8a91..fdbb18d987c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3151,10 +3151,10 @@ eslint-plugin-import@^2.29.1: semver "^6.3.1" tsconfig-paths "^3.15.0" -eslint-plugin-jsdoc@^47.0.2: - version "47.0.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-47.0.2.tgz#113a6370e623535e5c6e0a59a094ffdc253371ff" - integrity sha512-sIq81Pv+yrhhwY0m1JH79rdZRgDNunehv3S0Yv0UfewpoeJyPkODFn2o4o20nofVoI2tjku9/QBcCYUmmeWFXA== +eslint-plugin-jsdoc@^48.0.2: + version "48.0.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.0.2.tgz#b843107e8caec57b8b463f04797be3b30d6a52da" + integrity sha512-CBFl5Jc7+jlV36RwDm+PQ8Uw5r28pn2/uW/OaB+Gw5bFwn4Py/1eYMZ3hGf9S4meUFZ/sRvS+hVif2mRAp6WqQ== dependencies: "@es-joy/jsdoccomment" "~0.41.0" are-docs-informative "^0.0.2" From 8a757bfabc630895c70f9e9ed295e40e0049f692 Mon Sep 17 00:00:00 2001 From: Aleksandr Shoronov Date: Tue, 9 Jan 2024 14:11:36 +0200 Subject: [PATCH 06/25] [GLJS-512] Fixed upper layers rendering if nested imports have error (internal-1028) --- src/style/style.js | 7 +++++-- test/unit/style/style_imports.test.js | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/style/style.js b/src/style/style.js index 3f1dd257044..76abc9d59ea 100644 --- a/src/style/style.js +++ b/src/style/style.js @@ -424,8 +424,11 @@ class Style extends Evented { for (const importSpec of imports) { const style = this._createFragmentStyle(importSpec); - // Merge everything and update layers after the import style is loaded. - const waitForStyle = new Promise(resolve => style.once('style.import.load', resolve)) + // Merge everything and update layers after the import style is settled. + const waitForStyle = new Promise(resolve => { + style.once('style.import.load', resolve); + style.once('error', resolve); + }) .then(() => this.mergeAll()); waitForStyles.push(waitForStyle); diff --git a/test/unit/style/style_imports.test.js b/test/unit/style/style_imports.test.js index ca664430ee0..083ad33208d 100644 --- a/test/unit/style/style_imports.test.js +++ b/test/unit/style/style_imports.test.js @@ -74,6 +74,24 @@ test('Style#loadURL', (t) => { style.loadURL('/style.json'); }); + t.test('non existing imports don\'t block root style', (t) => { + const style = new Style(new StubMap()); + + const initialStyle = createStyleJSON({ + imports: [{id: 'foo', url: '/styles/not-found.json'}], + }); + + t.stub(console, 'error'); + + style.on('style.load', () => { + t.pass(); + t.end(); + }); + + window.server.respondWith('/style.json', JSON.stringify(initialStyle)); + style.loadURL('/style.json'); + }); + t.test('imports style from JSON', (t) => { const style = new Style(new StubMap()); From 91f422d105fc863005a3ab2f5b65e78b095665f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleksandar=20Stojiljkovi=C4=87?= Date: Tue, 9 Jan 2024 15:53:31 +0200 Subject: [PATCH 07/25] [MAPS3D-1099] Disable terrain and hillshade if there is noise in the Canvas2D operations used for image decoding (internal-975) * [MAPS3D-1099] Workaround terrain spikes on Safari version above 17 and private mode * Calculate disableDEMTilesWorkaround only when setting Terrain * Check for OffscreenCanvas support * Add warning --------- Co-authored-by: Stepan Kuzmin Co-authored-by: Volodymyr Agafonkin --- flow-typed/sinon.js | 1 + src/render/draw_hillshade.js | 1 + src/render/painter.js | 15 ++++++++++++- src/util/browser.js | 29 +++++++++++++++++++++++++- src/util/offscreen_canvas_supported.js | 2 +- test/util/test.js | 3 +++ 6 files changed, 48 insertions(+), 3 deletions(-) diff --git a/flow-typed/sinon.js b/flow-typed/sinon.js index be0350bd521..9e90bea602a 100644 --- a/flow-typed/sinon.js +++ b/flow-typed/sinon.js @@ -9,6 +9,7 @@ declare module "sinon" { getCall(i: number): SpyCall }; declare type Stub = { + returns(fn: mixed): Spy, callsFake(fn: mixed): Spy }; declare class FakeServer { diff --git a/src/render/draw_hillshade.js b/src/render/draw_hillshade.js index a4c3c526040..63deef18e8c 100644 --- a/src/render/draw_hillshade.js +++ b/src/render/draw_hillshade.js @@ -23,6 +23,7 @@ export default drawHillshade; function drawHillshade(painter: Painter, sourceCache: SourceCache, layer: HillshadeStyleLayer, tileIDs: Array) { if (painter.renderPass !== 'offscreen' && painter.renderPass !== 'translucent') return; + if (painter.disableDEMTilesWorkaround) return; const context = painter.context; diff --git a/src/render/painter.js b/src/render/painter.js index 5c62d90d217..99d60ab8f86 100644 --- a/src/render/painter.js +++ b/src/render/painter.js @@ -45,6 +45,7 @@ import {Debug} from '../util/debug.js'; import Tile from '../source/tile.js'; import {RGBAImage} from '../util/image.js'; import {ReplacementSource} from '../../3d-style/source/replacement_source.js'; +import {warnOnce} from '../util/util.js'; import type {Source} from '../source/source.js'; import type {CutoffParams} from '../render/cutoff.js'; @@ -202,6 +203,7 @@ class Painter { renderDefaultSouthPole: boolean; _fogVisible: boolean; _cachedTileFogOpacities: {[number]: [number, number]}; + disableDEMTilesWorkaround: boolean; _shadowRenderer: ?ShadowRenderer; @@ -240,8 +242,19 @@ class Painter { } updateTerrain(style: Style, adaptCameraAltitude: boolean) { - const enabled = !!style && !!style.terrain && this.transform.projection.supportsTerrain; + const enabled = !!style && !!style.terrain && this.transform.projection.supportsTerrain && !this.disableDEMTilesWorkaround; if (!enabled && (!this._terrain || !this._terrain.enabled)) return; + + // This workaround disables terrain and hillshade + // if there is noise in the Canvas2D operations used for image decoding. + if (this.disableDEMTilesWorkaround === undefined) { + this.disableDEMTilesWorkaround = browser.hasCanvasFingerprintNoise(); + } + if (this.disableDEMTilesWorkaround) { + warnOnce('Terrain and hillshade are disabled because of Canvas2D limitations when fingerprinting protection is enabled (e.g. in private browsing mode).'); + return; + } + if (!this._terrain) { this._terrain = new Terrain(this, style); } diff --git a/src/util/browser.js b/src/util/browser.js index 4a0a70e903e..122d0876b38 100755 --- a/src/util/browser.js +++ b/src/util/browser.js @@ -1,6 +1,7 @@ // @flow strict - +import assert from 'assert'; import window from './window.js'; +import offscreenCanvasSupported from './offscreen_canvas_supported.js'; import type {Cancelable} from '../types/cancelable.js'; let linkEl; @@ -75,6 +76,32 @@ const exported = { } return reducedMotionQuery.matches; }, + + /** + * Returns true if the browser has OffscreenCanvas support and + * adds noise to Canvas2D operations used for image decoding to prevent fingerprinting. + */ + hasCanvasFingerprintNoise(): boolean { + if (!offscreenCanvasSupported()) return false; + assert(window.OffscreenCanvas, 'OffscreenCanvas is not supported'); + + const offscreenCanvas = new window.OffscreenCanvas(255 / 3, 1); + const offscreenCanvasContext = offscreenCanvas.getContext('2d', {willReadFrequently: true}); + let inc = 0; + // getImageData is lossy with premultiplied alpha. + for (let i = 0; i < offscreenCanvas.width; ++i) { + offscreenCanvasContext.fillStyle = `rgba(${inc++},${inc++},${inc++}, 255)`; + offscreenCanvasContext.fillRect(i, 0, 1, 1); + } + const readData = offscreenCanvasContext.getImageData(0, 0, offscreenCanvas.width, offscreenCanvas.height); + inc = 0; + for (let i = 0; i < readData.data.length; ++i) { + if (i % 4 !== 3 && inc++ !== readData.data[i]) { + return true; + } + } + return false; + } }; export default exported; diff --git a/src/util/offscreen_canvas_supported.js b/src/util/offscreen_canvas_supported.js index d487218e937..b1b242bc4fc 100644 --- a/src/util/offscreen_canvas_supported.js +++ b/src/util/offscreen_canvas_supported.js @@ -1,4 +1,4 @@ -// @flow +// @flow strict import window from './window.js'; let supportsOffscreenCanvas: ?boolean; diff --git a/test/util/test.js b/test/util/test.js index 995f3f4508e..9d755493365 100644 --- a/test/util/test.js +++ b/test/util/test.js @@ -3,6 +3,7 @@ import tap from 'tap'; /*eslint-disable import/no-named-as-default-member */ import sinon from 'sinon'; +import browser from '../../src/util/browser.js'; // Disable MessageChannel in unit tests since // it prevents a Node.js process from exiting. @@ -37,6 +38,8 @@ export const only = (tap.only: CreateTest); const consoleError = console.error; const consoleWarn = console.warn; +sinon.stub(browser, 'hasCanvasFingerprintNoise').returns(false); + // $FlowFixMe[missing-this-annot] tap.beforeEach(function () { this.sandbox = sinon.createSandbox({ From a0dde83f1a6e8bde168046d470d610c704288dbd Mon Sep 17 00:00:00 2001 From: Stepan Kuzmin Date: Tue, 9 Jan 2024 16:39:51 +0200 Subject: [PATCH 08/25] Switch to Node v18 in CodeBuild (internal-1036) --- buildspec.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/buildspec.yml b/buildspec.yml index ffedd424805..936033074d4 100644 --- a/buildspec.yml +++ b/buildspec.yml @@ -3,11 +3,10 @@ version: 0.2 phases: install: runtime-versions: - nodejs: 14 + nodejs: 18 commands: - echo "//registry.npmjs.org/:_authToken=$NPMAccessToken" > ~/.npmrc - npm whoami - - npm set unsafe-perm true - npm install -g yarn - yarn --ignore-engines build: From a1ad74c436159493991dd5740a5a3a406892d97c Mon Sep 17 00:00:00 2001 From: Daniel Eke Date: Wed, 10 Jan 2024 15:05:01 +0200 Subject: [PATCH 09/25] Add highp for fog limit values in raster fragment shader (internal-1040) --- src/shaders/raster.fragment.glsl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/shaders/raster.fragment.glsl b/src/shaders/raster.fragment.glsl index f7a7b260cff..bd5bb57f1d3 100644 --- a/src/shaders/raster.fragment.glsl +++ b/src/shaders/raster.fragment.glsl @@ -106,8 +106,8 @@ void main() { out_color = apply_lighting_with_emission_ground(vec4(out_color, 1.0), u_emissive_strength).rgb; #endif #ifdef FOG - float fog_limit_high_meters = 1000000.0; - float fog_limit_low_meters = 600000.0; + highp float fog_limit_high_meters = 1000000.0; + highp float fog_limit_low_meters = 600000.0; float fog_limit = 1.0 - smoothstep(fog_limit_low_meters, fog_limit_high_meters, u_raster_elevation); out_color = fog_dither(fog_apply(out_color, v_fog_pos, fog_limit)); #endif From 9c58a08ed1daa8ebbe8399fe902518a5a0516057 Mon Sep 17 00:00:00 2001 From: Danil Ilinykh Date: Wed, 10 Jan 2024 18:03:15 +0200 Subject: [PATCH 10/25] Adding android/ios sdk version for raster-elevation --- src/style-spec/reference/v8.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/style-spec/reference/v8.json b/src/style-spec/reference/v8.json index 1b7043390d8..b713459e1ca 100644 --- a/src/style-spec/reference/v8.json +++ b/src/style-spec/reference/v8.json @@ -7914,7 +7914,9 @@ "transition": true, "sdk-support": { "basic functionality": { - "js": "3.1.0" + "js": "3.1.0", + "android": "11.2.0", + "ios": "11.2.0" } }, "expression": { From a2e9d747f3c7c43da813de78f735bca2bb473aba Mon Sep 17 00:00:00 2001 From: Daniel Eke Date: Thu, 11 Jan 2024 10:18:32 +0200 Subject: [PATCH 11/25] Remove image padding from shaping offset (internal-1041) --- src/symbol/shaping.js | 3 +-- .../text-shaping-images-horizontal.json | 8 ++++---- .../text-shaping-images-vertical.json | 8 ++++---- test/fixtures/fontstack-glyphs.json | 2 +- .../expected.png | Bin 2845 -> 3799 bytes .../formatted-images-line/expected.png | Bin 5300 -> 6209 bytes .../formatted-images-multiline/expected.png | Bin 6685 -> 9267 bytes .../expected.png | Bin 7765 -> 9556 bytes .../formatted-images-vertical/expected.png | Bin 4231 -> 6706 bytes .../expected.png | Bin 3908 -> 2472 bytes .../text-field/formatted-images/expected.png | Bin 4153 -> 4185 bytes .../expected.png | Bin 5031 -> 4507 bytes .../formatted-images-vertical/expected.png | Bin 6298 -> 6706 bytes .../font-with-image-vertical/expected.png | Bin 5986 -> 5883 bytes .../expected.png | Bin 2754 -> 2732 bytes .../mixed-fonts-with-image/expected.png | Bin 6507 -> 6453 bytes .../expected.png | Bin 8534 -> 8120 bytes .../punctuations-vertical/expected.png | Bin 5541 -> 5549 bytes 18 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/symbol/shaping.js b/src/symbol/shaping.js index c20ff438a9a..e39bb585ab5 100644 --- a/src/symbol/shaping.js +++ b/src/symbol/shaping.js @@ -14,7 +14,6 @@ import {warnOnce} from '../util/util.js'; import type {StyleGlyph, GlyphMetrics} from '../style/style_glyph.js'; import {GLYPH_PBF_BORDER} from '../style/parse_glyph_pbf.js'; import type {ImagePosition} from '../render/image_atlas.js'; -import {IMAGE_PADDING} from '../render/image_atlas.js'; import type {GlyphRect, GlyphPositions} from '../render/glyph_atlas.js'; import Formatted, {FormattedSection} from '../style-spec/expression/types/formatted.js'; @@ -683,7 +682,7 @@ function shapeLines(shaping: Shaping, metrics = {width: size[0], height: size[1], - left: IMAGE_PADDING, + left: 0, top: -GLYPH_PBF_BORDER, advance: vertical ? size[1] : size[0], localGlyph: false}; diff --git a/test/fixtures/expected/text-shaping-images-horizontal.json b/test/fixtures/expected/text-shaping-images-horizontal.json index 3ee3d178238..1555dbf6016 100644 --- a/test/fixtures/expected/text-shaping-images-horizontal.json +++ b/test/fixtures/expected/text-shaping-images-horizontal.json @@ -87,7 +87,7 @@ "metrics": { "width": 14, "height": 14, - "left": 1, + "left": 0, "top": -3, "advance": 14, "localGlyph": false @@ -112,7 +112,7 @@ "metrics": { "width": 30, "height": 14, - "left": 1, + "left": 0, "top": -3, "advance": 30, "localGlyph": false @@ -142,7 +142,7 @@ "metrics": { "width": 14, "height": 30, - "left": 1, + "left": 0, "top": -3, "advance": 14, "localGlyph": false @@ -167,7 +167,7 @@ "metrics": { "width": 14, "height": 14, - "left": 1, + "left": 0, "top": -3, "advance": 14, "localGlyph": false diff --git a/test/fixtures/expected/text-shaping-images-vertical.json b/test/fixtures/expected/text-shaping-images-vertical.json index 00f451b1814..42a66ad5b83 100644 --- a/test/fixtures/expected/text-shaping-images-vertical.json +++ b/test/fixtures/expected/text-shaping-images-vertical.json @@ -39,7 +39,7 @@ "metrics": { "width": 14, "height": 14, - "left": 1, + "left": 0, "top": -3, "advance": 14, "localGlyph": false @@ -64,7 +64,7 @@ "metrics": { "width": 30, "height": 14, - "left": 1, + "left": 0, "top": -3, "advance": 14, "localGlyph": false @@ -94,7 +94,7 @@ "metrics": { "width": 14, "height": 30, - "left": 1, + "left": 0, "top": -3, "advance": 30, "localGlyph": false @@ -119,7 +119,7 @@ "metrics": { "width": 14, "height": 14, - "left": 1, + "left": 0, "top": -3, "advance": 14, "localGlyph": false diff --git a/test/fixtures/fontstack-glyphs.json b/test/fixtures/fontstack-glyphs.json index ee6156be659..6dfb23d81a1 100644 --- a/test/fixtures/fontstack-glyphs.json +++ b/test/fixtures/fontstack-glyphs.json @@ -940,7 +940,7 @@ "metrics": { "width": 12, "height": 14, - "left": 1, + "left": 0, "top": -13, "advance": 14 }, diff --git a/test/integration/render-tests/text-field/formatted-images-constant-size/expected.png b/test/integration/render-tests/text-field/formatted-images-constant-size/expected.png index cc27f0bcdce30250e01bf8c7e3ed9001330eebbb..269be5ddf01ae336389b620a041378587b3dd01a 100644 GIT binary patch literal 3799 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 literal 2845 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 literal 5300 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‍0lz1?SIHyum!=L*M3zqmDEp0W~G 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 literal 6685 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 Q`|ShhY8h&ls$;_c2l>&5t^fc4 diff --git a/test/integration/render-tests/text-field/formatted-images-variable-anchors-justification/expected.png b/test/integration/render-tests/text-field/formatted-images-variable-anchors-justification/expected.png index 18696d91b952bab2db60dc9e16e85e23f5bc853b..01d4403b1bcd28578cc4e94346f398d355bb24ca 100644 GIT binary patch literal 9556 zcmcI~c{J4T+y9IiGnO&PHZ+XF*b3Qq27M&ER6>lb6&hqGvsl^;S+XQXq>?Qnvdy5Z zF_kr8lr`H__OU!Z=RD{8*YEe7=l93&kL$j!`?|0DKG*#|_c`y^^*Yx*I~#KzE-@|u z0Kj8$&dlLRcO40Z19CK497?@9Qos-ga}z*CKXUPCV&?5+;bUzLP&l$V0KlZ{0Pw#d zMdyqVuT;>L10Y#q+!A9D#15)!`)H-kO{eI_gz z-Q6d zmN!UVb_KKWmMR1LTsFk1_EYts$HjH-)fZ1s>t;jpUxX0^3iYxdD*bfBchZ)0i54u5 zGRRt^xKoPS)tlNPo1_gU1V-}a6B6%w1%mwS#NyZ7O+JkW?{Uhp4MdBgsWnx{@&d%# z1hY9mNy8?Nl=9s`_YJhr5MXptdz$m<8{r<;?c>ZI;O3KT1iEVGAFS=oHU-fawBw zFyba(TA<`?DDwjDir=4a2eVAmyFFB3@`Il51oz<5qAmS;gzM@azloh#735F53e?rP z8C+T1`f;Y5*Sw9(2?oVzWrH^(Ez~4YXJy3c z%$I%QIN^E`iTDc?lq;ZOtr9;+5sq!%nHxxv6J4Iow1_w{$nHy4rh2Jc5X(lqZp#Y| z;)xc6;6OHki#b+??Zc~PnJdOtsnrGwtFWvqailG*HWFB|bafRGuN0S7`slkwMtbLd z@YAMMzRi7ABh=o>14G2<z_@v%my(c?a=)ae2>lYmo)SUQZXEpvGTG49Wsy9XlhsoxvVR0e_!c6 z?;86UuM4+&taYMmb4SX=5duGYFx28fdEc65@Lr}L#Ge~N8Rut|{iriqXKyVVAhy#O zyfq1(vhDedg#%>vDG?Kg2ctn@3qV<8DQ%&>JNA#Q@E&yTz=W_WKC9ta#+nNJSr1MU zeNGf2W0-H#a3T*538Z7WS}j(ryjbp7hC4)Y`g8drUK{+z91ac_upoL@f^5%;n|993?&2#mM`U_az}cB|(^x zMUz(%LpF0^Ag+2iK`rh1HnwvkN=QBf=3hN3I0(%l6%OioN_##IV~)JgtP+M@yLkLP zao#y)e#aEAM&P^|?HZh;Zds_EGx(G$lW$pb9b26#o%P7PjmD_$Wdz{n_F&I6zY_k| z_v1g)U%jf9@x;&`8FGtn z_OYDBy<}WYnrmrs!G-)-bAv2C@1gm~rLPKM!kOD2LSL7|X-R)+z*R9EIz$79*c15T zZ8Z1g-H%<_{rpvt@F~~M!H=vt1x&8Pc)yCML?Y92z$GI+*aF9oge%$ah5Eqr*xRv! z-?`9P;~yxl*S@nswrZI|%K%@ZCE+n+eN7e1q5WWI$2fw2l3+>UaTuPBIjVP;s zl349qdPds^^0+7oQ^Cn~G)HjV`@11v3YG+Yu_@Xua4uSjVzeR%;zwEZyACN0Jr zwGt-1Pzl0Iykj@Gy(!9V7)_TK+>^L{S(~~!uW~$}a0p^W${=`u`8#oiQW`_9*sor~760M}74m-PXvkP`(ecF= z5NdA@{>rlcP`*2HS?bABZ~bPdq1HCc23ldxxTC^PTy6|hLBIl8Bh601#CsUUd0wOCxs!27%StZ z9?f&(O1JXz6vt<}B1xL%OhxzxX^A0K56))?U9h$8CsEC+ZcRib$L%oM?QG9#Z+HONu~6QVk7wLmt5miE)s4!r85Tz2hJZ zdvb!Uu=U{?sL4{lb2ql)+6DC{&YUsNEWR#27Vh{r zub082!bIVRQ!}>Iw@GUMisC5IV*N=ssiK(H6ae&z5G60vs#t=lhyXQ`Vhb|V5<{bS zvo52P_OGdC%CM$H`*+s}P!CacQU&98PHJXwrljVKnl_9K22D`*jj9S)bClVD}yOAW0bu7o5LW6#IA3mplil+mDm$gADO~ zBL>YqeAaoIMq3xK3oTR|71=#JqYh$yyYtpybIGB~;6ryv)4R}e{8(x__zizUT8^Fu zsYjjlv?H<(14<8GKa`BbS3{oPjQR%DJ5QWTGU0TwwraKId~xYXJ0v?prkUp;(7Hjm zc&n(l(#ySu^-1G#rdoS(^7F$zk2J9Nmwc;!&W+5QE;X*cm;1WOrB_nQgucFYx~YSd z>oUB(Ug6&m69r1Me9;qlp($<$i4(?cFwVJs4=#(To&7wvlPcNTnbL}1`tq`L5np5O zj(c^{Zay+=lTD6wMkmXZo%O0V@GR)eYyOJTDEw)aH@kQOdX4B$>vyibVf}UE?Aa&# zGQ%=`!v29xLhza1@YEZhMWZLzvs*W}Q3KCP?}CCLuTF{!J-MQD1dd)Ir+!|2efJ1< zm7X*I;B$$5WGQrRMT{u?ID&NwU+mxHWd1y|dVU*B*523V6DYoa+tJ@=_FpSFCMCT5 zX{?IzO1?8IFB8+Tv!x$`}SgN@2YaT=SHcA;i85W3{E|R*ZY_EeTq55lc)Pc-} z+{=XrNhSseA$Zk<=%!6TtV|m?LL_6$P$KU$tiK(5IRdzh7~h-Z&fpv-^-_p+` zCI4xYVWeHyfw}vi+MnkguM*jY9fGsG4YO8$$KIDMuIo3%Y<@Vy=vxod?h4ad;IgL0 zjcmEA@Md(v6?}y^rU6(_Q{z6uv(6n*JUs1CucJJVYky*Z&IyaKnaRk_{XkfP*R*__9 z^r6g)W!1r=gmG$&k!g&Fs@x9+#&@N&%k(gpnGN~)Tt2Uu#qQJ7fbl2P(QFRGkz-Z1 zVbDLi_g)Nm5Cmm(QsX0zuZL+y6a+89E1Y3^Ege2{-!%V3+yWlN0paNN%J?0(P9x_88;Sq`fWOiTe19bh&gMj zUALYs_=I`BFV%kj%C8q#+xB2xfOn-YGnJkf!Nh zN!+Ix?13+l<_F^?UhV((cTeD+R=0!P9WX+`@;Tk4g+Yfvgm|-e?<(!zW~dfo>}@Ajbd>yt8OyP8s2aK_R)=x9fZ!=G zwUx6a;&wki8q-B`=+aJQ1Nt9A9>iiPD?FG`xrhNqS;{my`!W%dg-*@~L8(qmk9YA+YaF-?)w{8V25*`J zPIT=HV|^9(`L@Ixh+&1P>kEj@Myi1dpy{8=bSas}4>#D&dEy}|u*sy;CqUuad&pb@ zC_VN&(3y71ZiDtnzvJFOiLGJlfUn6b&7<93n=b9P({6U1gptQG`%auU8SfYj`;r@v zaf!U^in#a7utp3Dx1I|%d?}UA8+Q!JtJh|aLrZHUJ=LWjhY_z%JE;66_4!zTh6$8$ z=J6_767LCG4%WP~t-y|h)Tg503C$-&RI!K0$#^oBdBEYnTfE(bqn< zZk)6Cmj=*fw~~l$Mx=2`cDi(Rpx8?$7mR!AYV#Q_ipNEJb}_X}B$# z32fpPaBwkq7ifoT)F1HNqAD_Fv*CAihTrniSc6H$>I*(jaCG@R;%(goxjRAq^JXM( zfv?+*sk+^VJ@7+!=8iR+QM9-OqrS0#q3q!5+*H=$z2BRXh=Pw#e{mPI^Q;zk7r#9nbp!eBF}>uf+^v&( z&!jhINFW;YJ3w<=CYuN27N;H&$Uo|*x8kFs0ww+8>Lf@_-=CdX@}mjAM&oxwI9Z*!*4h`SD2YLH6+-F(h|b%fM^h_HKrxDo=iVGerPK(8LKMB%^Yb#=mo0F;s^G)sSI;#=IB9QJ0dt%V`l&LhIfS79gwFsP1piu0B50dW8`{5r^n% zhff;MIxkSQ_|w$7gd2h)Z#mR7iFEw!U7;ohyW4MzXyY$&>R8V@yW17^ri3ws9Wva3axT0gz% z8FAcJ{=F9Y)w4qL&!xyiap@;B^o>s|)cXr>Orjq9H-}PhR>j7~z3II<8%y+G?R%6` zA@ZeWrfteuI`=H!$^8FLr~fZe@m=`LJ5Wo`tCNBUL)+W7hnM3UT}o^YCwy3M zoVPrb4u9YHw9M1O-~I0FPRg-X?)K>dzKa@2KO40;j+UM7IF%TkCQe(bGgXN_iAGd(JrSV)S%y1b07}v|}G3s%x6cdw5cx zd%Of5=Anl`&X%niL?B`aMPJOuL&Ue)ESB=vTDtxbhfVf+GoVb~Z3#!;r=9IA&9d9QC*;ku^cZ~f@4u_` zw%LRQPCaChC0UrLas4d;x?n9l@2MLo3&bL#hd}~uBhfl~*?eJboeTr(V@uV^WPRTD zd7Nf;RWBClXf9eD6$5GFQKr5~&4>*V@dw#b9kjWk+I;zT-w4gt^6ftO@y}xH7k5^J zq0`8DZT1Sh%+c@F7Sy738{+xNtLo|I(ya?D(%32t{uce}OcmRoe>%UWU9XauOmd-s zz&i~-tsFcKP-}?!CJ&=sm$bd3u)u~nE!W3xp0(13sdGaOX19T}L1IG?VbV$ie3?!e zmmAFyNdWoVvhg&_29@awSI!q+CeaMU*1G_3Rml-TK1AHuLmn|0P$<=x^u`WKgx&F^ zg1J=*zY@gj3}{#S;(yoF(6+Y`HULjEoq8Q@-6QzdGY|-6eFk?sFBaX_6oSuRLs69T zfR{_^K%*^ytF+K1xhhbGR3cjUuRqy2_;WZ#$S>Ohn-qZ(_^Fr;G^JiK8Di5L^qmr_ zVE6tJ84yihIQf#iE5vI6S4u4M;LC$$(OehU;Mh%1x)~Szen2}R*nj0+EY^1PL_)0B zmu$(NmI#T1X`Ax_V_|GYYQG;E48iIW$g5tjUD0;~a^U1sN*9&bt(!&FoA?nCJ~0mH zdj!|V#4Gu}JHquG$WN1`S<2X?RF`y+!lncUjfrKBt!$@i3u^V_QE#j#dw&jD7e!)q z_yWPCN+VYg4`$%9ajK!-Lc?k6#TH%aKG3Rzoq^qyk!Gb%B>$eiAt?`4XN@218A`7O z=+AiJdqauzisan(0z=iSjwknwg8%A-2l zylyMXuToG1bAo1nMHIDJ#OlSwEt|785LLGZ53q3w3@zM>fbZR5%JK!4p$=jb7F4;C?Z86x4fuzpKQH#IRjW`iOS_R|fG2MID?uoU@4#%Du4NLE{xy5^D zQ_|6V@r9-5e(eBq8_w2zpeWa@!(EYJKpTV!%HK{i7#oP(@JY_5y| zvEq$*3vXhk476IWP#l(+g%wo?dG^d_L$1i@d>V6{3I6ctV`42Z8TX6j$z>h1p2I=j zgM{2fK>t$oven5Pkk`OgsfbBm9B&y|fN^~r;hL_SzRcdQ#7phPHro;*o5WX4q_p10 z_a9Bf7r7ez}625A{ZTxUyC-Ba5xs79P43{ zbM9k%BZE?-_BMgngRg$gclVY7`l5Li?{Zcn&2S1}i~sEv-SjcSqG#y^e*YG7R02Bt zjv-T(-{fH6Tx6j+Dyd*0_D(#Tl6&h<9>`)$r#nhrwb_O=$QnwJT!K|Ehd%FSIVG*g zTPEui8X-U^GfKEBJjz^;_K_BF5d7Pwx}@g|oS!#V^Y+=~pvWk50)BSUmo^mcDoD zN?rOYQ4MR@mr#N`5m69lQn>IHCeeWj@cz-1wi{&q1Nq>?hQ+Q)!-(&vM-~RZQzf)NEjLer; z?l(xev?sbb@L)LO`(25c8UNY$_4T64u92q_&ZvOUM9Zq1j42#neFjeF4_o~t@3$o4 zJd9v>crOE$#Hk`Qnbb-Pq->IY#)$_$QzB_itJVWc+LP#_&s1@esK-vC>S}*4%)yq`s=|_; z_f=c3eN}VWXjBIK{V^r2Xl`qKhZ_+)X=d5b9{yH?JyCyC{_Umya|?jkAt$AX<5pZ6 zTx22$>teSt?WIDn%BbpV$gVEhQO0U-TcJn+hY~S>sV_uKYhvtUh3S1lq%0DGp1S83wQfJ^5Y-*>fqUTirWaD21m zP7Y`O!E64cXZJ%W44>2=64gZVr{c*f*G1z7V10a$U^v*e2Wz|a&Da*wI2Dv9P9(p; zDK!CNvGQ*deoFQU3O>l3^1ejaYT}zD6}K%v))(&mpq;u*xn@XCItIU89K(TFR=Vo? zBcjjyfz(=<3;}Pw7-!y0x0J86*zB}fjxGqN9es{1KZt~~ zHM;XARy>JN^KeUOd`VSB0R%;QJW~y!&eR_-X-BF6VNO}LTQm{osXdN6fB-DyEht?U z{Cqw+J{BwYkRVQ@^3L0R-~L-}sjw8{6O{N{KmAO)C}S%xTyl?XPvS@Ti7fnSnrEf4 zqbOY3yiC=md=r(@Mrdsd9u;+UFn}6CQeLMp93nXOzKi}4&4!VGU|NfCdZ)kxS73Lh zJ>Do9rEJ2)lrA(-av*yH6;y++%1dCS} z=Bk@vzwnkPL4#wGR|RyKrntc^WR@w^G+1Rfe*d_~(qND;LW9kUOrZ%T61P~ey=9qt z#fzGpdqI+sJdIOb9ZkoYQep$r(5+Q9$1mm{(ctGpUThD*ROPK9{v1&Qii>)rDb6$n zCHjL#_diWuI#(`NFUNja%iPm{Y>AW9Db2*4*Utk%Rd@PRN#h*~!7IjjnBWz^-y6yE z%wySC_Bwz2wdnE*c=fLLQBH?EiO6!*;}eh`AwPC-XFo7_}$11W`xbExRbl%TZOIKOM%Hp{@0hvujg8u?_91^d}pb! zwmPQYm|y8u`>~bB&Q4)*Ylj%s6%(25e;CJIP!xZ7S;k%B4da_VPVF3R!!Cw$KJ=)K z;rTbzt^Bor+a$Im?ytOdJSu=3OZR`z?W`WL{xNHXqb>grVO_#+jgIbe+AoY8C?p_l u{*RA?^%Rm{piyiT?#EhRv%0 literal 7765 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 xQcHOD$1bU5PtZ2Un>S$s9;cYt{0b;$ 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 Sg6rRWjlPb_?T@!yV*d+jx2tpj literal 4231 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 literal 3908 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 diff --git a/test/integration/render-tests/text-field/formatted-images/expected.png b/test/integration/render-tests/text-field/formatted-images/expected.png index dd6707b6877932f40ac29cd2c8b99d6a1c26d09f..a88af8274eb4152e714a5f2c7989f3c67a2f3d15 100644 GIT binary patch literal 4185 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 q?HR=XcUb+;==%TC;dw{#mmnob6 literal 4153 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 Qj9&r(Q>-P1Y=FD_KNT9U6#xJL diff --git a/test/integration/render-tests/text-field/formatted-text-with-sdf-image-non-sdf-image/expected.png b/test/integration/render-tests/text-field/formatted-text-with-sdf-image-non-sdf-image/expected.png index aba683a5445ded6188773c6fee5485e6e343fe36..724215579e54482b765e279e1400ef1d743b8d4b 100644 GIT binary patch literal 4507 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 S7!CRNF=B6nwJ!Y|ANwC28$K}r literal 5031 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 Sg6rRWjlPb_?T@!yV*d+jx2tpj literal 6298 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 diff --git a/test/integration/render-tests/text-font-metrics/font-with-image-vertical/expected.png b/test/integration/render-tests/text-font-metrics/font-with-image-vertical/expected.png index 24b767ca9f7208c72a37122d2e8ba26e1fe2596a..bf2c069ff5b8fe7e5241de274c06d1dc87317af7 100644 GIT binary patch literal 5883 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 Oo|WX(Wox9(L;efxTsMON literal 5986 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 Xhj$5be94hy?wmqfLtni@6(0RR#%7>R diff --git a/test/integration/render-tests/text-font-metrics/mixed-fonts-with-image-vertical/expected.png b/test/integration/render-tests/text-font-metrics/mixed-fonts-with-image-vertical/expected.png index 8b80a2cacbc80efe375daaec098337630cd1054a..1d664aa6000fc5d7d46855bafe525bd599dbdd3a 100644 GIT binary patch delta 2725 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 delta 2747 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 BF6{sS diff --git a/test/integration/render-tests/text-font-metrics/mixed-fonts-with-image/expected.png b/test/integration/render-tests/text-font-metrics/mixed-fonts-with-image/expected.png index 5b2d54adac10c862fd675069fce575446ffab4a4..0c48fe1e7009cf291ec2b9f5a4482c34d1e27bae 100644 GIT binary patch literal 6453 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 a!uxn9vK@_ztUu=HF2 literal 6507 zcmeHMLy<0lp$DWxq?JyI8M>vrLqd?0mX>b#@!nhS zk9cdn5BJ`+&ZiUmoW0k%Q5tIUxY(4~00012Q9(xQ`5k;dHkhF2yC*yd2LPaWqbMV( z12a3!!uY78+c$#fg+)+?iHVZWLLW)bMs|R^Z>xXM=KXNcc2(maN#o~p>sZ3V zFH;yrBAFga1QAWzb$J+f?Xh{o3YI>K^|&-LRAjnZ@fa7o3%Xo+3K)-jMHD3?6Y~rH zOF|0QfLEgK-3MIWav&~&6O9q-*arzznT&{Ea8P6eusnE^H&;}_-FMpiT@;8{qQ)lw zf;(v%4*EY~(iR%kU}5a~VULC8PlOdQQ^2X0AxN#})^yfuUtd%sq@7a)v?{xuEWAiOjFPTRzMG6-~E|muSP`I z4u6DlW;6N)WbH9`mHqLDQG&wEerS(nwMgdrIZ1z=Q#56|qYf%#+jfDfAF7}|`&{(_ zv!eh#ncMbu%-9}*xoKSJCrxe$Urd_v&|OZHcc0QlON*cWuGe|j`tGvzMy(^B+mADu zZn~3MJ=Cb)janndxoJAiwkVK7M!JnJ-!`K3iv`5~9J#%+^=f@@O3`sV^Sy|X@UE@l zO^10@Z^y6SRtXgm@u};YEdqW)CF9JV2<5)z0^_!wDxu8vQ!W`R0~p1x%FzW(zX@Pdo1JL65*lQjHRuPq*n%gXo%0cq+-p& zn^#8S$$#2M(Vg9UtYMvgMGaPJp=nIYwxzDDphNT6s(;Z^;N#j5Zzs ze&I62rVZNN`z3p88eldP6DkXp%}TfF82y_Iili_SXdctxhIr2I>vG+{BYkr`KA>{= z6K?!EEi>P%4F9!y!u%A==oElwmUq-{>9{-{U=vrXrR1;dRw!5R<}I=8e;D|AGc=ufJSv{g3hi&b3>S z>>YzMkG=dAz(juSpI$Vjr3S|4NaKHhYPA~ORSWtpa}Usc)>#JiR}XJ|)<2|iT|(mx z4*07zbP9>u^P0%9BG#hAjuR{tLT34hN=gzfbnDUB5wA2fS%Zh|Q>q4H5Dv_{-ec%g zVhvHnRo08F1!1YY5>xNl7AhEK-y!yi&xIPHEP5HbOUB+WuJo3BmkSV0jeBgL?>ULL zB`$oQ3|UvU*!%9(qhM*}8jISX6}NgV2}Y}g)_gUmVleKPx}Tm49}DdthHq~%NZq_A zj^Y}8L%S_YD{vIvWtp?t2WYKbD5uPEl`^9#JIuq$9cl>8rm`L+;LykwYRg@s7D)bh&2 zt$joxvi}7-s--qIx+@@^K3?0mZX&IGaYwn4K3;I0pTiehq_}E!%r6-RYl)zUbo$2lo@d11uzQ=_J;1OC*nx4DZBg~4SPh`mO{>eH?cR=Cza zE5Gg*d~-oMpVvi@I^q7(l>dUz_`vs2l3%hO=}b*lR$iWRu|GGmH;X8ej=-xqY*=*e z)*kJsD|1X4ruZT+mcwKgWc|LB)9>5<$3apIyeJe#qJ(>T+%F9?LEQ~(Y;24Kn7o3O z0KgXuZWgf|^|G?E!tdYZ0!}=9e42Ii^oAGe9p25B>1r7nv56eF)@FMCGOU@^Gp-k8 z%H|1r^gr=!OH4~+7CET;BuI^SarZLlp3c+LGchNJ3l#(=NJFgMM3cR2$9mCQW1y~@ znV0DLwrFxAG3Ihn(K8sg+ecOygU3TGIYIp^x8&pPK39DVuP_hc7R^j)vxEeNlcC`^ z9esU7&P{hGk5%z>DO5h~wP~TlT!s6;E{qXEdFr3*wE0^jX(K^Tcjktzuxe`8PN4fw z*%yi}UWbK+g)-Uxr;0aQY34QqG~UU^&dsvIUQ6!v@V()BtKY6VmlruZ!--Q$+B*f_ zZX!Z$2 zuId3=KNg8PmsPXq=;*?xCIbrBVzsQ9iF;1w;w`5IkOZJRL7tXXV98ZlRKmICkpJeW z<#;pq6W+o);CY^wO$Q9Vs7)JmiJ_`7a&pS*Y1pO5IGEJtbC_^LBt`Dh8)AJy#~~XO zf4VP_Vr~rw5?E^ia8}j};>8lby|o=aY+S97db#mq{`ekTf{l%>^I?Ws0}Q{vKbvr$ z(Uj){43;;pu&o9?1!Mq1tt*3nu<H)Z&~0+prOgkyYWeusRd<9{U6i7FVLAU?EW{;*mA z5X!i}lj-pp``Z)^Btb#Jepp%8VD|!JGhre~z*DaR`XRE(gWBF18kUJ+XW%4I>tRS? zRc=r%#iI$sXvI|YY5kI%#D0Id=;HodUG@gngpd2bRE52dIKslhrV#p-?}KN^XnP@) zg9YhHd(m3ejxfWX>md&tSqd)Q4}QBVV&>!ILK=Ld%Jiq$#K%4BkbJ zsc5WfMfw)HVM#Q<$YjgSLd|F4aaEi1zT>uttUu@0?=ycWtp_$HOI?%I4c`tABsGq75XTX;_(& z+LZkJYco#saeiieIw597c@DkeO)_4nI~6u)77>C>Wm%k04rL%4a@&e7Cq0{-g7!U% z76F3W{ZIN{%$BLp1QUc|p^)4=BAxwh^JxRGE&B-iaKZ~o-dC60qT~@EL{ZB3P70Z# zjGJ8ZtYQ@w?3no{xZMdP>h>#I_)ozwI-;xE2{B_e=t-~MF7?CY%1o&?X_b{B(kAKL zbN|;+nt33rdB8;qhf$pZAt)BL6OWQtVb*9R@Xo1g+Vt6rnrXG4zS5KW%wjHKx6MDs zxzyD%^UCI(SX=#%rhbaV3{YH*3uQ}Pc*#ju5qC5yk@D@gni)1(3R?O-x2X!*|;&EgqgKQl4dOUUu%=^S?W6tQmRTGWgs^ z-%GUgR-U14RPMg$)M#2z4Sl@ca9<6$Djm8%pH@eg7Tf-6tz&>z+Z&yYz1A$S{4uF4 zGM-k{$oG8yT8+7EOZ@S=KmxnAn0~;2e=u(ypYog~ zHPJL-g*SjMc4>Z%=`Q8m>A;6u)~pT9e^c=5h?jvHKSJZE-q=X@rJL627WMKeF{ymx ziqUI43Imr;icb7pY}QaCA6KT!UrQ-Ab!+=vkX>LDY<)9TbowBW#7M4Sa?&VrP&3zF zP$)l0AP!e+u9(RE zzn-m6_+lDxR1z3b>@Nd!0q=Y;yy`U3rgoSz$eiMW3JGP`sJRb3YTkJc zujA>lWeK(sHw;r3-eqjwD?=m;sE|S4z90SKchoE&rUz?IQWrDa1;M%bw^1R}M~`>M zT;9u``l1r##T^YwD33;bn;mn>BN-iaheJ})pGdF>TSgev=K9~Vtn4X~>H$A15_crH zjs{j!+s=$!2T*wfT))4YdAwu$64_T~21~wNRxX|STo^;!f*l4P3u$y5z830+E z`cO8zakzA5cdu51%qeER1409|NNxZxNsx3W6?1^WR-ZExL911H#LB&kwPUU7M`OWenhm;5YC+drji}>Qamotv5WIQLPEQ8;&pJ*6D53jS zNf%0$>e)HG#`nRTEf>qXRU+8P(cf>JhAZP7?@Nf) zwIqK>xU~QN>mu#FsN1mW_Qk-->%#fJBkwi9GPqDAkK3f`fpF|Cw|ED{;_ssb3`cwQ zk?QkO_OxBCAQBD1N&k?1v}js?LW$MB#EU-~gyYeaMf-)4!&8nVa_}#;8QilS+Fez6eig|fEua~I0=^>32&@dfACB3zZsYst4F*) z7I)R)qF505K}TrSsXbW@RNXIst=~L=;nKmLvPHUn2`f}?bXIyg6d@b=W7#v)_V&A4 z%7ue+ioBVw7X3;(B`b>~v-M|jy)F7u7?$ZUP-^Ah#hf{N0X-U>kN@RwTisayzj+a5 z!J7UIjUTWfD$pQ?QQ!3_W+QY0doprtrOn>}5*H~2kNcAWcI)WX)Xx}Q8bfa_X4efl z^eifZY2)y#$zNc(Isj27kJ|5?w-PYJxIaKmlmT7Fg!Fk4OG_pxEuHCIByadn@yT8h z1>O>Kg;tu_!oI=at^u9;hSD=xq=NYab4ZXxW+=COW+k7h+@GEsAlk$tas9~_l!STLSC;+v$&P%2F|CVO z>~h|^EQo_PG`?T-gpLfPswVgHUq38fF^P#ax4T4B90dYH>sNY;^|KlXPKc!vP&18q zv^GS}?+@C-5~wZX=rVaTn~}Ul*W^pJNz^~Ik8f@JBlP-Tt^=+7+ovZj-}q06Qk~lk zZw|dVYb@oN7zMz&OOXqct)XZgBB*ye!Y(4NwcPk{F9nz%)@Iv;&-sRE0B!|!n9AN zX8ak*(U4ljCg2^2y74`rTdDKoVf|cLSqt3>z%n>@$Av_24B1Z9m#)zYQ}TZAj+L!<5q!%kuTJU3fnzXK8N@C<+mCZBby~^ zOFHtE;+R;A8u=;D$L%b<>WAAU9W8{MkQSJ0vBa2m0_bwEkO^h4GOlbrjb4AE!_1AiY56I3 zzWq!?^DM#W2IP27|2*jFS}i#OZqMzeo`u2f)C?{1cdae^6i{6@WDIsvQGFYQff*$p zGx#j5E69jiu{t5GA&%T=;rJF7@KA$LXAUJyIaOQ?eDEZe_=X|!nrB1uI*6|N$;AF= zy8Deyzm=|virlG*ko)|fm8s(CerzE=d~dUa`Gcs&W8RcP7l997u4*!}q*-4-$3{IQn6nlJS-uXaPe8R1xw$paAoni0IQO9zDfeP6~ zE6xf0v3|*80wwYR(UDk!!{wbN5)#&5MhRuJH}qSb$4EieFyJbTVcsn-B1^}u_b;_dCo~;K*v%ga zl0fksds~uUfCG;mP)q*QE0z=#zg@oB)1AQ3N}f@bpFJ7(Cf z@Q{6O6(}IQ=NO6_oeagqmn=z9XbKmz@b5i37bR4dM<^Be$?X)}@QJ`E zLHrNjMjrqZ2mAnPt#SdNd&N!i&{9KDxm1qO0hYA@kO=W#9F7-tBAt*YNdZ_!DxllL zM}*!-f^n+KeQbPnS6O*>rTjY-o7URkc)Z4A!m3_cKu?f!&_OmsMA*V))g+Jmr+-mE z-j_r0fnD?}#Yj7wJ5bLuR@jWi(Gq~%gb|;Hyd4*m&JKFK@% z!$*^TgByTS3ityMrJaM26IE-=tzyXv!TXvpcS=O^w4wMbNjH#D`UGYSOH^wInYLW| zKPf*J{+g8-tdUCMJS(O3DJ8>JeqWPD?*WuuQxiyl2r0G;YZR##d2x%xftr5IKw{k8 zqo=W|MOKL^BT;f(7n7B*fg2AP3eF?_$hpX4W$hG8%7h`E3&(s%&81OK&P+#PL2uHN zR9$oGzYaT!Xm|y7#DYL`yiVRsBF3t9Oq3JxBp{^R?ofP*-VeVgBbm8RKgrOdNmL`g zn%G}0d+Q^Kv+J8@$skfp5CE{!n#ArWy9%vu4`N!3)<%1^vwP{re&cD#)&W9R?j~sB z{Ja5765jY}QEO$I#bNX>jpOUU`@X+IwCdUNx43_~0&blU=Q+PJNZod;NzZ?ka{H3X z1zR#~a;ZAe*w)7`3llAZR)A&C%*1TjH}FBhX2=0k(;^8bh7itvm4X5{sJD*7bVmcA zJS;8Y*>np*S*&~fEao}G=-@B^Nb9(Y($YU}GI*e{nmm+01BMMpe%rpAa~Sm)pOys4hD@uxncm&?d>=b1-Dh^T6t2DYQf) zs}A%-2vMMp#~&Ol(Vd6plMabnK!a-lQSgiGBWs(kIFH3wyiy;MqV<%uxN+;Pdr0b@OjPRw!u=Atd;*(ACUNijV!AsT0W!eP+U z9H95B!iFoUoYZJM^GzeLhn$^9ID?5bnKGgX9RF_9f0KH0waTCrs*udtc{2xOG-i5D z#t8r9kI_H&FI(qv$Tl|smkql3F)8}Q9$qLFV|NOU#E1m9Vl>OKoyPG}q}we|0(ev} ueypiXJ}=&xMiY+;>?r@=^uL+74$5A>`AQ!II(q&@0Vv9<$y7*Lg!~7j_;nKi diff --git a/test/integration/render-tests/text-font-metrics/mixed-fonts-with-images-vertical/expected.png b/test/integration/render-tests/text-font-metrics/mixed-fonts-with-images-vertical/expected.png index 52c2240ef47c46c15c102cceec556abbeaa28f97..2b723928af23160cd6bde5a09920cf8f05f76131 100644 GIT binary patch literal 8120 zcmdUUWmr^E+b#n`*8tKrz#yGU*U$_hN;gu1fFO-X4l(E`U4n#!5<`h}mq>$3H_{+o zl4o?e*OE6Zd}e_>np(5d#qx78WT&Lq!j0e*nh?0Uq$Z zvPB>XG$1cMbtSB_A*M~>hl+y<;+c*P7BA2zzyhJ3V}b830S*S>z{0}G0b$_)E$D76 z2m61{{>Z`kpZ>+&h46-PFDxupc7%$efj{W4rRhtOdc38?lSV)pj&L3v$lWoBA_U zLJ6F}8jxTD6(|`tOoQp=c{D*B^a?K;&IHzolU&@Vpnxi#lS0BIfnkrfB@T8ta-R{3 z?E!%*E{AritAv7=B;ep>C>+@ZLd8a75q7wT5_Bnsg5Thfu~L92BNnhIqQkKWDe;-) z*|A{+tsr&?K8O-VCK;%5H!;rt>%@z(NAF@upu&=p+%I0d_&Gl>h=YTZkeMkE85wzz znvua+g$sO^j}C5Y(iSBH6Tu#IBPwVd`ZDWQ!T0aqUz{zr<7{qjQnW4zIXF067#kSe ztEv+)uhCFeRvvI{+T_QEMOXRXH!w3cPW>q5rAEdqogZ84Husg2fG9KqOX~3Oki9Ql z#kA44l;6BY8{#F)$H%uUCG=4}6zswBtB&*Z?5w{?|I12Vtb788dd!cxM!ypj3jr9$ z#ig#Mrk3B>XwIS#j6qq{WoKs#Ng|&tWkO zgAmgSCcS5r&*S=NmGtUp?Rm5PIL0)c-#1LwgBnEHW$4dA zjGFiOJ1ti4y_qoE8e$!VLKQSLm{|pEa!yq_#$wECA8C<8@HS`by|9t|R!t_pyR$re zMwpS6G#NiZlyUq>gRd&G4)1RlGQ2$pj+|`?GQYUE@Q(U-wBG+&C&PZG=7p%^5R+V2 zhw#qUSV_8eEQ=f^_dfL3;cEX0d6k9sGXO0Eix`)%T`XK?1(MPn`_!Z)4MW4^q?D8` z*|e6(h(ZkJw=|)fuebLGy&%Ny>j!~r(OVBD(4)^XWSc9vNXX+Fkz|)axQ#eb7sv(^ z;X+c1nLBtH0j?}74U}z&#Ufmm|L#kgRukzR+J*IGzr9lbg}fntaAApUS3reP5w`W8-0$}bgsh%u|xPL zWsJ(L1R8z+{?u=ZW7l2-I7ebfhVWSJqm~M~_y!n8-KflhM=OPYRGDYMh^?KL_>_W< zOcB<9V^ddzdBg@s(%q0e#gTe-n17!z$^_aoU8)7GO_&RHtx0jYB3U~v6ZH+As={YsuH?K{W(meWNc=pB)eS~-75=V-)2A{ z11}nc-F5iQ|{Awwm+eeH%%eslocAD11Rr-Kao~oX5`7eIik!T z1a2U3WljON_d`KtY^Htv{UGCroq~Kz zQiry@bPYr)D_II5R_04=2xn*Kx}9Mtkh;l`{>Q%jwMax z2mTe1RK+qRj9C~Ke%$6tb1x7h9TAyXW%5iq1}qX@bszLB8x9WK*k6eh^jK^I{T(HC zUX}DJ_UN15z^J_r3SL0}o8^10cu0((jz`jQ5JOq#N59+=MV;Hu! zjefOUi%N@P%oA7pjfeuuz=!B0l~4M)sg^2)%h(rrdBWIah?MiLFHu^RQ3$$6q^Bnu zArwoc2=BjWsS$ViC5xG98VL2qHXVZH4HI%Ih z()E#5om(;7S+qQW%g)C#!x+P3=7+d)TP96nRbLq8$RFDFp5o?PBVyt|iHJhIh6Nmm zr(VO6I^@TV|Hh6Awo2#p>hkX!7}dPpEsL_qg{g(O*EX;=vUHR2aPw1XCPKV7KgL5h zb7)W9LUd6iq%lFq=L@p_<)(*ggYi4F=UNWtF@c=qry-xCsl{f>W_8#0rZ|&jY9hu& z54`KjtuI>K=eIyHGHetBe9^F^3~ti zbq<=`Sc7hb{uB!W&o^WTv&G8ainb-cJ15PBT;PEAyyJcFjQ}Y1K_Hmje4S zPag%X3-c_E{&qXjk!hBA_pj)Whk8W@D!rxr#wR4t5394AVH|zFlv&R6LHe56mZk3h zuIdx4Rd^_4ba~fd8oY&(&EdDDucujga07PM-rwH9k%Q!&o@p|JCFxxKH`_s$YzCh? zeoEEYx|dPw8taf)Wj+guc`EJqkqPGob5=Y~h*~!L{prx8f&gE8?r%y@7FHAx9B?Fz z)O3Zov#-suV2E#`RDU?ea$&w=o5iSsLO?0gqr5B-$#Q&Z6i@;P088TKp zCpxaR!t9XNfM=#F(C4ENNR>c>@^e7=87p@N`eM#KWpVDlYA#D7FP+ebpURQ-ABCKNWt>PX(C?R924m*65_#&*w$AeyCj2S=~yWH-kruPD~Uo^_$j>mqU0Cs7qmR0slE9@@^}`tYX=8?f}@;F;{y z@(H^|wZ9*y4z&%P>g*gnH^It$TF&j^5^;a7UDLHfiVtiN5EK+;u3qz2)uAAhR4jpt zfM;(!=u2!psCCDpengOFB?tY6RDGHYrZEkPB7*N&s@SXZ_6{dA_tQqOGEB^BZ`EfPrUZYsi$Kx&~G*jia2C3#xgPo_`+VlfE#5M(e1eFqOTOlWM zGn;F9zW-J_1gMu_)zPSm%BD)+H@}NaMfuv-;;jve?-SJdHAKEiRHy7hJk0CsICW}& zgrOi;eYm;Fnv^KP`s1HWY<`Gvbh#}jEMHV~0V`*-v-+ltv z12SNu%BE>sQKCay&z=Xx!^fjWn5`U_?r|k^$I%V*a0brh_Qg>x`*WI_2KVyeNl9wP zL^kT5X+XZjz0)Uq=hqpoxVimTuYIxOyTul>3j1>d<#Ka@OwVnPFM%9hrx#DN4E=xy?=N*84oWQiC=Wj2tG4%DzO}5Yb(s(>Dk~G8-1=ZS)@7A83sWMv{+k>K-gq2N!bC$;Vi@T>JqzYh29qex;}O;y#%r_tZ-$v|Y412!)vegjqVUh`Sjxav;E7MMuJJI={6 z4};MTK5Ja)-7ars$;w>EgXDlkuskum7nhgSqA?$M_~sgXv>s*2^29;M`Hg{Um`TQW zfXv-_b#;^ks1xWv+KnFqPe%~hSWut})Q8_lVO);X@I*ELDyQEx4g|H&iqr`dR-bs-pOb3>vkWdFnPABsohh}e)#aAQwYXMy=Nn^$rlf#32}U>U6|xDQKmX6 zNg2SyOO3nvIHq>q?+}PmET>|#{{IptbOL@3BHqW0I zwGC$W%7D2Qn>vG)2GiP+8NC_qEj$XBQ^PCSw^!>CvQ0KLz%*6a-kj)u8`KhuxRUD+k7hPIgWvai8| z`HQ;Mq(&qvwtwfUqVscd;HiN?!QcEx0K1=>n)*4bK*J|Vtbn(waZn!Y)FGGX#hZ17 zThl$9!&$H4UfqxjeH};~_6!@71yHpW8Mo6F~T>6E9rIKt5i%;As zTc%B>=23urU~ht|tbcY_nk^4bi;@602q)|OCK#MH?vOrz$ERcR9q2h5TN61>*Q*gi zLL&qcMv#;^1yQ5`gG3h9lqP(+Mty4dDZ5N%zwncG`5$k@f2*#ZYF}E6?S3c++?eD{ zOIJ5`zL#d`E#P6N=_z{bsgRcXCeyLTnS@3ZlYwy}%#)*MPlju3W4_LBGlesZsp=)3)o zEE#-Nw=>shEc8V{NGR3V>XoW+Q@V5MD@VsK7A=9MTFelz^uW&oEr;POIkSL)Yz2k* z`@*^mfW@DON{p2V6WO|~2VI_S#?G!EZL*E-&NcevMEUR86)e>*1oQdr&W<+Vm$6Af z#jHZEPa^Vln-2f+ivR%YdZ{T*EAOgI5 zw~_zEtBHC0_AO7rkiqKVt3v`|areVC&J(;-S(IQ{ER!3je!&CBp$#W4sGg6Hn4PT- zZd(5^0+I?+I}kq9Dey8G)VN=MLKeFVu%!+qpcPC6$>F@_*-*J5{9i+h{3+_0lCrWG zmnb*nro{$JMN+2~GATRTT|IC@;yjk?j!SK1J<5|BPq#yLz`>?L@D;0}r?@2zA?d@$`JT;SfA3Jhn_PwMKI`o{%Az^IFos30xY>Wn4V$nNNEs-*n8vA`zbauh zpNyLy{$af};Xm_n#Ua&_9uK~gf^RE|$b9p71q3o5leyQSux@2M$!B=9qL5^qOgBa} zQkYaYn0vFjy4sAZ-P02M`ssi4)4k~F#cFgY@rbf5XB-}5pwdrxLR&ey_di~V!@1L2 zu*sWiCZ9@XfxVC^_rp_jagzF{LN=l(Kz$|KCKPMeh_1*>>|Tpha+8um(!qMb1eUFe z$U3rv6>7L>TR;q(0R~(m4a1K{))`lnnMb@y&OZCEDj%U0!8u1{&%DhktDN>^gLg!o z($tl@glS%j8Hfu$J3oV|w#O+{%8H7fcLZ-h$=QW%g?zx#oxIBYIkx|^e&Gn@?HC31 zZ%~Stg?XnSIIS~CBQ7_WT?ayU@52B)T=|n}6Nhs+Gr0d{EVImK$HJ%NVb?fr+yu1V z8zXE%*H=fw+ij$?>M(414q8|=MVg&4_8hh^SzSw~5b+Q?t*B$4=qK3z)n-Aeca9_- z$%g?zm`LlHEu(m#M<>s=MxEQjA?f4dQj%4w1nzds4l=?|55H-j;$sxg15&CdbzDYx zJV>nH8R9P}ccgLERU=@L#zOhT?;^G50TlbAf>Z{5e0-3szmAmvec)G#!esjMD1e58 z(h-9ntnQ$Cg73;OD!9uc7CH7^F;p6OK{Oi>0VR1nP&vdTGv^tiSR41K)k4iko3%4v zD|8O$QM5)Hkk(1Q&v^Jw%?hgcu5Cb5lo|-fAEv!rYbn5m;dEiI4mH)1%zO7Aw|WZE ztI(ZSz6)S8gnzxRU)CosPHR#QRpyVaU^VKZ+t{YIHoD^c#*t^5kZ7FqLn+sP)DRYp zU#N^=CGh3(v`1JAbHATpT#Y*H-l8|2B~A_**INxSY{gg|{^sqV;579-L~~iDZ?|U) z+ZDqUN&HUIRvz~|QA_O>F}t=(daFd?p=@h9Soiyhh4$hYRuc;l3C1c2N-CZ+H$8+O z`AiyTENRL2A08`O!7?V442 z@F?LccdOPY_CL6W%^YS_jHNCpH`Tk<2 z;KT!M_5A#CDT2H>)MKLDDluxT#G4+JiM~w(+`mZJS3~?Arnk^>*Ri;_sOtRSO>j}A z5pI#1bJIoXtTCH~B(Ah`6}XuIvDs>c6uzxqVcU%CKW z%0kvl`if>)4jw8UjTlKjh9fgMWasqS8FKZHn>%tlD*697sI0G7%K&)UU1X>-XbsVR z9ZDfAYbeBo-kmQL?{6nBa=yw+cAt7%>4y=;T*@|}f$+M!%=kn)utY5i^)2#hx!&tk z+vxeLNT$hJeEL(iws+uJLD^ip9B{3MOFH%6ke%J%H4wVn zr{H%rkt+5^v@NdLJCpyu)_m4V(e)&Ln^(0ztqMd@Pl{O+)y@Nm8^=r5b`<%huxZBw zG?RZ%cA|o*(YzlakoBg9zBhJ_sLK5s*GWJigAz+7{*N&UEOZ>Z{hb;v-+?`77Z6&g zU%98Hdb=DRi3~=Ho+EQ|f|_M=Fhz@S@k-<$!8ARhdfgYlzOOI?S(V>p)fx#rR5Jk2 zn=)hLe~o~9Lm$~vH3KL(AbUOj5d>@*{RqM}*AM8-+YF~azyjP4j`SOy%-2Vcq3#8!+)v8K5fJt8g5o55*!(0A+UF4**=_GV>`$3I|9+L~{}+ qRrY{RQ)iZ#BNiY6{r|O?D+TTQrT%NrK04jKHAkpEQYlkn``AT@NufCEy}9l{U-(j^UoG)Tjcf(+du(jg(;NcTtyBHbO*-6iMd zdC&8n|L1c)oDab8+k4;lwfDYat#wVPijoZWGxBGT9zDXAla*2f{`LYt*XU@#@3n1o zfk%%ZkL09a8t#UB1{e++nvH)w<>C49F;6;ML8N?Ui+Er>6=Jx{oYu2CM=Dnr>$F18 zx4%B;tP13<`akFTz0vL$_Wadk0eV=~!B6T55PFPgx{`f)>!`~p1_n?1zSoV%y?Vm4 zt=5a%jgR+t0vlrYP6{3GIMA*9{UAfo#|*R~&1C-KC+O&~wLLIs(9aJnWrzzCN2fdR zgMeusb0K~Nr_PyyK>-jn)fy3VZ(!mIQgNRP{jmfX!Kh2k{R$X5T4sQgflz2eV1zHD z$!H!+#9TVWH(~kvfqy{4zVt-kqR`5E*Y_Eq0S`6-OZUI;4)y~>U(KztAs`SCXGr!s z=c=SQIzEk^Qz8ru_9vAZK2AEKg@8hF`5XEnz&o+BEjrs#ILC3pV`GcQ>3t}X|7O-fQ4w>APBog5&soB?frbWQGE9JS z5DX1QE?aU44KgCousap`=K~y9yE{y|wm3ZBhZ6c*me@!4AlCa6R}r|c+DG!_D}C=j zo@LM4^6`3s9;198D=IEVO*Fb4*m5a4kc;7b-@UZobkO}Hlpqj7zNv(sjnX?zSD$tb zTxqCuIB{Vf5yo(yJV^v8=VMW?bB#6a@76>UWd`9hGrDFrH6Lb)_h!DUyUAs~@^R>Y zS=Wn|9lHZV|1W!2!5>4~D^^f)%vcbhgN6>;YP%s4umG+Ld9 zFLpJ$?krv0jBmsp+xJ)RS<&(G?lVzfe#{%P9~aa`!cIB>*zB zRFX?6?1p9Ea`uG|9oxA!oUIWZSM(J8O)0&|{An%fQ=BE5`^#Xuz7E9G*!Xyao_!0^ z#hi0=igd0O;8#+@C62e3j?H)Hv+if(S_yX@qX!HMNq#p6Z8Y5G10k29=eyGg{zY%~ zY35)YDhW3?KD*W{^EvpU&*p4hdC+rWRS7WmBFYRU&BsgHKLg2#gSLC>x#5-Cy@6zI z$MpoQY^`#`pJ-R-v-aa^5$De=sMsn65OZ#`A2t_Sn*Ossa`BU5Dqmspr}HOu?pr5W zR9t3139%>zI81VV&!;V>>g+R9G`pjy!gZ?6myi3|we(s?YJd>PrkZ$zZxQla>|XyD z_!Pl05Wt64=c!j`SBeFnft;3%l62CK6KUyx+9_|NzPmmfb+4fVT;WJqyy^YUM5%U_ zDaNbo&F8jr^{SD6I556_6He;zj8njqi(bC7J97GB#l|PUD#P(vfHtIiyR4+-M}FqV zuqT+rjKS}K!%$IC$?AMlk3G;Wzye5yN6NFY)m^5(iay-U2Ii)LrDoxN{VzO+j6BwfzN>c`lv<5`V|oFx zz|8!ek0vFV_9F}Bw;7Q|VoeRtho>wfgg~CLyrheP%r*L4ttV=>(_y;_{Uv?VX+|uE zH*XnkYHnUM9U#v(1C8jzXK!?SL*Q>2{5`J57>TydYRYr4(BhR)9rGiLo5Pc-3nGml zP%UF40~&Z@3YD+3I@B9(zUB!*Et31MvALon(Q(x~Y{f&{spk;aS> z^DA!;0cXqS!kG@jrHOhgw=F)izvge^iBT?wQY#vzPii;OFeJFfbl#|;d}BSs_p*nz}llLG2LT*;K|qJ zU-~hJZ`mw}XBZ+b%^aSmhhcf;UxTActky`F}BJ?k`?i@ z^k`)ti(|o;3k&^zQ+RG^vh{p25tvy=nus|!+HQ>;s8+3Ea+NGwDlpWv*>cS&kot71 zUhjw$2&+A_*uaTRMw(P3mwzfPjgnQf0QQ~kpNu07JVcKD_fzY@M5!PB`^+VGIFUo< z#{$};6vRH5?kxh>S6q~L$Ftl~boVQjy_sCpf8xJ;AxXT7i^lKFSSFt@oqQelYu)s` zaox6I>!2iSsF;B!w$L*Z``3V43cPHJ`|(aa#$K4&@GrLuhf|!|Its;bdxNX4Po^Fd zh~)LC>ef@9y^!#rwy?4C5VUkY(w>@Kquo4VI!-8`j}Z6qLFfrDx)3=9;izOLm%0gX zn-U9B)LL8{qL1L8DlPQim)iV{rt_wo8Qd@mZn|`M?D^_~jgo5S>*RZQuzBpGrJsEy z7OM?N(gsQNk;jLfb=N+IW15*Nz7vU>?`FB#8L}oXn>J5Qk+S_5f!_r51uJ^FSnN0g zA&!#p?QTyvZ*vCuSx4o;+nmdmXo4Y|TLYIgK`M{;L4`QBZX_f1C-g7b0OaM^F>&~< zv54#Pj#ls8K`N$7gR9qL&&am$k`u3-+4RX`9M&&90$k232Lns+XE6N3$733l;Q~8u zA{WftZ=y0LSm0SDI%E}QW<`q=16WhKW}PX^{(aV;LY1UFJC%h<5Ch7%p!P*rCQa)$ zxjPHsq(wpHRpbj{Z`@gm6FL^^1!p#LCRZ;qZl@k=x$S^N@;IBo{!sCQaWfe@wCjod zOvJQFP_?{_fUv7ywX>Ii@b}=C+=Bg-c4v*aU)p`LK>LU;hXXNCQ2yyndCyq<69j|l z+S-dHrpW0)FcihJTu2rF$am=Z{_f0CjS8+W#BW=Ooq1N1nGDnY1{9M1 zLv^@Tx&S4HmhZW*7IMR$A%p{^%4EwQ>S3a5naU4Fr{k_OV6E%pRRj>RT)T~`rknOO zmMyz?Bk}(ADEtdPgy9d{$R3}FQ(p`i<_|OdgAOx6D<2M&h;fe%Z)Eo**;((z{)s+W zZPr9tf4}m{8XXHf*o#L2HS_@>yEI!0B%$Y>P%`t);Dwm6z11coZ;LK0^=-YQ3l05( zX%$_IW`?2Ul`p#%dfX!-Piq!UH=0?C)C&_uRir^FC`2HiEeLKO%(M|ah+FwhP?I6M z=09*;57Cr#zFk_ZmRUOM1aJuumBe~h(7?u0W#Nha&eBQo>yZ$>0MAGlDV z3lGu5v4CTt&5O$edtU|d@*}w8&Xc<#L3VXl$Z+$~YQdKR7z4Mg4c_C9EE?YRJm!N= zgM%*2%rYBQ-x~pzDd8lV}cgWznt6W-T-NI#LZQjN#R8}?|@z_QSeV~ z4cN^DCqF@5^j+uLZEB=Zl&NaS(DBdlqR6$JIOR}TT>*Q>H?*8!xaq~r#%6Q8qL-KS~WajEm)Iw4?a$4n&O1j{^ibE^yY zc1s_&Pu*-uy_bY<0!62J<+qMlT93_8l~OPikMZ?c2flbog{6>Asn1yk^3uD%6(nyp zHBW!nWULKigv3&ymX%C!=$W0%f;J^$q_U<8aLeTdudPUxCf5Z@8=>r%dw2 z0iDG{1pZKJ_3`&Z2Qt`+y5ELc*-wTO?Sw-TnsAH3F<*FsY9e-raR{zm!U#WP_0uC} z8zaL6YNVp(SU_^y!tG=M8-W2f=W0{?IqR2}lCe$<-J@KTR!N)%k3^4^J$koJ9L(3+ zO|S*g^XPFg7l7N63Brl0`US1}Pl4P|P3~oAB8AS!t1V zYm9e%#Z)ZQBZ^UUfsnqA@38WcsLe8FNscKFt@PNoor{E`snS2@goC6=%o!7hNj_!? z{zgu{7&B>Qs*m`{FEJWu--DmRe{hW0(;-_MXb8smGl#$5{=>M?c}Fov7IiITC6 z`F_bvD;rK5QI5Lr#7R)O;Jp2L=8xx!+D~)k;PDK!c)3A^XxyXAeSCl|>q#7}*dlu zMmDx?0MQNS$lykhaWizizB!?Z0!zK8I+*#6x#)d@&H93+;>NpmD0$nCKZ;5?h~R}% zLFQ^tbWTYL7GEm1j*iaeXg+R+_pw}!%?mTB?;6QqDft={Uhdm{c$=iL@zfcw`Vb$<~89IQ2kY>K>XS3Z%gt2>gy z@&4|DWrfG?*7kU2PeCt8fpK)bB9mAVOj@OrV;CzUb* zx!i8__n72#m+U9y=P%ws{p{q4$PD0O}fyX2fEQl=Wz(NCY^QvVoL7JK=B<^=>@>v8}w|{O=xdAd?7R?gAUxm}q5 z-?_oKG~IFZ^5WT2bpX{h2B>`f*0TDr;3Xx0gr%-PL`(@~e){KulQAI~Nuv zCe=@&B>E08QxcZjyIi^Wv55+v4}k9S0N88Yk4$a>MMF@LD^WWQmJ&8YCG5s({wpO9 zX&L!a4L$qo--bx9rS?ze^l>}@EmB)%oSs&s@g6PGWQm~QS3;^%=shSAckH?~==K1u zuf|V3$(31j0OXqGtBuUW0>j8t2GB6NW!QA9kMQ}PjSlV3z<@#owW#iY*8Z5fPRtj> z1mrCbY0xL`hiY6oiP)+=jUR#~0cr!AffCh+7!yg}9}WQ!rrbXXELuez1p98of&yOW zyJ%k-nRqmiSkmZmbVcUJW6z^S`~gC#7}yElnZVx2^nF#I=-p=<;+kGCFe9{5wYH;3I8Tu;8 zEEx9s8c>ilhXt&z0ex*4_XaHvDM(l1);XiYGm^Iz4J`7dD!}9L*#4qtr@HP3>@k~A zaGlSU5HN|#Kq^`aU_-;<-`t3vbOcp-NL9L1+Rx#ZNr<5wl4{U(khrw=3&b$`+KUi9x}k600NcuB)eJ1TC0 zP5}3_VwU52)GxH@obQ8#%451Ha<>q`X*``nf|gaECh9w3e7xH+;)kI3At}#_%Ug8; z>po`x^Xi9bL#u>LpiqMPFLMkaD-6$>1s2dSu|2)wLs&V65&HkY(3iI(0N9D>hXbMq zUmt)7EzRS{{sTxhTKW^&wPu@Lo*8;>ih#>ue0W*2T6r1=tAz?W|%TP7%wJ>}?qG`Vovu?qYB~58V z5HG+{zd4wQG>`s4z&)<`P_+Rli%WqdhV9KBCmc>|vLd&KNajCb?4BjuvW||N6Xizb zyTorlk;FljLnUI?jAu=Mv%D>7H@d&pBKj`;VTMQKeCjJxNE?ehJ|korFR1|c#Ve_ahNhUr=P&miF74q)%F8q z6Y)L2NE$KfYV%*6T_i@Va+-1@Ibf(B6vYfGcWaJF=knD478t+tPM8eHR=S_Xl;yS9-To$e-p5u0heB!bSl7<&0H1<8oQMp4hxcHT*SL_d3*eyoh{F`#ZkarMTl zdsaIDbuy>7LqpH*m!ZdcLOmd5Dzo5BCP4=HOyBGWVN(#oERmlD` z$sM{PpAU(&VhfkWpTQ$BbpNVr7)i>xQnNR0>0jXhD9NmU4guk=$a(bUbSuZCuKtF8 zBmae}qpATWEG~fC$P$g7&9Ip?Fffq0$9pIXwhf(SQvcR&SC`2km;&MH6r4@^Wxnp1 zPdj)z2Z+(V4S{kaI_mS!U~wQfE33kpC^I}Xp{G}EzEcH*{rxs-)=3a7$z?h967$aa zGFr)?f)$**n+re^mmLYo(*xAR194T=SgygzQoUe6$;}+MLnjD0f32&VLI<*-%J7_R zbhSB3vMCV@izkEjWsTBa0yV8LQG__h^H&OQkpra#+3U+UiX~8%P1bo#7*Bg09ClF1 z@3|TwYYwJz`DM+3CHxgN21n9!{E7_TL>eO7$?*i*uy9z7FXJ~^w%y%^286&RNOpC;xK+3 zMJbpa((xQTQ)7iVK6bKQXx6#=vxud%Mn(sKp#N4*F@>0e)*Ge3GH%+ivq}K=**&mQ1Dmcg!4YDo|y-@EU}NsG?EMeF}w?@+9{Rb2N0 z)mQTg;SAHH0X)6Pk1lx2vY3N5q}H9q3dqoYsHk`}KBubsF2mCKkpa?W_dpFUekb!* zeA%@|{$EvHITdD^#Qh>Y&o>Euyq+`r0tg)qA{A}Pox=PK>o{2<5r1Q;hfM71j%NIU zC8+&=TdPg2+kLe=Ehf>>Q|{&WdcvDMd*AS_(fl6D$vkAv-R?j0t&$)Lc`bXjvl^}h z1e)kHNy6}Ke>nuQ4U^4*-1u=sJJ@f`N-7%;>od$EX=Ug^KZrV`S?3z26J?HGZns*Ow0 z4CP>SLb`freD!}(mNe<<=oIdPg>V{f<8qmNTnN7~bBEwu@=M3;&o}LG;NyAl0cT<% z$%wHCq=HA*agBujP>d;VSD=KUoC*LXZUt0EUl$80Z~H66_hBZt*3Amhi(gD1!f;^t zPhqIF_ya!_0DYS=2bB5``ovZ-Up#^BxeQ_4Q3FKc4VMoEH1txyMMVk=*aoK`G?A19 zkX{{K*_EkLf!swZ{^pz>B@_2!=F?Z1BpUnD1Mfiu)7xD&3cx3RuhiM%N{paHu{XrO!5EqhZsOy{<7nvrZFu zTNH7H?CNru9D}el5tTLCeXEjABbz3Vo=XC{Zsa@j2AbchQ131FMJ|0lPTBHBr1Fr7 zrWQ6d*~}_y8)_FYr#hrw{1LWSFKiebpp2BUQ*e|3N1iPtL5z=3gRy&h9aqUC%-4_C zr|QjJ*SLWM|1<8h-X4m5^N(lIkYY`~vbK{!G*n#UI!j$$XA%i<3%5QeCSrwudxk6TRr)~B1GZiracVYC00rp zY6|Gv8xx`6wYkGLKgTT;lBxuu`^-!QJrjjsC|}wdGlCB2XBVujSH6GfXHzISCBOh? zL#lCfJXQJ7&&Gby@G}dD46Gt|kKL({KWB^zWff2DsQ&9l1GvyFhj1>m7+OxtEd!n!bq-HD7 xr-=rjXA_mK{`WmWK&$=#$+Z8U=G@X`OFOd|%>`oV1cunZ!H){{{20<@Nvo diff --git a/test/integration/render-tests/text-font-metrics/punctuations-vertical/expected.png b/test/integration/render-tests/text-font-metrics/punctuations-vertical/expected.png index 1ff02a4b453f128ce0394a13174a511916a7a52b..077ac642510a97bf02d4a2b610be895098811e30 100644 GIT binary patch literal 5549 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 R@!zimx|)U>U({d`{{sqKkL>^e From 689029df8da7d27d81a5a8ca73c18462de7906b2 Mon Sep 17 00:00:00 2001 From: Danil Ilinykh Date: Wed, 10 Jan 2024 18:38:25 +0200 Subject: [PATCH 12/25] Removed macos sdk version: it's not being displayed in the docs and sometimes contains non-existing version like 11.0.0 --- src/style-spec/reference/v8.json | 927 ++++++++++--------------------- 1 file changed, 308 insertions(+), 619 deletions(-) diff --git a/src/style-spec/reference/v8.json b/src/style-spec/reference/v8.json index b713459e1ca..0ebdd75465d 100644 --- a/src/style-spec/reference/v8.json +++ b/src/style-spec/reference/v8.json @@ -92,8 +92,7 @@ "basic functionality": { "js": "3.0.0", "android": "11.0.0", - "ios": "11.0.0", - "macos": "11.0.0" + "ios": "11.0.0" } } }, @@ -117,8 +116,7 @@ "basic functionality": { "js": "3.0.0", "android": "11.0.0", - "ios": "11.0.0", - "macos": "11.0.0" + "ios": "11.0.0" } } }, @@ -129,8 +127,7 @@ "basic functionality": { "js": "3.0.0", "android": "11.0.0", - "ios": "11.0.0", - "macos": "11.0.0" + "ios": "11.0.0" } } }, @@ -1101,8 +1098,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } } }, @@ -1112,8 +1108,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } } }, @@ -1123,8 +1118,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } } }, @@ -1134,8 +1128,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } } }, @@ -1145,8 +1138,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -1156,8 +1148,7 @@ "basic functionality": { "js": "0.27.0", "android": "5.1.0", - "ios": "3.6.0", - "macos": "0.5.0" + "ios": "3.6.0" } } }, @@ -1167,8 +1158,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } } }, @@ -1178,8 +1168,7 @@ "basic functionality": { "js": "0.43.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -1199,8 +1188,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } } }, @@ -1220,8 +1208,7 @@ "basic functionality": { "js": "3.0.0", "android": "11.0.0", - "ios": "11.0.0", - "macos": "11.0.0" + "ios": "11.0.0" } } } @@ -1248,8 +1235,7 @@ "basic functionality": { "js": "3.0.0", "android": "11.0.0", - "ios": "11.0.0", - "macos": "11.0.0" + "ios": "11.0.0" } } }, @@ -1308,14 +1294,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "expressions support": { "js": "3.0.0", "android": "11.0.0", - "ios": "11.0.0", - "macos": "11.0.0" + "ios": "11.0.0" } }, "expression": { @@ -1346,8 +1330,7 @@ "expressions support": { "js": "3.0.0", "android": "11.0.0", - "ios": "11.0.0", - "macos": "11.0.0" + "ios": "11.0.0" } }, "expression": { @@ -1373,8 +1356,7 @@ "basic functionality": { "js": "3.0.0", "android": "11.0.0", - "ios": "11.0.0", - "macos": "11.0.0" + "ios": "11.0.0" } }, "expression": { @@ -1424,14 +1406,12 @@ "basic functionality": { "js": "1.2.0", "android": "9.1.0", - "ios": "5.8.0", - "macos": "0.15.0" + "ios": "5.8.0" }, "data-driven styling": { "js": "1.2.0", "android": "9.1.0", - "ios": "5.8.0", - "macos": "0.15.0" + "ios": "5.8.0" } }, "expression": { @@ -1459,14 +1439,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "expressions support": { "js": "3.0.0", "android": "11.0.0", - "ios": "11.0.0", - "macos": "11.0.0" + "ios": "11.0.0" } }, "expression": { @@ -1483,14 +1461,12 @@ "basic functionality": { "js": "1.2.0", "android": "9.2.0", - "ios": "5.9.0", - "macos": "0.16.0" + "ios": "5.9.0" }, "data-driven styling": { "js": "1.2.0", "android": "9.2.0", - "ios": "5.9.0", - "macos": "0.16.0" + "ios": "5.9.0" } }, "expression": { @@ -1518,14 +1494,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "expressions support": { "js": "3.0.0", "android": "11.0.0", - "ios": "11.0.0", - "macos": "11.0.0" + "ios": "11.0.0" } }, "expression": { @@ -1551,14 +1525,12 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" }, "expressions support": { "js": "3.0.0", "android": "11.0.0", - "ios": "11.0.0", - "macos": "11.0.0" + "ios": "11.0.0" } }, "expression": { @@ -1584,14 +1556,12 @@ "basic functionality": { "js": "0.27.0", "android": "5.1.0", - "ios": "3.6.0", - "macos": "0.5.0" + "ios": "3.6.0" }, "expressions support": { "js": "3.0.0", "android": "11.0.0", - "ios": "11.0.0", - "macos": "11.0.0" + "ios": "11.0.0" } }, "expression": { @@ -1615,8 +1585,7 @@ "expressions support": { "js": "3.0.0", "android": "11.0.0", - "ios": "11.0.0", - "macos": "11.0.0" + "ios": "11.0.0" } }, "expression": { @@ -1645,8 +1614,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "2.3.0" @@ -1680,14 +1648,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.40.0", "android": "5.2.0", - "ios": "3.7.0", - "macos": "0.6.0" + "ios": "3.7.0" } }, "expression": { @@ -1712,8 +1678,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -1737,8 +1702,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -1756,14 +1720,12 @@ "basic functionality": { "js": "1.2.0", "android": "9.1.0", - "ios": "5.8.0", - "macos": "0.15.0" + "ios": "5.8.0" }, "data-driven styling": { "js": "1.2.0", "android": "9.1.0", - "ios": "5.8.0", - "macos": "0.15.0" + "ios": "5.8.0" } }, "expression": { @@ -1791,14 +1753,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "expressions support": { "js": "3.0.0", "android": "11.0.0", - "ios": "11.0.0", - "macos": "11.0.0" + "ios": "11.0.0" } }, "expression": { @@ -1827,14 +1787,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "`line-center` value": { "js": "0.47.0", "android": "6.4.0", - "ios": "4.3.0", - "macos": "0.10.0" + "ios": "4.3.0" } }, "expression": { @@ -1860,8 +1818,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -1880,8 +1837,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -1899,14 +1855,12 @@ "basic functionality": { "js": "0.53.0", "android": "7.4.0", - "ios": "4.11.0", - "macos": "0.14.0" + "ios": "4.11.0" }, "data-driven styling": { "js": "0.53.0", "android": "7.4.0", - "ios": "4.11.0", - "macos": "0.14.0" + "ios": "4.11.0" } }, "expression": { @@ -1937,8 +1891,7 @@ "basic functionality": { "js": "0.49.0", "android": "6.6.0", - "ios": "4.5.0", - "macos": "0.12.0" + "ios": "4.5.0" } }, "expression": { @@ -1991,8 +1944,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -2014,8 +1966,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -2038,8 +1989,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -2072,14 +2022,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "`auto` value": { "js": "0.25.0", "android": "4.2.0", - "ios": "3.4.0", - "macos": "0.3.0" + "ios": "3.4.0" } }, "expression": { @@ -2103,14 +2051,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.35.0", "android": "5.1.0", - "ios": "3.6.0", - "macos": "0.5.0" + "ios": "3.6.0" } }, "expression": { @@ -2148,14 +2094,12 @@ "basic functionality": { "js": "0.21.0", "android": "4.2.0", - "ios": "3.4.0", - "macos": "0.2.1" + "ios": "3.4.0" }, "stretchable icons": { "js": "1.6.0", "android": "9.2.0", - "ios": "5.8.0", - "macos": "0.15.0" + "ios": "5.8.0" }, "data-driven styling": { "js": "3.0.0", @@ -2199,8 +2143,7 @@ "basic functionality": { "js": "0.21.0", "android": "4.2.0", - "ios": "3.4.0", - "macos": "0.2.1" + "ios": "3.4.0" }, "data-driven styling": { "js": "3.0.0", @@ -2225,14 +2168,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.35.0", "android": "5.1.0", - "ios": "3.6.0", - "macos": "0.5.0" + "ios": "3.6.0" } }, "expression": { @@ -2257,14 +2198,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.21.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -2289,8 +2228,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -2321,8 +2259,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -2349,14 +2286,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.29.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -2408,14 +2343,12 @@ "basic functionality": { "js": "0.40.0", "android": "5.2.0", - "ios": "3.7.0", - "macos": "0.6.0" + "ios": "3.7.0" }, "data-driven styling": { "js": "0.40.0", "android": "5.2.0", - "ios": "3.7.0", - "macos": "0.6.0" + "ios": "3.7.0" } }, "expression": { @@ -2449,8 +2382,7 @@ "basic functionality": { "js": "0.39.0", "android": "5.2.0", - "ios": "3.7.0", - "macos": "0.6.0" + "ios": "3.7.0" } }, "expression": { @@ -2483,14 +2415,12 @@ "basic functionality": { "js": "0.21.0", "android": "4.2.0", - "ios": "3.4.0", - "macos": "0.2.1" + "ios": "3.4.0" }, "`auto` value": { "js": "0.25.0", "android": "4.2.0", - "ios": "3.4.0", - "macos": "0.3.0" + "ios": "3.4.0" } }, "expression": { @@ -2523,14 +2453,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "`auto` value": { "js": "0.25.0", "android": "4.2.0", - "ios": "3.4.0", - "macos": "0.3.0" + "ios": "3.4.0" } }, "expression": { @@ -2550,14 +2478,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.33.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -2584,14 +2510,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.43.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } }, "expression": { @@ -2616,14 +2540,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.35.0", "android": "5.1.0", - "ios": "3.6.0", - "macos": "0.5.0" + "ios": "3.6.0" } }, "expression": { @@ -2653,14 +2575,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.40.0", "android": "5.2.0", - "ios": "3.7.0", - "macos": "0.6.0" + "ios": "3.7.0" } }, "expression": { @@ -2684,8 +2604,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "2.3.0", @@ -2714,14 +2633,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.40.0", "android": "5.2.0", - "ios": "3.7.0", - "macos": "0.6.0" + "ios": "3.7.0" } }, "expression": { @@ -2758,20 +2675,17 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.39.0", "android": "5.2.0", - "ios": "3.7.0", - "macos": "0.6.0" + "ios": "3.7.0" }, "auto": { "js": "0.54.0", "android": "7.4.0", - "ios": "4.10.0", - "macos": "0.14.0" + "ios": "4.10.0" } }, "expression": { @@ -2792,14 +2706,12 @@ "basic functionality": { "js": "0.54.0", "android": "7.4.0", - "ios": "4.10.0", - "macos": "0.14.0" + "ios": "4.10.0" }, "data-driven styling": { "js": "0.54.0", "android": "7.4.0", - "ios": "4.10.0", - "macos": "0.14.0" + "ios": "4.10.0" } }, "requires": [ @@ -2859,8 +2771,7 @@ "basic functionality": { "js": "0.54.0", "android": "7.4.0", - "ios": "4.10.0", - "macos": "0.14.0" + "ios": "4.10.0" } }, "expression": { @@ -2914,14 +2825,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.39.0", "android": "5.2.0", - "ios": "3.7.0", - "macos": "0.6.0" + "ios": "3.7.0" } }, "expression": { @@ -2951,8 +2860,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -2982,8 +2890,7 @@ "basic functionality": { "js": "1.3.0", "android": "8.3.0", - "ios": "5.3.0", - "macos": "0.15.0" + "ios": "5.3.0" } }, "expression": { @@ -3007,14 +2914,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.35.0", "android": "5.1.0", - "ios": "3.6.0", - "macos": "0.5.0" + "ios": "3.6.0" } }, "expression": { @@ -3039,8 +2944,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -3071,8 +2975,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -3105,14 +3008,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.33.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -3144,14 +3045,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.35.0", "android": "5.1.0", - "ios": "3.6.0", - "macos": "0.5.0" + "ios": "3.6.0" } }, "expression": { @@ -3174,8 +3073,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -3197,8 +3095,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -3221,8 +3118,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -3249,14 +3145,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "expressions support": { "js": "3.0.0", "android": "11.0.0", - "ios": "11.0.0", - "macos": "11.0.0" + "ios": "11.0.0" } }, "expression": { @@ -3282,14 +3176,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "expressions support": { "js": "3.0.0", "android": "11.0.0", - "ios": "11.0.0", - "macos": "11.0.0" + "ios": "11.0.0" } }, "expression": { @@ -3315,14 +3207,12 @@ "basic functionality": { "js": "0.43.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" }, "expressions support": { "js": "3.0.0", "android": "11.0.0", - "ios": "11.0.0", - "macos": "11.0.0" + "ios": "11.0.0" } }, "expression": { @@ -3552,8 +3442,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -3564,8 +3453,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -3576,8 +3464,7 @@ "basic functionality": { "js": "3.0.0", "android": "11.0.0", - "ios": "11.0.0", - "macos": "11.0.0" + "ios": "11.0.0" } } }, @@ -3588,8 +3475,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -3600,8 +3486,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -3612,8 +3497,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -3624,8 +3508,7 @@ "basic functionality": { "js": "1.6.0", "android": "9.1.0", - "ios": "5.8.0", - "macos": "0.15.0" + "ios": "5.8.0" } } }, @@ -3658,8 +3541,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -3670,8 +3552,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -3682,8 +3563,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -3694,8 +3574,7 @@ "basic functionality": { "js": "0.42.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -3706,8 +3585,7 @@ "basic functionality": { "js": "0.42.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -3736,8 +3614,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -3748,8 +3625,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -3760,8 +3636,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -3772,8 +3647,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -3784,8 +3658,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -3796,8 +3669,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -3808,8 +3680,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -3820,8 +3691,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -3832,8 +3702,7 @@ "basic functionality": { "js": "0.45.0", "android": "6.5.0", - "ios": "4.2.0", - "macos": "0.9.0" + "ios": "4.2.0" } } }, @@ -3844,32 +3713,27 @@ "basic functionality": { "js": "0.48.0", "android": "6.7.0", - "ios": "4.6.0", - "macos": "0.12.0" + "ios": "4.6.0" }, "text-font": { "js": "0.48.0", "android": "6.7.0", - "ios": "4.6.0", - "macos": "0.12.0" + "ios": "4.6.0" }, "font-scale": { "js": "0.48.0", "android": "6.7.0", - "ios": "4.6.0", - "macos": "0.12.0" + "ios": "4.6.0" }, "text-color": { "js": "1.3.0", "android": "7.3.0", - "ios": "4.10.0", - "macos": "0.14.0" + "ios": "4.10.0" }, "image": { "js": "1.6.0", "android": "8.6.0", - "ios": "5.7.0", - "macos": "0.15.0" + "ios": "5.7.0" } } }, @@ -3880,8 +3744,7 @@ "basic functionality": { "js": "1.4.0", "android": "8.6.0", - "ios": "5.7.0", - "macos": "0.15.0" + "ios": "5.7.0" } } }, @@ -3892,8 +3755,7 @@ "basic functionality": { "js": "0.54.0", "android" : "8.4.0", - "ios": "5.4.0", - "macos": "0.15.0" + "ios": "5.4.0" } } }, @@ -3904,8 +3766,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -3916,8 +3777,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -3928,8 +3788,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -3940,8 +3799,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -3952,8 +3810,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -3964,8 +3821,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -3976,8 +3832,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4010,8 +3865,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4022,8 +3876,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4034,8 +3887,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4046,8 +3898,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4069,8 +3920,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4081,8 +3931,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4093,8 +3942,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4138,8 +3986,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4150,8 +3997,7 @@ "basic functionality": { "js": "0.45.0", "android": "6.5.0", - "ios": "4.6.0", - "macos": "0.12.0" + "ios": "4.6.0" } } }, @@ -4173,8 +4019,7 @@ "basic functionality": { "js": "0.53.0", "android": "8.4.0", - "ios": "5.5.0", - "macos": "0.15.0" + "ios": "5.5.0" } } }, @@ -4185,8 +4030,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4197,8 +4041,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4209,8 +4052,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4221,8 +4063,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4233,8 +4074,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4245,8 +4085,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4257,8 +4096,7 @@ "basic functionality": { "js": "0.42.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4269,8 +4107,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4281,8 +4118,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4293,8 +4129,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4305,8 +4140,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4317,8 +4151,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4329,8 +4162,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4341,8 +4173,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4353,8 +4184,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4365,8 +4195,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4377,8 +4206,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4389,8 +4217,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4401,8 +4228,7 @@ "basic functionality": { "js": "0.45.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4413,8 +4239,7 @@ "basic functionality": { "js": "0.45.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4425,8 +4250,7 @@ "basic functionality": { "js": "0.45.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4437,8 +4261,7 @@ "basic functionality": { "js": "0.45.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4449,8 +4272,7 @@ "basic functionality": { "js": "3.0.0", "android": "9.2.0", - "ios": "5.9.0", - "macos": "0.16.0" + "ios": "5.9.0" } } }, @@ -4461,14 +4283,12 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" }, "collator": { "js": "0.45.0", "android": "6.5.0", - "ios": "4.2.0", - "macos": "0.9.0" + "ios": "4.2.0" } } }, @@ -4479,14 +4299,12 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" }, "collator": { "js": "0.45.0", "android": "6.5.0", - "ios": "4.2.0", - "macos": "0.9.0" + "ios": "4.2.0" } } }, @@ -4497,14 +4315,12 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" }, "collator": { "js": "0.45.0", "android": "6.5.0", - "ios": "4.2.0", - "macos": "0.9.0" + "ios": "4.2.0" } } }, @@ -4515,14 +4331,12 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" }, "collator": { "js": "0.45.0", "android": "6.5.0", - "ios": "4.2.0", - "macos": "0.9.0" + "ios": "4.2.0" } } }, @@ -4533,14 +4347,12 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" }, "collator": { "js": "0.45.0", "android": "6.5.0", - "ios": "4.2.0", - "macos": "0.9.0" + "ios": "4.2.0" } } }, @@ -4551,14 +4363,12 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" }, "collator": { "js": "0.45.0", "android": "6.5.0", - "ios": "4.2.0", - "macos": "0.9.0" + "ios": "4.2.0" } } }, @@ -4569,8 +4379,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4581,8 +4390,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4593,8 +4401,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4605,8 +4412,7 @@ "basic functionality": { "js": "1.9.0", "android": "9.1.0", - "ios": "5.8.0", - "macos": "0.15.0" + "ios": "5.8.0" } } }, @@ -4617,8 +4423,7 @@ "basic functionality": { "js": "0.45.0", "android": "6.6.0", - "ios": "4.1.0", - "macos": "0.8.0" + "ios": "4.1.0" } } }, @@ -4629,8 +4434,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4641,8 +4445,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4653,8 +4456,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } } }, @@ -4665,8 +4467,7 @@ "basic functionality": { "js": "0.45.0", "android": "6.5.0", - "ios": "4.2.0", - "macos": "0.9.0" + "ios": "4.2.0" } } }, @@ -4964,8 +4765,7 @@ "basic functionality": { "js": "0.27.0", "android": "5.1.0", - "ios": "3.6.0", - "macos": "0.5.0" + "ios": "3.6.0" } } }, @@ -4996,8 +4796,7 @@ "basic functionality": { "js": "0.27.0", "android": "5.1.0", - "ios": "3.6.0", - "macos": "0.5.0" + "ios": "3.6.0" } } }, @@ -5017,8 +4816,7 @@ "basic functionality": { "js": "0.27.0", "android": "5.1.0", - "ios": "3.6.0", - "macos": "0.5.0" + "ios": "3.6.0" } } }, @@ -5040,8 +4838,7 @@ "basic functionality": { "js": "0.27.0", "android": "5.1.0", - "ios": "3.6.0", - "macos": "0.5.0" + "ios": "3.6.0" } } } @@ -5202,8 +4999,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -5225,14 +5021,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.21.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -5260,14 +5054,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.19.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -5297,14 +5089,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.19.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -5333,8 +5123,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -5364,8 +5153,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -5384,13 +5172,11 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.49.0", "android": "6.5.0", - "macos": "0.11.0", "ios": "4.4.0" } }, @@ -5442,8 +5228,7 @@ "basic functionality": { "js": "0.27.0", "android": "5.1.0", - "ios": "3.6.0", - "macos": "0.5.0" + "ios": "3.6.0" } }, "expression": { @@ -5468,14 +5253,12 @@ "basic functionality": { "js": "0.27.0", "android": "5.1.0", - "ios": "3.6.0", - "macos": "0.5.0" + "ios": "3.6.0" }, "data-driven styling": { "js": "0.27.0", "android": "5.1.0", - "ios": "3.6.0", - "macos": "0.5.0" + "ios": "3.6.0" } }, "expression": { @@ -5504,8 +5287,7 @@ "basic functionality": { "js": "0.27.0", "android": "5.1.0", - "ios": "3.6.0", - "macos": "0.5.0" + "ios": "3.6.0" } }, "expression": { @@ -5535,8 +5317,7 @@ "basic functionality": { "js": "0.27.0", "android": "5.1.0", - "ios": "3.6.0", - "macos": "0.5.0" + "ios": "3.6.0" } }, "expression": { @@ -5555,13 +5336,11 @@ "basic functionality": { "js": "0.27.0", "android": "5.1.0", - "ios": "3.6.0", - "macos": "0.5.0" + "ios": "3.6.0" }, "data-driven styling": { "js": "0.49.0", "android": "6.5.0", - "macos": "0.11.0", "ios": "4.4.0" } }, @@ -5585,14 +5364,12 @@ "basic functionality": { "js": "0.27.0", "android": "5.1.0", - "ios": "3.6.0", - "macos": "0.5.0" + "ios": "3.6.0" }, "data-driven styling": { "js": "0.27.0", "android": "5.1.0", - "ios": "3.6.0", - "macos": "0.5.0" + "ios": "3.6.0" } }, "expression": { @@ -5619,14 +5396,12 @@ "basic functionality": { "js": "0.27.0", "android": "5.1.0", - "ios": "3.6.0", - "macos": "0.5.0" + "ios": "3.6.0" }, "data-driven styling": { "js": "0.27.0", "android": "5.1.0", - "ios": "3.6.0", - "macos": "0.5.0" + "ios": "3.6.0" } }, "expression": { @@ -5648,8 +5423,7 @@ "basic functionality": { "js": "0.50.0", "android": "7.0.0", - "ios": "4.7.0", - "macos": "0.13.0" + "ios": "4.7.0" } }, "expression": { @@ -6054,14 +5828,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.29.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -6089,14 +5861,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.23.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -6125,8 +5895,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -6156,8 +5925,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -6179,14 +5947,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.39.0", "android": "5.2.0", - "ios": "3.7.0", - "macos": "0.6.0" + "ios": "3.7.0" } }, "expression": { @@ -6211,14 +5977,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.29.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -6242,14 +6006,12 @@ "basic functionality": { "js": "0.12.1", "android": "3.0.0", - "ios": "3.1.0", - "macos": "0.1.0" + "ios": "3.1.0" }, "data-driven styling": { "js": "0.29.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -6274,14 +6036,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.29.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -6311,8 +6071,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "2.3.0" @@ -6335,13 +6094,11 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.49.0", "android": "6.5.0", - "macos": "0.11.0", "ios": "4.4.0" } }, @@ -6390,8 +6147,7 @@ "basic functionality": { "js": "0.45.0", "android": "6.5.0", - "ios": "4.4.0", - "macos": "0.11.0" + "ios": "4.4.0" }, "data-driven styling": {} }, @@ -6424,8 +6180,7 @@ "basic functionality": { "js": "2.9.0", "android": "10.5.0", - "ios": "10.5.0", - "macos": "10.5.0" + "ios": "10.5.0" } }, "property-type": "constant" @@ -6526,14 +6281,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.18.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -6556,14 +6309,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.18.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -6586,14 +6337,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.20.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -6618,14 +6367,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.20.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -6654,8 +6401,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -6685,8 +6431,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -6713,8 +6458,7 @@ "basic functionality": { "js": "0.21.0", "android": "4.2.0", - "ios": "3.4.0", - "macos": "0.2.1" + "ios": "3.4.0" } }, "expression": { @@ -6741,8 +6485,7 @@ "basic functionality": { "js": "0.39.0", "android": "5.2.0", - "ios": "3.7.0", - "macos": "0.6.0" + "ios": "3.7.0" } }, "expression": { @@ -6764,14 +6507,12 @@ "basic functionality": { "js": "0.29.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" }, "data-driven styling": { "js": "0.29.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -6794,14 +6535,12 @@ "basic functionality": { "js": "0.29.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" }, "data-driven styling": { "js": "0.29.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -6826,14 +6565,12 @@ "basic functionality": { "js": "0.29.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" }, "data-driven styling": { "js": "0.29.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -6886,14 +6623,12 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" }, "data-driven styling": { "js": "0.43.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } }, "expression": { @@ -6917,14 +6652,12 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" }, "data-driven styling": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } }, "expression": { @@ -6948,8 +6681,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } }, "expression": { @@ -6989,8 +6721,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" }, "data-driven styling": {} }, @@ -7013,8 +6744,7 @@ "basic functionality": { "js": "0.41.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } }, "expression": { @@ -7041,14 +6771,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.33.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -7136,14 +6864,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.33.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -7169,14 +6895,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.33.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -7204,14 +6928,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.33.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -7239,14 +6961,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.33.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -7278,8 +6998,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -7310,8 +7029,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -7366,14 +7084,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.33.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -7400,14 +7116,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.33.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -7433,14 +7147,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.33.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -7468,14 +7180,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.33.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -7503,14 +7213,12 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" }, "data-driven styling": { "js": "0.33.0", "android": "5.0.0", - "ios": "3.5.0", - "macos": "0.4.0" + "ios": "3.5.0" } }, "expression": { @@ -7542,8 +7250,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -7574,8 +7281,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -7599,8 +7305,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -7710,8 +7415,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -7733,8 +7437,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -7756,8 +7459,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -7779,8 +7481,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -7802,8 +7503,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -7830,8 +7530,7 @@ "basic functionality": { "js": "0.47.0", "android": "6.3.0", - "ios": "4.2.0", - "macos": "0.9.0" + "ios": "4.2.0" } }, "expression": { @@ -7853,8 +7552,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -7940,8 +7638,7 @@ "basic functionality": { "js": "0.43.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } }, "expression": { @@ -7968,8 +7665,7 @@ "basic functionality": { "js": "0.43.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } }, "expression": { @@ -7991,8 +7687,7 @@ "basic functionality": { "js": "0.43.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } }, "expression": { @@ -8012,8 +7707,7 @@ "basic functionality": { "js": "0.43.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } }, "expression": { @@ -8034,8 +7728,7 @@ "basic functionality": { "js": "0.43.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } }, "expression": { @@ -8056,8 +7749,7 @@ "basic functionality": { "js": "0.43.0", "android": "6.0.0", - "ios": "4.0.0", - "macos": "0.7.0" + "ios": "4.0.0" } }, "expression": { @@ -8111,8 +7803,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -8131,8 +7822,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { @@ -8154,8 +7844,7 @@ "basic functionality": { "js": "0.10.0", "android": "2.0.1", - "ios": "2.0.0", - "macos": "0.1.0" + "ios": "2.0.0" } }, "expression": { From 1c5b96f56a4a752f387254b949c30cc8a68d5b7b Mon Sep 17 00:00:00 2001 From: Jordi Torres Date: Thu, 11 Jan 2024 16:29:07 +0100 Subject: [PATCH 13/25] Add emission strength support for 3D model layers using 2D sources as a layer global value. Measure-light expressions are allowed if they are not data driven (internal-1045) --- 3d-style/render/draw_model.js | 12 +- 3d-style/render/program/model_program.js | 15 +- src/style-spec/reference/v8.json | 2 +- src/style-spec/validate/validate_property.js | 7 +- .../model-emissive-strength/expected.png | Bin 0 -> 74099 bytes .../model-emissive-strength/style.json | 128 ++++++++++++++++++ 6 files changed, 155 insertions(+), 9 deletions(-) create mode 100644 test/integration/render-tests/model-layer/model-emissive-strength/expected.png create mode 100644 test/integration/render-tests/model-layer/model-emissive-strength/style.json diff --git a/3d-style/render/draw_model.js b/3d-style/render/draw_model.js index 7ad796006ec..4b3d2c6fd8b 100644 --- a/3d-style/render/draw_model.js +++ b/3d-style/render/draw_model.js @@ -147,6 +147,8 @@ function drawMesh(sortedMesh: SortedMesh, painter: Painter, layer: ModelStyleLay const normalMatrix = mat4.invert([], lightingMatrix); mat4.transpose(normalMatrix, normalMatrix); + const emissiveStrength = layer.paint.get('model-emissive-strength').constantOr(0.0); + const uniformValues = modelUniformValues( new Float32Array(sortedMesh.worldViewProjection), new Float32Array(lightingMatrix), @@ -158,6 +160,7 @@ function drawMesh(sortedMesh: SortedMesh, painter: Painter, layer: ModelStyleLay pbr.metallicFactor, pbr.roughnessFactor, material, + emissiveStrength, layer); const programOptions: CreateProgramParams = { @@ -604,6 +607,8 @@ function drawInstancedNode(painter: Painter, layer: ModelStyleLayer, node: Node, const pbr = material.pbrMetallicRoughness; const layerOpacity = layer.paint.get('model-opacity'); + const emissiveStrength = layer.paint.get('model-emissive-strength').constantOr(0.0); + uniformValues = modelUniformValues( coord.expandedProjMatrix, Float32Array.from(node.matrix), @@ -615,8 +620,10 @@ function drawInstancedNode(painter: Painter, layer: ModelStyleLayer, node: Node, pbr.metallicFactor, pbr.roughnessFactor, material, + emissiveStrength, layer, - cameraPos); + cameraPos + ); if (shadowRenderer) { if (!renderData.shadowUniformsInitialized) { shadowRenderer.setupShadows(coord.toUnwrapped(), program, 'model-tile', coord.overscaledZ); @@ -814,6 +821,8 @@ function drawBatchedModels(painter: Painter, source: SourceCache, layer: ModelSt pbr.metallicFactor = 0.9; pbr.roughnessFactor = 0.5; + // Set emissive strength to zero for landmarks, as it is already used embedded in the PBR buffer. + const emissiveStrength = 0.0; const uniformValues = modelUniformValues( new Float32Array(worldViewProjection), new Float32Array(lightingMatrix), @@ -825,6 +834,7 @@ function drawBatchedModels(painter: Painter, source: SourceCache, layer: ModelSt pbr.metallicFactor, pbr.roughnessFactor, material, + emissiveStrength, layer ); diff --git a/3d-style/render/program/model_program.js b/3d-style/render/program/model_program.js index b6d1dbef74a..e33ebe00ed6 100644 --- a/3d-style/render/program/model_program.js +++ b/3d-style/render/program/model_program.js @@ -39,7 +39,8 @@ export type ModelUniformsType = { 'u_occlusionTexture': Uniform1i, 'u_emissionTexture': Uniform1i, 'u_color_mix': Uniform4f, - 'u_aoIntensity': Uniform1f + 'u_aoIntensity': Uniform1f, + 'u_emissive_strength': Uniform1f }; const modelUniforms = (context: Context): ModelUniformsType => ({ @@ -64,7 +65,8 @@ const modelUniforms = (context: Context): ModelUniformsType => ({ 'u_occlusionTexture': new Uniform1i(context), 'u_emissionTexture': new Uniform1i(context), 'u_color_mix': new Uniform4f(context), - 'u_aoIntensity': new Uniform1f(context) + 'u_aoIntensity': new Uniform1f(context), + 'u_emissive_strength' : new Uniform1f(context) }); @@ -79,8 +81,10 @@ const modelUniformValues = ( metallicFactor: number, roughnessFactor: number, material: Material, + emissiveStrength: number, layer: ModelStyleLayer, - cameraPos: [number, number, number] = [0, 0, 0]): UniformValues => { + cameraPos: [number, number, number] = [0, 0, 0] +): UniformValues => { const light = painter.style.light; const _lp = light.properties.get('position'); @@ -96,7 +100,7 @@ const modelUniformValues = ( const lightColor = light.properties.get('color'); - const aoIntensity = layer.paint.get('model-ambient-occlusion-intensity'); + const aoIntensity = layer.paint.get('model-ambient-occlusion-intensity'); const colorMix = layer.paint.get('model-color').constantOr(Color.white); const colorMixIntensity = layer.paint.get('model-color-mix-intensity').constantOr(0.0); @@ -122,7 +126,8 @@ const modelUniformValues = ( 'u_occlusionTexture': TextureSlots.Occlusion, 'u_emissionTexture': TextureSlots.Emission, 'u_color_mix': [colorMix.r, colorMix.g, colorMix.b, colorMixIntensity], - 'u_aoIntensity': aoIntensity + 'u_aoIntensity': aoIntensity, + 'u_emissive_strength': emissiveStrength }; return uniformValues; diff --git a/src/style-spec/reference/v8.json b/src/style-spec/reference/v8.json index 0ebdd75465d..2cac89261b0 100644 --- a/src/style-spec/reference/v8.json +++ b/src/style-spec/reference/v8.json @@ -8347,7 +8347,7 @@ "minimum": 0, "maximum": 5, "units": "intensity", - "doc": "Strength of the emission. There is no emission for value 0. For value 1.0, only emissive component (no shading) is displayed and values above 1.0 produce light contribution to surrounding area, for some of the parts (e.g. doors). Expressions that depend on measure-light are not supported when using GeoJSON or vector tile as the model layer source.", + "doc": "Strength of the emission. There is no emission for value 0. For value 1.0, only emissive component (no shading) is displayed and values above 1.0 produce light contribution to surrounding area, for some of the parts (e.g. doors). Expressions that depend on measure-light are only supported as a global layer value (and not for each feature) when using GeoJSON or vector tile as the model layer source.", "expression": { "interpolated": true, "parameters": ["feature", "feature-state", "measure-light"] diff --git a/src/style-spec/validate/validate_property.js b/src/style-spec/validate/validate_property.js index 20a09ecf6c6..af73d95212d 100644 --- a/src/style-spec/validate/validate_property.js +++ b/src/style-spec/validate/validate_property.js @@ -6,7 +6,7 @@ import getType from '../util/get_type.js'; import {isFunction} from '../function/index.js'; import {unbundle, deepUnbundle} from '../util/unbundle_jsonlint.js'; import {supportsLightExpression, supportsPropertyExpression, supportsZoomExpression} from '../util/properties.js'; -import {isGlobalPropertyConstant} from '../expression/is_constant.js'; +import {isGlobalPropertyConstant, isFeatureConstant, isStateConstant} from '../expression/is_constant.js'; import type {ValidationOptions} from './validate.js'; import {createPropertyExpression} from '../expression/index.js'; @@ -67,8 +67,11 @@ export default function validateProperty(options: PropertyValidationOptions, pro // Performance related style spec limitation: zoom and light expressions are not allowed for e.g. trees. const expression = createPropertyExpression(deepUnbundle(value), valueSpec); const expressionObj = (expression.value: any).expression || (expression.value: any)._styleExpression.expression; + if (expressionObj && !isGlobalPropertyConstant(expressionObj, ['measure-light'])) { - errors.push(new ValidationError(key, value, `${propertyKey} does not support measure-light expressions when the model layer source is vector tile or GeoJSON.`)); + if (propertyKey !== 'model-emissive-strength' || (!isFeatureConstant(expressionObj) || !isStateConstant(expressionObj))) { + errors.push(new ValidationError(key, value, `${propertyKey} does not support measure-light expressions when the model layer source is vector tile or GeoJSON.`)); + } } } } diff --git a/test/integration/render-tests/model-layer/model-emissive-strength/expected.png b/test/integration/render-tests/model-layer/model-emissive-strength/expected.png new file mode 100644 index 0000000000000000000000000000000000000000..67a4f8c4a35d79e97910333797d965b6b5f10521 GIT binary patch literal 74099 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�b~Iln!tE(Br=eJ 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 h`^J{csZzCONsJ+dCrG*HP;fAShN`a0M Date: Thu, 11 Jan 2024 16:51:03 +0100 Subject: [PATCH 14/25] Symbol icon saturation (internal-1033) * symbol icon saturation * render test * raise test threshold --- src/render/draw_symbol.js | 9 +++- src/render/program/symbol_program.js | 14 +++-- src/shaders/symbol_icon.fragment.glsl | 7 ++- src/style-spec/reference/v8.json | 20 ++++++++ .../symbol_style_layer_properties.js | 2 + .../symbol-icon-saturation/expected.png | Bin 0 -> 3819 bytes .../symbol-icon-saturation/style.json | 48 ++++++++++++++++++ 7 files changed, 92 insertions(+), 8 deletions(-) create mode 100644 test/integration/render-tests/symbol-icon-saturation/expected.png create mode 100644 test/integration/render-tests/symbol-icon-saturation/style.json diff --git a/src/render/draw_symbol.js b/src/render/draw_symbol.js index a3377098d98..73246e556dc 100644 --- a/src/render/draw_symbol.js +++ b/src/render/draw_symbol.js @@ -87,6 +87,7 @@ function drawSymbols(painter: Painter, sourceCache: SourceCache, layer: SymbolSt layer.layout.get('icon-rotation-alignment'), layer.layout.get('icon-pitch-alignment'), layer.layout.get('icon-keep-upright'), + layer.paint.get('icon-color-saturation'), stencilMode, colorMode ); } @@ -98,6 +99,7 @@ function drawSymbols(painter: Painter, sourceCache: SourceCache, layer: SymbolSt layer.layout.get('text-rotation-alignment'), layer.layout.get('text-pitch-alignment'), layer.layout.get('text-keep-upright'), + layer.paint.get('icon-color-saturation'), stencilMode, colorMode ); } @@ -268,7 +270,7 @@ function getSymbolProgramName(isSDF: boolean, isText: boolean, bucket: SymbolBuc } } -function drawLayerSymbols(painter: Painter, sourceCache: SourceCache, layer: SymbolStyleLayer, coords: Array, isText: boolean, translate: [number, number], translateAnchor: 'map' | 'viewport', rotationAlignment: Alignment, pitchAlignment: Alignment, keepUpright: boolean, stencilMode: StencilMode, colorMode: ColorMode) { +function drawLayerSymbols(painter: Painter, sourceCache: SourceCache, layer: SymbolStyleLayer, coords: Array, isText: boolean, translate: [number, number], translateAnchor: 'map' | 'viewport', rotationAlignment: Alignment, pitchAlignment: Alignment, keepUpright: boolean, iconSaturation: number, stencilMode: StencilMode, colorMode: ColorMode) { const context = painter.context; const gl = context.gl; const tr = painter.transform; @@ -410,8 +412,11 @@ function drawLayerSymbols(painter: Painter, sourceCache: SourceCache, layer: Sym matrix, uLabelPlaneMatrix, uglCoordMatrix, texSize, texSizeIcon, coord, globeToMercator, mercatorCenter, invMatrix, cameraUpVector, bucket.getProjection()); } } else { + if (iconSaturation < 1) { + baseDefines.push('SATURATION'); + } uniformValues = symbolIconUniformValues(sizeData.kind, size, rotateInShader, pitchWithMap, painter, matrix, - uLabelPlaneMatrix, uglCoordMatrix, isText, texSize, coord, globeToMercator, mercatorCenter, invMatrix, cameraUpVector, bucket.getProjection(), transitionProgress); + uLabelPlaneMatrix, uglCoordMatrix, isText, texSize, coord, globeToMercator, mercatorCenter, invMatrix, cameraUpVector, bucket.getProjection(), iconSaturation, transitionProgress); } const program = painter.getOrCreateProgram(getSymbolProgramName(isSDF, isText, bucket), {config: programConfiguration, defines: baseDefines}); diff --git a/src/render/program/symbol_program.js b/src/render/program/symbol_program.js index 420e1131f54..d969ae87a5e 100644 --- a/src/render/program/symbol_program.js +++ b/src/render/program/symbol_program.js @@ -43,7 +43,8 @@ export type SymbolIconUniformsType = {| 'u_up_vector': Uniform3f, 'u_ecef_origin': Uniform3f, 'u_texture': Uniform1i, - 'u_icon_transition': Uniform1f + 'u_icon_transition': Uniform1f, + 'u_icon_saturation': Uniform1f |}; export type SymbolSDFUniformsType = {| @@ -124,7 +125,8 @@ const symbolIconUniforms = (context: Context): SymbolIconUniformsType => ({ 'u_up_vector': new Uniform3f(context), 'u_ecef_origin': new Uniform3f(context), 'u_texture': new Uniform1i(context), - 'u_icon_transition': new Uniform1f(context) + 'u_icon_transition': new Uniform1f(context), + 'u_icon_saturation': new Uniform1f(context) }); const symbolSDFUniforms = (context: Context): SymbolSDFUniformsType => ({ @@ -198,7 +200,8 @@ const symbolIconUniformValues = ( invMatrix: Float32Array, upVector: [number, number, number], projection: Projection, - transition: ?number + iconSaturation: number, + transition: ?number, ): UniformValues => { const transform = painter.transform; @@ -226,7 +229,8 @@ const symbolIconUniformValues = ( 'u_ecef_origin': [0, 0, 0], 'u_tile_matrix': identityMatrix, 'u_up_vector': [0, -1, 0], - 'u_icon_transition': transition ? transition : 0.0 + 'u_icon_transition': transition ? transition : 0.0, + 'u_icon_saturation': iconSaturation }; if (projection.name === 'globe') { @@ -264,7 +268,7 @@ const symbolSDFUniformValues = ( ): UniformValues => { return extend(symbolIconUniformValues(functionType, size, rotateInShader, pitchWithMap, painter, matrix, labelPlaneMatrix, glCoordMatrix, isText, - texSize, coord, zoomTransition, mercatorCenter, invMatrix, upVector, projection), { + texSize, coord, zoomTransition, mercatorCenter, invMatrix, upVector, projection, 1), { 'u_gamma_scale': pitchWithMap ? painter.transform.getCameraToCenterDistance(projection) * Math.cos(painter.terrain ? 0 : painter.transform._pitch) : 1, 'u_device_pixel_ratio': browser.devicePixelRatio, 'u_is_halo': +isHalo, diff --git a/src/shaders/symbol_icon.fragment.glsl b/src/shaders/symbol_icon.fragment.glsl index da28f1dc41f..63c3492e5b3 100644 --- a/src/shaders/symbol_icon.fragment.glsl +++ b/src/shaders/symbol_icon.fragment.glsl @@ -11,6 +11,8 @@ in vec2 v_tex_a; in vec2 v_tex_b; #endif +uniform mediump float u_icon_saturation; + #pragma mapbox: define lowp float opacity #pragma mapbox: define lowp float emissive_strength @@ -28,7 +30,10 @@ void main() { #else out_color = texture(u_texture, v_tex_a) * alpha; #endif - +#ifdef SATURATION + vec3 luma = vec3(dot(out_color.rgb, vec3(0.2126, 0.7152, 0.0722))); + out_color.rgb = mix(luma, out_color.rgb, u_icon_saturation); +#endif #ifdef LIGHTING_3D_MODE out_color = apply_lighting_with_emission_ground(out_color, emissive_strength); #endif diff --git a/src/style-spec/reference/v8.json b/src/style-spec/reference/v8.json index 2cac89261b0..71f6ed0148c 100644 --- a/src/style-spec/reference/v8.json +++ b/src/style-spec/reference/v8.json @@ -7291,6 +7291,26 @@ ] }, "property-type": "data-constant" + }, + "icon-color-saturation": { + "type": "number", + "default": 1, + "minimum": 0, + "maximum": 1, + "transition": true, + "units": "intensity", + "doc": "Controls saturation level of the symbol icon. With the default value of 1 the icon color is preserved while with a value of 0 it is fully desaturated and looks black and white.", + "sdk-support": { + "basic functionality": { + "js": "3.1.0", + "android": "11.1.0", + "ios": "11.1.0" + } + }, + "expression": { + "interpolated": false + }, + "property-type": "data-constant" } }, "paint_raster": { diff --git a/src/style/style_layer/symbol_style_layer_properties.js b/src/style/style_layer/symbol_style_layer_properties.js index 80cd147fab3..8f1773571e6 100644 --- a/src/style/style_layer/symbol_style_layer_properties.js +++ b/src/style/style_layer/symbol_style_layer_properties.js @@ -131,6 +131,7 @@ export type PaintProps = {| "text-halo-blur": DataDrivenProperty, "text-translate": DataConstantProperty<[number, number]>, "text-translate-anchor": DataConstantProperty<"map" | "viewport">, + "icon-color-saturation": DataConstantProperty, |}; const paint: Properties = new Properties({ @@ -151,6 +152,7 @@ const paint: Properties = new Properties({ "text-halo-blur": new DataDrivenProperty(styleSpec["paint_symbol"]["text-halo-blur"]), "text-translate": new DataConstantProperty(styleSpec["paint_symbol"]["text-translate"]), "text-translate-anchor": new DataConstantProperty(styleSpec["paint_symbol"]["text-translate-anchor"]), + "icon-color-saturation": new DataConstantProperty(styleSpec["paint_symbol"]["icon-color-saturation"]), }); // Note: without adding the explicit type annotation, Flow infers weaker types diff --git a/test/integration/render-tests/symbol-icon-saturation/expected.png b/test/integration/render-tests/symbol-icon-saturation/expected.png new file mode 100644 index 0000000000000000000000000000000000000000..3f947e65075a77bdabaed9fff97a9ca30181a81c GIT binary patch literal 3819 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 literal 0 HcmV?d00001 diff --git a/test/integration/render-tests/symbol-icon-saturation/style.json b/test/integration/render-tests/symbol-icon-saturation/style.json new file mode 100644 index 00000000000..81c8d1759ad --- /dev/null +++ b/test/integration/render-tests/symbol-icon-saturation/style.json @@ -0,0 +1,48 @@ +{ + "version": 8, + "metadata": { + "test": { + "height": 128, + "width": 128, + "allowed": 0.0135 + } + }, + "center": [ + 13.418056, + 52.499167 + ], + "zoom": 14, + "sources": { + "mapbox": { + "type": "vector", + "maxzoom": 14, + "tiles": [ + "local://tiles/{z}-{x}-{y}.mvt" + ] + } + }, + "sprite": "local://sprites/sprite", + "layers": [ + { + "id": "background", + "type": "background", + "paint": { + "background-color": "white" + } + }, + { + "id": "icon", + "type": "symbol", + "source": "mapbox", + "source-layer": "poi_label", + "filter": ["has", "maki"], + "paint": { + "icon-color-saturation": 0 + }, + "layout": { + "icon-image": "{maki}-12", + "symbol-placement": "point" + } + } + ] +} From b27804588ed8d93736edeca317720984cf83f5ad Mon Sep 17 00:00:00 2001 From: Aleksandr Shoronov Date: Thu, 11 Jan 2024 18:20:25 +0200 Subject: [PATCH 15/25] [GLJS-567] Added posibility to partially update terrain (internal-1044) --- src/style/style.js | 17 ++++- src/ui/map.js | 3 + .../terrain/imported-style/expected.png | Bin 0 -> 43715 bytes .../terrain/imported-style/style.json | 64 ++++++++++++++++++ test/unit/style/style.test.js | 43 ++++++++++++ test/unit/style/style_imports.test.js | 36 ++++++++++ 6 files changed, 161 insertions(+), 2 deletions(-) create mode 100644 test/integration/render-tests/terrain/imported-style/expected.png create mode 100644 test/integration/render-tests/terrain/imported-style/style.json diff --git a/src/style/style.js b/src/style/style.js index 76abc9d59ea..14a673ab66d 100644 --- a/src/style/style.js +++ b/src/style/style.js @@ -2317,6 +2317,7 @@ class Style extends Evented { } let options: TerrainSpecification = terrainOptions; + const isUpdating = terrainOptions.source == null; if (drapeRenderMode === DrapeRenderMode.elevated) { // Input validation and source object unrolling if (typeof options.source === 'object') { @@ -2326,13 +2327,25 @@ class Style extends Evented { options = extend(options, {source: id}); } - if (this._validate(validateTerrain, 'terrain', options)) { + const validationOptions = extend({}, options); + const validationProps = {}; + + if (this.terrain && isUpdating) { + validationOptions.source = this.terrain.get().source; + + const fragmentStyle = this.terrain ? this.getFragmentStyle(this.terrain.scope) : null; + if (fragmentStyle) { + validationProps.style = fragmentStyle.serialize(); + } + } + + if (this._validate(validateTerrain, 'terrain', validationOptions, validationProps)) { return; } } // Enabling - if (!this.terrain || this.terrain.scope !== this.scope || (this.terrain && drapeRenderMode !== this.terrain.drapeRenderMode)) { + if (!this.terrain || (this.terrain.scope !== this.scope && !isUpdating) || (this.terrain && drapeRenderMode !== this.terrain.drapeRenderMode)) { if (!options) return; this._createTerrain(options, drapeRenderMode); this.fire(new Event('data', {dataType: 'style'})); diff --git a/src/ui/map.js b/src/ui/map.js index 5582fbdff1d..90c38f23d1c 100755 --- a/src/ui/map.js +++ b/src/ui/map.js @@ -3040,6 +3040,7 @@ class Map extends Camera { * * @param {TerrainSpecification} terrain Terrain properties to set. Must conform to the [Terrain Style Specification](https://docs.mapbox.com/mapbox-gl-js/style-spec/terrain/). * If `null` or `undefined` is provided, function removes terrain. + * Exaggeration could be updated for the existing terrain without explicitly specifying the `source`. * @returns {Map} Returns itself to allow for method chaining. * @example * map.addSource('mapbox-dem', { @@ -3050,6 +3051,8 @@ class Map extends Camera { * }); * // add the DEM source as a terrain layer with exaggerated height * map.setTerrain({'source': 'mapbox-dem', 'exaggeration': 1.5}); + * // update the exaggeration for the existing terrain + * map.setTerrain({'exaggeration': 2}); */ setTerrain(terrain: TerrainSpecification): this { this._lazyInitEmptyStyle(); diff --git a/test/integration/render-tests/terrain/imported-style/expected.png b/test/integration/render-tests/terrain/imported-style/expected.png new file mode 100644 index 0000000000000000000000000000000000000000..eda2cc77f8d9fad7c1d0d75237e93277c9316f07 GIT binary patch literal 43715 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 { }); }); + t.test('raises error during creation terrain without source', (t) => { + const style = new Style(new StubMap()); + style.loadJSON(createStyleJSON()); + + style.on('style.load', () => { + style.on('error', ({error}) => { + t.ok(error); + t.match(error.message, `terrain: terrain is missing required property "source"`); + t.end(); + }); + style.setTerrain({ + exaggeration: 2 + }); + }); + }); + + t.test('updates terrain properties', (t) => { + const style = new Style(new StubMap()); + + style.on('style.load', () => { + style.setTerrain({ + "source": { + "type": "raster-dem", + "tiles": ['http://example.com/{z}/{x}/{y}.png'], + "tileSize": 256, + "maxzoom": 14 + }, + "exaggeration": 1 + }); + + t.equals(style.getTerrain().exaggeration, 1); + + style.setTerrain({ + exaggeration: 2 + }); + + t.equals(style.getTerrain().exaggeration, 2); + t.end(); + }); + + style.loadJSON(createStyleJSON()); + }); + t.test('setTerrain(undefined) removes terrain', (t) => { const style = new Style(new StubMap()); style.loadJSON({ diff --git a/test/unit/style/style_imports.test.js b/test/unit/style/style_imports.test.js index 083ad33208d..4149c1809a9 100644 --- a/test/unit/style/style_imports.test.js +++ b/test/unit/style/style_imports.test.js @@ -1601,6 +1601,42 @@ test('Terrain', (t) => { style.loadJSON(initialStyle); }); + t.test('setTerrain updates imported terrain properties', (t) => { + const style = new Style(new StubMap()); + + style.on('style.load', () => { + style.setTerrain({ + exaggeration: 2 + }); + + t.equals(style.getTerrain().exaggeration, 2); + t.end(); + }); + + style.loadJSON(createStyleJSON({ + imports: [ + { + id: "basemap", + url: "", + data: createStyleJSON({ + sources: { + "mapbox-dem": { + "type": "raster-dem", + "tiles": ['http://example.com/{z}/{x}/{y}.png'], + "tileSize": 256, + "maxzoom": 14 + } + }, + terrain: { + source: "mapbox-dem", + exaggeration: 1 + } + }) + } + ] + })); + }); + t.end(); }); From 94099bb910fc1e6db50b0c67d591c9a41c32b43c Mon Sep 17 00:00:00 2001 From: Daniel Eke Date: Fri, 12 Jan 2024 14:05:17 +0200 Subject: [PATCH 16/25] Fail on unsuccesful performance test triggers (internal-1039) --- .circleci/config.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 5609def78ca..0adb441c36e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -550,4 +550,11 @@ jobs: name: Trigger SLA performance tests command: | sha=$(git rev-parse HEAD) - curl --location --request POST 'https://circleci.com/api/v2/project/github/mapbox/mapbox-gl-js-performance-internal/pipeline' --header 'Content-Type: application/json' -u $CIRCLECI_API_TOKEN: -d "{ \"parameters\": { \"setup_sha\": \"$sha\", \"setup_source_branch\": \"internal\" } }" + response_code=$(curl --location --write-out "%{http_code}" --output /dev/stderr --request POST 'https://circleci.com/api/v2/project/github/mapbox/mapbox-gl-js-performance-internal/pipeline' --header 'Content-Type: application/json' -u $CIRCLECI_API_TOKEN: -d "{ \"parameters\": { \"setup_sha\": \"$sha\", \"setup_source_branch\": \"internal\" } }") + + if [[ "$response_code" =~ ^2 ]]; then + echo "Success: HTTP 2xx response" + else + echo "Error: Non-2xx response code - $response_code" + exit 1 + fi \ No newline at end of file From 59a7dbb34098f7237ddf158ae8e0f6ac10aeb6a4 Mon Sep 17 00:00:00 2001 From: Stepan Kuzmin Date: Mon, 15 Jan 2024 16:02:31 +0200 Subject: [PATCH 17/25] Allow deferred terrain when fingerprinting protection is enabled (internal-1047) --- src/render/draw_fill_extrusion.js | 6 +----- src/render/draw_hillshade.js | 2 +- src/render/painter.js | 14 +------------- src/style/style.js | 14 ++++++++++++-- 4 files changed, 15 insertions(+), 21 deletions(-) diff --git a/src/render/draw_fill_extrusion.js b/src/render/draw_fill_extrusion.js index 886f8f78248..f5b4a0a0564 100644 --- a/src/render/draw_fill_extrusion.js +++ b/src/render/draw_fill_extrusion.js @@ -325,11 +325,7 @@ function drawExtrusionTiles(painter: Painter, source: SourceCache, layer: FillEx if (painter.terrain) { const terrain = painter.terrain; - if (painter.style.terrainSetForDrapingOnly()) { - terrain.setupElevationDraw(tile, program, {useMeterToDem: true}); - } else { - terrain.setupElevationDraw(tile, program, {useMeterToDem: true}); - } + terrain.setupElevationDraw(tile, program, {useMeterToDem: true}); } if (!bucket.centroidVertexBuffer) { diff --git a/src/render/draw_hillshade.js b/src/render/draw_hillshade.js index 63deef18e8c..1248d0a8412 100644 --- a/src/render/draw_hillshade.js +++ b/src/render/draw_hillshade.js @@ -23,7 +23,7 @@ export default drawHillshade; function drawHillshade(painter: Painter, sourceCache: SourceCache, layer: HillshadeStyleLayer, tileIDs: Array) { if (painter.renderPass !== 'offscreen' && painter.renderPass !== 'translucent') return; - if (painter.disableDEMTilesWorkaround) return; + if (painter.style.disableElevatedTerrain) return; const context = painter.context; diff --git a/src/render/painter.js b/src/render/painter.js index 99d60ab8f86..b02d0db7da4 100644 --- a/src/render/painter.js +++ b/src/render/painter.js @@ -45,7 +45,6 @@ import {Debug} from '../util/debug.js'; import Tile from '../source/tile.js'; import {RGBAImage} from '../util/image.js'; import {ReplacementSource} from '../../3d-style/source/replacement_source.js'; -import {warnOnce} from '../util/util.js'; import type {Source} from '../source/source.js'; import type {CutoffParams} from '../render/cutoff.js'; @@ -203,7 +202,6 @@ class Painter { renderDefaultSouthPole: boolean; _fogVisible: boolean; _cachedTileFogOpacities: {[number]: [number, number]}; - disableDEMTilesWorkaround: boolean; _shadowRenderer: ?ShadowRenderer; @@ -242,19 +240,9 @@ class Painter { } updateTerrain(style: Style, adaptCameraAltitude: boolean) { - const enabled = !!style && !!style.terrain && this.transform.projection.supportsTerrain && !this.disableDEMTilesWorkaround; + const enabled = !!style && !!style.terrain && this.transform.projection.supportsTerrain; if (!enabled && (!this._terrain || !this._terrain.enabled)) return; - // This workaround disables terrain and hillshade - // if there is noise in the Canvas2D operations used for image decoding. - if (this.disableDEMTilesWorkaround === undefined) { - this.disableDEMTilesWorkaround = browser.hasCanvasFingerprintNoise(); - } - if (this.disableDEMTilesWorkaround) { - warnOnce('Terrain and hillshade are disabled because of Canvas2D limitations when fingerprinting protection is enabled (e.g. in private browsing mode).'); - return; - } - if (!this._terrain) { this._terrain = new Terrain(this, style); } diff --git a/src/style/style.js b/src/style/style.js index 14a673ab66d..647f82db6db 100644 --- a/src/style/style.js +++ b/src/style/style.js @@ -193,6 +193,7 @@ class Style extends Evented { directionalLight: ?Lights; light: Light; terrain: ?Terrain; + disableElevatedTerrain: ?boolean; fog: ?Fog; camera: CameraSpecification; transition: TransitionSpecification; @@ -580,8 +581,17 @@ class Style extends Evented { } const terrain = this.stylesheet.terrain; - if (terrain && !this.terrainSetForDrapingOnly()) { - this._createTerrain(terrain, DrapeRenderMode.elevated); + if (terrain) { + // This workaround disables terrain and hillshade + // if there is noise in the Canvas2D operations used for image decoding. + if (this.disableElevatedTerrain === undefined) + this.disableElevatedTerrain = browser.hasCanvasFingerprintNoise(); + + if (this.disableElevatedTerrain) { + warnOnce('Terrain and hillshade are disabled because of Canvas2D limitations when fingerprinting protection is enabled (e.g. in private browsing mode).'); + } else if (!this.terrainSetForDrapingOnly()) { + this._createTerrain(terrain, DrapeRenderMode.elevated); + } } if (this.stylesheet.fog) { From e27951118aae296e3ff2b7788185515545b89c6b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Jan 2024 14:04:26 +0200 Subject: [PATCH 18/25] Bump tape from 5.7.2 to 5.7.3 (internal-1049) Bumps [tape](https://github.com/ljharb/tape) from 5.7.2 to 5.7.3. - [Changelog](https://github.com/ljharb/tape/blob/master/CHANGELOG.md) - [Commits](https://github.com/ljharb/tape/compare/v5.7.2...v5.7.3) --- updated-dependencies: - dependency-name: tape dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 108 +++++++++++++++++++++++++-------------------------- 2 files changed, 55 insertions(+), 55 deletions(-) diff --git a/package.json b/package.json index 71ceba7f7b8..604d3e7c1e7 100644 --- a/package.json +++ b/package.json @@ -95,7 +95,7 @@ "stylelint": "^15.11.0", "stylelint-config-standard": "^34.0.0", "tap": "~16.3.10", - "tape": "^5.7.2", + "tape": "^5.7.3", "tape-filter": "^1.0.4", "testem": "^3.11.0" }, diff --git a/yarn.lock b/yarn.lock index fdbb18d987c..0ca8fd5256e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1792,7 +1792,7 @@ caching-transform@^4.0.0: package-hash "^4.0.0" write-file-atomic "^3.0.0" -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5: +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== @@ -2523,15 +2523,15 @@ decompress-response@^6.0.0: dependencies: mimic-response "^3.1.0" -deep-equal@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.2.tgz#9b2635da569a13ba8e1cc159c2f744071b115daa" - integrity sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA== +deep-equal@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.3.tgz#af89dafb23a396c7da3e862abc0be27cf51d56e1" + integrity sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA== dependencies: array-buffer-byte-length "^1.0.0" - call-bind "^1.0.2" + call-bind "^1.0.5" es-get-iterator "^1.1.3" - get-intrinsic "^1.2.1" + get-intrinsic "^1.2.2" is-arguments "^1.1.1" is-array-buffer "^3.0.2" is-date-object "^1.0.5" @@ -2541,11 +2541,11 @@ deep-equal@^2.2.2: object-is "^1.1.5" object-keys "^1.1.1" object.assign "^4.1.4" - regexp.prototype.flags "^1.5.0" + regexp.prototype.flags "^1.5.1" side-channel "^1.0.4" which-boxed-primitive "^1.0.2" which-collection "^1.0.1" - which-typed-array "^1.1.9" + which-typed-array "^1.1.13" deep-extend@^0.6.0: version "0.6.0" @@ -2603,6 +2603,15 @@ define-properties@^1.2.0: has-property-descriptors "^1.0.0" object-keys "^1.1.1" +define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + defined@^1.0.0, defined@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.1.tgz#c0b9db27bfaffd95d6f61399419b893df0f91ebf" @@ -3789,6 +3798,16 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: has-proto "^1.0.1" has-symbols "^1.0.3" +get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== + dependencies: + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -5588,7 +5607,7 @@ mock-geolocation@^1.0.11: resolved "https://registry.yarnpkg.com/mock-geolocation/-/mock-geolocation-1.0.11.tgz#2c7b99242a2c70dbecd317b392b30311722992c8" integrity sha512-F/kvZfwuVnuPNHjHPuSVZlch8HnLwZgq7LVyp83PKSW3sXYm3tJhi/Z1gIHvnbY953YfAxiq5a7wFhgzX+qIkg== -mock-property@^1.0.2: +mock-property@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/mock-property/-/mock-property-1.0.3.tgz#3e37c50a56609d548cabd56559fde3dd8767b10c" integrity sha512-2emPTb1reeLLYwHxyVx993iYyCHEiRRO+y8NFXFPL5kl5q14sgTK76cXyEKkeKCHeRw35SfdkUJ10Q1KfHuiIQ== @@ -5905,13 +5924,13 @@ object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object.assign@^4.1.2, object.assign@^4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" - integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== +object.assign@^4.1.2, object.assign@^4.1.4, object.assign@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" + call-bind "^1.0.5" + define-properties "^1.2.1" has-symbols "^1.0.3" object-keys "^1.1.1" @@ -7001,15 +7020,6 @@ regexp.prototype.flags@^1.4.3: define-properties "^1.1.3" functions-have-names "^1.2.2" -regexp.prototype.flags@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" - integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - functions-have-names "^1.2.3" - regexp.prototype.flags@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" @@ -7115,16 +7125,7 @@ resolve-protobuf-schema@^2.1.0: dependencies: protocol-buffers-schema "^3.3.1" -resolve@^1.1.4, resolve@^1.10.0, resolve@^1.17.0, resolve@^1.22.1, resolve@^1.4.0: - version "1.22.4" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.4.tgz#1dc40df46554cdaf8948a486a10f6ba1e2026c34" - integrity sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^1.22.4: +resolve@^1.1.4, resolve@^1.10.0, resolve@^1.17.0, resolve@^1.22.1, resolve@^1.22.4, resolve@^1.4.0: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -8136,16 +8137,16 @@ tape-filter@^1.0.4: dependencies: minimist "^1.2.0" -tape@^5.7.2: - version "5.7.2" - resolved "https://registry.yarnpkg.com/tape/-/tape-5.7.2.tgz#04ff0e64a0316f648f153fae8ccd69791143f84b" - integrity sha512-cvSyprYahyOYXbtBwV/B7nrx7kINeZ3VZ9fKoSywoPwZN3oQ1WVLvt+Vl0XCz/gi37CDrY3dlW790nzviIzoPw== +tape@^5.7.3: + version "5.7.3" + resolved "https://registry.yarnpkg.com/tape/-/tape-5.7.3.tgz#d10975d79554089230dbada91dd85f38467ece6c" + integrity sha512-un2/TkloCBIxbrLac88Z9WElQ85WLE4t+jjfgrmxrlInWGYQf9r9Wbycc/nNP3zap6GBb7qln7h85QoNBNZdHg== dependencies: "@ljharb/resumer" "^0.0.1" "@ljharb/through" "^2.3.11" array.prototype.every "^1.1.5" call-bind "^1.0.5" - deep-equal "^2.2.2" + deep-equal "^2.2.3" defined "^1.0.1" dotignore "^0.1.2" for-each "^0.3.3" @@ -8156,11 +8157,11 @@ tape@^5.7.2: inherits "^2.0.4" is-regex "^1.1.4" minimist "^1.2.8" - mock-property "^1.0.2" + mock-property "^1.0.3" object-inspect "^1.13.1" object-is "^1.1.5" object-keys "^1.1.1" - object.assign "^4.1.4" + object.assign "^4.1.5" resolve "^2.0.0-next.5" string.prototype.trim "^1.2.8" @@ -8843,6 +8844,17 @@ which-typed-array@^1.1.11: gopd "^1.0.1" has-tostringtag "^1.0.0" +which-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.4" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + which-typed-array@^1.1.2: version "1.1.8" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.8.tgz#0cfd53401a6f334d90ed1125754a42ed663eb01f" @@ -8855,18 +8867,6 @@ which-typed-array@^1.1.2: has-tostringtag "^1.0.0" is-typed-array "^1.1.9" -which-typed-array@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" - integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" - is-typed-array "^1.1.10" - which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" From 7727f7d44067b7e8cdb270f1c73a38bd760e5aad Mon Sep 17 00:00:00 2001 From: Stepan Kuzmin Date: Tue, 16 Jan 2024 16:29:16 +0200 Subject: [PATCH 19/25] [GLJS-592] Allow `null` in TerrainSpecification to override terrain in imports (internal-1038) * Allow `null` in TerrainSpecification to override terrain in imports * Add unit and render tests * Don't propagate mock terrain to the stylesheet * Fail if Style Spec property is marked as `required` and `optional` at the same time --- build/generate-flow-typed-style-spec.js | 12 +-- src/style-spec/reference/v8.json | 1 + src/style-spec/types.js | 2 +- src/style-spec/validate/validate_terrain.js | 2 + src/style/style.js | 95 ++++++++++++++---- .../nullable-terrain-globe/expected.png | Bin 0 -> 420228 bytes .../imports/nullable-terrain-globe/style.json | 47 +++++++++ .../imports/nullable-terrain/expected.png | Bin 0 -> 137629 bytes .../imports/nullable-terrain/style.json | 56 +++++++++++ test/unit/style-spec/spec.test.js | 5 + test/unit/style/style_imports.test.js | 22 ++++ test/unit/ui/map.test.js | 40 ++++++++ 12 files changed, 254 insertions(+), 28 deletions(-) create mode 100644 test/integration/render-tests/imports/nullable-terrain-globe/expected.png create mode 100644 test/integration/render-tests/imports/nullable-terrain-globe/style.json create mode 100644 test/integration/render-tests/imports/nullable-terrain/expected.png create mode 100644 test/integration/render-tests/imports/nullable-terrain/style.json diff --git a/build/generate-flow-typed-style-spec.js b/build/generate-flow-typed-style-spec.js index d7d9aee6a91..3018392f460 100644 --- a/build/generate-flow-typed-style-spec.js +++ b/build/generate-flow-typed-style-spec.js @@ -1,9 +1,7 @@ - import fs from 'fs'; -import path from 'path'; -import {supportsPropertyExpression, supportsZoomExpression} from '../src/style-spec/util/properties.js'; -import spec from '../src/style-spec/reference/v8.json'; import assert from 'assert'; +import spec from '../src/style-spec/reference/v8.json'; +import {supportsPropertyExpression, supportsZoomExpression} from '../src/style-spec/util/properties.js'; function flowEnum(values) { if (Array.isArray(values)) { @@ -61,7 +59,7 @@ function flowProperty(key, property) { if (key === '*') { return `[_: string]: ${flowType(property)}`; } else { - return `"${key}"${property.required ? '' : '?'}: ${flowType(property)}`; + return `"${key}"${property.required ? '' : '?'}: ${property['optional'] ? '?' : ''}${flowType(property)}`; } } @@ -75,7 +73,7 @@ function flowObject(properties, indent, sealing = '') { ${Object.keys(properties) .map(k => ` ${indent}${flowProperty(k, properties[k])}`) .join(',\n')} -${indent}${sealing}}` +${indent}${sealing}}`; } function flowSourceTypeName(key) { @@ -143,7 +141,7 @@ function flowLight(key) { type: 'enum', values: [key], required: true - } + }; light.properties.type = () => { return flowObject(spec[`properties_light_${key}`], ' ', '|'); diff --git a/src/style-spec/reference/v8.json b/src/style-spec/reference/v8.json index 71f6ed0148c..76cef8e24e8 100644 --- a/src/style-spec/reference/v8.json +++ b/src/style-spec/reference/v8.json @@ -98,6 +98,7 @@ }, "terrain": { "type": "terrain", + "optional": true, "doc": "A global modifier that elevates layers and markers based on a DEM data source." }, "fog": { diff --git a/src/style-spec/types.js b/src/style-spec/types.js index e1b1fd37319..ecc8da456f3 100644 --- a/src/style-spec/types.js +++ b/src/style-spec/types.js @@ -68,7 +68,7 @@ export type StyleSpecification = {| "pitch"?: number, "light"?: LightSpecification, "lights"?: Array, - "terrain"?: TerrainSpecification, + "terrain"?: ?TerrainSpecification, "fog"?: FogSpecification, "camera"?: CameraSpecification, "imports"?: Array, diff --git a/src/style-spec/validate/validate_terrain.js b/src/style-spec/validate/validate_terrain.js index 330e6179702..644a977ba49 100644 --- a/src/style-spec/validate/validate_terrain.js +++ b/src/style-spec/validate/validate_terrain.js @@ -18,6 +18,8 @@ export default function validateTerrain(options: ValidationOptions): Array { if (!style.stylesheet) return; @@ -641,14 +646,11 @@ class Style extends Evented { } } - const isGlobe = style.stylesheet.projection && style.stylesheet.projection.name === 'globe'; - if ((style.stylesheet.terrain || isGlobe) && style.terrain != null) { - const nextIsElevated = style.terrain.drapeRenderMode === DrapeRenderMode.elevated; - const prevIsDeffered = terrain && terrain.drapeRenderMode === DrapeRenderMode.deferred; - if (!terrain || prevIsDeffered || nextIsElevated) { - terrain = style.terrain; - } - } + terrain = this._prioritizeTerrain( + terrain, + style.terrain, + style.stylesheet.terrain, + ); if (style.stylesheet.fog && style.fog != null) fog = style.fog; @@ -667,9 +669,14 @@ class Style extends Evented { this.light = light; this.ambientLight = ambientLight; this.directionalLight = directionalLight; - this.terrain = terrain; this.fog = fog; + if (terrain === null) { + delete this.terrain; + } else { + this.terrain = terrain; + } + // Use perspective camera as a fallback if no camera is specified this.camera = camera || {'camera-projection': 'perspective'}; this.projection = projection || {name: 'mercator'}; @@ -691,20 +698,55 @@ class Style extends Evented { traverse(this); } + _prioritizeTerrain(prevTerrain: ?Terrain, nextTerrain: ?Terrain, nextTerrainSpec: ?TerrainSpecification): ?Terrain { + // Given the previous and next terrain during imports merging, in order of priority, we select: + // 1. null, if the next terrain is explicitly disabled and we are not using the globe + // 2. next terrain if it is not null + // 3. previous terrain + + const prevIsDeffered = prevTerrain && prevTerrain.drapeRenderMode === DrapeRenderMode.deferred; + const nextIsDeffered = nextTerrain && nextTerrain.drapeRenderMode === DrapeRenderMode.deferred; + + // Disable terrain if it was explicitly set to null and we are not using globe + if (nextTerrainSpec === null) { + // First, check if the terrain is deferred + // If so, we are using the globe and should keep the terrain + if (nextIsDeffered) return nextTerrain; + if (prevIsDeffered) return prevTerrain; + + return null; + } + + // Use next terrain if there is no previous terrain or if it is deferred + if (nextTerrain != null) { + const nextIsElevated = nextTerrain && nextTerrain.drapeRenderMode === DrapeRenderMode.elevated; + if (!prevTerrain || prevIsDeffered || nextIsElevated) return nextTerrain; + } + + return prevTerrain; + } + mergeTerrain() { let terrain; + // Reset terrain that might have been set by a previous merge + if (this.terrain && this.terrain.scope !== this.scope) { + delete this.terrain; + } + this.forEachFragmentStyle((style: Style) => { - if (style.terrain != null) { - const nextIsElevated = style.terrain.drapeRenderMode === DrapeRenderMode.elevated; - const prevIsDeffered = terrain && terrain.drapeRenderMode === DrapeRenderMode.deferred; - if (!terrain || prevIsDeffered || nextIsElevated) { - terrain = style.terrain; - } - } + terrain = this._prioritizeTerrain( + terrain, + style.terrain, + style.stylesheet.terrain, + ); }); - this.terrain = terrain; + if (terrain === null) { + delete this.terrain; + } else { + this.terrain = terrain; + } } mergeProjection() { @@ -2062,7 +2104,9 @@ class Style extends Evented { this._checkLoaded(); const terrain = this.getTerrain(); - const scopedTerrain = terrain && this.terrain && this.terrain.scope === this.scope ? terrain : undefined; + const scopedTerrain = terrain && this.terrain && this.terrain.scope === this.scope ? + terrain : + this.stylesheet.terrain; return filterObject({ version: this.stylesheet.version, @@ -2320,7 +2364,13 @@ class Style extends Evented { // Disabling if (!terrainOptions) { delete this.terrain; - delete this.stylesheet.terrain; + + if (terrainOptions === null) { + this.stylesheet.terrain = null; + } else { + delete this.stylesheet.terrain; + } + this._force3DLayerUpdate(); this._markersNeedUpdate = true; return; @@ -2468,7 +2518,12 @@ class Style extends Evented { _createTerrain(terrainOptions: TerrainSpecification, drapeRenderMode: number) { const terrain = this.terrain = new Terrain(terrainOptions, drapeRenderMode, this.scope, this.options); - this.stylesheet.terrain = terrainOptions; + // We need to update the stylesheet only for the elevated mode, + // i.e., mock terrain shouldn't be propagated to the stylesheet + if (drapeRenderMode === DrapeRenderMode.elevated) { + this.stylesheet.terrain = terrainOptions; + } + this.mergeTerrain(); this.updateDrapeFirstLayers(); this._force3DLayerUpdate(); diff --git a/test/integration/render-tests/imports/nullable-terrain-globe/expected.png b/test/integration/render-tests/imports/nullable-terrain-globe/expected.png new file mode 100644 index 0000000000000000000000000000000000000000..0a1c3f44f72903c8786d43bec075837a69f0a65e GIT binary patch literal 420228 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℞pN`unKsi-9Sx42Jy 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%0Dh;KDg0-sNL#-a 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

^1<#14xZ~+cSb8^t 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 { }); }); + t.test('root style disables terrain in imports', (t) => { + const style = new Style(new StubMap()); + + style.loadJSON(createStyleJSON({ + terrain: null, + imports: [{ + id: 'basemap', + url: '', + data: createStyleJSON({ + projection: {name: 'globe'}, + terrain: {source: 'dem', exaggeration: 1}, + sources: {dem: {type: 'raster-dem', tiles: ['http://example.com/{z}/{x}/{y}.png']}} + }) + }] + })); + + style.on('style.load', () => { + t.equal(style.getTerrain(), null); + t.end(); + }); + }); + t.test('empty root style terrain overrides terrain in imports', (t) => { const style = new Style(new StubMap()); diff --git a/test/unit/ui/map.test.js b/test/unit/ui/map.test.js index 76cf0ae3cc3..50c32111d92 100755 --- a/test/unit/ui/map.test.js +++ b/test/unit/ui/map.test.js @@ -626,6 +626,46 @@ test('Map', (t) => { }); }); + t.test('Setting terrain to null disables the terrain but does not affect draping', (t) => { + const style = extend(createStyle(), { + terrain: null, + imports: [{ + id: 'basemap', + url: '', + data: extend(createStyle(), { + projection: {name: 'globe'}, + terrain: {source: 'dem', exaggeration: 1}, + sources: {dem: {type: 'raster-dem', tiles: ['http://example.com/{z}/{x}/{y}.png']}} + }) + }, + { + id: 'navigation', + url: '', + data: extend(createStyle(), { + terrain: {source: 'dem', exaggeration: 2}, + sources: {dem: {type: 'raster-dem', tiles: ['http://example.com/{z}/{x}/{y}.png']}} + }) + }] + }); + + const map = createMap(t, {style}); + + map.on('style.load', () => { + map.setZoom(3); + t.ok(map.style.terrain); + t.equal(map.getTerrain(), null); + t.equal(map.getStyle().terrain, null); + + map.setZoom(12); + map.once('render', () => { + t.notOk(map.style.terrain); + t.equal(map.getTerrain(), null); + t.equal(map.getStyle().terrain, null); + t.end(); + }); + }); + }); + t.test('https://github.com/mapbox/mapbox-gl-js/issues/11352', (t) => { const styleSheet = new window.CSSStyleSheet(); styleSheet.insertRule('.mapboxgl-canary { background-color: rgb(250, 128, 114); }', 0); From 9e2b66d0cece500f2a4a01d7dc2c7773d7e9a9d9 Mon Sep 17 00:00:00 2001 From: Stepan Kuzmin Date: Tue, 16 Jan 2024 17:59:24 +0200 Subject: [PATCH 20/25] Check for empty layer and source IDs in runtime (internal-1051) --- src/ui/map.js | 7 ++++++- test/unit/ui/map.test.js | 15 +++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/ui/map.js b/src/ui/map.js index 90c38f23d1c..6b6565b29ba 100755 --- a/src/ui/map.js +++ b/src/ui/map.js @@ -2053,7 +2053,12 @@ class Map extends Camera { return this.style.loaded(); } - _isValidId(id: string): boolean { + _isValidId(id: ?string): boolean { + if (id == null) { + this.fire(new ErrorEvent(new Error(`IDs can't be empty.`))); + return false; + } + // Disallow using fully qualified IDs in the public APIs if (isFQID(id)) { this.fire(new ErrorEvent(new Error(`IDs can't contain special symbols: "${id}".`))); diff --git a/test/unit/ui/map.test.js b/test/unit/ui/map.test.js index 50c32111d92..c306d37e27a 100755 --- a/test/unit/ui/map.test.js +++ b/test/unit/ui/map.test.js @@ -4409,6 +4409,9 @@ test('Disallow usage of FQID separator in the public APIs', (t) => { map.on('error', spy); map.on('style.load', () => { + map.getLayer(null); + map.getSource(undefined); + map.getLayer(makeFQID('id', 'scope')); map.addLayer({id: makeFQID('id', 'scope')}); map.moveLayer(makeFQID('id', 'scope')); @@ -4441,10 +4444,18 @@ test('Disallow usage of FQID separator in the public APIs', (t) => { map.once('click', makeFQID('id', 'scope'), () => {}); map.off('click', makeFQID('id', 'scope')); - const callCount = 22; + const callCount = 24; t.equal(spy.callCount, callCount); - for (let i = 0; i <= callCount - 1; i++) { + const event0 = spy.getCall(0).firstArg; + t.ok(event0); + t.match(event0.error, /can't be empty/); + + const event1 = spy.getCall(1).firstArg; + t.ok(event1); + t.match(event1.error, /can't be empty/); + + for (let i = 2; i <= callCount - 1; i++) { const event = spy.getCall(i).firstArg; t.ok(event); t.match(event.error, /can't contain special symbols/); From ce9883d51b519b07d7b29b4edb1f8de46686dae9 Mon Sep 17 00:00:00 2001 From: Stepan Kuzmin Date: Tue, 16 Jan 2024 18:22:05 +0200 Subject: [PATCH 21/25] Require either "url" or "tiles" for tiled sources (internal-1052) --- src/style-spec/validate/validate_source.js | 12 +++++++++--- .../fixture/sources.output-api-supported.json | 6 +++++- test/unit/style-spec/fixture/sources.output.json | 6 +++++- test/unit/style/style.test.js | 6 ++++-- 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/style-spec/validate/validate_source.js b/src/style-spec/validate/validate_source.js index 789b4628ab6..aee36f5bbe9 100644 --- a/src/style-spec/validate/validate_source.js +++ b/src/style-spec/validate/validate_source.js @@ -26,20 +26,26 @@ export default function validateSource(options: ValidationOptions): Array { "version": 8, "sources": { "foo": { - "type": "vector" + "type": "vector", + "tiles": [] } }, "layers": [{ @@ -446,7 +447,8 @@ test('Style#update', (t) => { 'version': 8, 'sources': { 'source': { - 'type': 'vector' + 'type': 'vector', + 'tiles': [] } }, 'layers': [{ From 5eed52288226488382ef30237f63f1b304b43035 Mon Sep 17 00:00:00 2001 From: Stepan Kuzmin Date: Tue, 16 Jan 2024 18:23:28 +0200 Subject: [PATCH 22/25] [GLJS-640] Trigger map rerender if all source tiles are 404 (internal-1050) --- src/source/raster_tile_source.js | 2 +- src/source/source_cache.js | 13 ++++++++++- src/source/vector_tile_source.js | 2 +- src/source/vector_tile_worker_source.js | 2 ++ src/source/worker_tile.js | 1 + src/ui/events.js | 2 +- src/ui/map.js | 4 ++-- test/unit/source/source_cache.test.js | 31 +++++++++++++++++++++++++ 8 files changed, 51 insertions(+), 6 deletions(-) diff --git a/src/source/raster_tile_source.js b/src/source/raster_tile_source.js index a0262d01ea8..eb3b2e77734 100644 --- a/src/source/raster_tile_source.js +++ b/src/source/raster_tile_source.js @@ -98,7 +98,7 @@ class RasterTileSource extends Evented implements Source { postTurnstileEvent(tileJSON.tiles); - // `content` is included here to prevent a race condition where `Style#_updateSources` is called + // `content` is included here to prevent a race condition where `Style#updateSources` is called // before the TileJSON arrives. this makes sure the tiles needed are loaded once TileJSON arrives // ref: https://github.com/mapbox/mapbox-gl-js/pull/4347#discussion_r104418088 this.fire(new Event('data', {dataType: 'source', sourceDataType: 'metadata'})); diff --git a/src/source/source_cache.js b/src/source/source_cache.js index 03921f14bb5..9250bc78dcb 100644 --- a/src/source/source_cache.js +++ b/src/source/source_cache.js @@ -259,8 +259,19 @@ class SourceCache extends Evented { if (err) { tile.state = 'errored'; if ((err: any).status !== 404) this._source.fire(new ErrorEvent(err, {tile})); + // If the requested tile is missing, try to load the parent tile + // to use it as an overscaled tile instead of the missing one. else { - // continue to try loading parent/children tiles if a tile doesn't exist (404) + const hasParent = tile.tileID.key in this._loadedParentTiles; + // If there are no parent tiles to load, fire a `data` event to trigger map render + if (!hasParent) { + // We are firing an `error` source type event instead of `content` here because + // the `content` event will reload all tiles and trigger redundant source cache updates + this._source.fire(new Event('data', {dataType: 'source', sourceDataType: 'error', sourceId: this._source.id})); + return; + } + + // Otherwise, continue trying to load the parent tile until we find one that loads successfully const updateForTerrain = this._source.type === 'raster-dem' && this.usedForTerrain; if (updateForTerrain && this.map.painter.terrain) { const terrain = this.map.painter.terrain; diff --git a/src/source/vector_tile_source.js b/src/source/vector_tile_source.js index 7f534ddb1f3..b055e573513 100644 --- a/src/source/vector_tile_source.js +++ b/src/source/vector_tile_source.js @@ -122,7 +122,7 @@ class VectorTileSource extends Evented implements Source { if (tileJSON.bounds) this.tileBounds = new TileBounds(tileJSON.bounds, this.minzoom, this.maxzoom); postTurnstileEvent(tileJSON.tiles, this.map._requestManager._customAccessToken); - // `content` is included here to prevent a race condition where `Style#_updateSources` is called + // `content` is included here to prevent a race condition where `Style#updateSources` is called // before the TileJSON arrives. this makes sure the tiles needed are loaded once TileJSON arrives // ref: https://github.com/mapbox/mapbox-gl-js/pull/4347#discussion_r104418088 this.fire(new Event('data', {dataType: 'source', sourceDataType: 'metadata'})); diff --git a/src/source/vector_tile_worker_source.js b/src/source/vector_tile_worker_source.js index 7eed1d87dcb..ed929bc83e9 100644 --- a/src/source/vector_tile_worker_source.js +++ b/src/source/vector_tile_worker_source.js @@ -277,6 +277,8 @@ class VectorTileWorkerSource extends Evented implements WorkerSource { done(); } } + } else { + callback(null, undefined); } } diff --git a/src/source/worker_tile.js b/src/source/worker_tile.js index d29b9b61b57..144a5304e0e 100644 --- a/src/source/worker_tile.js +++ b/src/source/worker_tile.js @@ -199,6 +199,7 @@ class WorkerTile { const maybePrepare = () => { if (error) { + this.status = 'done'; return callback(error); } else if (this.extraShadowCaster) { const m = PerformanceUtils.beginMeasure('parseTile2'); diff --git a/src/ui/events.js b/src/ui/events.js index ab85e0c7126..ea1277e422a 100644 --- a/src/ui/events.js +++ b/src/ui/events.js @@ -409,7 +409,7 @@ export type MapBoxZoomEvent = { * @property {Object} [source] The [style spec representation of the source](https://docs.mapbox.com/mapbox-gl-js/style-spec/sources/) if the event has a `dataType` of `source`. * @property {string} [sourceId] The `id` of the [`source`](https://docs.mapbox.com/mapbox-gl-js/style-spec/sources/) that triggered the event, if the event has a `dataType` of `source`. Same as the `id` of the object in the `source` property. * @property {string} [sourceDataType] Included if the event has a `dataType` of `source` and the event signals - * that internal data has been received or changed. Possible values are `metadata`, `content` and `visibility`. + * that internal data has been received or changed. Possible values are `metadata`, `content`, `visibility`, and `error`. * @property {Object} [tile] The tile being loaded or changed, if the event has a `dataType` of `source` and * the event is related to loading of a tile. * @property {Coordinate} [coord] The coordinate of the tile if the event has a `dataType` of `source` and diff --git a/src/ui/map.js b/src/ui/map.js index 6b6565b29ba..79609ff5d14 100755 --- a/src/ui/map.js +++ b/src/ui/map.js @@ -3599,7 +3599,7 @@ class Map extends Camera { if (this.style && this._sourcesDirty) { this._sourcesDirty = false; this.painter._updateFog(this.style); - this._updateTerrain(); // Terrain DEM source updates here and skips update in style._updateSources. + this._updateTerrain(); // Terrain DEM source updates here and skips update in Style#updateSources. averageElevationChanged = this._updateAverageElevation(frameStartTime); this.style.updateSources(this.transform); // Update positions of markers and popups on enabling/disabling terrain @@ -3701,7 +3701,7 @@ class Map extends Camera { // // Even though `_styleDirty` and `_sourcesDirty` are reset in this // method, synchronous events fired during Style#update or - // Style#_updateSources could have caused them to be set again. + // Style#updateSources could have caused them to be set again. const somethingDirty = this._sourcesDirty || this._styleDirty || this._placementDirty || averageElevationChanged; if (somethingDirty || this._repaint) { this.triggerRepaint(); diff --git a/test/unit/source/source_cache.test.js b/test/unit/source/source_cache.test.js index cbd09bf252d..56bbaea6499 100644 --- a/test/unit/source/source_cache.test.js +++ b/test/unit/source/source_cache.test.js @@ -1841,6 +1841,37 @@ test('SourceCache loads tiles recursively', (t) => { sourceCache.getSource().onAdd(); }); + t.test('fires `data` event with `error` sourceDataType if all tiles are 404', (t) => { + const transform = new Transform(); + transform.resize(511, 511); + transform.zoom = 1; + + const {sourceCache, eventedParent} = createSourceCache({ + loadTile (tile, callback) { + setTimeout(() => callback({status: 404}), 0); + } + }); + + eventedParent.on('data', (e) => { + if (e.dataType === 'source' && e.sourceDataType === 'metadata') { + sourceCache.update(transform); + return; + } + + if (e.dataType === 'source' && e.sourceDataType === 'error') { + t.equal(sourceCache.loaded(), true, 'source is loaded'); + t.deepEqual(sourceCache.getRenderableIds(), [], 'all tiles are empty'); + + const tileStates = Object.values(sourceCache._tiles).map(t => t.state); + t.deepEqual(tileStates, Array(5).fill('errored'), 'all tiles are errored'); + + t.end(); + } + }); + + sourceCache.getSource().onAdd(); + }); + t.end(); }); From 5e1ab956c32f805352b9d5c20097e497ce3f8cb3 Mon Sep 17 00:00:00 2001 From: Volodymyr Agafonkin Date: Thu, 18 Jan 2024 11:08:11 +0200 Subject: [PATCH 23/25] [GLJS-413] Evolving basemap fixes for config options evaluation (internal-1048) * type style configs * pass both default and value to config evaluation for proper fallback * fix unit tests * fix render tests * fix lint * coerce config option values according to schema * fix CompoundExpression to survive worker transfer * add render tests for schema validation * avoid in-place modification in setConfigProperty to fix transitions --- 3d-style/style/lights.js | 12 ++-- .../style/style_layer/model_style_layer.js | 9 +-- src/source/worker.js | 6 +- .../expression/compound_expression.js | 32 +++++---- .../expression/definitions/index.js | 49 ++++++++++++- .../expression/evaluation_context.js | 8 +-- src/style-spec/expression/index.js | 9 +-- src/style-spec/expression/parsing_context.js | 5 +- src/style-spec/types.js | 14 ++++ src/style/create_style_layer.js | 4 +- src/style/properties.js | 25 +++++-- src/style/style.js | 66 ++++++++++++------ src/style/style_layer.js | 8 +-- .../style_layer/background_style_layer.js | 4 +- src/style/style_layer/circle_style_layer.js | 4 +- .../style_layer/fill_extrusion_style_layer.js | 4 +- src/style/style_layer/fill_style_layer.js | 4 +- src/style/style_layer/heatmap_style_layer.js | 4 +- .../style_layer/hillshade_style_layer.js | 4 +- src/style/style_layer/line_style_layer.js | 5 +- src/style/style_layer/raster_style_layer.js | 8 +-- src/style/style_layer/sky_style_layer.js | 12 ++-- src/style/style_layer/symbol_style_layer.js | 4 +- src/style/style_layer_index.js | 8 +-- .../imports/config-max-value/expected.png | Bin 0 -> 206 bytes .../imports/config-max-value/style.json | 45 ++++++++++++ .../imports/config-min-value/expected.png | Bin 0 -> 206 bytes .../imports/config-min-value/style.json | 45 ++++++++++++ .../imports/config-step-value/expected.png | Bin 0 -> 206 bytes .../imports/config-step-value/style.json | 45 ++++++++++++ .../imports/config-values/expected.png | Bin 0 -> 232 bytes .../imports/config-values/style.json | 59 ++++++++++++++++ .../imports/set-style-config/style.json | 2 + test/unit/style/style_imports.test.js | 23 ++++-- 34 files changed, 419 insertions(+), 108 deletions(-) create mode 100644 test/integration/render-tests/imports/config-max-value/expected.png create mode 100644 test/integration/render-tests/imports/config-max-value/style.json create mode 100644 test/integration/render-tests/imports/config-min-value/expected.png create mode 100644 test/integration/render-tests/imports/config-min-value/style.json create mode 100644 test/integration/render-tests/imports/config-step-value/expected.png create mode 100644 test/integration/render-tests/imports/config-step-value/style.json create mode 100644 test/integration/render-tests/imports/config-values/expected.png create mode 100644 test/integration/render-tests/imports/config-values/style.json diff --git a/3d-style/style/lights.js b/3d-style/style/lights.js index 7bb9e9cb74c..0694de5e808 100644 --- a/3d-style/style/lights.js +++ b/3d-style/style/lights.js @@ -1,10 +1,10 @@ // @flow -import type {LightsSpecification} from '../../src/style-spec/types.js'; -import type {Expression} from '../../src/style-spec/expression/expression.js'; import {Evented} from '../../src/util/evented.js'; import {Properties, Transitionable, Transitioning, PossiblyEvaluated} from '../../src/style/properties.js'; -import type {TransitionParameters} from '../../src/style/properties.js'; + +import type {LightsSpecification} from '../../src/style-spec/types.js'; +import type {TransitionParameters, ConfigOptions} from '../../src/style/properties.js'; import type EvaluationParameters from '../../src/style/evaluation_parameters.js'; class Lights extends Evented { @@ -14,7 +14,7 @@ class Lights extends Evented { _transitioning: Transitioning

; _options: LightsSpecification; - constructor(options: LightsSpecification, properties: Properties

, scope: string, configOptions?: ?Map) { + constructor(options: LightsSpecification, properties: Properties

, scope: string, configOptions?: ?ConfigOptions) { super(); this.scope = scope; this._options = options; @@ -25,7 +25,7 @@ class Lights extends Evented { this._transitioning = this._transitionable.untransitioned(); } - updateConfig(configOptions?: ?Map) { + updateConfig(configOptions?: ?ConfigOptions) { this._transitionable.setTransitionOrValue(this._options.properties, new Map(configOptions)); } @@ -46,7 +46,7 @@ class Lights extends Evented { return this._options; } - set(options: LightsSpecification, configOptions?: ?Map) { + set(options: LightsSpecification, configOptions?: ?ConfigOptions) { this._options = options; this._transitionable.setTransitionOrValue(options.properties, configOptions); } diff --git a/3d-style/style/style_layer/model_style_layer.js b/3d-style/style/style_layer/model_style_layer.js index 92bf7e5d375..4d10d1abb10 100644 --- a/3d-style/style/style_layer/model_style_layer.js +++ b/3d-style/style/style_layer/model_style_layer.js @@ -4,19 +4,20 @@ import StyleLayer from '../../../src/style/style_layer.js'; import ModelBucket from '../../data/bucket/model_bucket.js'; import type {LayerSpecification} from '../../../src/style-spec/types.js'; import properties from './model_style_layer_properties.js'; -import type {PaintProps, LayoutProps} from './model_style_layer_properties.js'; -import type {BucketParameters} from '../../../src/data/bucket.js'; import {Transitionable, Transitioning, PossiblyEvaluated, PropertyValue} from '../../../src/style/properties.js'; -import type {Expression} from '../../../src/style-spec/expression/expression.js'; import {ZoomDependentExpression} from '../../../src/style-spec/expression/index.js'; +import type {PaintProps, LayoutProps} from './model_style_layer_properties.js'; +import type {BucketParameters} from '../../../src/data/bucket.js'; +import type {ConfigOptions} from '../../../src/style/properties.js'; + class ModelStyleLayer extends StyleLayer { _transitionablePaint: Transitionable; _transitioningPaint: Transitioning; paint: PossiblyEvaluated; layout: PossiblyEvaluated; - constructor(layer: LayerSpecification, options?: ?Map) { + constructor(layer: LayerSpecification, options?: ?ConfigOptions) { super(layer, properties, options); } diff --git a/src/source/worker.js b/src/source/worker.js index d5d88679c21..f4442bdc6a4 100644 --- a/src/source/worker.js +++ b/src/source/worker.js @@ -26,7 +26,7 @@ import type { import type {WorkerGlobalScopeInterface} from '../util/web_worker.js'; import type {Callback} from '../types/callback.js'; import type {LayerSpecification, ProjectionSpecification} from '../style-spec/types.js'; -import type {Expression} from '../style-spec/expression/expression.js'; +import type {ConfigOptions} from '../style/properties.js'; import type {PluginState} from './rtl_text_plugin.js'; import type Projection from '../geo/projection/projection.js'; @@ -157,12 +157,12 @@ export default class Worker { callback(); } - setLayers(mapId: string, params: {layers: Array, scope: string, options: Map}, callback: WorkerTileCallback) { + setLayers(mapId: string, params: {layers: Array, scope: string, options: ConfigOptions}, callback: WorkerTileCallback) { this.getLayerIndex(mapId, params.scope).replace(params.layers, params.options); callback(); } - updateLayers(mapId: string, params: {layers: Array, scope: string, removedIds: Array, options: Map}, callback: WorkerTileCallback) { + updateLayers(mapId: string, params: {layers: Array, scope: string, removedIds: Array, options: ConfigOptions}, callback: WorkerTileCallback) { this.getLayerIndex(mapId, params.scope).update(params.layers, params.removedIds, params.options); callback(); } diff --git a/src/style-spec/expression/compound_expression.js b/src/style-spec/expression/compound_expression.js index 3232e9af5b2..f046091ca3d 100644 --- a/src/style-spec/expression/compound_expression.js +++ b/src/style-spec/expression/compound_expression.js @@ -21,17 +21,23 @@ class CompoundExpression implements Expression { type: Type; _evaluate: Evaluate; args: Array; + _overloadIndex: number; static definitions: {[_: string]: Definition }; - constructor(name: string, type: Type, evaluate: Evaluate, args: Array) { + constructor(name: string, type: Type, evaluate: Evaluate, args: Array, overloadIndex: number) { this.name = name; this.type = type; this._evaluate = evaluate; this.args = args; + this._overloadIndex = overloadIndex; } evaluate(ctx: EvaluationContext): Value { + if (!this._evaluate) { // restore evaluate function after transfer between threads + const definition = CompoundExpression.definitions[this.name]; + this._evaluate = Array.isArray(definition) ? definition[2] : definition.overloads[this._overloadIndex][1]; + } return this._evaluate(ctx, this.args); } @@ -62,14 +68,18 @@ class CompoundExpression implements Expression { [[definition[1], definition[2]]] : definition.overloads; - const overloads = availableOverloads.filter(([signature]) => ( - !Array.isArray(signature) || // varags - signature.length === args.length - 1 // correct param count - )); + const overloadParams = []; let signatureContext: ParsingContext = (null: any); - for (const [params, evaluate] of overloads) { + let overloadIndex = -1; + + for (const [params, evaluate] of availableOverloads) { + if (Array.isArray(params) && params.length !== args.length - 1) continue; // param count doesn't match + + overloadParams.push(params); + overloadIndex++; + // Use a fresh context for each attempted signature so that, if // we eventually succeed, we haven't polluted `context.errors`. signatureContext = new ParsingContext(context.registry, context.path, null, context.scope, undefined, context.options); @@ -111,19 +121,17 @@ class CompoundExpression implements Expression { } if (signatureContext.errors.length === 0) { - return new CompoundExpression(op, type, evaluate, parsedArgs); + return new CompoundExpression(op, type, evaluate, parsedArgs, overloadIndex); } } assert(!signatureContext || signatureContext.errors.length > 0); - if (overloads.length === 1) { + if (overloadParams.length === 1) { context.errors.push(...signatureContext.errors); } else { - const expected = overloads.length ? overloads : availableOverloads; - const signatures = expected - .map(([params]) => stringifySignature(params)) - .join(' | '); + const expected = overloadParams.length ? overloadParams : availableOverloads.map(([params]) => params); + const signatures = expected.map(stringifySignature).join(' | '); const actualTypes = []; // For error message, re-parse arguments without trying to diff --git a/src/style-spec/expression/definitions/index.js b/src/style-spec/expression/definitions/index.js index e8b9d137266..eb3ef860075 100644 --- a/src/style-spec/expression/definitions/index.js +++ b/src/style-spec/expression/definitions/index.js @@ -145,12 +145,57 @@ function get(key: string, obj: {[string]: any}) { return typeof v === 'undefined' ? null : v; } +function coerceValue(type: 'string' | 'number' | 'boolean' | 'color', value: any): any { + switch (type) { + case 'string': return String(value); + case 'number': return +value; + case 'boolean': return !!value; + case 'color': return Color.parse(value); + } + return value; +} + +function clampToAllowedNumber(value: number, min: number | void, max: number | void, step: number | void): number { + if (step !== undefined) { + value = step * Math.round(value / step); + } + if (min !== undefined && value < min) { + value = min; + } + if (max !== undefined && value > max) { + value = max; + } + return value; +} + function getConfig(ctx: EvaluationContext, key: string, scope: string) { if (scope.length) { key += `\u{1f}${scope}`; } - const v = ctx.getConfig(key); - return v ? v.evaluate(ctx) : null; + const config = ctx.getConfig(key); + if (!config) return null; + + const {type, value, values, minValue, maxValue, stepValue} = config; + + const defaultValue = config.default.evaluate(ctx); + let result = value ? value.evaluate(ctx) : defaultValue; + + if (type) result = coerceValue(type, result); + + if (value !== undefined && result !== undefined && values && !values.includes(result)) { + result = defaultValue; + if (type) result = coerceValue(type, result); + } + + if (result !== undefined && (minValue !== undefined || maxValue !== undefined || stepValue !== undefined)) { + if (typeof result === 'number') { + result = clampToAllowedNumber(result, minValue, maxValue, stepValue); + } else if (Array.isArray(result)) { + result = result.map((item) => typeof item === 'number' ? clampToAllowedNumber(item, minValue, maxValue, stepValue) : item); + } + } + + return result; } function binarySearch(v: any, a: {[number]: any}, i: number, j: number) { diff --git a/src/style-spec/expression/evaluation_context.js b/src/style-spec/expression/evaluation_context.js index 7a2ed3bc65e..1c0da6b9cfe 100644 --- a/src/style-spec/expression/evaluation_context.js +++ b/src/style-spec/expression/evaluation_context.js @@ -1,13 +1,13 @@ // @flow import {Color} from './values.js'; -import type {Expression} from './expression.js'; import type Point from '@mapbox/point-geometry'; import type {FormattedSection} from './types/formatted.js'; import type {GlobalProperties, Feature, FeatureState} from './index.js'; import type {CanonicalTileID} from '../../source/tile_id.js'; import type {FeatureDistanceData} from '../feature_filter/index.js'; +import type {ConfigOptions, ConfigOptionValue} from '../../style/properties.js'; const geometryTypes = ['Unknown', 'Point', 'LineString', 'Polygon']; @@ -20,11 +20,11 @@ class EvaluationContext { canonical: null | CanonicalTileID; featureTileCoord: ?Point; featureDistanceData: ?FeatureDistanceData; - options: ?Map; + options: ?ConfigOptions; _parseColorCache: {[_: string]: ?Color}; - constructor(options?: ?Map) { + constructor(options?: ?ConfigOptions) { this.globals = (null: any); this.feature = null; this.featureState = null; @@ -92,7 +92,7 @@ class EvaluationContext { return cached; } - getConfig(id: string): ?Expression { + getConfig(id: string): ?ConfigOptionValue { return this.options ? this.options.get(id) : null; } } diff --git a/src/style-spec/expression/index.js b/src/style-spec/expression/index.js index 6d7b2f83944..34176c310d6 100644 --- a/src/style-spec/expression/index.js +++ b/src/style-spec/expression/index.js @@ -33,6 +33,7 @@ import type {FormattedSection} from './types/formatted.js'; import type Point from '@mapbox/point-geometry'; import type {CanonicalTileID} from '../../source/tile_id.js'; import type {FeatureDistanceData} from '../feature_filter/index.js'; +import type {ConfigOptions} from '../../style/properties.js'; export interface Feature { +type: 1 | 2 | 3 | 'Unknown' | 'Point' | 'LineString' | 'Polygon'; @@ -64,7 +65,7 @@ export class StyleExpression { _warningHistory: {[key: string]: boolean}; _enumValues: ?{[_: string]: any}; - constructor(expression: Expression, propertySpec: ?StylePropertySpecification, options?: ?Map) { + constructor(expression: Expression, propertySpec: ?StylePropertySpecification, options?: ?ConfigOptions) { this.expression = expression; this._warningHistory = {}; this._evaluator = new EvaluationContext(options); @@ -131,7 +132,7 @@ export function isExpression(expression: mixed): boolean { * * @private */ -export function createExpression(expression: mixed, propertySpec: ?StylePropertySpecification, options?: ?Map): Result> { +export function createExpression(expression: mixed, propertySpec: ?StylePropertySpecification, options?: ?ConfigOptions): Result> { const parser = new ParsingContext(definitions, [], propertySpec ? getExpectedType(propertySpec) : undefined, undefined, undefined, options); // For string-valued properties, coerce to string at the top level rather than asserting. @@ -248,7 +249,7 @@ export type StylePropertyExpression = | CameraExpression | CompositeExpression; -export function createPropertyExpression(expression: mixed, propertySpec: StylePropertySpecification, options?: ?Map): Result> { +export function createPropertyExpression(expression: mixed, propertySpec: StylePropertySpecification, options?: ?ConfigOptions): Result> { expression = createExpression(expression, propertySpec, options); if (expression.result === 'error') { return expression; @@ -330,7 +331,7 @@ export class StylePropertyFunction { } } -export function normalizePropertyExpression(value: PropertyValueSpecification, specification: StylePropertySpecification, options?: ?Map): StylePropertyExpression { +export function normalizePropertyExpression(value: PropertyValueSpecification, specification: StylePropertySpecification, options?: ?ConfigOptions): StylePropertyExpression { if (isFunction(value)) { return (new StylePropertyFunction(value, specification): any); diff --git a/src/style-spec/expression/parsing_context.js b/src/style-spec/expression/parsing_context.js index 7a52c7e2664..ae99780dcec 100644 --- a/src/style-spec/expression/parsing_context.js +++ b/src/style-spec/expression/parsing_context.js @@ -16,6 +16,7 @@ import Var from './definitions/var.js'; import type {Expression, ExpressionRegistry} from './expression.js'; import type {Type} from './types.js'; +import type {ConfigOptions} from '../../style/properties.js'; /** * State associated parsing at a given point in an expression tree. @@ -27,7 +28,7 @@ class ParsingContext { key: string; scope: Scope; errors: Array; - options: ?Map; + options: ?ConfigOptions; // The expected type of this expression. Provided only to allow Expression // implementations to infer argument types: Expression#parse() need not @@ -41,7 +42,7 @@ class ParsingContext { expectedType: ?Type, scope: Scope = new Scope(), errors: Array = [], - options?: ?Map + options?: ?ConfigOptions ) { this.registry = registry; this.path = path; diff --git a/src/style-spec/types.js b/src/style-spec/types.js index ecc8da456f3..589df3f4644 100644 --- a/src/style-spec/types.js +++ b/src/style-spec/types.js @@ -190,6 +190,19 @@ export type RasterDEMSourceSpecification = { [_: string]: mixed } +export type Raster_arraySourceSpecification = { + "type": "raster-array", + "url"?: string, + "tiles"?: Array, + "bounds"?: [number, number, number, number], + "minzoom"?: number, + "maxzoom"?: number, + "tileSize"?: number, + "attribution"?: string, + "rasterLayers"?: mixed, + [_: string]: mixed +} + export type GeoJSONSourceSpecification = {| "type": "geojson", "data"?: mixed, @@ -231,6 +244,7 @@ export type SourceSpecification = | VectorSourceSpecification | RasterSourceSpecification | RasterDEMSourceSpecification + | Raster_arraySourceSpecification | GeoJSONSourceSpecification | VideoSourceSpecification | ImageSourceSpecification diff --git a/src/style/create_style_layer.js b/src/style/create_style_layer.js index 40d795f2449..79a448a48fa 100644 --- a/src/style/create_style_layer.js +++ b/src/style/create_style_layer.js @@ -17,7 +17,7 @@ import type {CustomLayerInterface} from './style_layer/custom_style_layer.js'; import model from '../../3d-style/style/style_layer/model_style_layer.js'; import type {LayerSpecification} from '../style-spec/types.js'; -import type {Expression} from '../style-spec/expression/expression.js'; +import type {ConfigOptions} from './properties.js'; const subclasses = { circle, @@ -34,7 +34,7 @@ const subclasses = { model }; -export default function createStyleLayer(layer: LayerSpecification | CustomLayerInterface, options?: ?Map): StyleLayer | CustomStyleLayer { +export default function createStyleLayer(layer: LayerSpecification | CustomLayerInterface, options?: ?ConfigOptions): StyleLayer | CustomStyleLayer { if (layer.type === 'custom') { return new CustomStyleLayer(layer); } else { diff --git a/src/style/properties.js b/src/style/properties.js index 6a68ee82bae..ebe4ce1f589 100644 --- a/src/style/properties.js +++ b/src/style/properties.js @@ -67,6 +67,17 @@ export interface Property { interpolate(a: R, b: R, t: number): R; } +export type ConfigOptionValue = { + default: Expression; + value?: Expression; + values?: Array; + minValue?: number; + maxValue?: number; + stepValue?: number; + type?: 'string' | 'number' | 'boolean' | 'color'; +}; +export type ConfigOptions = Map; + /** * `PropertyValue` represents the value part of a property key-value unit. It's used to represent both * paint and layout property values, and regardless of whether or not their property supports data-driven @@ -91,7 +102,7 @@ export class PropertyValue { value: PropertyValueSpecification | void; expression: StylePropertyExpression; - constructor(property: Property, value: PropertyValueSpecification | void, options?: ?Map) { + constructor(property: Property, value: PropertyValueSpecification | void, options?: ?ConfigOptions) { this.property = property; this.value = value; this.expression = normalizePropertyExpression(value === undefined ? property.specification.default : value, property.specification, options); @@ -130,7 +141,7 @@ class TransitionablePropertyValue { value: PropertyValue; transition: TransitionSpecification | void; - constructor(property: Property, options?: ?Map) { + constructor(property: Property, options?: ?ConfigOptions) { this.property = property; this.value = new PropertyValue(property, undefined, options); } @@ -165,10 +176,10 @@ type TransitionablePropertyValues export class Transitionable { _properties: Properties; _values: TransitionablePropertyValues; - _options: ?Map; + _options: ?ConfigOptions; isConfigDependent: boolean; - constructor(properties: Properties, options?: ?Map) { + constructor(properties: Properties, options?: ?ConfigOptions) { this._properties = properties; this._values = (Object.create(properties.defaultTransitionablePropertyValues): any); this._options = options; @@ -189,7 +200,7 @@ export class Transitionable { this.isConfigDependent = this.isConfigDependent || this._values[name].value.expression.isConfigDependent; } - setTransitionOrValue(properties: ?P, options?: ?Map) { + setTransitionOrValue(properties: ?P, options?: ?ConfigOptions) { if (options) this._options = options; const specProperties = this._properties.properties; @@ -392,10 +403,10 @@ type PropertyValueSpecifications export class Layout { _properties: Properties; _values: PropertyValues; - _options: ?Map; + _options: ?ConfigOptions; isConfigDependent: boolean; - constructor(properties: Properties, options?: ?Map) { + constructor(properties: Properties, options?: ?ConfigOptions) { this._properties = properties; this._values = (Object.create(properties.defaultPropertyValues): any); this._options = options; diff --git a/src/style/style.js b/src/style/style.js index 74596ac884e..bd9f6050904 100644 --- a/src/style/style.js +++ b/src/style/style.js @@ -103,9 +103,8 @@ import type {QueryFeature} from '../util/vectortile_to_geojson.js'; import type {FeatureStates} from '../source/source_state.js'; import type {PointLike} from '@mapbox/point-geometry'; import type {Source, SourceClass} from '../source/source.js'; -import type {TransitionParameters} from './properties.js'; +import type {TransitionParameters, ConfigOptions} from './properties.js'; import ModelManager from '../../3d-style/render/model_manager.js'; -import type {Expression} from '../style-spec/expression/expression.js'; import {DEFAULT_MAX_ZOOM, DEFAULT_MIN_ZOOM} from '../geo/transform.js'; import type {QueryRenderedFeaturesParams} from '../source/query_features.js'; @@ -160,6 +159,7 @@ export type StyleOptions = { importDepth?: number, importsCache?: Map, resolvedImports?: Set, + config?: ?ConfigSpecification }; export type StyleSetterOptions = { @@ -207,7 +207,7 @@ class Style extends Evented { // Keeps track of ancestors' Style URLs. resolvedImports: Set; - options: Map; + options: ConfigOptions; // Merged layers and sources _mergedOrder: Array; @@ -236,6 +236,7 @@ class Style extends Evented { _markersNeedUpdate: boolean; _brightness: ?number; _configDependentLayers: Set; + _config: ?ConfigSpecification; _buildingIndex: BuildingIndex; _transition: TransitionSpecification; @@ -329,6 +330,7 @@ class Style extends Evented { this.options = new Map(); this._configDependentLayers = new Set(); + this._config = options.config; this.dispatcher.broadcast('setReferrer', getReferrer()); @@ -478,13 +480,12 @@ class Style extends Evented { imageManager: this.imageManager, glyphManager: this.glyphManager, modelManager: this.modelManager, + config: importSpec.config }); // Bubble all events fired by the style to the map. style.setEventedParent(this.map, {style}); - style.setConfig(importSpec.config); - return style; } @@ -516,7 +517,7 @@ class Style extends Evented { return; } - this.updateSchema(schema); + this.setConfig(this._config, schema); if (validate && emitValidationErrors(this, validateStyle(json))) { return; @@ -1602,7 +1603,8 @@ class Style extends Evented { getConfigProperty(fragmentId: string, key: string): ?any { const fragmentStyle = this.getFragmentStyle(fragmentId); if (!fragmentStyle) return null; - const expression = fragmentStyle.options.get(key); + const expressions = fragmentStyle.options.get(key); + const expression = expressions ? expressions.value || expressions.default : null; return expression ? expression.serialize() : null; } @@ -1617,35 +1619,53 @@ class Style extends Evented { const fragmentStyle = this.getFragmentStyle(fragmentId); if (!fragmentStyle) return; - fragmentStyle.options.set(key, expression); + + const expressions = fragmentStyle.options.get(key); + if (!expressions) return; + + fragmentStyle.options.set(key, {...expressions, value: expression}); fragmentStyle.updateConfigDependencies(); } setConfig(config: ?ConfigSpecification, schema: ?SchemaSpecification) { - this.options.clear(); - if (!config) return; + this._config = config; - for (const key in config) { - const expressionParsed = createExpression(config[key]); - if (expressionParsed.result === 'success') { - this.options.set(key, expressionParsed.value.expression); - } - } + if (!config && !schema) return; - this.updateSchema(schema); - } + if (!schema) { + this.fire(new ErrorEvent(new Error(`Attempting to set config for a style without schema.`))); + return; + } - updateSchema(schema: ?SchemaSpecification) { - if (!schema) return; + this.options.clear(); for (const id in schema) { - // already set by config - if (this.options.has(id)) continue; + let defaultExpression; + let configExpression; const expression = schema[id].default; const expressionParsed = createExpression(expression); if (expressionParsed.result === 'success') { - this.options.set(id, expressionParsed.value.expression); + defaultExpression = expressionParsed.value.expression; + } + + if (config && config[id] !== undefined) { + const expressionParsed = createExpression(config[id]); + if (expressionParsed.result === 'success') { + configExpression = expressionParsed.value.expression; + } + } + + const {minValue, maxValue, stepValue, type, values} = schema[id]; + + if (defaultExpression) { + this.options.set(id, { + default: defaultExpression, + value: configExpression, + minValue, maxValue, stepValue, type, values + }); + } else { + this.fire(new ErrorEvent(new Error(`No schema defined for config option "${id}".`))); } } } diff --git a/src/style/style_layer.js b/src/style/style_layer.js index 3d5a6e6eddd..e598eb869d1 100644 --- a/src/style/style_layer.js +++ b/src/style/style_layer.js @@ -16,11 +16,10 @@ import featureFilter from '../style-spec/feature_filter/index.js'; import {makeFQID} from '../util/fqid.js'; import type {FeatureState} from '../style-spec/expression/index.js'; -import type {Expression} from '../style-spec/expression/expression.js'; import type {Bucket} from '../data/bucket.js'; import type Point from '@mapbox/point-geometry'; import type {FeatureFilter, FilterExpression} from '../style-spec/feature_filter/index.js'; -import type {TransitionParameters, PropertyValue} from './properties.js'; +import type {TransitionParameters, PropertyValue, ConfigOptions} from './properties.js'; import type EvaluationParameters from './evaluation_parameters.js'; import type Transform from '../geo/transform.js'; import type { @@ -70,8 +69,9 @@ class StyleLayer extends Evented { _featureFilter: FeatureFilter; _filterCompiled: boolean; - options: ?Map; + options: ?ConfigOptions; _stats: ?LayerRenderingStats; + +queryRadius: (bucket: Bucket) => number; +queryIntersectsFeature: (queryGeometry: TilespaceQueryGeometry, feature: IVectorTileFeature, @@ -87,7 +87,7 @@ class StyleLayer extends Evented { +onRemove: ?(map: MapboxMap) => void; +isLayerDraped: ?(sourceCache: ?SourceCache) => boolean; - constructor(layer: LayerSpecification | CustomLayerInterface, properties: $ReadOnly<{layout?: Properties<*>, paint?: Properties<*>}>, options?: ?Map) { + constructor(layer: LayerSpecification | CustomLayerInterface, properties: $ReadOnly<{layout?: Properties<*>, paint?: Properties<*>}>, options?: ?ConfigOptions) { super(); this.id = layer.id; diff --git a/src/style/style_layer/background_style_layer.js b/src/style/style_layer/background_style_layer.js index ff7a161caff..f139469d4c9 100644 --- a/src/style/style_layer/background_style_layer.js +++ b/src/style/style_layer/background_style_layer.js @@ -7,15 +7,15 @@ import {Transitionable, Transitioning, PossiblyEvaluated} from '../properties.js import type {PaintProps} from './background_style_layer_properties.js'; import type {LayerSpecification} from '../../style-spec/types.js'; -import type {Expression} from '../../style-spec/expression/expression.js'; import type {CreateProgramParams} from "../../render/painter.js"; +import type {ConfigOptions} from '../properties.js'; class BackgroundStyleLayer extends StyleLayer { _transitionablePaint: Transitionable; _transitioningPaint: Transitioning; paint: PossiblyEvaluated; - constructor(layer: LayerSpecification, options?: ?Map) { + constructor(layer: LayerSpecification, options?: ?ConfigOptions) { super(layer, properties, options); } diff --git a/src/style/style_layer/circle_style_layer.js b/src/style/style_layer/circle_style_layer.js index 6a579297f53..dff88a9962f 100644 --- a/src/style/style_layer/circle_style_layer.js +++ b/src/style/style_layer/circle_style_layer.js @@ -16,7 +16,6 @@ import {latFromMercatorY, mercatorZfromAltitude} from '../../geo/mercator_coordi import EXTENT from '../../style-spec/data/extent.js'; import type {FeatureState} from '../../style-spec/expression/index.js'; -import type {Expression} from '../../style-spec/expression/expression.js'; import type Transform from '../../geo/transform.js'; import type {Bucket, BucketParameters} from '../../data/bucket.js'; import type {LayoutProps, PaintProps} from './circle_style_layer_properties.js'; @@ -27,6 +26,7 @@ import type {IVectorTileFeature} from '@mapbox/vector-tile'; import {circleDefinesValues} from '../../render/program/circle_program.js'; import type {CreateProgramParams} from "../../render/painter.js"; import type {DynamicDefinesType} from "../../render/program/program_uniforms.js"; +import type {ConfigOptions} from '../properties.js'; class CircleStyleLayer extends StyleLayer { _unevaluatedLayout: Layout; @@ -36,7 +36,7 @@ class CircleStyleLayer extends StyleLayer { _transitioningPaint: Transitioning; paint: PossiblyEvaluated; - constructor(layer: LayerSpecification, options?: ?Map) { + constructor(layer: LayerSpecification, options?: ?ConfigOptions) { super(layer, properties, options); } diff --git a/src/style/style_layer/fill_extrusion_style_layer.js b/src/style/style_layer/fill_extrusion_style_layer.js index 0f2b56ca421..89b5bcf9b29 100644 --- a/src/style/style_layer/fill_extrusion_style_layer.js +++ b/src/style/style_layer/fill_extrusion_style_layer.js @@ -12,7 +12,6 @@ import EXTENT from '../../style-spec/data/extent.js'; import {CanonicalTileID} from '../../source/tile_id.js'; import type {FeatureState} from '../../style-spec/expression/index.js'; -import type {Expression} from '../../style-spec/expression/expression.js'; import type {BucketParameters} from '../../data/bucket.js'; import type {PaintProps, LayoutProps} from './fill_extrusion_style_layer_properties.js'; import type Transform from '../../geo/transform.js'; @@ -21,6 +20,7 @@ import type {TilespaceQueryGeometry} from '../query_geometry.js'; import type {DEMSampler} from '../../terrain/elevation.js'; import type {Vec2, Vec4} from 'gl-matrix'; import type {IVectorTileFeature} from '@mapbox/vector-tile'; +import type {ConfigOptions} from '../properties.js'; class Point3D extends Point { z: number; @@ -37,7 +37,7 @@ class FillExtrusionStyleLayer extends StyleLayer { paint: PossiblyEvaluated; layout: PossiblyEvaluated; - constructor(layer: LayerSpecification, options?: ?Map) { + constructor(layer: LayerSpecification, options?: ?ConfigOptions) { super(layer, properties, options); this._stats = {numRenderedVerticesInShadowPass : 0, numRenderedVerticesInTransparentPass: 0}; } diff --git a/src/style/style_layer/fill_style_layer.js b/src/style/style_layer/fill_style_layer.js index c7a00b64ed9..50f51b268da 100644 --- a/src/style/style_layer/fill_style_layer.js +++ b/src/style/style_layer/fill_style_layer.js @@ -10,7 +10,6 @@ import {Transitionable, Transitioning, Layout, PossiblyEvaluated} from '../prope import ProgramConfiguration from '../../data/program_configuration.js'; import type {FeatureState} from '../../style-spec/expression/index.js'; -import type {Expression} from '../../style-spec/expression/expression.js'; import type {BucketParameters} from '../../data/bucket.js'; import type Point from '@mapbox/point-geometry'; import type {LayoutProps, PaintProps} from './fill_style_layer_properties.js'; @@ -20,6 +19,7 @@ import type {LayerSpecification} from '../../style-spec/types.js'; import type {TilespaceQueryGeometry} from '../query_geometry.js'; import type {IVectorTileFeature} from '@mapbox/vector-tile'; import type {CreateProgramParams} from "../../render/painter.js"; +import type {ConfigOptions} from '../properties.js'; class FillStyleLayer extends StyleLayer { _unevaluatedLayout: Layout; @@ -29,7 +29,7 @@ class FillStyleLayer extends StyleLayer { _transitioningPaint: Transitioning; paint: PossiblyEvaluated; - constructor(layer: LayerSpecification, options?: ?Map) { + constructor(layer: LayerSpecification, options?: ?ConfigOptions) { super(layer, properties, options); } diff --git a/src/style/style_layer/heatmap_style_layer.js b/src/style/style_layer/heatmap_style_layer.js index 0712cd872df..37162cc6e12 100644 --- a/src/style/style_layer/heatmap_style_layer.js +++ b/src/style/style_layer/heatmap_style_layer.js @@ -20,11 +20,11 @@ import ProgramConfiguration from '../../data/program_configuration.js'; import type {TilespaceQueryGeometry} from '../query_geometry.js'; import type {DEMSampler} from '../../terrain/elevation.js'; import type {FeatureState} from '../../style-spec/expression/index.js'; -import type {Expression} from '../../style-spec/expression/expression.js'; import type Transform from '../../geo/transform.js'; import type CircleBucket from '../../data/bucket/circle_bucket.js'; import type {IVectorTileFeature} from '@mapbox/vector-tile'; import type {CreateProgramParams} from "../../render/painter.js"; +import type {ConfigOptions} from '../properties.js'; class HeatmapStyleLayer extends StyleLayer { @@ -40,7 +40,7 @@ class HeatmapStyleLayer extends StyleLayer { return new HeatmapBucket(parameters); } - constructor(layer: LayerSpecification, options?: ?Map) { + constructor(layer: LayerSpecification, options?: ?ConfigOptions) { super(layer, properties, options); // make sure color ramp texture is generated for default heatmap color too diff --git a/src/style/style_layer/hillshade_style_layer.js b/src/style/style_layer/hillshade_style_layer.js index 5dbdc62a5b0..365474d847d 100644 --- a/src/style/style_layer/hillshade_style_layer.js +++ b/src/style/style_layer/hillshade_style_layer.js @@ -7,15 +7,15 @@ import {Transitionable, Transitioning, PossiblyEvaluated} from '../properties.js import type {PaintProps} from './hillshade_style_layer_properties.js'; import type {LayerSpecification} from '../../style-spec/types.js'; -import type {Expression} from '../../style-spec/expression/expression.js'; import type {CreateProgramParams} from "../../render/painter.js"; +import type {ConfigOptions} from '../properties.js'; class HillshadeStyleLayer extends StyleLayer { _transitionablePaint: Transitionable; _transitioningPaint: Transitioning; paint: PossiblyEvaluated; - constructor(layer: LayerSpecification, options?: ?Map) { + constructor(layer: LayerSpecification, options?: ?ConfigOptions) { super(layer, properties, options); } diff --git a/src/style/style_layer/line_style_layer.js b/src/style/style_layer/line_style_layer.js index 05a9686e94e..428d4499764 100644 --- a/src/style/style_layer/line_style_layer.js +++ b/src/style/style_layer/line_style_layer.js @@ -13,9 +13,8 @@ import {Transitionable, Transitioning, Layout, PossiblyEvaluated, DataDrivenProp import ProgramConfiguration from '../../data/program_configuration.js'; import Step from '../../style-spec/expression/definitions/step.js'; -import type {PossiblyEvaluatedValue, PropertyValue, PossiblyEvaluatedPropertyValue} from '../properties.js'; +import type {PossiblyEvaluatedValue, PropertyValue, PossiblyEvaluatedPropertyValue, ConfigOptions} from '../properties.js'; import type {Feature, FeatureState, ZoomConstantExpression, StylePropertyExpression} from '../../style-spec/expression/index.js'; -import type {Expression} from '../../style-spec/expression/expression.js'; import type {Bucket, BucketParameters} from '../../data/bucket.js'; import type {LayoutProps, PaintProps} from './line_style_layer_properties.js'; import type Transform from '../../geo/transform.js'; @@ -58,7 +57,7 @@ class LineStyleLayer extends StyleLayer { _transitioningPaint: Transitioning; paint: PossiblyEvaluated; - constructor(layer: LayerSpecification, options?: ?Map) { + constructor(layer: LayerSpecification, options?: ?ConfigOptions) { super(layer, properties, options); this.gradientVersion = 0; } diff --git a/src/style/style_layer/raster_style_layer.js b/src/style/style_layer/raster_style_layer.js index 9106fd72ed4..b4dfc7bae20 100644 --- a/src/style/style_layer/raster_style_layer.js +++ b/src/style/style_layer/raster_style_layer.js @@ -6,13 +6,13 @@ import properties from './raster_style_layer_properties.js'; import {Transitionable, Transitioning, PossiblyEvaluated} from '../properties.js'; import {renderColorRamp} from '../../util/color_ramp.js'; import {RGBAImage} from '../../util/image.js'; +import ImageSource from '../../source/image_source.js'; +import SourceCache from '../../source/source_cache.js'; import type {PaintProps} from './raster_style_layer_properties.js'; import type {LayerSpecification} from '../../style-spec/types.js'; import type Texture from '../../render/texture.js'; -import type {Expression} from '../../style-spec/expression/expression.js'; -import ImageSource from '../../source/image_source.js'; -import SourceCache from '../../source/source_cache.js'; +import type {ConfigOptions} from '../properties.js'; const COLOR_RAMP_RES = 256; @@ -24,7 +24,7 @@ class RasterStyleLayer extends StyleLayer { colorRamp: RGBAImage; colorRampTexture: ?Texture; - constructor(layer: LayerSpecification, options?: ?Map) { + constructor(layer: LayerSpecification, options?: ?ConfigOptions) { super(layer, properties, options); this._updateColorRamp(); } diff --git a/src/style/style_layer/sky_style_layer.js b/src/style/style_layer/sky_style_layer.js index 8e1155eed97..36d78369fb9 100644 --- a/src/style/style_layer/sky_style_layer.js +++ b/src/style/style_layer/sky_style_layer.js @@ -4,6 +4,10 @@ import StyleLayer from '../style_layer.js'; import properties from './sky_style_layer_properties.js'; import {Transitionable, Transitioning, PossiblyEvaluated} from '../properties.js'; import {renderColorRamp} from '../../util/color_ramp.js'; +import {warnOnce, degToRad} from '../../util/util.js'; +import {vec3, quat} from 'gl-matrix'; +import assert from 'assert'; + import type {PaintProps} from './sky_style_layer_properties.js'; import type Texture from '../../render/texture.js'; import type Painter from '../../render/painter.js'; @@ -12,11 +16,7 @@ import type Framebuffer from '../../gl/framebuffer.js'; import type {RGBAImage} from '../../util/image.js'; import type SkyboxGeometry from '../../render/skybox_geometry.js'; import type {Position} from '../../util/util.js'; -import {warnOnce, degToRad} from '../../util/util.js'; -import {vec3, quat} from 'gl-matrix'; -import assert from 'assert'; - -import type {Expression} from '../../style-spec/expression/expression.js'; +import type {ConfigOptions} from '../properties.js'; function getCelestialDirection(azimuth: number, altitude: number, leftHanded: boolean) { const up = [0, 0, 1]; @@ -44,7 +44,7 @@ class SkyLayer extends StyleLayer { skyboxGeometry: SkyboxGeometry; - constructor(layer: LayerSpecification, options?: ?Map) { + constructor(layer: LayerSpecification, options?: ?ConfigOptions) { super(layer, properties, options); this._updateColorRamp(); } diff --git a/src/style/style_layer/symbol_style_layer.js b/src/style/style_layer/symbol_style_layer.js index 39563b419e3..cabf49f92fd 100644 --- a/src/style/style_layer/symbol_style_layer.js +++ b/src/style/style_layer/symbol_style_layer.js @@ -6,9 +6,11 @@ import assert from 'assert'; import SymbolBucket from '../../data/bucket/symbol_bucket.js'; import resolveTokens from '../../util/resolve_tokens.js'; import properties from './symbol_style_layer_properties.js'; + import type {FormattedSection} from '../../style-spec/expression/types/formatted.js'; import type {FormattedSectionExpression} from '../../style-spec/expression/definitions/format.js'; import type {CreateProgramParams} from "../../render/painter.js"; +import type {ConfigOptions} from '../properties.js'; import { Transitionable, @@ -49,7 +51,7 @@ class SymbolStyleLayer extends StyleLayer { _transitioningPaint: Transitioning; paint: PossiblyEvaluated; - constructor(layer: LayerSpecification, options?: ?Map) { + constructor(layer: LayerSpecification, options?: ?ConfigOptions) { super(layer, properties, options); } diff --git a/src/style/style_layer_index.js b/src/style/style_layer_index.js index 045410d1333..a1e018b1286 100644 --- a/src/style/style_layer_index.js +++ b/src/style/style_layer_index.js @@ -7,7 +7,7 @@ import groupByLayout from '../style-spec/group_by_layout.js'; import type {TypedStyleLayer} from './style_layer/typed_style_layer.js'; import type {LayerSpecification} from '../style-spec/types.js'; -import type {Expression} from '../style-spec/expression/expression.js'; +import type {ConfigOptions} from './properties.js'; export type LayerConfigs = {[_: string]: LayerSpecification }; export type Family = Array; @@ -19,7 +19,7 @@ class StyleLayerIndex { _layerConfigs: LayerConfigs; _layers: {[_: string]: TypedStyleLayer }; - _options: ?Map; + _options: ?ConfigOptions; constructor(layerConfigs: ?Array) { this.keyCache = {}; @@ -30,13 +30,13 @@ class StyleLayerIndex { } } - replace(layerConfigs: Array, options?: ?Map) { + replace(layerConfigs: Array, options?: ?ConfigOptions) { this._layerConfigs = {}; this._layers = {}; this.update(layerConfigs, [], options); } - update(layerConfigs: Array, removedIds: Array, options: ?Map) { + update(layerConfigs: Array, removedIds: Array, options: ?ConfigOptions) { this._options = options; for (const layerConfig of layerConfigs) { diff --git a/test/integration/render-tests/imports/config-max-value/expected.png b/test/integration/render-tests/imports/config-max-value/expected.png new file mode 100644 index 0000000000000000000000000000000000000000..a1ab5719241692275d9a61034b76fae2347cedc7 GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3HE3&8=$zQjEnx?oJHr&dIz4aymR+978gk z-%fSpJD?!I^!54QoqK;Um?;{zyu7)_fV*t{r~K)^;~5kfpR%lQsAQ;MS;-)(q3*zX zirL^Fca7qKl)0C=<_Ius(*OCul#fAZf}?}qwwe#WrpZq~J||^vFhhUs&-LsL^E0ox z2u;|kzduUoLHaDyi7Y8^Pp_ZG@?&P2uL@)2?@z1$GG2&fQ+(yen+tRkgQu&X%Q~lo FCID7tObGx0 literal 0 HcmV?d00001 diff --git a/test/integration/render-tests/imports/config-max-value/style.json b/test/integration/render-tests/imports/config-max-value/style.json new file mode 100644 index 00000000000..b27bd33ebd2 --- /dev/null +++ b/test/integration/render-tests/imports/config-max-value/style.json @@ -0,0 +1,45 @@ +{ + "version": 8, + "metadata": { + "test": { + "width": 64, + "height": 32 + } + }, + "sources": {}, + "layers": [], + "imports": [{ + "id": "basemap", + "url": "", + "config": { + "width": 10 + }, + "data": { + "version": 8, + "glyphs": "local://glyphs/{fontstack}/{range}.pbf", + "schema": { + "width": { + "default": 1, + "maxValue": 5 + } + }, + "sources": { + "geojson": { + "type": "geojson", + "data": { + "type": "LineString", + "coordinates": [[-15, 0], [15, 0]] + } + } + }, + "layers": [{ + "id": "line", + "type": "line", + "source": "geojson", + "paint": { + "line-width": ["config", "width"] + } + }] + } + }] +} diff --git a/test/integration/render-tests/imports/config-min-value/expected.png b/test/integration/render-tests/imports/config-min-value/expected.png new file mode 100644 index 0000000000000000000000000000000000000000..a1ab5719241692275d9a61034b76fae2347cedc7 GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3HE3&8=$zQjEnx?oJHr&dIz4aymR+978gk z-%fSpJD?!I^!54QoqK;Um?;{zyu7)_fV*t{r~K)^;~5kfpR%lQsAQ;MS;-)(q3*zX zirL^Fca7qKl)0C=<_Ius(*OCul#fAZf}?}qwwe#WrpZq~J||^vFhhUs&-LsL^E0ox z2u;|kzduUoLHaDyi7Y8^Pp_ZG@?&P2uL@)2?@z1$GG2&fQ+(yen+tRkgQu&X%Q~lo FCID7tObGx0 literal 0 HcmV?d00001 diff --git a/test/integration/render-tests/imports/config-min-value/style.json b/test/integration/render-tests/imports/config-min-value/style.json new file mode 100644 index 00000000000..9f6813d99b6 --- /dev/null +++ b/test/integration/render-tests/imports/config-min-value/style.json @@ -0,0 +1,45 @@ +{ + "version": 8, + "metadata": { + "test": { + "width": 64, + "height": 32 + } + }, + "sources": {}, + "layers": [], + "imports": [{ + "id": "basemap", + "url": "", + "config": { + "width": 1 + }, + "data": { + "version": 8, + "glyphs": "local://glyphs/{fontstack}/{range}.pbf", + "schema": { + "width": { + "default": 10, + "minValue": 5 + } + }, + "sources": { + "geojson": { + "type": "geojson", + "data": { + "type": "LineString", + "coordinates": [[-15, 0], [15, 0]] + } + } + }, + "layers": [{ + "id": "line", + "type": "line", + "source": "geojson", + "paint": { + "line-width": ["config", "width"] + } + }] + } + }] +} diff --git a/test/integration/render-tests/imports/config-step-value/expected.png b/test/integration/render-tests/imports/config-step-value/expected.png new file mode 100644 index 0000000000000000000000000000000000000000..a1ab5719241692275d9a61034b76fae2347cedc7 GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3HE3&8=$zQjEnx?oJHr&dIz4aymR+978gk z-%fSpJD?!I^!54QoqK;Um?;{zyu7)_fV*t{r~K)^;~5kfpR%lQsAQ;MS;-)(q3*zX zirL^Fca7qKl)0C=<_Ius(*OCul#fAZf}?}qwwe#WrpZq~J||^vFhhUs&-LsL^E0ox z2u;|kzduUoLHaDyi7Y8^Pp_ZG@?&P2uL@)2?@z1$GG2&fQ+(yen+tRkgQu&X%Q~lo FCID7tObGx0 literal 0 HcmV?d00001 diff --git a/test/integration/render-tests/imports/config-step-value/style.json b/test/integration/render-tests/imports/config-step-value/style.json new file mode 100644 index 00000000000..166a806031b --- /dev/null +++ b/test/integration/render-tests/imports/config-step-value/style.json @@ -0,0 +1,45 @@ +{ + "version": 8, + "metadata": { + "test": { + "width": 64, + "height": 32 + } + }, + "sources": {}, + "layers": [], + "imports": [{ + "id": "basemap", + "url": "", + "config": { + "width": 7 + }, + "data": { + "version": 8, + "glyphs": "local://glyphs/{fontstack}/{range}.pbf", + "schema": { + "width": { + "default": 10, + "stepValue": 5 + } + }, + "sources": { + "geojson": { + "type": "geojson", + "data": { + "type": "LineString", + "coordinates": [[-15, 0], [15, 0]] + } + } + }, + "layers": [{ + "id": "line", + "type": "line", + "source": "geojson", + "paint": { + "line-width": ["config", "width"] + } + }] + } + }] +} diff --git a/test/integration/render-tests/imports/config-values/expected.png b/test/integration/render-tests/imports/config-values/expected.png new file mode 100644 index 0000000000000000000000000000000000000000..dda232c85cee5ab7bead25c2ca07de58b8220a10 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3HE3&8=$zQjEnx?oJHr&dIz4iFvv>hGaOu zopzA7!GMSP_Q}SR4;|SHmPF)Ec`PgW{Efo1jDKgI{pM%5(D009k@^R*hpO*Y`PUs~ zbYRXBm@r$Hzlh16aUY|pp2Poxk6D^Jib+hhP*?|UteyxEL`-v z+w4J^wAZESwQh_bOaY~*&oD0V2~k^Ya)4!9j}EVf f@YItTzu9X3*zqa8W$^d|bS;CYtDnm{r-UW|j00KH literal 0 HcmV?d00001 diff --git a/test/integration/render-tests/imports/config-values/style.json b/test/integration/render-tests/imports/config-values/style.json new file mode 100644 index 00000000000..84ac67d955d --- /dev/null +++ b/test/integration/render-tests/imports/config-values/style.json @@ -0,0 +1,59 @@ +{ + "version": 8, + "metadata": { + "test": { + "width": 64, + "height": 32 + } + }, + "sources": {}, + "layers": [], + "imports": [{ + "id": "basemap", + "url": "", + "config": { + "width": 5, + "width2": 3 + }, + "data": { + "version": 8, + "glyphs": "local://glyphs/{fontstack}/{range}.pbf", + "schema": { + "width": { + "default": 10, + "values": [1, 2, 3, 4] + }, + "width2": { + "default": 10, + "values": [1, 2, 3, 4] + } + }, + "sources": { + "geojson": { + "type": "geojson", + "data": { + "type": "LineString", + "coordinates": [[-15, 0], [15, 0]] + } + } + }, + "layers": [{ + "id": "line", + "type": "line", + "source": "geojson", + "paint": { + "line-width": ["config", "width"], + "line-offset": -6 + } + }, { + "id": "line2", + "type": "line", + "source": "geojson", + "paint": { + "line-width": ["config", "width2"], + "line-offset": 6 + } + }] + } + }] +} diff --git a/test/integration/render-tests/imports/set-style-config/style.json b/test/integration/render-tests/imports/set-style-config/style.json index 9f26380bc37..77fb53e71b6 100644 --- a/test/integration/render-tests/imports/set-style-config/style.json +++ b/test/integration/render-tests/imports/set-style-config/style.json @@ -22,6 +22,7 @@ "data": { "version": 8, "glyphs": "local://glyphs/{fontstack}/{range}.pbf", + "schema": {"lightPreset": {"default": "dawn"}}, "lights": [{ "type": "ambient", "id": "ambient", @@ -92,6 +93,7 @@ "data": { "version": 8, "glyphs": "local://glyphs/{fontstack}/{range}.pbf", + "schema": {"lightPreset": {"default": "dawn"}}, "lights": [{ "type": "ambient", "id": "ambient", diff --git a/test/unit/style/style_imports.test.js b/test/unit/style/style_imports.test.js index 7ecad8b0329..d908dfed354 100644 --- a/test/unit/style/style_imports.test.js +++ b/test/unit/style/style_imports.test.js @@ -2261,7 +2261,13 @@ test('Style#setConfigProperty', (t) => { layers: [{ id: 'background', type: 'background', - layout: {visibility: ['case', ['config', 'showBackground'], 'visible', 'none']}}] + layout: {visibility: ['case', ['config', 'showBackground'], 'visible', 'none']} + }], + schema: { + showBackground: { + default: false + } + } }) }] }); @@ -2273,7 +2279,7 @@ test('Style#setConfigProperty', (t) => { t.equal(key, 'updateLayers'); t.equal(value.scope, 'standard'); t.deepEqual(value.removedIds, []); - t.deepEqual(value.options.get('showBackground').value, true); + t.deepEqual(value.options.get('showBackground').value.value, true); t.deepEqual(value.layers.map(layer => layer.id), ['background']); t.end(); }; @@ -2298,7 +2304,9 @@ test('Style#setConfigProperty', (t) => { layers: [{ id: 'background', type: 'background', - layout: {visibility: ['case', ['config', 'showBackground'], 'visible', 'none']}}] + layout: {visibility: ['case', ['config', 'showBackground'], 'visible', 'none']} + }], + schema: {showBackground: {default: false}} }) }] }); @@ -2517,8 +2525,13 @@ test('Style#setState', (t) => { const style = new Style(map); style.setEventedParent(map, {style}); - const data = createStyleJSON({layers: [{id: 'a', type: 'background'}]}); - window.server.respondWith('/style1.json', JSON.stringify(createStyleJSON())); + const data = createStyleJSON({ + layers: [{id: 'a', type: 'background'}], + schema: {lightPreset: {default: 'day'}} + }); + window.server.respondWith('/style1.json', JSON.stringify(createStyleJSON({ + schema: {lightPreset: {default: 'day'}} + }))); window.server.respondWith('/style2.json', JSON.stringify(data)); const initialStyle = createStyleJSON({ From 412793e1becee9094d66551326eb87d969c555d7 Mon Sep 17 00:00:00 2001 From: Stepan Kuzmin Date: Thu, 18 Jan 2024 14:59:51 +0200 Subject: [PATCH 24/25] Fix types and unit test (internal-1055) --- src/style-spec/types.js | 3 ++- src/style/terrain.js | 7 +++---- test/unit/style/style_imports.test.js | 5 +++++ 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/style-spec/types.js b/src/style-spec/types.js index 589df3f4644..c11b2b3ebbb 100644 --- a/src/style-spec/types.js +++ b/src/style-spec/types.js @@ -424,7 +424,8 @@ export type SymbolLayerSpecification = {| "text-halo-width"?: DataDrivenPropertyValueSpecification, "text-halo-blur"?: DataDrivenPropertyValueSpecification, "text-translate"?: PropertyValueSpecification<[number, number]>, - "text-translate-anchor"?: PropertyValueSpecification<"map" | "viewport"> + "text-translate-anchor"?: PropertyValueSpecification<"map" | "viewport">, + "icon-color-saturation"?: ExpressionSpecification |} |} diff --git a/src/style/terrain.js b/src/style/terrain.js index ec5444b68b4..ca6e9dd096b 100644 --- a/src/style/terrain.js +++ b/src/style/terrain.js @@ -5,8 +5,7 @@ import {Evented} from '../util/evented.js'; import {Properties, Transitionable, Transitioning, PossiblyEvaluated, DataConstantProperty} from './properties.js'; import EvaluationParameters from './evaluation_parameters.js'; -import type {Expression} from '../../src/style-spec/expression/expression.js'; -import type {TransitionParameters} from './properties.js'; +import type {ConfigOptions, TransitionParameters} from './properties.js'; import type {TerrainSpecification} from '../style-spec/types.js'; import {ZoomDependentExpression} from '../style-spec/expression/index.js'; @@ -32,7 +31,7 @@ class Terrain extends Evented { properties: PossiblyEvaluated; drapeRenderMode: number; - constructor(terrainOptions: TerrainSpecification, drapeRenderMode: number, scope: string, configOptions?: ?Map) { + constructor(terrainOptions: TerrainSpecification, drapeRenderMode: number, scope: string, configOptions?: ?ConfigOptions) { super(); this.scope = scope; this._transitionable = new Transitionable(properties, configOptions); @@ -45,7 +44,7 @@ class Terrain extends Evented { return (this._transitionable.serialize(): any); } - set(terrain: TerrainSpecification, configOptions?: ?Map) { + set(terrain: TerrainSpecification, configOptions?: ?ConfigOptions) { this._transitionable.setTransitionOrValue(terrain, configOptions); } diff --git a/test/unit/style/style_imports.test.js b/test/unit/style/style_imports.test.js index d908dfed354..46082d9de84 100644 --- a/test/unit/style/style_imports.test.js +++ b/test/unit/style/style_imports.test.js @@ -1599,6 +1599,11 @@ test('Terrain', (t) => { url: '/standard.json', config: {showTerrain: true}, data: createStyleJSON({ + schema: { + showTerrain: { + default: true + } + }, terrain: {source: 'mapbox-dem', exaggeration: ['case', ['config', 'showTerrain'], 2, 0]}, sources: { 'mapbox-dem': { From d8827408c6f4c4ceecba517931c96dda8bb261a1 Mon Sep 17 00:00:00 2001 From: Stepan Kuzmin Date: Thu, 18 Jan 2024 15:28:22 +0200 Subject: [PATCH 25/25] v3.1.0 (internal-1054) * v3.1.0 --------- Co-authored-by: Volodymyr Agafonkin --- CHANGELOG.md | 10 +++++++++- package.json | 2 +- src/style-spec/package.json | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac5cb18bf33..a43630f0d52 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## 3.1.0-beta.1 +## 3.1.0 ### Features and improvements ✨ @@ -8,6 +8,9 @@ - Add `Map` `getConfigProperty` method for getting current style config values. - Add `config` support in terrain options. - Improve performance for pitched views with many fill extrusions on higher zoom levels. +- Allow turning off the terrain that is defined in the imports on the root-level Style by setting it to `null`. +- Allow the partial terrain exaggeration update without specifying the source. +- Respect style schema restrictions (`minValue`, `maxValue`, `stepValue`, `values`, `type`) when evaluating config options. ### Bug fixes 🐞 @@ -24,6 +27,11 @@ - Fix an issue with tiles sometimes missing in terrain mode on views from a hill down on a valley. - Fix compact attribution style when using global CSS that sets `box-sizing: border-box`. (h/t [@simondriesen](https://github.com/simondriesen)) [#12982](https://github.com/mapbox/mapbox-gl-js/pull/12982) - Remove redundant `aria-label` attribute in attribution control that fails accessibility conformance. (h/t [@maggiewachs](https://github.com/maggiewachs)) [#12981](https://github.com/mapbox/mapbox-gl-js/pull/12981) +- Disable terrain and hillshade when browser fingerprinting protection (e.g. in private browsing mode) prevents it from rendering correctly. +- Fix layer rendering when import requests are failing. +- Fix map `load` event not firing for the sources whose tiles are 404s. +- Require either `url` or `tiles` for tiled sources during validation. +- Validate for empty layer and source IDs in runtime. ## 3.0.1 diff --git a/package.json b/package.json index 604d3e7c1e7..0f15bb0992d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "mapbox-gl", "description": "A WebGL interactive maps library", - "version": "3.1.0-beta.1", + "version": "3.1.0", "main": "dist/mapbox-gl.js", "style": "dist/mapbox-gl.css", "license": "SEE LICENSE IN LICENSE.txt", diff --git a/src/style-spec/package.json b/src/style-spec/package.json index cf30a3714e0..41f391b010c 100644 --- a/src/style-spec/package.json +++ b/src/style-spec/package.json @@ -1,7 +1,7 @@ { "name": "@mapbox/mapbox-gl-style-spec", "description": "a specification for mapbox gl styles", - "version": "14.1.0-beta.1", + "version": "14.1.0", "author": "Mapbox", "keywords": [ "mapbox",

*aaq^1EoMTR@_HA>Uel~=SrywhqPfU%^{+Ld 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�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≤ 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%0A8=&{)Xj(y*h^njy=cn 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⋙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