Warning: not very CSS like proposal coming up!
I've recently been toying with how to optimise OpenStreetPad's stylesheet code,
and found that a large gain could be found by supporting the exit; statement in
MapCSS, and allowing lots of checking to be omitted by stopping checking rules
after a certain one had matched. This has made OSP about 20 times faster at
styling using its default style sheet.
However... I want to go further. A second way to be able to omit checks, and
to add more expressivity to the language, would be to allow nesting of MapCSS
selectors like this:
> way[highway]
> {
> width: 8pt;
> color: rgb(1.0, 1.0, 1.0);
> casing-width: 1pt;
> casing-color: rgb(0.5, 0.5, 0.5);
>
> z-index: 100;
>
> text-position: line;
>
> font-family: Helvetica;
> font-size: 12pt;
> text-color: black;
> text-offset: 6;
> text-halo-radius: 2pt;
> text-halo-color: white;
>
> way|z16-[highway],
> way|z12-[highway="motorway"],
> way|z14-[highway="trunk"],
> way|z15-[highway="primary"]
> {
> text: tag("name");
> }
>
> way[highway="motorway"],
> way[highway="motorway_link"]
> {
> width: 16pt;
> z-index: 100.5;
> color: rgb(0.745 , 0.784, 1.0);
> font-size: 14pt;
> }
>
> exit;
> }
This would allow an object to be checked for the existence of a highway tag
(for example) exactly once, but still allow fine grained control over how each
different highway= value should be rendered. More so, it allows the user to
add details (like for example, access=no highways rendering with red dots on
them) to the way of that type much more easily, as they can simply add a nested
selector inside the highway selector.
Before I ran off and implemented this, I wanted to run it past everyone – is
this viable?
Thanks
Tom Davie
_______________________________________________
Mapcss mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/mapcss