diff --git a/README.md b/README.md new file mode 100644 index 0000000..6e234de --- /dev/null +++ b/README.md @@ -0,0 +1,104 @@ +# mess.js + +Is a stylesheet renderer for Mapnik. It's an evolution of the [Cascadenik](https://github.com/mapnik/Cascadenik) idea and language, with an emphasis on speed and flexibility. + +## MML +_incompatibility_ + +* MML files are assumed to be JSON, not XML + + +## Attachments +_new_ + +In CSS, a certain object can only have one instance of a property. A `
` has a specific border width and color, rules that match better than others (#id instead of .class) override previous definitions. `mess.js` acts the same way normally for the sake of familiarity and organization, but Mapnik itself is more powerful. + +Layers in Mapnik can have multiple [borders](http://trac.mapnik.org/wiki/LineSymbolizer) and multiple copies of other attributes. This ability is useful in drawing line outlines, like in the case of road borders or 'glow' effects around coasts. `mess.js` makes this accessible by allowing attachments to styles: + + #world { + line-color: #fff; + line-width: 3; + } + + #world::outline { + line-color: #000; + line-width: 6; + } + +Attachments are optional: if you don't define them, mess.js does overriding of styles just like Cascadenik. + +This brings us to another _incompatibility_: `line-inline` and `line-outline` have been removed from the language, because attachments are capable of the same trick. + +## text-name +_incompatibility_ + +Instead of the name attribute of the TextSymbolizer and ShieldSymbolizer being a part of the selector, it is a property of a rule. Thus the evaluation is less complex and one can use expressions in names. + + + + + + + + + + +
cascadenikmess.js
+
+#world NAME {
+  text-face-name: "Arial";
+}
+
+
+#world {
+  text-name: "NAME";
+  text-face-name: "Arial";
+}
+
+ +## Mapnik2 + +`mess.js` is only compatible with [Mapnik2](http://trac.mapnik.org/wiki/Mapnik2). Compatibility with Mapnik 0.7.x is not planned. + +## Rasters and Buildings + +Rasters are supported in mess.js - it knows how to download `.vrt`, `.tiff`, and soon other raster formats, and the properties of the [RasterSymbolizer](http://trac.mapnik.org/wiki/RasterSymbolizer) are exposed in the language. + +The [BuildingSymbolizer](http://trac.mapnik.org/wiki/BuildingSymbolizer) is also supported in `mess.js`. The code stores symbolizer types and properties in a JSON file (in `tree/reference.js`), so new Mapnik features can be quickly implemented here. + +## Variables & Expressions + +`mess.js` inherits from its basis in [less.js](http://lesscss.org/) some new features in CSS. One can define variables in stylesheets, and use expressions to modify them. + + @mybackground: #2B4D2D; + + Map { + background-color: @mybackground + } + + #world { + polygon-fill: @mybackground + #222; + line-color: darken(@mybackground, 10%); + } + +## FontSets + +By defining multiple fonts in a `text-face-name` definition, you create [FontSets](http://trac.mapnik.org/wiki/FontSet) in `mess.js`. These are useful for supporting multiple character sets and fallback fonts for distributed styles. + + +## Credits + +`mess.js` is based on [less.js](https://github.com/cloudhead/less.js), a CSS compiler written by Alexis Sellier. It depends on [underscore.js](https://github.com/documentcloud/underscore/). + + +## Usage + +Using the binary + + messc map_file.json + +## Authors + +* Tom MacWright (tmcw) +* Konstantin Käfer (kkaefer) +* AJ Ashton (ajashton) \ No newline at end of file diff --git a/README.txt b/README.txt deleted file mode 100644 index 4b734ca..0000000 --- a/README.txt +++ /dev/null @@ -1,81 +0,0 @@ - - _) - __ `__ \ _ \ __| __| | __| - | | | __/\__ \\__ \ |\__ \ - _| _| _|\___|____/____/_) |____/ - ___/ - - - mess.js is an attempt to use less.js to - compile cascadenik-formatted styles. - - it is inspired by but incompatible with - Cascadenik [1]. - - - = Changes from Cascadenik: - - - MML files are assumed to be JSON, not XML - - Instead of the name attribute of the TextSymbolizer - and ShieldSymbolizer being a part of the selector, it - is a property of a rule. Thus the evaluation is less - complex and one can use expressions in names. - - cascadenik: - - #world NAME { - text-face-name: "Arial"; - } - - mess: - - #world { - text-name: "NAME"; - text-face-name: "Arial"; - } - - - Pseudoelements are supported to append extra - symbolizers onto single matched rules. - - #world { - line-color: #fff; - line-width: 3; - } - - #world::outline { - line-color: #000; - line-width: 6; - } - - - outline and inline are removed, having been replaced - with pseudoelements. - - names of styles in XML are derived from layer names, - rather than being entirely autogenerated - - less.js variables and expressions are supported - - fontsets are supported by simply specifying multiple - font names - - - = Credits - - mess.js is based on less.js [2], a CSS compiler - written by Alexis Sellier. It includes - underscore.js [3]. - - like less, mess.js provides a binary in bin/, - named mess, although it is designed primarily - for usage as a library. - - = Usage - - messc map_file.json - - = Authors - - Tom MacWright (tmcw) - Konstantin Käfer (kkaefer) - AJ Ashton (ajashton) - - [1]: https://github.com/mapnik/Cascadenik - [2]: https://github.com/cloudhead/less.js - [3]: https://github.com/documentcloud/underscore/