Skip to content
This repository has been archived by the owner on Jan 12, 2024. It is now read-only.

Commit

Permalink
updated raster colorizer support
Browse files Browse the repository at this point in the history
  • Loading branch information
Dane Springmeyer committed Feb 1, 2013
1 parent 55fbafe commit 74fa914
Show file tree
Hide file tree
Showing 7 changed files with 54 additions and 3 deletions.
18 changes: 18 additions & 0 deletions lib/carto/functions.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,24 @@ tree.functions = {
if (rgb.some(isNaN) || isNaN(a)) return null;
return new tree.Color(rgb, a);
},
// Only require val
stop: function (val) {
if (arguments.length > 1) var color = arguments[1];
if (arguments.length > 2) var mode = arguments[2];

return {
is: 'tag',
val: val,
color: color,
mode: mode,
toString: function(env) {
return '\n\t<stop value="' + val.ev(env) + '"' +
(color ? ' color="' + color.ev(env) + '" ' : '') +
(mode ? ' mode="' + mode.ev(env) + '" ' : '') +
'/>';
}
};
},
hsl: function (h, s, l) {
return this.hsla(h, s, l, 1.0);
},
Expand Down
2 changes: 1 addition & 1 deletion lib/carto/tree/call.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ tree.Call.prototype = {
}

if (this.name in tree.functions) {
if (tree.functions[this.name].length === args.length) {
if (tree.functions[this.name].length <= args.length) {
var val = tree.functions[this.name].apply(tree.functions, args);
if (val === null) {
env.error({
Expand Down
5 changes: 4 additions & 1 deletion lib/carto/tree/definition.js
Original file line number Diff line number Diff line change
Expand Up @@ -130,14 +130,17 @@ tree.Definition.prototype.symbolizersToXML = function(env, symbolizers, zoom) {
if (x && x.serialization && x.serialization === 'content') {
selfclosing = false;
tagcontent = attributes[j].ev(env).toXML(env, true);
} else if (x && x.serialization && x.serialization === 'tag') {
selfclosing = false;
tagcontent = attributes[j].ev(env).toXML(env, true);
} else {
xml += attributes[j].ev(env).toXML(env) + ' ';
}
}
if (selfclosing) {
xml += '/>\n';
} else {
if (tagcontent.indexOf('<Format') != -1) {
if (tagcontent.indexOf('<') != -1) {
xml += '>' + tagcontent + '</' + name + '>\n';
} else {
xml += '><![CDATA[' + tagcontent + ']]></' + name + '>\n';
Expand Down
6 changes: 6 additions & 0 deletions lib/carto/tree/reference.js
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,12 @@ ref.validValue = function(env, selector, value) {
}
}
return true;
} else if (ref.selector(selector).type == 'tags') {
if (!value.value) return false;
for (i = 0; i < value.value[0].value.length; i++) {
if (value.value[0].value[i].is !== 'tag') return false;
}
return true;
} else if (ref.selector(selector).type == 'functions') {
// For backwards compatibility, you can specify a string for `functions`-compatible
// values, though they will not be validated.
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
},
"dependencies": {
"underscore": "~1.4.3",
"mapnik-reference": "~5.0.3",
"mapnik-reference": "https://github.com/mapnik/mapnik-reference/archive/raster-colorizer.tar.gz",
"xml2js": "~0.1.13",
"optimist": "~0.3.5"
},
Expand Down
14 changes: 14 additions & 0 deletions test/rendering/rastercolorizer.mml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
"Stylesheet": [
"rastercolorizer.mss"
],
"Layer": [{
"name": "world",
"srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
"Datasource": {
"file": "http://tilemill-data.s3.amazonaws.com/test_data/shape_demo.zip",
"type": "shape"
}
}]
}
10 changes: 10 additions & 0 deletions test/rendering/rastercolorizer.mss
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#world {
raster-opacity:0;
raster-colorizer-default-mode:discrete;
raster-colorizer-default-color:#f00;
raster-colorizer-epsilon:0.05;
raster-colorizer-stops:
stop(5, #f00)
stop(10, #f40, linear)
stop(10, #f80);
}

0 comments on commit 74fa914

Please sign in to comment.