
meta {
    title: "Incline";
    version: "2.1.10_2020-09-04";
    description: "Display of up/down arrows at the first and last node of ways with incline=*.";
    icon: "incline_icon.svg";
    author: "Klumbumbus";
    link: "https://josm.openstreetmap.de/wiki/Styles/Incline";
    min-josm-version: "8236"; /*  because of negative index counting */
}

meta[lang=de] {
    title: "Steigung (incline)";
    description: "Anzeige von hoch/runter-Pfeilen am ersten und letzten Punkt von Linien mit incline=*.";
    link: "https://josm.openstreetmap.de/wiki/De:Styles/Incline";
}

/* create settings */
setting::incline_z19 {
    type: boolean;
    label: tr("Display the arrows one zoom step earlier.");
    default: false;
}

/* evaluate the incline tags */
way[highway][incline][incline =~ /^(up|([0-9]+(\.?[0-9]+)?)[%°])$/][incline !~ /^((0(\.0+)?)[%°])$/] >[index=-1] node::incline_down_layer,
way[highway][incline][incline =~ /^(down|-([0-9]+(\.?[0-9]+)?)[%°])$/][incline !~ /^((0(\.0+)?)[%°])$/] >[index=1] node::incline_down_layer {
    set incline_down;
}

way[highway][incline][incline =~ /^(up|([0-9]+(\.?[0-9]+)?)[%°])$/][incline !~ /^((0(\.0+)?)[%°])$/] >[index=1] node::incline_up_layer,
way[highway][incline][incline =~ /^(down|-([0-9]+(\.?[0-9]+)?)[%°])$/][incline !~ /^((0(\.0+)?)[%°])$/] >[index=-1] node::incline_up_layer {
    set incline_up;
}

way[highway][incline][incline =~ /^((0(\.0+)?)[%°])$/] >[index=-1] node::incline_zero_layer,
way[highway][incline][incline =~ /^((0(\.0+)?)[%°])$/] >[index=1] node::incline_zero_layer {
    set incline_zero;
}

/* display the arrow signs */
node|z19[setting("incline_z19")].incline_down::incline_down_layer,
node|z20-.incline_down::incline_down_layer {
    text: eval("↧"); /* U+21A7 (8615) DOWNWARDS ARROW FROM BAR from https://de.wikipedia.org/wiki/Unicodeblock_Pfeile */
    text-color: incline_down#00ff00;
    font-size: 20;
    text-anchor-horizontal: center;
    text-anchor-vertical: top;
}

node|z19[setting("incline_z19")].incline_up::incline_up_layer,
node|z20-.incline_up::incline_up_layer {
    text: eval("↥"); /* U+21A5 (8613) UPWARDS ARROW FROM BAR from https://de.wikipedia.org/wiki/Unicodeblock_Pfeile */
    text-color: incline_up#ff0000;
    font-size: 20;
    text-anchor-horizontal: center;
    text-anchor-vertical: above;
}

node|z19[setting("incline_z19")].incline_zero::incline_zero_layer,
node|z20-.incline_zero::incline_zero_layer {
    text: eval("← →"); /* U+2190 (8592) LEFTWARDS ARROW and U+2192 (8594) RIGHTWARDS ARROW from https://de.wikipedia.org/wiki/Unicodeblock_Pfeile */
    text-color: incline_zero#ffff00;
    font-size: 20;
    text-anchor-horizontal: center;
    text-anchor-vertical: center;
    
}
