Merge branch 'master' of github.com:mapbox/llmr-native
This commit is contained in:
16
bin/style.js
16
bin/style.js
@@ -1376,10 +1376,11 @@ module.exports = {
|
||||
"admin_night": "#ffb680",
|
||||
"text_night": "#fff",
|
||||
"text_stroke_night": "#103",
|
||||
"text2_stroke_night": "rgba(1,69,89,0.8)",
|
||||
|
||||
"case_night": "#015e7a",
|
||||
"street_case_night": "#015b76",
|
||||
"motorway_night": "#eee",
|
||||
"motorway_night": "#bbdde7",
|
||||
"main_night": "#64b2c9",
|
||||
"street_night": "#0186ac",
|
||||
"contour_night": "#ffff80",
|
||||
@@ -2252,8 +2253,11 @@ module.exports = {
|
||||
"stroke": "text_stroke"
|
||||
},
|
||||
"poi": {
|
||||
"color": "rgba(50,50,50,0.9)",
|
||||
//"color": "rgba(50,50,50,0.9)",
|
||||
"antialias": false
|
||||
//"stroke": #000,
|
||||
//"strokeWidth": 0.4,
|
||||
//"strokeBlur": 2
|
||||
},
|
||||
"poi_label": {
|
||||
"color": "#444",
|
||||
@@ -2933,7 +2937,7 @@ module.exports = {
|
||||
},
|
||||
"road_label": {
|
||||
"color": "text_night",
|
||||
"stroke": "text_stroke_night",
|
||||
"stroke": "text2_stroke_night",
|
||||
"strokeWidth": 0.5,
|
||||
"strokeBlur": 3,
|
||||
"size": "road_label_size"
|
||||
@@ -2954,9 +2958,9 @@ module.exports = {
|
||||
"poi_label": {
|
||||
"color": "#fff",
|
||||
"size": 10,
|
||||
"stroke": "land_night",
|
||||
"strokeWidth": 0.4,
|
||||
"strokeBlur": 0.2,
|
||||
"stroke": "text2_stroke_night",
|
||||
"strokeWidth": 0.3,
|
||||
"strokeBlur": 2,
|
||||
"translate": [0, 14]
|
||||
},
|
||||
"poi_aerodrome": {
|
||||
|
||||
10
common.gypi
10
common.gypi
@@ -12,14 +12,20 @@
|
||||
'cflags': [ '-g', '-O0' ],
|
||||
'defines': [ 'DEBUG' ],
|
||||
'xcode_settings': {
|
||||
'OTHER_CPLUSPLUSFLAGS': [ '-Wall', '-Wextra', '-pedantic', '-g', '-O0' ]
|
||||
'GCC_OPTIMIZATION_LEVEL': '0',
|
||||
'GCC_GENERATE_DEBUGGING_SYMBOLS': 'YES',
|
||||
'OTHER_CPLUSPLUSFLAGS': [ '-Wall', '-Wextra', '-pedantic' ]
|
||||
}
|
||||
},
|
||||
'Release': {
|
||||
'cflags': [ '-O3' ],
|
||||
'defines': [ 'NDEBUG' ],
|
||||
'xcode_settings': {
|
||||
'OTHER_CPLUSPLUSFLAGS': [ '-Wall', '-Wextra', '-pedantic', '-O3' ]
|
||||
'GCC_OPTIMIZATION_LEVEL': '3',
|
||||
'GCC_GENERATE_DEBUGGING_SYMBOLS': 'NO',
|
||||
'DEAD_CODE_STRIPPING': 'YES',
|
||||
'GCC_INLINES_ARE_PRIVATE_EXTERN': 'YES',
|
||||
'OTHER_CPLUSPLUSFLAGS': [ '-Wall', '-Wextra', '-pedantic' ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
#include <limits>
|
||||
#include <set>
|
||||
|
||||
#include <boost/optional.hpp>
|
||||
|
||||
namespace llmr {
|
||||
|
||||
// Stores a premultiplied color, with all four channels ranging from 0..1
|
||||
@@ -83,21 +85,20 @@ struct FunctionProperty {
|
||||
};
|
||||
|
||||
struct IconClass {
|
||||
FunctionProperty enabled = true;
|
||||
std::array<FunctionProperty, 2> translate = {{ 0, 0 }};
|
||||
PropertyTransition translate_transition;
|
||||
TranslateAnchor translateAnchor = TranslateAnchor::Map;
|
||||
FunctionProperty size;
|
||||
Color color = {{ 1, 1, 1, 1 }};
|
||||
PropertyTransition color_transition;
|
||||
FunctionProperty opacity = 1;
|
||||
PropertyTransition opacity_transition;
|
||||
std::string image;
|
||||
FunctionProperty radius = 0;
|
||||
PropertyTransition radius_transition;
|
||||
FunctionProperty blur = 0;
|
||||
PropertyTransition blur_transition;
|
||||
std::set<std::string> specifiers;
|
||||
boost::optional<FunctionProperty> enabled;
|
||||
boost::optional<std::array<FunctionProperty, 2>> translate;
|
||||
boost::optional<PropertyTransition> translate_transition;
|
||||
boost::optional<TranslateAnchor> translateAnchor;
|
||||
boost::optional<FunctionProperty> size;
|
||||
boost::optional<Color> color;
|
||||
boost::optional<PropertyTransition> color_transition;
|
||||
boost::optional<FunctionProperty> opacity;
|
||||
boost::optional<PropertyTransition> opacity_transition;
|
||||
boost::optional<std::string> image;
|
||||
boost::optional<FunctionProperty> radius;
|
||||
boost::optional<PropertyTransition> radius_transition;
|
||||
boost::optional<FunctionProperty> blur;
|
||||
boost::optional<PropertyTransition> blur_transition;
|
||||
};
|
||||
|
||||
struct IconProperties {
|
||||
@@ -113,21 +114,20 @@ struct IconProperties {
|
||||
};
|
||||
|
||||
struct LineClass {
|
||||
FunctionProperty enabled = true;
|
||||
std::array<FunctionProperty, 2> translate = {{ 0, 0 }};
|
||||
PropertyTransition translate_transition;
|
||||
TranslateAnchor translateAnchor = TranslateAnchor::Map;
|
||||
FunctionProperty width;
|
||||
PropertyTransition width_transition;
|
||||
FunctionProperty offset;
|
||||
PropertyTransition offset_transition;
|
||||
Color color = {{ 0, 0, 0, 1 }};
|
||||
PropertyTransition color_transition;
|
||||
std::array<FunctionProperty, 2> dash_array = {{ 1, -1 }};
|
||||
PropertyTransition dash_array_transition;
|
||||
FunctionProperty opacity = 1;
|
||||
PropertyTransition opacity_transition;
|
||||
std::set<std::string> specifiers;
|
||||
boost::optional<FunctionProperty> enabled;
|
||||
boost::optional<std::array<FunctionProperty, 2>> translate;
|
||||
boost::optional<PropertyTransition> translate_transition;
|
||||
boost::optional<TranslateAnchor> translateAnchor;
|
||||
boost::optional<FunctionProperty> width;
|
||||
boost::optional<PropertyTransition> width_transition;
|
||||
boost::optional<FunctionProperty> offset;
|
||||
boost::optional<PropertyTransition> offset_transition;
|
||||
boost::optional<Color> color;
|
||||
boost::optional<PropertyTransition> color_transition;
|
||||
boost::optional<std::array<FunctionProperty, 2>> dash_array;
|
||||
boost::optional<PropertyTransition> dash_array_transition;
|
||||
boost::optional<FunctionProperty> opacity;
|
||||
boost::optional<PropertyTransition> opacity_transition;
|
||||
};
|
||||
|
||||
struct LineProperties {
|
||||
@@ -142,20 +142,19 @@ struct LineProperties {
|
||||
};
|
||||
|
||||
struct FillClass {
|
||||
FunctionProperty enabled = true;
|
||||
std::array<FunctionProperty, 2> translate = {{ 0, 0 }};
|
||||
PropertyTransition translate_transition;
|
||||
TranslateAnchor translateAnchor = TranslateAnchor::Map;
|
||||
Winding winding = Winding::NonZero;
|
||||
FunctionProperty antialias = true;
|
||||
Color fill_color = {{ 0, 0, 0, 1 }};
|
||||
PropertyTransition fill_color_transition;
|
||||
Color stroke_color = {{ 0, 0, 0, std::numeric_limits<float>::infinity() }};
|
||||
PropertyTransition stroke_color_transition;
|
||||
FunctionProperty opacity = 1;
|
||||
PropertyTransition opacity_transition;
|
||||
std::string image;
|
||||
std::set<std::string> specifiers;
|
||||
boost::optional<FunctionProperty> enabled;
|
||||
boost::optional<std::array<FunctionProperty, 2>> translate;
|
||||
boost::optional<PropertyTransition> translate_transition;
|
||||
boost::optional<TranslateAnchor> translateAnchor;
|
||||
boost::optional<Winding> winding;
|
||||
boost::optional<FunctionProperty> antialias;
|
||||
boost::optional<Color> fill_color;
|
||||
boost::optional<PropertyTransition> fill_color_transition;
|
||||
boost::optional<Color> stroke_color;
|
||||
boost::optional<PropertyTransition> stroke_color_transition;
|
||||
boost::optional<FunctionProperty> opacity;
|
||||
boost::optional<PropertyTransition> opacity_transition;
|
||||
boost::optional<std::string> image;
|
||||
};
|
||||
|
||||
struct FillProperties {
|
||||
@@ -171,24 +170,23 @@ struct FillProperties {
|
||||
};
|
||||
|
||||
struct TextClass {
|
||||
FunctionProperty enabled = true;
|
||||
std::array<FunctionProperty, 2> translate = {{ 0, 0 }};
|
||||
PropertyTransition translate_transition;
|
||||
TranslateAnchor translateAnchor = TranslateAnchor::Map;
|
||||
Color color = {{ 0, 0, 0, 1 }};
|
||||
PropertyTransition color_transition;
|
||||
Color halo = {{ 1, 1, 1, 0.75 }};
|
||||
PropertyTransition halo_transition;
|
||||
FunctionProperty halo_radius = 0.25f;
|
||||
PropertyTransition halo_radius_transition;
|
||||
FunctionProperty halo_blur = 1.0f;
|
||||
PropertyTransition halo_blur_transition;
|
||||
FunctionProperty size = 12.0f;
|
||||
FunctionProperty rotate = 0.0f;
|
||||
FunctionProperty always_visible = false;
|
||||
FunctionProperty opacity = 1;
|
||||
PropertyTransition opacity_transition;
|
||||
std::set<std::string> specifiers;
|
||||
boost::optional<FunctionProperty> enabled;
|
||||
boost::optional<std::array<FunctionProperty, 2>> translate;
|
||||
boost::optional<PropertyTransition> translate_transition;
|
||||
boost::optional<TranslateAnchor> translateAnchor;
|
||||
boost::optional<Color> color;
|
||||
boost::optional<PropertyTransition> color_transition;
|
||||
boost::optional<Color> halo;
|
||||
boost::optional<PropertyTransition> halo_transition;
|
||||
boost::optional<FunctionProperty> halo_radius;
|
||||
boost::optional<PropertyTransition> halo_radius_transition;
|
||||
boost::optional<FunctionProperty> halo_blur;
|
||||
boost::optional<PropertyTransition> halo_blur_transition;
|
||||
boost::optional<FunctionProperty> size;
|
||||
boost::optional<FunctionProperty> rotate;
|
||||
boost::optional<FunctionProperty> always_visible;
|
||||
boost::optional<FunctionProperty> opacity;
|
||||
boost::optional<PropertyTransition> opacity_transition;
|
||||
};
|
||||
|
||||
struct TextProperties {
|
||||
@@ -206,11 +204,10 @@ struct TextProperties {
|
||||
};
|
||||
|
||||
struct BackgroundClass {
|
||||
Color color = {{ 1, 1, 1, 1 }};
|
||||
PropertyTransition color_transition;
|
||||
FunctionProperty opacity = 1;
|
||||
PropertyTransition opacity_transition;
|
||||
std::set<std::string> specifiers;
|
||||
boost::optional<Color> color;
|
||||
boost::optional<PropertyTransition> color_transition;
|
||||
boost::optional<FunctionProperty> opacity;
|
||||
boost::optional<PropertyTransition> opacity_transition;
|
||||
};
|
||||
|
||||
struct BackgroundProperties {
|
||||
@@ -219,12 +216,11 @@ struct BackgroundProperties {
|
||||
};
|
||||
|
||||
struct RasterClass {
|
||||
FunctionProperty enabled = true;
|
||||
std::array<FunctionProperty, 2> translate = {{ 0, 0 }};
|
||||
PropertyTransition translate_transition;
|
||||
FunctionProperty opacity = 1;
|
||||
PropertyTransition opacity_transition;
|
||||
std::set<std::string> specifiers;
|
||||
boost::optional<FunctionProperty> enabled;
|
||||
boost::optional<std::array<FunctionProperty, 2>> translate;
|
||||
boost::optional<PropertyTransition> translate_transition;
|
||||
boost::optional<FunctionProperty> opacity;
|
||||
boost::optional<PropertyTransition> opacity_transition;
|
||||
};
|
||||
|
||||
struct RasterProperties {
|
||||
@@ -234,10 +230,9 @@ struct RasterProperties {
|
||||
};
|
||||
|
||||
struct CompositeClass {
|
||||
FunctionProperty enabled = true;
|
||||
FunctionProperty opacity = 1;
|
||||
PropertyTransition opacity_transition;
|
||||
std::set<std::string> specifiers;
|
||||
boost::optional<FunctionProperty> enabled;
|
||||
boost::optional<FunctionProperty> opacity;
|
||||
boost::optional<PropertyTransition> opacity_transition;
|
||||
};
|
||||
|
||||
struct CompositeProperties {
|
||||
|
||||
11
llmr.gyp
11
llmr.gyp
@@ -21,7 +21,14 @@
|
||||
],
|
||||
'action': ['<@(node)', 'bin/build-shaders.js'],
|
||||
}
|
||||
]
|
||||
],
|
||||
'direct_dependent_settings': {
|
||||
'sources': [
|
||||
'include/llmr/shader/shaders.hpp',
|
||||
'src/shader/shaders_gl.cpp',
|
||||
'src/shader/shaders_gles2.cpp'
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
'target_name': 'build_stylesheet',
|
||||
@@ -121,7 +128,7 @@
|
||||
'shaders',
|
||||
],
|
||||
'sources': [
|
||||
'<!@(find src -name "*.cpp")',
|
||||
'<!@(find src/ \( -name "*.cpp" ! -name resources.cpp ! -name shaders.hpp ! -name resources.hpp ! -name shaders_gles2.cpp ! -name shaders_gl.cpp \))',
|
||||
'<!@(find src -name "*.c")',
|
||||
'<!@(find src -name "*.h")',
|
||||
'<!@(find include -name "*.hpp")',
|
||||
|
||||
@@ -7,44 +7,44 @@ using namespace llmr;
|
||||
|
||||
const shader_source llmr::shaders[SHADER_COUNT] = {
|
||||
{
|
||||
"#version 120\nattribute vec2 a_pos;\nuniform mat4 u_matrix;\nvarying vec2 v_pos;\nvoid main ()\n{\n vec4 tmpvar_1;\n tmpvar_1.zw = vec2(0.0, 1.0);\n tmpvar_1.xy = a_pos;\n vec4 tmpvar_2;\n tmpvar_2 = (u_matrix * tmpvar_1);\n gl_Position = tmpvar_2;\n v_pos = ((tmpvar_2.xy + 1.0) / 2.0);\n}\n\n",
|
||||
"#version 120\nuniform sampler2D u_image;\nuniform float u_opacity;\nvarying vec2 v_pos;\nvoid main ()\n{\n gl_FragColor = (texture2D (u_image, v_pos) * u_opacity);\n}\n\n",
|
||||
"#version 120\nattribute vec2 a_pos;\n\nuniform mat4 u_matrix;\nvarying vec2 v_pos;\n\nvoid main() {\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n v_pos = (gl_Position.xy + 1.0) / 2.0;\n}\n",
|
||||
"#version 120\nuniform sampler2D u_image;\nuniform float u_opacity;\n\nvarying vec2 v_pos;\n\nvoid main() {\n vec4 color = texture2D(u_image, v_pos);\n gl_FragColor = color * u_opacity;\n}\n",
|
||||
},
|
||||
{
|
||||
"#version 120\nattribute vec2 a_pos;\nuniform mat4 u_matrix;\nuniform float u_size;\nvoid main ()\n{\n vec4 tmpvar_1;\n tmpvar_1.zw = vec2(0.0, 1.0);\n tmpvar_1.xy = a_pos;\n gl_Position = (u_matrix * tmpvar_1);\n gl_PointSize = u_size;\n}\n\n",
|
||||
"#version 120\nuniform vec4 u_color;\nuniform float u_blur;\nvoid main ()\n{\n vec2 x_1;\n x_1 = (gl_PointCoord - 0.5);\n float tmpvar_2;\n tmpvar_2 = clamp (((\n sqrt(dot (x_1, x_1))\n - 0.5) / (\n (0.5 - u_blur)\n - 0.5)), 0.0, 1.0);\n gl_FragColor = (u_color * (tmpvar_2 * (tmpvar_2 * \n (3.0 - (2.0 * tmpvar_2))\n )));\n}\n\n",
|
||||
"#version 120\nattribute vec2 a_pos;\n\nuniform mat4 u_matrix;\nuniform float u_size;\n\nvoid main(void) {\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n gl_PointSize = u_size;\n}\n",
|
||||
"#version 120\nuniform vec4 u_color;\nuniform float u_blur;\n\nvoid main() {\n\tfloat dist = length(gl_PointCoord - 0.5);\n\tfloat t = smoothstep(0.5, 0.5 - u_blur, dist);\n\n gl_FragColor = u_color * t;\n}\n",
|
||||
},
|
||||
{
|
||||
"#version 120\nattribute vec2 a_pos;\nattribute vec2 a_tex;\nuniform mat4 u_matrix;\nuniform float u_size;\nuniform float u_ratio;\nvarying vec2 v_tex;\nvoid main ()\n{\n vec4 tmpvar_1;\n tmpvar_1.zw = vec2(0.0, 1.0);\n tmpvar_1.xy = a_pos;\n gl_Position = (u_matrix * tmpvar_1);\n gl_PointSize = u_size;\n v_tex = (a_tex * u_ratio);\n}\n\n",
|
||||
"#version 120\nuniform sampler2D u_image;\nuniform vec2 u_dimension;\nuniform vec4 u_color;\nuniform float u_size;\nvarying vec2 v_tex;\nvoid main ()\n{\n gl_FragColor = (u_color * texture2D (u_image, ((v_tex + \n ((gl_PointCoord - 0.5) * u_size)\n ) / u_dimension)));\n}\n\n",
|
||||
"#version 120\nattribute vec2 a_pos;\nattribute vec2 a_tex;\n\nuniform mat4 u_matrix;\nuniform float u_size;\nuniform float u_ratio;\n\nvarying vec2 v_tex;\n\nvoid main() {\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n gl_PointSize = u_size;\n v_tex = a_tex * u_ratio;\n}\n",
|
||||
"#version 120\nuniform sampler2D u_image;\nuniform vec2 u_dimension;\nuniform vec4 u_color;\nuniform float u_size;\n\nvarying vec2 v_tex;\n\nvoid main() {\n vec2 pos = (v_tex + (gl_PointCoord - 0.5) * u_size) / u_dimension;\n gl_FragColor = u_color * texture2D(u_image, pos);\n}\n",
|
||||
},
|
||||
{
|
||||
"#version 120\nattribute vec2 a_pos;\nattribute vec2 a_extrude;\nattribute float a_linesofar;\nuniform mat4 u_matrix;\nuniform mat4 u_exmatrix;\nuniform float u_ratio;\nuniform vec2 u_linewidth;\nvarying vec2 v_normal;\nvarying float v_linesofar;\nvoid main ()\n{\n vec2 normal_1;\n vec2 tmpvar_2;\n tmpvar_2 = (vec2(mod (a_pos, 2.0)));\n normal_1.x = tmpvar_2.x;\n normal_1.y = sign((tmpvar_2.y - 0.5));\n v_normal = normal_1;\n vec4 tmpvar_3;\n tmpvar_3.zw = vec2(0.0, 0.0);\n tmpvar_3.xy = ((u_linewidth.x * a_extrude) * 0.015873);\n vec4 tmpvar_4;\n tmpvar_4.zw = vec2(0.0, 1.0);\n tmpvar_4.xy = floor((a_pos * 0.5));\n gl_Position = ((u_matrix * tmpvar_4) + (u_exmatrix * tmpvar_3));\n v_linesofar = (a_linesofar * u_ratio);\n}\n\n",
|
||||
"#version 120\nuniform vec2 u_linewidth;\nuniform vec4 u_color;\nuniform vec2 u_dasharray;\nvarying vec2 v_normal;\nvarying float v_linesofar;\nvoid main ()\n{\n float tmpvar_1;\n tmpvar_1 = (sqrt(dot (v_normal, v_normal)) * u_linewidth.x);\n float tmpvar_2;\n tmpvar_2 = (float(mod (v_linesofar, (u_dasharray.x + u_dasharray.y))));\n gl_FragColor = (u_color * (clamp (\n min ((tmpvar_1 - (u_linewidth.y - 1.0)), (u_linewidth.x - tmpvar_1))\n , 0.0, 1.0) * max (\n float((-(u_dasharray.y) >= 0.0))\n , \n clamp (min (tmpvar_2, (u_dasharray.x - tmpvar_2)), 0.0, 1.0)\n )));\n}\n\n",
|
||||
"#version 120\n// floor(127 / 2) == 63.0\n// the maximum allowed miter limit is 2.0 at the moment. the extrude normal is\n// stored in a byte (-128..127). we scale regular normals up to length 63, but\n// there are also \"special\" normals that have a bigger length (of up to 126 in\n// this case).\n// #define scale 63.0\n#define scale 0.015873016\n\nattribute vec2 a_pos;\nattribute vec2 a_extrude;\nattribute float a_linesofar;\n\n// posmatrix is for the vertex position, exmatrix is for rotating and projecting\n// the extrusion vector.\nuniform mat4 u_matrix;\nuniform mat4 u_exmatrix;\n\n// shared\nuniform float u_ratio;\nuniform vec2 u_linewidth;\nuniform vec4 u_color;\n\nvarying vec2 v_normal;\nvarying float v_linesofar;\n\nvoid main() {\n // We store the texture normals in the most insignificant bit\n // transform y so that 0 => -1 and 1 => 1\n // In the texture normal, x is 0 if the normal points straight up/down and 1 if it's a round cap\n // y is 1 if the normal points up, and -1 if it points down\n vec2 normal = mod(a_pos, 2.0);\n normal.y = sign(normal.y - 0.5);\n v_normal = normal;\n\n // Scale the extrusion vector down to a normal and then up by the line width\n // of this vertex.\n vec4 dist = vec4(u_linewidth.s * a_extrude * scale, 0.0, 0.0);\n\n // Remove the texture normal bit of the position before scaling it with the\n // model/view matrix. Add the extrusion vector *after* the model/view matrix\n // because we're extruding the line in pixel space, regardless of the current\n // tile's zoom level.\n gl_Position = u_matrix * vec4(floor(a_pos * 0.5), 0.0, 1.0) + u_exmatrix * dist;\n v_linesofar = a_linesofar * u_ratio;\n}",
|
||||
"#version 120\nuniform vec2 u_linewidth;\nuniform vec4 u_color;\n\nuniform vec2 u_dasharray;\n\nvarying vec2 v_normal;\nvarying float v_linesofar;\n\nvoid main() {\n // Calculate the distance of the pixel from the line in pixels.\n float dist = length(v_normal) * u_linewidth.s;\n\n // Calculate the antialiasing fade factor. This is either when fading in\n // the line in case of an offset line (v_linewidth.t) or when fading out\n // (v_linewidth.s)\n float alpha = clamp(min(dist - (u_linewidth.t - 1.0), u_linewidth.s - dist), 0.0, 1.0);\n\n // Calculate the antialiasing fade factor based on distance to the dash.\n // Only affects alpha when line is dashed\n float pos = mod(v_linesofar, u_dasharray.x + u_dasharray.y);\n alpha *= max(step(0.0, -u_dasharray.y), clamp(min(pos, u_dasharray.x - pos), 0.0, 1.0));\n\n gl_FragColor = u_color * alpha;\n}",
|
||||
},
|
||||
{
|
||||
"#version 120\nattribute vec2 a_pos;\nuniform mat4 u_matrix;\nuniform vec2 u_world;\nuniform float u_size;\nvarying vec2 v_pos;\nvoid main ()\n{\n vec4 tmpvar_1;\n tmpvar_1.zw = vec2(0.0, 1.0);\n tmpvar_1.xy = floor((a_pos / 2.0));\n vec4 tmpvar_2;\n tmpvar_2 = (u_matrix * tmpvar_1);\n gl_Position = tmpvar_2;\n v_pos = ((tmpvar_2.xy + 1.0) * u_world);\n gl_PointSize = u_size;\n}\n\n",
|
||||
"#version 120\nuniform vec4 u_color;\nuniform vec2 u_linewidth;\nvarying vec2 v_pos;\nvoid main ()\n{\n float tmpvar_1;\n vec2 x_2;\n x_2 = (v_pos - gl_FragCoord.xy);\n tmpvar_1 = sqrt(dot (x_2, x_2));\n gl_FragColor = (u_color * clamp (min (\n (tmpvar_1 - (u_linewidth.y - 1.0))\n , \n (u_linewidth.x - tmpvar_1)\n ), 0.0, 1.0));\n}\n\n",
|
||||
"#version 120\nattribute vec2 a_pos;\n\nuniform mat4 u_matrix;\nuniform vec2 u_world;\nuniform float u_size;\n\nvarying vec2 v_pos;\n\nvoid main() {\n gl_Position = u_matrix * vec4(floor(a_pos / 2.0), 0.0, 1.0);\n v_pos = (gl_Position.xy + 1.0) * u_world;\n gl_PointSize = u_size;\n}\n",
|
||||
"#version 120\nuniform vec4 u_color;\nuniform vec2 u_linewidth;\n\nvarying vec2 v_pos;\n\nvoid main() {\n float dist = length(v_pos - gl_FragCoord.xy);\n\n // Calculate the antialiasing fade factor. This is either when fading in\n // the line in case of an offset line (v_linewidth.t) or when fading out\n // (v_linewidth.s)\n float alpha = clamp(min(dist - (u_linewidth.t - 1.0), u_linewidth.s - dist), 0.0, 1.0);\n gl_FragColor = u_color * alpha;\n}\n",
|
||||
},
|
||||
{
|
||||
"#version 120\nattribute vec2 a_pos;\nuniform mat4 u_matrix;\nuniform vec2 u_world;\nvarying vec2 v_pos;\nvoid main ()\n{\n vec4 tmpvar_1;\n tmpvar_1.zw = vec2(0.0, 1.0);\n tmpvar_1.xy = a_pos;\n vec4 tmpvar_2;\n tmpvar_2 = (u_matrix * tmpvar_1);\n gl_Position = tmpvar_2;\n v_pos = (((tmpvar_2.xy + 1.0) / 2.0) * u_world);\n}\n\n",
|
||||
"#version 120\nuniform vec4 u_color;\nvarying vec2 v_pos;\nvoid main ()\n{\n vec2 x_1;\n x_1 = (v_pos - gl_FragCoord.xy);\n float tmpvar_2;\n tmpvar_2 = clamp (((\n sqrt(dot (x_1, x_1))\n - 1.0) / -1.0), 0.0, 1.0);\n gl_FragColor = (u_color * (tmpvar_2 * (tmpvar_2 * \n (3.0 - (2.0 * tmpvar_2))\n )));\n}\n\n",
|
||||
"#version 120\nattribute vec2 a_pos;\nuniform mat4 u_matrix;\nuniform vec2 u_world;\n\nvarying vec2 v_pos;\n\nvoid main() {\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n v_pos = (gl_Position.xy + 1.0) / 2.0 * u_world;\n}\n",
|
||||
"#version 120\nuniform vec4 u_color;\n\nvarying vec2 v_pos;\n\nvoid main() {\n float dist = length(v_pos - gl_FragCoord.xy);\n float alpha = smoothstep(1.0, 0.0, dist);\n gl_FragColor = u_color * alpha;\n}\n",
|
||||
},
|
||||
{
|
||||
"#version 120\nuniform mat4 u_matrix;\nattribute vec2 a_pos;\nvarying vec2 v_pos;\nvoid main ()\n{\n v_pos = a_pos;\n vec4 tmpvar_1;\n tmpvar_1.zw = vec2(0.0, 1.0);\n tmpvar_1.xy = a_pos;\n gl_Position = (u_matrix * tmpvar_1);\n}\n\n",
|
||||
"#version 120\nuniform vec4 u_color;\nuniform vec2 u_offset;\nuniform vec2 u_pattern_size;\nuniform vec2 u_pattern_tl;\nuniform vec2 u_pattern_br;\nuniform float u_mix;\nuniform sampler2D u_image;\nvarying vec2 v_pos;\nvoid main ()\n{\n vec2 tmpvar_1;\n tmpvar_1 = (vec2(mod (((v_pos + u_offset) / u_pattern_size), 1.0)));\n vec4 tmpvar_2;\n tmpvar_2 = mix (texture2D (u_image, mix (u_pattern_tl, u_pattern_br, tmpvar_1)), texture2D (u_image, mix (u_pattern_tl, u_pattern_br, (vec2(mod (\n (tmpvar_1 * 2.0)\n , 1.0))))), u_mix);\n gl_FragColor = (tmpvar_2 + (u_color * (1.0 - tmpvar_2.w)));\n}\n\n",
|
||||
"#version 120\nuniform mat4 u_matrix;\n\nattribute vec2 a_pos;\n\nvarying vec2 v_pos;\n\nvoid main() {\n v_pos = a_pos;\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n}\n",
|
||||
"#version 120\nuniform vec4 u_color;\n\nuniform vec2 u_offset;\nuniform vec2 u_pattern_size;\nuniform vec2 u_pattern_tl;\nuniform vec2 u_pattern_br;\nuniform float u_mix;\n\n\nuniform sampler2D u_image;\n\nvarying vec2 v_pos;\n\nvoid main() {\n\n vec2 imagecoord = mod((v_pos + u_offset) / u_pattern_size, 1.0);\n vec2 pos = mix(u_pattern_tl, u_pattern_br, imagecoord);\n vec4 color1 = texture2D(u_image, pos);\n\n vec2 imagecoord2 = mod(imagecoord * 2.0, 1.0);\n vec2 pos2 = mix(u_pattern_tl, u_pattern_br, imagecoord2);\n vec4 color2 = texture2D(u_image, pos2);\n\n vec4 color = mix(color1, color2, u_mix);\n gl_FragColor = color + u_color * (1.0 - color.a);\n}\n",
|
||||
},
|
||||
{
|
||||
"#version 120\nattribute vec2 a_pos;\nuniform mat4 u_matrix;\nvoid main ()\n{\n vec4 tmpvar_1;\n tmpvar_1.zw = vec2(0.0, 1.0);\n tmpvar_1.xy = a_pos;\n gl_Position = (u_matrix * tmpvar_1);\n}\n\n",
|
||||
"#version 120\nuniform vec4 u_color;\nvoid main ()\n{\n gl_FragColor = u_color;\n}\n\n",
|
||||
"#version 120\nattribute vec2 a_pos;\n\nuniform mat4 u_matrix;\n\nvoid main() {\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n}\n",
|
||||
"#version 120\nuniform vec4 u_color;\n\nvoid main() {\n gl_FragColor = u_color;\n}\n",
|
||||
},
|
||||
{
|
||||
"#version 120\nuniform mat4 u_matrix;\nattribute vec2 a_pos;\nvarying vec2 v_pos;\nvoid main ()\n{\n vec4 tmpvar_1;\n tmpvar_1.zw = vec2(0.0, 1.0);\n tmpvar_1.xy = a_pos;\n gl_Position = (u_matrix * tmpvar_1);\n v_pos = (a_pos / 4096.0);\n}\n\n",
|
||||
"#version 120\nuniform sampler2D u_image;\nuniform float u_opacity;\nvarying vec2 v_pos;\nvoid main ()\n{\n gl_FragColor = (texture2D (u_image, v_pos) * u_opacity);\n}\n\n",
|
||||
"#version 120\nuniform mat4 u_matrix;\n\nattribute vec2 a_pos;\n\nvarying vec2 v_pos;\n\nvoid main() {\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n v_pos = a_pos / 4096.0;\n}\n",
|
||||
"#version 120\nuniform sampler2D u_image;\nuniform float u_opacity;\n\nvarying vec2 v_pos;\n\nvoid main() {\n gl_FragColor = texture2D(u_image, v_pos) * u_opacity;\n}\n",
|
||||
},
|
||||
{
|
||||
"#version 120\nattribute vec2 a_pos;\nattribute vec2 a_offset;\nattribute vec4 a_data1;\nattribute vec4 a_data2;\nuniform mat4 u_matrix;\nuniform mat4 u_exmatrix;\nuniform float u_angle;\nuniform float u_zoom;\nuniform float u_flip;\nuniform float u_fadedist;\nuniform float u_minfadezoom;\nuniform float u_maxfadezoom;\nuniform float u_fadezoom;\nuniform vec2 u_texsize;\nvarying vec2 v_tex;\nvarying float v_alpha;\nvoid main ()\n{\n float rev_1;\n rev_1 = 0.0;\n float tmpvar_2;\n tmpvar_2 = (float(mod ((a_data1.w + u_angle), 256.0)));\n if ((((u_flip > 0.0) && (tmpvar_2 >= 64.0)) && (tmpvar_2 < 192.0))) {\n rev_1 = 1.0;\n };\n float tmpvar_3;\n tmpvar_3 = (((2.0 - \n float((u_zoom >= a_data2.x))\n ) - (1.0 - \n float((u_zoom >= a_data2.y))\n )) + rev_1);\n float tmpvar_4;\n tmpvar_4 = clamp (((u_fadezoom - a_data1.z) / u_fadedist), 0.0, 1.0);\n if ((u_fadedist >= 0.0)) {\n v_alpha = tmpvar_4;\n } else {\n v_alpha = (1.0 - tmpvar_4);\n };\n if ((u_maxfadezoom < a_data1.z)) {\n v_alpha = 0.0;\n };\n if ((u_minfadezoom >= a_data1.z)) {\n v_alpha = 1.0;\n };\n vec4 tmpvar_5;\n tmpvar_5.zw = vec2(0.0, 1.0);\n tmpvar_5.xy = a_pos;\n vec4 tmpvar_6;\n tmpvar_6.w = 0.0;\n tmpvar_6.xy = (a_offset / 64.0);\n tmpvar_6.z = ((tmpvar_3 + float(\n (0.0 >= v_alpha)\n )) + (float(\n (u_angle >= a_data2.z)\n ) * (1.0 - \n float((u_angle >= a_data2.w))\n )));\n gl_Position = ((u_matrix * tmpvar_5) + (u_exmatrix * tmpvar_6));\n v_tex = ((a_data1.xy * 4.0) / u_texsize);\n}\n\n",
|
||||
"#version 120\nuniform sampler2D u_texture;\nuniform vec4 u_color;\nuniform float u_buffer;\nuniform float u_gamma;\nvarying vec2 v_tex;\nvarying float v_alpha;\nvoid main ()\n{\n float edge0_1;\n edge0_1 = (u_buffer - u_gamma);\n float tmpvar_2;\n tmpvar_2 = clamp (((texture2D (u_texture, v_tex).w - edge0_1) / (\n (u_buffer + u_gamma)\n - edge0_1)), 0.0, 1.0);\n gl_FragColor = (u_color * ((tmpvar_2 * \n (tmpvar_2 * (3.0 - (2.0 * tmpvar_2)))\n ) * v_alpha));\n}\n\n",
|
||||
"#version 120\nattribute vec2 a_pos;\nattribute vec2 a_offset;\nattribute vec4 a_data1;\nattribute vec4 a_data2;\n\n\n// posmatrix is for the vertex position, exmatrix is for rotating and projecting\n// the extrusion vector.\nuniform mat4 u_matrix;\nuniform mat4 u_exmatrix;\nuniform float u_angle;\nuniform float u_zoom;\nuniform float u_flip;\nuniform float u_fadedist;\nuniform float u_minfadezoom;\nuniform float u_maxfadezoom;\nuniform float u_fadezoom;\n\nuniform vec2 u_texsize;\n\nvarying vec2 v_tex;\nvarying float v_alpha;\n\nvoid main() {\n vec2 a_tex = a_data1.xy;\n float a_labelminzoom = a_data1[2];\n float a_angle = a_data1[3];\n vec2 a_zoom = a_data2.st;\n vec2 a_range = a_data2.pq;\n\n float rev = 0.0;\n\n // u_angle is angle of the map, -128..128 representing 0..2PI\n // a_angle is angle of the label, 0..256 representing 0..2PI, where 0 is horizontal text\n float rotated = mod(a_angle + u_angle, 256.0);\n // if the label rotates with the map, and if the rotated label is upside down, hide it\n if (u_flip > 0.0 && rotated >= 64.0 && rotated < 192.0) rev = 1.0;\n\n // If the label should be invisible, we move the vertex outside\n // of the view plane so that the triangle gets clipped. This makes it easier\n // for us to create degenerate triangle strips.\n // u_zoom is the current zoom level adjusted for the change in font size\n float z = 2.0 - step(a_zoom[0], u_zoom) - (1.0 - step(a_zoom[1], u_zoom)) + rev;\n\n // fade out labels\n float alpha = clamp((u_fadezoom - a_labelminzoom) / u_fadedist, 0.0, 1.0);\n\n if (u_fadedist >= 0.0) {\n v_alpha = alpha;\n } else {\n v_alpha = 1.0 - alpha;\n }\n if (u_maxfadezoom < a_labelminzoom) {\n v_alpha = 0.0;\n }\n if (u_minfadezoom >= a_labelminzoom) {\n v_alpha = 1.0;\n }\n\n // if label has been faded out, clip it\n z += step(v_alpha, 0.0);\n\n // all the angles are 0..256 representing 0..2PI\n // hide if (angle >= a_rangeend && angle < rangestart)\n z += step(a_range[0], u_angle) * (1.0 - step(a_range[1], u_angle));\n\n gl_Position = u_matrix * vec4(a_pos, 0, 1) + u_exmatrix * vec4(a_offset / 64.0, z, 0);\n v_tex = a_tex * 4.0 / u_texsize;\n}\n",
|
||||
"#version 120\nuniform sampler2D u_texture;\nuniform vec4 u_color;\nuniform float u_buffer;\nuniform float u_gamma;\n\nvarying vec2 v_tex;\nvarying float v_alpha;\n\nvoid main() {\n float dist = texture2D(u_texture, v_tex).a;\n float alpha = smoothstep(u_buffer - u_gamma, u_buffer + u_gamma, dist) * v_alpha;\n gl_FragColor = u_color * alpha;\n}\n",
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -7,44 +7,44 @@ using namespace llmr;
|
||||
|
||||
const shader_source llmr::shaders[SHADER_COUNT] = {
|
||||
{
|
||||
"precision highp float;\nattribute vec2 a_pos;\nuniform mat4 u_matrix;\nvarying highp vec2 v_pos;\nvoid main ()\n{\n vec4 tmpvar_1;\n tmpvar_1.zw = vec2(0.0, 1.0);\n tmpvar_1.xy = a_pos;\n vec4 tmpvar_2;\n tmpvar_2 = (u_matrix * tmpvar_1);\n gl_Position = tmpvar_2;\n v_pos = ((tmpvar_2.xy + 1.0) / 2.0);\n}\n\n",
|
||||
"precision highp float;\nuniform sampler2D u_image;\nuniform float u_opacity;\nvarying vec2 v_pos;\nvoid main ()\n{\n lowp vec4 tmpvar_1;\n tmpvar_1 = (texture2D (u_image, v_pos) * u_opacity);\n gl_FragColor = tmpvar_1;\n}\n\n",
|
||||
"precision highp float;\nattribute vec2 a_pos;\n\nuniform mat4 u_matrix;\nvarying vec2 v_pos;\n\nvoid main() {\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n v_pos = (gl_Position.xy + 1.0) / 2.0;\n}\n",
|
||||
"precision highp float;\nuniform sampler2D u_image;\nuniform float u_opacity;\n\nvarying vec2 v_pos;\n\nvoid main() {\n vec4 color = texture2D(u_image, v_pos);\n gl_FragColor = color * u_opacity;\n}\n",
|
||||
},
|
||||
{
|
||||
"precision highp float;\nattribute vec2 a_pos;\nuniform mat4 u_matrix;\nuniform float u_size;\nvoid main ()\n{\n vec4 tmpvar_1;\n tmpvar_1.zw = vec2(0.0, 1.0);\n tmpvar_1.xy = a_pos;\n gl_Position = (u_matrix * tmpvar_1);\n gl_PointSize = u_size;\n}\n\n",
|
||||
"precision highp float;\nuniform vec4 u_color;\nuniform float u_blur;\nvoid main ()\n{\n mediump vec2 x_1;\n x_1 = (gl_PointCoord - 0.5);\n mediump float tmpvar_2;\n tmpvar_2 = clamp (((\n sqrt(dot (x_1, x_1))\n - 0.5) / (\n (0.5 - u_blur)\n - 0.5)), 0.0, 1.0);\n gl_FragColor = (u_color * (tmpvar_2 * (tmpvar_2 * \n (3.0 - (2.0 * tmpvar_2))\n )));\n}\n\n",
|
||||
"precision highp float;\nattribute vec2 a_pos;\n\nuniform mat4 u_matrix;\nuniform float u_size;\n\nvoid main(void) {\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n gl_PointSize = u_size;\n}\n",
|
||||
"precision highp float;\nuniform vec4 u_color;\nuniform float u_blur;\n\nvoid main() {\n\tfloat dist = length(gl_PointCoord - 0.5);\n\tfloat t = smoothstep(0.5, 0.5 - u_blur, dist);\n\n gl_FragColor = u_color * t;\n}\n",
|
||||
},
|
||||
{
|
||||
"precision highp float;\nattribute vec2 a_pos;\nattribute vec2 a_tex;\nuniform mat4 u_matrix;\nuniform float u_size;\nuniform float u_ratio;\nvarying vec2 v_tex;\nvoid main ()\n{\n vec4 tmpvar_1;\n tmpvar_1.zw = vec2(0.0, 1.0);\n tmpvar_1.xy = a_pos;\n gl_Position = (u_matrix * tmpvar_1);\n gl_PointSize = u_size;\n v_tex = (a_tex * u_ratio);\n}\n\n",
|
||||
"precision highp float;\nuniform sampler2D u_image;\nuniform vec2 u_dimension;\nuniform vec4 u_color;\nuniform float u_size;\nvarying vec2 v_tex;\nvoid main ()\n{\n mediump vec2 tmpvar_1;\n tmpvar_1 = ((v_tex + (\n (gl_PointCoord - 0.5)\n * u_size)) / u_dimension);\n lowp vec4 tmpvar_2;\n tmpvar_2 = (u_color * texture2D (u_image, tmpvar_1));\n gl_FragColor = tmpvar_2;\n}\n\n",
|
||||
"precision highp float;\nattribute vec2 a_pos;\nattribute vec2 a_tex;\n\nuniform mat4 u_matrix;\nuniform float u_size;\nuniform float u_ratio;\n\nvarying vec2 v_tex;\n\nvoid main() {\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n gl_PointSize = u_size;\n v_tex = a_tex * u_ratio;\n}\n",
|
||||
"precision highp float;\nuniform sampler2D u_image;\nuniform vec2 u_dimension;\nuniform vec4 u_color;\nuniform float u_size;\n\nvarying vec2 v_tex;\n\nvoid main() {\n vec2 pos = (v_tex + (gl_PointCoord - 0.5) * u_size) / u_dimension;\n gl_FragColor = u_color * texture2D(u_image, pos);\n}\n",
|
||||
},
|
||||
{
|
||||
"precision highp float;\nattribute vec2 a_pos;\nattribute vec2 a_extrude;\nattribute float a_linesofar;\nuniform mat4 u_matrix;\nuniform mat4 u_exmatrix;\nuniform float u_ratio;\nuniform vec2 u_linewidth;\nvarying vec2 v_normal;\nvarying float v_linesofar;\nvoid main ()\n{\n vec2 normal_1;\n vec2 tmpvar_2;\n tmpvar_2 = (vec2(mod (a_pos, 2.0)));\n normal_1.x = tmpvar_2.x;\n normal_1.y = sign((tmpvar_2.y - 0.5));\n v_normal = normal_1;\n vec4 tmpvar_3;\n tmpvar_3.zw = vec2(0.0, 0.0);\n tmpvar_3.xy = ((u_linewidth.x * a_extrude) * 0.015873);\n vec4 tmpvar_4;\n tmpvar_4.zw = vec2(0.0, 1.0);\n tmpvar_4.xy = floor((a_pos * 0.5));\n gl_Position = ((u_matrix * tmpvar_4) + (u_exmatrix * tmpvar_3));\n v_linesofar = (a_linesofar * u_ratio);\n}\n\n",
|
||||
"precision highp float;\nuniform vec2 u_linewidth;\nuniform vec4 u_color;\nuniform vec2 u_dasharray;\nvarying vec2 v_normal;\nvarying float v_linesofar;\nvoid main ()\n{\n float tmpvar_1;\n tmpvar_1 = (sqrt(dot (v_normal, v_normal)) * u_linewidth.x);\n float tmpvar_2;\n tmpvar_2 = (float(mod (v_linesofar, (u_dasharray.x + u_dasharray.y))));\n gl_FragColor = (u_color * (clamp (\n min ((tmpvar_1 - (u_linewidth.y - 1.0)), (u_linewidth.x - tmpvar_1))\n , 0.0, 1.0) * max (\n float((-(u_dasharray.y) >= 0.0))\n , \n clamp (min (tmpvar_2, (u_dasharray.x - tmpvar_2)), 0.0, 1.0)\n )));\n}\n\n",
|
||||
"precision highp float;\n// floor(127 / 2) == 63.0\n// the maximum allowed miter limit is 2.0 at the moment. the extrude normal is\n// stored in a byte (-128..127). we scale regular normals up to length 63, but\n// there are also \"special\" normals that have a bigger length (of up to 126 in\n// this case).\n// #define scale 63.0\n#define scale 0.015873016\n\nattribute vec2 a_pos;\nattribute vec2 a_extrude;\nattribute float a_linesofar;\n\n// posmatrix is for the vertex position, exmatrix is for rotating and projecting\n// the extrusion vector.\nuniform mat4 u_matrix;\nuniform mat4 u_exmatrix;\n\n// shared\nuniform float u_ratio;\nuniform vec2 u_linewidth;\nuniform vec4 u_color;\n\nvarying vec2 v_normal;\nvarying float v_linesofar;\n\nvoid main() {\n // We store the texture normals in the most insignificant bit\n // transform y so that 0 => -1 and 1 => 1\n // In the texture normal, x is 0 if the normal points straight up/down and 1 if it's a round cap\n // y is 1 if the normal points up, and -1 if it points down\n vec2 normal = mod(a_pos, 2.0);\n normal.y = sign(normal.y - 0.5);\n v_normal = normal;\n\n // Scale the extrusion vector down to a normal and then up by the line width\n // of this vertex.\n vec4 dist = vec4(u_linewidth.s * a_extrude * scale, 0.0, 0.0);\n\n // Remove the texture normal bit of the position before scaling it with the\n // model/view matrix. Add the extrusion vector *after* the model/view matrix\n // because we're extruding the line in pixel space, regardless of the current\n // tile's zoom level.\n gl_Position = u_matrix * vec4(floor(a_pos * 0.5), 0.0, 1.0) + u_exmatrix * dist;\n v_linesofar = a_linesofar * u_ratio;\n}",
|
||||
"precision highp float;\nuniform vec2 u_linewidth;\nuniform vec4 u_color;\n\nuniform vec2 u_dasharray;\n\nvarying vec2 v_normal;\nvarying float v_linesofar;\n\nvoid main() {\n // Calculate the distance of the pixel from the line in pixels.\n float dist = length(v_normal) * u_linewidth.s;\n\n // Calculate the antialiasing fade factor. This is either when fading in\n // the line in case of an offset line (v_linewidth.t) or when fading out\n // (v_linewidth.s)\n float alpha = clamp(min(dist - (u_linewidth.t - 1.0), u_linewidth.s - dist), 0.0, 1.0);\n\n // Calculate the antialiasing fade factor based on distance to the dash.\n // Only affects alpha when line is dashed\n float pos = mod(v_linesofar, u_dasharray.x + u_dasharray.y);\n alpha *= max(step(0.0, -u_dasharray.y), clamp(min(pos, u_dasharray.x - pos), 0.0, 1.0));\n\n gl_FragColor = u_color * alpha;\n}",
|
||||
},
|
||||
{
|
||||
"precision highp float;\nattribute vec2 a_pos;\nuniform mat4 u_matrix;\nuniform vec2 u_world;\nuniform float u_size;\nvarying highp vec2 v_pos;\nvoid main ()\n{\n vec4 tmpvar_1;\n tmpvar_1.zw = vec2(0.0, 1.0);\n tmpvar_1.xy = floor((a_pos / 2.0));\n vec4 tmpvar_2;\n tmpvar_2 = (u_matrix * tmpvar_1);\n gl_Position = tmpvar_2;\n v_pos = ((tmpvar_2.xy + 1.0) * u_world);\n gl_PointSize = u_size;\n}\n\n",
|
||||
"precision highp float;\nuniform vec4 u_color;\nuniform vec2 u_linewidth;\nvarying vec2 v_pos;\nvoid main ()\n{\n highp float tmpvar_1;\n highp vec2 x_2;\n x_2 = (v_pos - gl_FragCoord.xy);\n tmpvar_1 = sqrt(dot (x_2, x_2));\n highp vec4 tmpvar_3;\n tmpvar_3 = (u_color * clamp (min (\n (tmpvar_1 - (u_linewidth.y - 1.0))\n , \n (u_linewidth.x - tmpvar_1)\n ), 0.0, 1.0));\n gl_FragColor = tmpvar_3;\n}\n\n",
|
||||
"precision highp float;\nattribute vec2 a_pos;\n\nuniform mat4 u_matrix;\nuniform vec2 u_world;\nuniform float u_size;\n\nvarying vec2 v_pos;\n\nvoid main() {\n gl_Position = u_matrix * vec4(floor(a_pos / 2.0), 0.0, 1.0);\n v_pos = (gl_Position.xy + 1.0) * u_world;\n gl_PointSize = u_size;\n}\n",
|
||||
"precision highp float;\nuniform vec4 u_color;\nuniform vec2 u_linewidth;\n\nvarying vec2 v_pos;\n\nvoid main() {\n float dist = length(v_pos - gl_FragCoord.xy);\n\n // Calculate the antialiasing fade factor. This is either when fading in\n // the line in case of an offset line (v_linewidth.t) or when fading out\n // (v_linewidth.s)\n float alpha = clamp(min(dist - (u_linewidth.t - 1.0), u_linewidth.s - dist), 0.0, 1.0);\n gl_FragColor = u_color * alpha;\n}\n",
|
||||
},
|
||||
{
|
||||
"precision highp float;\nattribute vec2 a_pos;\nuniform mat4 u_matrix;\nuniform vec2 u_world;\nvarying highp vec2 v_pos;\nvoid main ()\n{\n vec4 tmpvar_1;\n tmpvar_1.zw = vec2(0.0, 1.0);\n tmpvar_1.xy = a_pos;\n vec4 tmpvar_2;\n tmpvar_2 = (u_matrix * tmpvar_1);\n gl_Position = tmpvar_2;\n v_pos = (((tmpvar_2.xy + 1.0) / 2.0) * u_world);\n}\n\n",
|
||||
"precision highp float;\nuniform vec4 u_color;\nvarying vec2 v_pos;\nvoid main ()\n{\n highp vec2 x_1;\n x_1 = (v_pos - gl_FragCoord.xy);\n highp float tmpvar_2;\n tmpvar_2 = clamp (((\n sqrt(dot (x_1, x_1))\n - 1.0) / -1.0), 0.0, 1.0);\n highp vec4 tmpvar_3;\n tmpvar_3 = (u_color * (tmpvar_2 * (tmpvar_2 * \n (3.0 - (2.0 * tmpvar_2))\n )));\n gl_FragColor = tmpvar_3;\n}\n\n",
|
||||
"precision highp float;\nattribute vec2 a_pos;\nuniform mat4 u_matrix;\nuniform vec2 u_world;\n\nvarying vec2 v_pos;\n\nvoid main() {\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n v_pos = (gl_Position.xy + 1.0) / 2.0 * u_world;\n}\n",
|
||||
"precision highp float;\nuniform vec4 u_color;\n\nvarying vec2 v_pos;\n\nvoid main() {\n float dist = length(v_pos - gl_FragCoord.xy);\n float alpha = smoothstep(1.0, 0.0, dist);\n gl_FragColor = u_color * alpha;\n}\n",
|
||||
},
|
||||
{
|
||||
"precision highp float;\nuniform mat4 u_matrix;\nattribute vec2 a_pos;\nvarying vec2 v_pos;\nvoid main ()\n{\n v_pos = a_pos;\n vec4 tmpvar_1;\n tmpvar_1.zw = vec2(0.0, 1.0);\n tmpvar_1.xy = a_pos;\n gl_Position = (u_matrix * tmpvar_1);\n}\n\n",
|
||||
"precision highp float;\nuniform vec4 u_color;\nuniform vec2 u_offset;\nuniform vec2 u_pattern_size;\nuniform vec2 u_pattern_tl;\nuniform vec2 u_pattern_br;\nuniform float u_mix;\nuniform sampler2D u_image;\nvarying vec2 v_pos;\nvoid main ()\n{\n vec2 tmpvar_1;\n tmpvar_1 = (vec2(mod (((v_pos + u_offset) / u_pattern_size), 1.0)));\n lowp vec4 tmpvar_2;\n tmpvar_2 = mix (texture2D (u_image, mix (u_pattern_tl, u_pattern_br, tmpvar_1)), texture2D (u_image, mix (u_pattern_tl, u_pattern_br, (vec2(mod (\n (tmpvar_1 * 2.0)\n , 1.0))))), u_mix);\n lowp vec4 tmpvar_3;\n tmpvar_3 = (tmpvar_2 + (u_color * (1.0 - tmpvar_2.w)));\n gl_FragColor = tmpvar_3;\n}\n\n",
|
||||
"precision highp float;\nuniform mat4 u_matrix;\n\nattribute vec2 a_pos;\n\nvarying vec2 v_pos;\n\nvoid main() {\n v_pos = a_pos;\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n}\n",
|
||||
"precision highp float;\nuniform vec4 u_color;\n\nuniform vec2 u_offset;\nuniform vec2 u_pattern_size;\nuniform vec2 u_pattern_tl;\nuniform vec2 u_pattern_br;\nuniform float u_mix;\n\n\nuniform sampler2D u_image;\n\nvarying vec2 v_pos;\n\nvoid main() {\n\n vec2 imagecoord = mod((v_pos + u_offset) / u_pattern_size, 1.0);\n vec2 pos = mix(u_pattern_tl, u_pattern_br, imagecoord);\n vec4 color1 = texture2D(u_image, pos);\n\n vec2 imagecoord2 = mod(imagecoord * 2.0, 1.0);\n vec2 pos2 = mix(u_pattern_tl, u_pattern_br, imagecoord2);\n vec4 color2 = texture2D(u_image, pos2);\n\n vec4 color = mix(color1, color2, u_mix);\n gl_FragColor = color + u_color * (1.0 - color.a);\n}\n",
|
||||
},
|
||||
{
|
||||
"precision highp float;\nattribute vec2 a_pos;\nuniform mat4 u_matrix;\nvoid main ()\n{\n vec4 tmpvar_1;\n tmpvar_1.zw = vec2(0.0, 1.0);\n tmpvar_1.xy = a_pos;\n gl_Position = (u_matrix * tmpvar_1);\n}\n\n",
|
||||
"precision highp float;\nuniform vec4 u_color;\nvoid main ()\n{\n gl_FragColor = u_color;\n}\n\n",
|
||||
"precision highp float;\nattribute vec2 a_pos;\n\nuniform mat4 u_matrix;\n\nvoid main() {\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n}\n",
|
||||
"precision highp float;\nuniform vec4 u_color;\n\nvoid main() {\n gl_FragColor = u_color;\n}\n",
|
||||
},
|
||||
{
|
||||
"precision highp float;\nuniform mat4 u_matrix;\nattribute vec2 a_pos;\nvarying vec2 v_pos;\nvoid main ()\n{\n vec4 tmpvar_1;\n tmpvar_1.zw = vec2(0.0, 1.0);\n tmpvar_1.xy = a_pos;\n gl_Position = (u_matrix * tmpvar_1);\n v_pos = (a_pos / 4096.0);\n}\n\n",
|
||||
"precision highp float;\nuniform sampler2D u_image;\nuniform float u_opacity;\nvarying vec2 v_pos;\nvoid main ()\n{\n lowp vec4 tmpvar_1;\n tmpvar_1 = (texture2D (u_image, v_pos) * u_opacity);\n gl_FragColor = tmpvar_1;\n}\n\n",
|
||||
"precision highp float;\nuniform mat4 u_matrix;\n\nattribute vec2 a_pos;\n\nvarying vec2 v_pos;\n\nvoid main() {\n gl_Position = u_matrix * vec4(a_pos, 0, 1);\n v_pos = a_pos / 4096.0;\n}\n",
|
||||
"precision highp float;\nuniform sampler2D u_image;\nuniform float u_opacity;\n\nvarying vec2 v_pos;\n\nvoid main() {\n gl_FragColor = texture2D(u_image, v_pos) * u_opacity;\n}\n",
|
||||
},
|
||||
{
|
||||
"precision highp float;\nattribute vec2 a_pos;\nattribute vec2 a_offset;\nattribute vec4 a_data1;\nattribute vec4 a_data2;\nuniform mat4 u_matrix;\nuniform mat4 u_exmatrix;\nuniform float u_angle;\nuniform float u_zoom;\nuniform float u_flip;\nuniform float u_fadedist;\nuniform float u_minfadezoom;\nuniform float u_maxfadezoom;\nuniform float u_fadezoom;\nuniform vec2 u_texsize;\nvarying vec2 v_tex;\nvarying float v_alpha;\nvoid main ()\n{\n float rev_1;\n rev_1 = 0.0;\n float tmpvar_2;\n tmpvar_2 = (float(mod ((a_data1.w + u_angle), 256.0)));\n if ((((u_flip > 0.0) && (tmpvar_2 >= 64.0)) && (tmpvar_2 < 192.0))) {\n rev_1 = 1.0;\n };\n float tmpvar_3;\n tmpvar_3 = (((2.0 - \n float((u_zoom >= a_data2.x))\n ) - (1.0 - \n float((u_zoom >= a_data2.y))\n )) + rev_1);\n float tmpvar_4;\n tmpvar_4 = clamp (((u_fadezoom - a_data1.z) / u_fadedist), 0.0, 1.0);\n if ((u_fadedist >= 0.0)) {\n v_alpha = tmpvar_4;\n } else {\n v_alpha = (1.0 - tmpvar_4);\n };\n if ((u_maxfadezoom < a_data1.z)) {\n v_alpha = 0.0;\n };\n if ((u_minfadezoom >= a_data1.z)) {\n v_alpha = 1.0;\n };\n vec4 tmpvar_5;\n tmpvar_5.zw = vec2(0.0, 1.0);\n tmpvar_5.xy = a_pos;\n vec4 tmpvar_6;\n tmpvar_6.w = 0.0;\n tmpvar_6.xy = (a_offset / 64.0);\n tmpvar_6.z = ((tmpvar_3 + float(\n (0.0 >= v_alpha)\n )) + (float(\n (u_angle >= a_data2.z)\n ) * (1.0 - \n float((u_angle >= a_data2.w))\n )));\n gl_Position = ((u_matrix * tmpvar_5) + (u_exmatrix * tmpvar_6));\n v_tex = ((a_data1.xy * 4.0) / u_texsize);\n}\n\n",
|
||||
"precision highp float;\nuniform sampler2D u_texture;\nuniform vec4 u_color;\nuniform float u_buffer;\nuniform float u_gamma;\nvarying vec2 v_tex;\nvarying float v_alpha;\nvoid main ()\n{\n float edge0_1;\n edge0_1 = (u_buffer - u_gamma);\n lowp float tmpvar_2;\n tmpvar_2 = clamp (((texture2D (u_texture, v_tex).w - edge0_1) / (\n (u_buffer + u_gamma)\n - edge0_1)), 0.0, 1.0);\n lowp vec4 tmpvar_3;\n tmpvar_3 = (u_color * ((tmpvar_2 * \n (tmpvar_2 * (3.0 - (2.0 * tmpvar_2)))\n ) * v_alpha));\n gl_FragColor = tmpvar_3;\n}\n\n",
|
||||
"precision highp float;\nattribute vec2 a_pos;\nattribute vec2 a_offset;\nattribute vec4 a_data1;\nattribute vec4 a_data2;\n\n\n// posmatrix is for the vertex position, exmatrix is for rotating and projecting\n// the extrusion vector.\nuniform mat4 u_matrix;\nuniform mat4 u_exmatrix;\nuniform float u_angle;\nuniform float u_zoom;\nuniform float u_flip;\nuniform float u_fadedist;\nuniform float u_minfadezoom;\nuniform float u_maxfadezoom;\nuniform float u_fadezoom;\n\nuniform vec2 u_texsize;\n\nvarying vec2 v_tex;\nvarying float v_alpha;\n\nvoid main() {\n vec2 a_tex = a_data1.xy;\n float a_labelminzoom = a_data1[2];\n float a_angle = a_data1[3];\n vec2 a_zoom = a_data2.st;\n vec2 a_range = a_data2.pq;\n\n float rev = 0.0;\n\n // u_angle is angle of the map, -128..128 representing 0..2PI\n // a_angle is angle of the label, 0..256 representing 0..2PI, where 0 is horizontal text\n float rotated = mod(a_angle + u_angle, 256.0);\n // if the label rotates with the map, and if the rotated label is upside down, hide it\n if (u_flip > 0.0 && rotated >= 64.0 && rotated < 192.0) rev = 1.0;\n\n // If the label should be invisible, we move the vertex outside\n // of the view plane so that the triangle gets clipped. This makes it easier\n // for us to create degenerate triangle strips.\n // u_zoom is the current zoom level adjusted for the change in font size\n float z = 2.0 - step(a_zoom[0], u_zoom) - (1.0 - step(a_zoom[1], u_zoom)) + rev;\n\n // fade out labels\n float alpha = clamp((u_fadezoom - a_labelminzoom) / u_fadedist, 0.0, 1.0);\n\n if (u_fadedist >= 0.0) {\n v_alpha = alpha;\n } else {\n v_alpha = 1.0 - alpha;\n }\n if (u_maxfadezoom < a_labelminzoom) {\n v_alpha = 0.0;\n }\n if (u_minfadezoom >= a_labelminzoom) {\n v_alpha = 1.0;\n }\n\n // if label has been faded out, clip it\n z += step(v_alpha, 0.0);\n\n // all the angles are 0..256 representing 0..2PI\n // hide if (angle >= a_rangeend && angle < rangestart)\n z += step(a_range[0], u_angle) * (1.0 - step(a_range[1], u_angle));\n\n gl_Position = u_matrix * vec4(a_pos, 0, 1) + u_exmatrix * vec4(a_offset / 64.0, z, 0);\n v_tex = a_tex * 4.0 / u_texsize;\n}\n",
|
||||
"precision highp float;\nuniform sampler2D u_texture;\nuniform vec4 u_color;\nuniform float u_buffer;\nuniform float u_gamma;\n\nvarying vec2 v_tex;\nvarying float v_alpha;\n\nvoid main() {\n float dist = texture2D(u_texture, v_tex).a;\n float alpha = smoothstep(u_buffer - u_gamma, u_buffer + u_gamma, dist) * v_alpha;\n gl_FragColor = u_color * alpha;\n}\n",
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -62,57 +62,57 @@ void Style::cascade(float z) {
|
||||
|
||||
llmr::FillProperties& fill = computed.fills[layer_name];
|
||||
|
||||
if (layer.specifiers.count("enabled")) {
|
||||
fill.enabled = layer.enabled.evaluate<bool>(z);
|
||||
if (layer.enabled) {
|
||||
fill.enabled = layer.enabled.get().evaluate<bool>(z);
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("translate")) {
|
||||
fill.translate = {{ layer.translate[0].evaluate<float>(z),
|
||||
layer.translate[1].evaluate<float>(z) }};
|
||||
if (layer.translate) {
|
||||
fill.translate = {{ layer.translate.get()[0].evaluate<float>(z),
|
||||
layer.translate.get()[1].evaluate<float>(z) }};
|
||||
computed.effective_classes[layer_name][TransitionablePropertyKey::Translate] = class_name;
|
||||
if (layer.translate_transition.duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Translate] = layer.translate_transition;
|
||||
if (layer.translate_transition && layer.translate_transition.get().duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Translate] = layer.translate_transition.get();
|
||||
}
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("translate-anchor")) {
|
||||
fill.translateAnchor = layer.translateAnchor;
|
||||
if (layer.translateAnchor) {
|
||||
fill.translateAnchor = layer.translateAnchor.get();
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("winding")) {
|
||||
fill.winding = layer.winding;
|
||||
if (layer.winding) {
|
||||
fill.winding = layer.winding.get();
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("antialias")) {
|
||||
fill.antialias = layer.antialias.evaluate<bool>(z);
|
||||
if (layer.antialias) {
|
||||
fill.antialias = layer.antialias.get().evaluate<bool>(z);
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("color")) {
|
||||
fill.fill_color = layer.fill_color;
|
||||
if (layer.fill_color) {
|
||||
fill.fill_color = layer.fill_color.get();
|
||||
computed.effective_classes[layer_name][TransitionablePropertyKey::FillColor] = class_name;
|
||||
if (layer.fill_color_transition.duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::FillColor] = layer.fill_color_transition;
|
||||
if (layer.fill_color_transition && layer.fill_color_transition.get().duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::FillColor] = layer.fill_color_transition.get();
|
||||
}
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("stroke")) {
|
||||
fill.stroke_color = layer.stroke_color;
|
||||
if (layer.stroke_color) {
|
||||
fill.stroke_color = layer.stroke_color.get();
|
||||
computed.effective_classes[layer_name][TransitionablePropertyKey::StrokeColor] = class_name;
|
||||
if (layer.stroke_color_transition.duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::StrokeColor] = layer.stroke_color_transition;
|
||||
if (layer.stroke_color_transition && layer.stroke_color_transition.get().duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::StrokeColor] = layer.stroke_color_transition.get();
|
||||
}
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("opacity")) {
|
||||
fill.opacity = layer.opacity.evaluate<float>(z);
|
||||
if (layer.opacity) {
|
||||
fill.opacity = layer.opacity.get().evaluate<float>(z);
|
||||
computed.effective_classes[layer_name][TransitionablePropertyKey::Opacity] = class_name;
|
||||
if (layer.opacity_transition.duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Opacity] = layer.opacity_transition;
|
||||
if (layer.opacity_transition && layer.opacity_transition.get().duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Opacity] = layer.opacity_transition.get();
|
||||
}
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("image")) {
|
||||
fill.image = layer.image;
|
||||
if (layer.image) {
|
||||
fill.image = layer.image.get();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,62 +123,62 @@ void Style::cascade(float z) {
|
||||
|
||||
llmr::LineProperties& stroke = computed.lines[layer_name];
|
||||
|
||||
if (layer.specifiers.count("enabled")) {
|
||||
stroke.enabled = layer.enabled.evaluate<bool>(z);
|
||||
if (layer.enabled) {
|
||||
stroke.enabled = layer.enabled.get().evaluate<bool>(z);
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("translate")) {
|
||||
stroke.translate = {{ layer.translate[0].evaluate<float>(z),
|
||||
layer.translate[1].evaluate<float>(z) }};
|
||||
if (layer.translate) {
|
||||
stroke.translate = {{ layer.translate.get()[0].evaluate<float>(z),
|
||||
layer.translate.get()[1].evaluate<float>(z) }};
|
||||
computed.effective_classes[layer_name][TransitionablePropertyKey::Translate] = class_name;
|
||||
if (layer.translate_transition.duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Translate] = layer.translate_transition;
|
||||
if (layer.translate_transition && layer.translate_transition.get().duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Translate] = layer.translate_transition.get();
|
||||
}
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("translate-anchor")) {
|
||||
stroke.translateAnchor = layer.translateAnchor;
|
||||
if (layer.translateAnchor) {
|
||||
stroke.translateAnchor = layer.translateAnchor.get();
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("width")) {
|
||||
stroke.width = layer.width.evaluate<float>(z);
|
||||
if (layer.width) {
|
||||
stroke.width = layer.width.get().evaluate<float>(z);
|
||||
computed.effective_classes[layer_name][TransitionablePropertyKey::Width] = class_name;
|
||||
if (layer.width_transition.duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Width] = layer.width_transition;
|
||||
if (layer.width_transition && layer.width_transition.get().duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Width] = layer.width_transition.get();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("offset")) {
|
||||
stroke.offset = layer.offset.evaluate<float>(z);
|
||||
if (layer.offset) {
|
||||
stroke.offset = layer.offset.get().evaluate<float>(z);
|
||||
computed.effective_classes[layer_name][TransitionablePropertyKey::Offset] = class_name;
|
||||
if (layer.offset_transition.duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Offset] = layer.offset_transition;
|
||||
if (layer.offset_transition && layer.offset_transition.get().duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Offset] = layer.offset_transition.get();
|
||||
}
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("color")) {
|
||||
stroke.color = layer.color;
|
||||
if (layer.color) {
|
||||
stroke.color = layer.color.get();
|
||||
computed.effective_classes[layer_name][TransitionablePropertyKey::Color] = class_name;
|
||||
if (layer.color_transition.duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Color] = layer.color_transition;
|
||||
if (layer.color_transition && layer.color_transition.get().duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Color] = layer.color_transition.get();
|
||||
}
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("dasharray")) {
|
||||
stroke.dash_array = {{ layer.dash_array[0].evaluate<float>(z),
|
||||
layer.dash_array[1].evaluate<float>(z) }};
|
||||
if (layer.dash_array) {
|
||||
stroke.dash_array = {{ layer.dash_array.get()[0].evaluate<float>(z),
|
||||
layer.dash_array.get()[1].evaluate<float>(z) }};
|
||||
computed.effective_classes[layer_name][TransitionablePropertyKey::DashArray] = class_name;
|
||||
if (layer.dash_array_transition.duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::DashArray] = layer.dash_array_transition;
|
||||
if (layer.dash_array_transition && layer.dash_array_transition.get().duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::DashArray] = layer.dash_array_transition.get();
|
||||
}
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("opacity")) {
|
||||
stroke.opacity = layer.opacity.evaluate<float>(z);
|
||||
if (layer.opacity) {
|
||||
stroke.opacity = layer.opacity.get().evaluate<float>(z);
|
||||
computed.effective_classes[layer_name][TransitionablePropertyKey::Opacity] = class_name;
|
||||
if (layer.opacity_transition.duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Opacity] = layer.opacity_transition;
|
||||
if (layer.opacity_transition && layer.opacity_transition.get().duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Opacity] = layer.opacity_transition.get();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -190,60 +190,60 @@ void Style::cascade(float z) {
|
||||
|
||||
llmr::IconProperties& icon = computed.icons[layer_name];
|
||||
|
||||
if (layer.specifiers.count("enabled")) {
|
||||
icon.enabled = layer.enabled.evaluate<bool>(z);
|
||||
if (layer.enabled) {
|
||||
icon.enabled = layer.enabled.get().evaluate<bool>(z);
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("translate")) {
|
||||
icon.translate = {{ layer.translate[0].evaluate<float>(z),
|
||||
layer.translate[1].evaluate<float>(z) }};
|
||||
if (layer.translate) {
|
||||
icon.translate = {{ layer.translate.get()[0].evaluate<float>(z),
|
||||
layer.translate.get()[1].evaluate<float>(z) }};
|
||||
computed.effective_classes[layer_name][TransitionablePropertyKey::Translate] = class_name;
|
||||
if (layer.translate_transition.duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Translate] = layer.translate_transition;
|
||||
if (layer.translate_transition && layer.translate_transition.get().duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Translate] = layer.translate_transition.get();
|
||||
}
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("translate-anchor")) {
|
||||
icon.translateAnchor = layer.translateAnchor;
|
||||
if (layer.translateAnchor) {
|
||||
icon.translateAnchor = layer.translateAnchor.get();
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("color")) {
|
||||
icon.color = layer.color;
|
||||
if (layer.color) {
|
||||
icon.color = layer.color.get();
|
||||
computed.effective_classes[layer_name][TransitionablePropertyKey::Color] = class_name;
|
||||
if (layer.color_transition.duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Color] = layer.color_transition;
|
||||
if (layer.color_transition && layer.color_transition.get().duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Color] = layer.color_transition.get();
|
||||
}
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("size")) {
|
||||
icon.size = layer.size.evaluate<float>(z);
|
||||
if (layer.size) {
|
||||
icon.size = layer.size.get().evaluate<float>(z);
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("opacity")) {
|
||||
icon.opacity = layer.opacity.evaluate<float>(z);
|
||||
if (layer.opacity) {
|
||||
icon.opacity = layer.opacity.get().evaluate<float>(z);
|
||||
computed.effective_classes[layer_name][TransitionablePropertyKey::Opacity] = class_name;
|
||||
if (layer.opacity_transition.duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Opacity] = layer.opacity_transition;
|
||||
if (layer.opacity_transition && layer.opacity_transition.get().duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Opacity] = layer.opacity_transition.get();
|
||||
}
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("image")) {
|
||||
icon.image = layer.image;
|
||||
if (layer.image) {
|
||||
icon.image = layer.image.get();
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("radius")) {
|
||||
icon.radius = layer.radius.evaluate<float>(z);
|
||||
if (layer.radius) {
|
||||
icon.radius = layer.radius.get().evaluate<float>(z);
|
||||
computed.effective_classes[layer_name][TransitionablePropertyKey::Radius] = class_name;
|
||||
if (layer.radius_transition.duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Radius] = layer.radius_transition;
|
||||
if (layer.radius_transition && layer.radius_transition.get().duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Radius] = layer.radius_transition.get();
|
||||
}
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("blur")) {
|
||||
icon.blur = layer.blur.evaluate<float>(z);
|
||||
if (layer.blur) {
|
||||
icon.blur = layer.blur.get().evaluate<float>(z);
|
||||
computed.effective_classes[layer_name][TransitionablePropertyKey::Blur] = class_name;
|
||||
if (layer.blur_transition.duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Blur] = layer.blur_transition;
|
||||
if (layer.blur_transition && layer.blur_transition.get().duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Blur] = layer.blur_transition.get();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -255,72 +255,72 @@ void Style::cascade(float z) {
|
||||
|
||||
llmr::TextProperties& text = computed.texts[layer_name];
|
||||
|
||||
if (layer.specifiers.count("enabled")) {
|
||||
text.enabled = layer.enabled.evaluate<bool>(z);
|
||||
if (layer.enabled) {
|
||||
text.enabled = layer.enabled.get().evaluate<bool>(z);
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("translate")) {
|
||||
text.translate = {{ layer.translate[0].evaluate<float>(z),
|
||||
layer.translate[1].evaluate<float>(z) }};
|
||||
if (layer.translate) {
|
||||
text.translate = {{ layer.translate.get()[0].evaluate<float>(z),
|
||||
layer.translate.get()[1].evaluate<float>(z) }};
|
||||
computed.effective_classes[layer_name][TransitionablePropertyKey::Translate] = class_name;
|
||||
if (layer.translate_transition.duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Translate] = layer.translate_transition;
|
||||
if (layer.translate_transition && layer.translate_transition.get().duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Translate] = layer.translate_transition.get();
|
||||
}
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("translate-anchor")) {
|
||||
text.translateAnchor = layer.translateAnchor;
|
||||
if (layer.translateAnchor) {
|
||||
text.translateAnchor = layer.translateAnchor.get();
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("color")) {
|
||||
text.color = layer.color;
|
||||
if (layer.color) {
|
||||
text.color = layer.color.get();
|
||||
computed.effective_classes[layer_name][TransitionablePropertyKey::Color] = class_name;
|
||||
if (layer.color_transition.duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Color] = layer.color_transition;
|
||||
if (layer.color_transition && layer.color_transition.get().duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Color] = layer.color_transition.get();
|
||||
}
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("size")) {
|
||||
text.size = layer.size.evaluate<float>(z);
|
||||
if (layer.size) {
|
||||
text.size = layer.size.get().evaluate<float>(z);
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("stroke")) {
|
||||
text.halo = layer.halo;
|
||||
if (layer.halo) {
|
||||
text.halo = layer.halo.get();
|
||||
computed.effective_classes[layer_name][TransitionablePropertyKey::Halo] = class_name;
|
||||
if (layer.halo_transition.duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Halo] = layer.halo_transition;
|
||||
if (layer.halo_transition && layer.halo_transition.get().duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Halo] = layer.halo_transition.get();
|
||||
}
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("strokeWidth")) {
|
||||
text.halo_radius = layer.halo_radius.evaluate<float>(z);
|
||||
if (layer.halo_radius) {
|
||||
text.halo_radius = layer.halo_radius.get().evaluate<float>(z);
|
||||
computed.effective_classes[layer_name][TransitionablePropertyKey::HaloRadius] = class_name;
|
||||
if (layer.halo_radius_transition.duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::HaloRadius] = layer.halo_radius_transition;
|
||||
if (layer.halo_radius_transition && layer.halo_radius_transition.get().duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::HaloRadius] = layer.halo_radius_transition.get();
|
||||
}
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("strokeBlur")) {
|
||||
text.halo_blur = layer.halo_blur.evaluate<float>(z);
|
||||
if (layer.halo_blur) {
|
||||
text.halo_blur = layer.halo_blur.get().evaluate<float>(z);
|
||||
computed.effective_classes[layer_name][TransitionablePropertyKey::HaloBlur] = class_name;
|
||||
if (layer.halo_blur_transition.duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::HaloBlur] = layer.halo_blur_transition;
|
||||
if (layer.halo_blur_transition && layer.halo_blur_transition.get().duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::HaloBlur] = layer.halo_blur_transition.get();
|
||||
}
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("rotate")) {
|
||||
text.rotate = layer.rotate.evaluate<float>(z);
|
||||
if (layer.rotate) {
|
||||
text.rotate = layer.rotate.get().evaluate<float>(z);
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("alwaysVisible")) {
|
||||
text.always_visible = layer.always_visible.evaluate<bool>(z);
|
||||
if (layer.always_visible) {
|
||||
text.always_visible = layer.always_visible.get().evaluate<bool>(z);
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("opacity")) {
|
||||
text.opacity = layer.opacity.evaluate<float>(z);
|
||||
if (layer.opacity) {
|
||||
text.opacity = layer.opacity.get().evaluate<float>(z);
|
||||
computed.effective_classes[layer_name][TransitionablePropertyKey::Opacity] = class_name;
|
||||
if (layer.opacity_transition.duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Opacity] = layer.opacity_transition;
|
||||
if (layer.opacity_transition && layer.opacity_transition.get().duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Opacity] = layer.opacity_transition.get();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -332,15 +332,15 @@ void Style::cascade(float z) {
|
||||
|
||||
llmr::RasterProperties& raster = computed.rasters[layer_name];
|
||||
|
||||
if (layer.specifiers.count("enabled")) {
|
||||
raster.enabled = layer.enabled.evaluate<bool>(z);
|
||||
if (layer.enabled) {
|
||||
raster.enabled = layer.enabled.get().evaluate<bool>(z);
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("opacity")) {
|
||||
raster.opacity = layer.opacity.evaluate<float>(z);
|
||||
if (layer.opacity) {
|
||||
raster.opacity = layer.opacity.get().evaluate<float>(z);
|
||||
computed.effective_classes[layer_name][TransitionablePropertyKey::Opacity] = class_name;
|
||||
if (layer.opacity_transition.duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Opacity] = layer.opacity_transition;
|
||||
if (layer.opacity_transition && layer.opacity_transition.get().duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Opacity] = layer.opacity_transition.get();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -352,33 +352,33 @@ void Style::cascade(float z) {
|
||||
|
||||
llmr::CompositeProperties& composite = computed.composites[layer_name];
|
||||
|
||||
if (layer.specifiers.count("enabled")) {
|
||||
composite.enabled = layer.enabled.evaluate<bool>(z);
|
||||
if (layer.enabled) {
|
||||
composite.enabled = layer.enabled.get().evaluate<bool>(z);
|
||||
}
|
||||
|
||||
if (layer.specifiers.count("opacity")) {
|
||||
composite.opacity = layer.opacity.evaluate<float>(z);
|
||||
if (layer.opacity) {
|
||||
composite.opacity = layer.opacity.get().evaluate<float>(z);
|
||||
computed.effective_classes[layer_name][TransitionablePropertyKey::Opacity] = class_name;
|
||||
if (layer.opacity_transition.duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Opacity] = layer.opacity_transition;
|
||||
if (layer.opacity_transition && layer.opacity_transition.get().duration) {
|
||||
properties_to_transition[layer_name][TransitionablePropertyKey::Opacity] = layer.opacity_transition.get();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Cascade background.
|
||||
{
|
||||
if (sheetClass.background.specifiers.count("color")) {
|
||||
computed.background.color = sheetClass.background.color;
|
||||
if (sheetClass.background.color) {
|
||||
computed.background.color = sheetClass.background.color.get();
|
||||
computed.effective_classes["background"][TransitionablePropertyKey::Color] = class_name;
|
||||
if (sheetClass.background.color_transition.duration) {
|
||||
properties_to_transition["background"][TransitionablePropertyKey::Color] = sheetClass.background.color_transition;
|
||||
if (sheetClass.background.color_transition && sheetClass.background.color_transition.get().duration) {
|
||||
properties_to_transition["background"][TransitionablePropertyKey::Color] = sheetClass.background.color_transition.get();
|
||||
}
|
||||
}
|
||||
if (sheetClass.background.specifiers.count("opacity")) {
|
||||
computed.background.opacity = sheetClass.background.opacity.evaluate<float>(z);
|
||||
if (sheetClass.background.opacity) {
|
||||
computed.background.opacity = sheetClass.background.opacity.get().evaluate<float>(z);
|
||||
computed.effective_classes["background"][TransitionablePropertyKey::Opacity] = class_name;
|
||||
if (sheetClass.background.opacity_transition.duration) {
|
||||
properties_to_transition["background"][TransitionablePropertyKey::Opacity] = sheetClass.background.opacity_transition;
|
||||
if (sheetClass.background.opacity_transition && sheetClass.background.opacity_transition.get().duration) {
|
||||
properties_to_transition["background"][TransitionablePropertyKey::Opacity] = sheetClass.background.opacity_transition.get();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -505,19 +505,16 @@ FillClass StyleParser::parseFillClass(JSVal value) {
|
||||
|
||||
if (value.HasMember("enabled")) {
|
||||
klass.enabled = parseFunction(value["enabled"]);
|
||||
klass.specifiers.insert("enabled");
|
||||
}
|
||||
|
||||
if (value.HasMember("translate")) {
|
||||
std::vector<FunctionProperty> values = parseArray(value["translate"], 2);
|
||||
klass.translate = std::array<FunctionProperty, 2> {{ values[0], values[1] }};
|
||||
klass.translate_transition = parseTransition(value, "translate");
|
||||
klass.specifiers.insert("translate");
|
||||
}
|
||||
|
||||
if (value.HasMember("translate-anchor")) {
|
||||
klass.translateAnchor = parseTranslateAnchor(value["translate-anchor"]);
|
||||
klass.specifiers.insert("translate-anchor");
|
||||
}
|
||||
|
||||
if (value.HasMember("winding")) {
|
||||
@@ -527,32 +524,26 @@ FillClass StyleParser::parseFillClass(JSVal value) {
|
||||
if (value.HasMember("color")) {
|
||||
klass.fill_color = parseColor(value["color"]);
|
||||
klass.fill_color_transition = parseTransition(value, "color");
|
||||
klass.specifiers.insert("color");
|
||||
}
|
||||
|
||||
if (value.HasMember("stroke")) {
|
||||
klass.stroke_color = parseColor(value["stroke"]);
|
||||
klass.stroke_color_transition = parseTransition(value, "stroke");
|
||||
klass.specifiers.insert("stroke");
|
||||
} else {
|
||||
klass.stroke_color = klass.fill_color;
|
||||
klass.specifiers.insert("stroke");
|
||||
}
|
||||
|
||||
if (value.HasMember("antialias")) {
|
||||
klass.antialias = parseBoolean(value["antialias"]);
|
||||
klass.specifiers.insert("antialias");
|
||||
}
|
||||
|
||||
if (value.HasMember("image")) {
|
||||
klass.image = parseString(value["image"]);
|
||||
klass.specifiers.insert("image");
|
||||
}
|
||||
|
||||
if (value.HasMember("opacity")) {
|
||||
klass.opacity = parseFunction(value["opacity"]);
|
||||
klass.opacity_transition = parseTransition(value, "opacity");
|
||||
klass.specifiers.insert("opacity");
|
||||
}
|
||||
|
||||
return klass;
|
||||
@@ -563,44 +554,37 @@ LineClass StyleParser::parseLineClass(JSVal value) {
|
||||
|
||||
if (value.HasMember("enabled")) {
|
||||
klass.enabled = parseFunction(value["enabled"]);
|
||||
klass.specifiers.insert("enabled");
|
||||
}
|
||||
|
||||
if (value.HasMember("translate")) {
|
||||
std::vector<FunctionProperty> values = parseArray(value["translate"], 2);
|
||||
klass.translate = std::array<FunctionProperty, 2> {{ values[0], values[1] }};
|
||||
klass.translate_transition = parseTransition(value, "translate");
|
||||
klass.specifiers.insert("translate");
|
||||
}
|
||||
|
||||
if (value.HasMember("translate-anchor")) {
|
||||
klass.translateAnchor = parseTranslateAnchor(value["translate-anchor"]);
|
||||
klass.specifiers.insert("translate-anchor");
|
||||
}
|
||||
|
||||
if (value.HasMember("color")) {
|
||||
klass.color = parseColor(value["color"]);
|
||||
klass.color_transition = parseTransition(value, "color");
|
||||
klass.specifiers.insert("color");
|
||||
}
|
||||
|
||||
if (value.HasMember("width")) {
|
||||
klass.width = parseFunction(value["width"]);
|
||||
klass.width_transition = parseTransition(value, "width");
|
||||
klass.specifiers.insert("width");
|
||||
}
|
||||
|
||||
if (value.HasMember("opacity")) {
|
||||
klass.opacity = parseFunction(value["opacity"]);
|
||||
klass.opacity_transition = parseTransition(value, "opacity");
|
||||
klass.specifiers.insert("opacity");
|
||||
}
|
||||
|
||||
if (value.HasMember("dasharray")) {
|
||||
std::vector<FunctionProperty> values = parseArray(value["dasharray"], 2);
|
||||
klass.dash_array = std::array<FunctionProperty, 2> {{ values[0], values[1] }};
|
||||
klass.dash_array_transition = parseTransition(value, "dasharray");
|
||||
klass.specifiers.insert("dasharray");
|
||||
}
|
||||
|
||||
return klass;
|
||||
@@ -611,53 +595,44 @@ IconClass StyleParser::parseIconClass(JSVal value) {
|
||||
|
||||
if (value.HasMember("enabled")) {
|
||||
klass.enabled = parseFunction(value["enabled"]);
|
||||
klass.specifiers.insert("enabled");
|
||||
}
|
||||
|
||||
if (value.HasMember("translate")) {
|
||||
std::vector<FunctionProperty> values = parseArray(value["translate"], 2);
|
||||
klass.translate = std::array<FunctionProperty, 2> {{ values[0], values[1] }};
|
||||
klass.translate_transition = parseTransition(value, "translate");
|
||||
klass.specifiers.insert("translate");
|
||||
}
|
||||
|
||||
if (value.HasMember("translate-anchor")) {
|
||||
klass.translateAnchor = parseTranslateAnchor(value["translate-anchor"]);
|
||||
klass.specifiers.insert("translate-anchor");
|
||||
}
|
||||
|
||||
if (value.HasMember("color")) {
|
||||
klass.color = parseColor(value["color"]);
|
||||
klass.color_transition = parseTransition(value, "color");
|
||||
klass.specifiers.insert("color");
|
||||
}
|
||||
|
||||
if (value.HasMember("opacity")) {
|
||||
klass.opacity = parseFunction(value["opacity"]);
|
||||
klass.opacity_transition = parseTransition(value, "opacity");
|
||||
klass.specifiers.insert("opacity");
|
||||
}
|
||||
|
||||
if (value.HasMember("image")) {
|
||||
klass.image = parseString(value["image"]);
|
||||
klass.specifiers.insert("image");
|
||||
}
|
||||
|
||||
if (value.HasMember("size")) {
|
||||
klass.size = parseFunction(value["size"]);
|
||||
klass.specifiers.insert("size");
|
||||
}
|
||||
|
||||
if (value.HasMember("radius")) {
|
||||
klass.radius = parseFunction(value["radius"]);
|
||||
klass.radius_transition = parseTransition(value, "radius");
|
||||
klass.specifiers.insert("radius");
|
||||
}
|
||||
|
||||
if (value.HasMember("blur")) {
|
||||
klass.blur = parseFunction(value["blur"]);
|
||||
klass.blur_transition = parseTransition(value, "blur");
|
||||
klass.specifiers.insert("blur");
|
||||
}
|
||||
|
||||
return klass;
|
||||
@@ -668,64 +643,53 @@ TextClass StyleParser::parseTextClass(JSVal value) {
|
||||
|
||||
if (value.HasMember("enabled")) {
|
||||
klass.enabled = parseFunction(value["enabled"]);
|
||||
klass.specifiers.insert("enabled");
|
||||
}
|
||||
|
||||
if (value.HasMember("translate")) {
|
||||
std::vector<FunctionProperty> values = parseArray(value["translate"], 2);
|
||||
klass.translate = std::array<FunctionProperty, 2> {{ values[0], values[1] }};
|
||||
klass.translate_transition = parseTransition(value, "translate");
|
||||
klass.specifiers.insert("translate");
|
||||
}
|
||||
|
||||
if (value.HasMember("translate-anchor")) {
|
||||
klass.translateAnchor = parseTranslateAnchor(value["translate-anchor"]);
|
||||
klass.specifiers.insert("translate-anchor");
|
||||
}
|
||||
|
||||
if (value.HasMember("color")) {
|
||||
klass.color = parseColor(value["color"]);
|
||||
klass.color_transition = parseTransition(value, "color");
|
||||
klass.specifiers.insert("color");
|
||||
}
|
||||
|
||||
if (value.HasMember("stroke")) {
|
||||
klass.halo = parseColor(value["stroke"]);
|
||||
klass.halo_transition = parseTransition(value, "stroke");
|
||||
klass.specifiers.insert("stroke");
|
||||
}
|
||||
|
||||
if (value.HasMember("strokeWidth")) {
|
||||
klass.halo_radius = parseFunction(value["strokeWidth"]);
|
||||
klass.halo_radius_transition = parseTransition(value, "strokeWidth");
|
||||
klass.specifiers.insert("strokeWidth");
|
||||
}
|
||||
|
||||
if (value.HasMember("strokeBlur")) {
|
||||
klass.halo_blur = parseFunction(value["strokeBlur"]);
|
||||
klass.halo_blur_transition = parseTransition(value, "strokeBlur");
|
||||
klass.specifiers.insert("strokeBlur");
|
||||
}
|
||||
|
||||
if (value.HasMember("size")) {
|
||||
klass.size = parseFunction(value["size"]);
|
||||
klass.specifiers.insert("size");
|
||||
}
|
||||
|
||||
if (value.HasMember("rotate")) {
|
||||
klass.rotate = parseFunction(value["rotate"]);
|
||||
klass.specifiers.insert("rotate");
|
||||
}
|
||||
|
||||
if (value.HasMember("alwaysVisible")) {
|
||||
klass.always_visible = parseFunction(value["alwaysVisible"]);
|
||||
klass.specifiers.insert("alwaysVisible");
|
||||
}
|
||||
|
||||
if (value.HasMember("opacity")) {
|
||||
klass.opacity = parseFunction(value["opacity"]);
|
||||
klass.opacity_transition = parseTransition(value, "opacity");
|
||||
klass.specifiers.insert("opacity");
|
||||
}
|
||||
|
||||
return klass;
|
||||
@@ -736,13 +700,11 @@ RasterClass StyleParser::parseRasterClass(JSVal value) {
|
||||
|
||||
if (value.HasMember("enabled")) {
|
||||
klass.enabled = parseFunction(value["enabled"]);
|
||||
klass.specifiers.insert("enabled");
|
||||
}
|
||||
|
||||
if (value.HasMember("opacity")) {
|
||||
klass.opacity = parseFunction(value["opacity"]);
|
||||
klass.opacity_transition = parseTransition(value, "opacity");
|
||||
klass.specifiers.insert("opacity");
|
||||
}
|
||||
|
||||
return klass;
|
||||
@@ -753,13 +715,11 @@ CompositeClass StyleParser::parseCompositeClass(JSVal value) {
|
||||
|
||||
if (value.HasMember("enabled")) {
|
||||
klass.enabled = parseFunction(value["enabled"]);
|
||||
klass.specifiers.insert("enabled");
|
||||
}
|
||||
|
||||
if (value.HasMember("opacity")) {
|
||||
klass.opacity = parseFunction(value["opacity"]);
|
||||
klass.opacity_transition = parseTransition(value, "opacity");
|
||||
klass.specifiers.insert("opacity");
|
||||
}
|
||||
|
||||
return klass;
|
||||
@@ -771,13 +731,11 @@ BackgroundClass StyleParser::parseBackgroundClass(JSVal value) {
|
||||
if (value.HasMember("color")) {
|
||||
klass.color = parseColor(value["color"]);
|
||||
klass.color_transition = parseTransition(value, "color");
|
||||
klass.specifiers.insert("color");
|
||||
}
|
||||
|
||||
if (value.HasMember("opacity")) {
|
||||
klass.opacity = parseFunction(value["opacity"]);
|
||||
klass.opacity_transition = parseTransition(value, "opacity");
|
||||
klass.specifiers.insert("opacity");
|
||||
}
|
||||
|
||||
return klass;
|
||||
|
||||
Reference in New Issue
Block a user