Skip to content
Browse files

Working with future mapnik, but oddly implemented, rastercolorizer

  • Loading branch information...
1 parent 96a41b8 commit 1dcafcc3a06e86975a9b01a99b29053c2466973c @tmcw tmcw committed Dec 9, 2011
View
19 lib/carto/functions.js
@@ -12,6 +12,25 @@ tree.functions = {
hsl: function (h, s, l) {
return this.hsla(h, s, l, 1.0);
},
+ // 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.eval(env) + '"' +
+ (color ? ' color="' + color.eval(env) + '" ' : '') +
+ (mode ? ' mode="' + mode.eval(env) + '" ' : '') +
+ '/>';
+
+ }
+ };
+ },
hsla: function (h, s, l, a) {
h = (number(h) % 360) / 360;
s = number(s); l = number(l); a = number(a);
View
3 lib/carto/tree/call.js
@@ -6,6 +6,7 @@
tree.Call = function Call(name, args, index) {
this.name = name;
this.args = args;
+ this.is = 'call';
this.index = index;
};
tree.Call.prototype = {
@@ -34,7 +35,7 @@ tree.Call.prototype = {
}
if (this.name in tree.functions) { // 1.
- if (tree.functions[this.name].length === args.length) {
+ if (tree.functions[this.name].length < args.length) {
return tree.functions[this.name].apply(tree.functions, args);
} else {
env.error({
View
3 lib/carto/tree/definition.js
@@ -111,6 +111,9 @@ tree.Definition.prototype.symbolizersToXML = function(env, symbolizers, zoom) {
if (x && x.serialization && x.serialization === 'content') {
selfclosing = false;
tagcontent = attributes[key].eval(env).toXML(env, true);
+ } else if (x && x.serialization && x.serialization === 'tag') {
+ selfclosing = false;
+ tagcontent = attributes[key].eval(env).toXML(env, true);
} else {
xml += attributes[key].eval(env).toXML(env) + ' ';
}
View
6 lib/carto/tree/reference.js
@@ -113,6 +113,12 @@ tree.Reference.validValue = function(env, selector, value) {
}
}
return true;
+ } else if (tree.Reference.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 (tree.Reference.selector(selector).validate) {
var valid = false;
View
22 lib/carto/tree/reference.json
@@ -575,6 +575,28 @@
"gaussian",
"lanczos"
]
+ },
+ "colorizer-default-mode": {
+ "css": "raster-colorizer-default-mode",
+ "type": [
+ "discrete",
+ "linear",
+ "exact"
+ ]
+ },
+ "colorizer-default-color": {
+ "css": "raster-colorizer-default-color",
+ "type": "color"
+ },
+ "colorizer-epsilon": {
+ "css": "raster-colorizer-epsilon",
+ "type": "float"
+ },
+ "stop": {
+ "css": "raster-colorizer-stops",
+ "type": "tags",
+ "serialization": "tag",
+ "tagname": "tagname"
}
},
"point": {
View
5 test/rendering/rastercolorizer.mss
@@ -3,5 +3,8 @@
raster-colorizer-default-mode:discrete;
raster-colorizer-default-color:#f00;
raster-colorizer-epsilon:0.05;
- raster-colorizer-stops:stop(5, #ff0, "linear");
+ raster-colorizer-stops:
+ stop(5, #f00)
+ stop(10, #f40, linear)
+ stop(10, #f80);
}

0 comments on commit 1dcafcc

Please sign in to comment.
Something went wrong with that request. Please try again.