allow setting prerender state with a function too

This commit is contained in:
Konstantin Käfer
2014-06-01 18:12:44 +02:00
parent 1be972eb15
commit 67bbcd5334
4 changed files with 21 additions and 18 deletions

View File

@@ -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": [

View File

@@ -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;

View File

@@ -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

View File

@@ -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")) {