allow setting prerender state with a function too
This commit is contained in:
25
bin/style.js
25
bin/style.js
@@ -1820,11 +1820,12 @@ module.exports = {
|
||||
{"z": 16, "val": 10},
|
||||
{"z": 17, "val": 11}
|
||||
],
|
||||
"hillshade_prerender_size": [
|
||||
"hillshade_prerender": [
|
||||
"stops",
|
||||
{"z": 13, "val": 1024 },
|
||||
{"z": 14, "val": 512 }
|
||||
]
|
||||
{"z": 13, "val": 0},
|
||||
{"z": 14, "val": 1}
|
||||
],
|
||||
"hillshade_prerender_size": 1024
|
||||
},
|
||||
"classes": [
|
||||
{
|
||||
@@ -1977,7 +1978,7 @@ module.exports = {
|
||||
"hillshade_full_shadow": {
|
||||
"color": "#103",
|
||||
"antialias": false,
|
||||
"prerender": true,
|
||||
"prerender": "hillshade_prerender",
|
||||
"prerender-size": "hillshade_prerender_size",
|
||||
"prerender-blur": 1,
|
||||
"opacity": [
|
||||
@@ -1992,7 +1993,7 @@ module.exports = {
|
||||
"hillshade_medium_shadow": {
|
||||
"color": "#206",
|
||||
"antialias": false,
|
||||
"prerender": true,
|
||||
"prerender": "hillshade_prerender",
|
||||
"prerender-size": "hillshade_prerender_size",
|
||||
"prerender-blur": 1,
|
||||
"opacity": [
|
||||
@@ -2007,7 +2008,7 @@ module.exports = {
|
||||
"hillshade_full_highlight": {
|
||||
"color": "#fffff3",
|
||||
"antialias": false,
|
||||
"prerender": true,
|
||||
"prerender": "hillshade_prerender",
|
||||
"prerender-size": "hillshade_prerender_size",
|
||||
"prerender-blur": 1,
|
||||
"opacity": [
|
||||
@@ -2022,7 +2023,7 @@ module.exports = {
|
||||
"hillshade_medium_highlight": {
|
||||
"color": "#ffd",
|
||||
"antialias": false,
|
||||
"prerender": true,
|
||||
"prerender": "hillshade_prerender",
|
||||
"prerender-size": "hillshade_prerender_size",
|
||||
"prerender-blur": 1,
|
||||
"opacity": [
|
||||
@@ -2789,7 +2790,7 @@ module.exports = {
|
||||
"hillshade_full_shadow": {
|
||||
"color": "#103",
|
||||
"antialias": false,
|
||||
"prerender": true,
|
||||
"prerender": "hillshade_prerender",
|
||||
"prerender-size": "hillshade_prerender_size",
|
||||
"prerender-blur": 1,
|
||||
"opacity": [
|
||||
@@ -2803,7 +2804,7 @@ module.exports = {
|
||||
"hillshade_medium_shadow": {
|
||||
"color": "#206",
|
||||
"antialias": false,
|
||||
"prerender": true,
|
||||
"prerender": "hillshade_prerender",
|
||||
"prerender-size": "hillshade_prerender_size",
|
||||
"prerender-blur": 1,
|
||||
"opacity": [
|
||||
@@ -2817,7 +2818,7 @@ module.exports = {
|
||||
"hillshade_full_highlight": {
|
||||
"color": "#fdfdad",
|
||||
"antialias": false,
|
||||
"prerender": true,
|
||||
"prerender": "hillshade_prerender",
|
||||
"prerender-size": "hillshade_prerender_size",
|
||||
"prerender-blur": 1,
|
||||
"opacity": [
|
||||
@@ -2832,7 +2833,7 @@ module.exports = {
|
||||
"hillshade_medium_highlight": {
|
||||
"color": "#ffe1b7",
|
||||
"antialias": false,
|
||||
"prerender": true,
|
||||
"prerender": "hillshade_prerender",
|
||||
"prerender-size": "hillshade_prerender_size",
|
||||
"prerender-blur": 1,
|
||||
"opacity": [
|
||||
|
||||
@@ -93,7 +93,7 @@ struct GenericClass {
|
||||
boost::optional<TranslateAnchor> translateAnchor;
|
||||
boost::optional<FunctionProperty> opacity;
|
||||
boost::optional<PropertyTransition> opacity_transition;
|
||||
float prerender = false;
|
||||
boost::optional<FunctionProperty> prerender;
|
||||
boost::optional<FunctionProperty> prerenderBuffer;
|
||||
boost::optional<FunctionProperty> prerenderSize;
|
||||
boost::optional<FunctionProperty> prerenderBlur;
|
||||
@@ -110,13 +110,17 @@ struct GenericProperties {
|
||||
std::array<float, 2> translate = {{ 0, 0 }};
|
||||
TranslateAnchor translateAnchor = TranslateAnchor::Map;
|
||||
float opacity = 1.0;
|
||||
bool prerender;
|
||||
|
||||
// These are unresolved properties because the value here is per tile, so it might differ.
|
||||
boost::optional<FunctionProperty> prerender;
|
||||
boost::optional<FunctionProperty> prerenderBuffer;
|
||||
boost::optional<FunctionProperty> prerenderSize;
|
||||
boost::optional<FunctionProperty> prerenderBlur;
|
||||
|
||||
inline bool getPrerender(int8_t z) const {
|
||||
return prerender && prerender.get().evaluate<bool>(z);
|
||||
}
|
||||
|
||||
// Obtains prerender properties by integer zoom level.
|
||||
inline PrerenderProperties getPrerenderProperties(int8_t z) const {
|
||||
PrerenderProperties props;
|
||||
|
||||
@@ -152,10 +152,8 @@ void Painter::renderFill(FillBucket& bucket, const std::string& layer_name, cons
|
||||
: defaultFillProperties;
|
||||
if (!properties.enabled) return;
|
||||
|
||||
if (properties.prerender) {
|
||||
if (properties.prerender && properties.getPrerender(id.z)) {
|
||||
if (pass == Translucent) {
|
||||
|
||||
|
||||
// Buffer value around the 0..4096 extent that will be drawn into the 256x256 pixel
|
||||
// texture. We later scale the texture so that the actual bounds will align with this
|
||||
// tile's bounds. The reason we do this is so that the
|
||||
|
||||
@@ -557,7 +557,7 @@ void StyleParser::parseGenericClass(GenericClass &klass, JSVal value) {
|
||||
}
|
||||
|
||||
if (value.HasMember("prerender")) {
|
||||
klass.prerender = parseBoolean(value["prerender"]);
|
||||
klass.prerender = parseFunction(value["prerender"]);
|
||||
}
|
||||
|
||||
if (value.HasMember("prerender-buffer")) {
|
||||
|
||||
Reference in New Issue
Block a user