
meta {
    title: "Priority Road";
    version: "1.2.11_2025-03-11";
    description: "Displays priority_road=* coloured.";
    icon: "priority_road_icon.svg";
    author: "Klumbumbus";
    link: "https://josm.openstreetmap.de/wiki/Styles/PriorityRoad";
    /* min-josm-version: "????"; not sure if there is one */
}

meta[lang=de] {
    title: "Vorfahrtsstraße";
    description: "Zeigt priority_road=* farbig an.";
    link: "https://josm.openstreetmap.de/wiki/Styles/PriorityRoad";
}

/* display priority_road on ways */
    /* designated */
way["priority_road"="designated"]::priority_road_layer {
    left-casing-color: priority_road_designated#00FF00;
    right-casing-color: priority_road_designated#00FF00;
    set correct_priority_road_value;
    left-casing-width: 10;
    right-casing-width: 10;
}
way["priority_road:forward"="designated"]:righthandtraffic::priority_road_layer {
    right-casing-color: priority_road_designated#00FF00;
    set correct_fw_priority_road_value;
    right-casing-width: 10;
}
way["priority_road:backward"="designated"]:righthandtraffic::priority_road_layer {
    left-casing-color: priority_road_designated#00FF00;
    set correct_bw_priority_road_value;
    left-casing-width: 10;
}
way["priority_road:forward"="designated"]!:righthandtraffic::priority_road_layer {
    left-casing-color: priority_road_designated#00FF00;
    set correct_fw_priority_road_value;
    left-casing-width: 10;
}
way["priority_road:backward"="designated"]!:righthandtraffic::priority_road_layer {
    right-casing-color: priority_road_designated#00FF00;
    set correct_bw_priority_road_value;
    right-casing-width: 10;
}

    /* yes_unposted */
way["priority_road"="yes_unposted"]::priority_road_layer {
    left-casing-color: priority_road_yes_unposted#FFEE00;
    right-casing-color: priority_road_yes_unposted#FFEE00;
    set correct_priority_road_value;
    left-casing-width: 10;
    right-casing-width: 10;
    z-index: 0.1;
}
way["priority_road:forward"="yes_unposted"]:righthandtraffic::priority_road_layer {
    right-casing-color: priority_road_yes_unposted#FFEE00;
    set correct_fw_priority_road_value;
    right-casing-width: 10;
    z-index: 0.1;
}
way["priority_road:backward"="yes_unposted"]:righthandtraffic::priority_road_layer {
    left-casing-color: priority_road_yes_unposted#FFEE00;
    set correct_bw_priority_road_value;
    left-casing-width: 10;
    z-index: 0.1;
}
way["priority_road:forward"="yes_unposted"]!:righthandtraffic::priority_road_layer {
    left-casing-color: priority_road_yes_unposted#FFEE00;
    set correct_fw_priority_road_value;
    left-casing-width: 10;
    z-index: 0.1;
}
way["priority_road:backward"="yes_unposted"]!:righthandtraffic::priority_road_layer {
    right-casing-color: priority_road_yes_unposted#FFEE00;
    set correct_bw_priority_road_value;
    right-casing-width: 10;
    z-index: 0.1;
}
    /* end */
way["priority_road"="end"]::priority_road_layer {
    left-casing-color: priority_road_end#FF0000;
    right-casing-color: priority_road_end#FF0000;
    set correct_priority_road_value;
    left-casing-width: 10;
    right-casing-width: 10;
    z-index: 0.2;
}
way["priority_road:forward"="end"]:righthandtraffic::priority_road_layer {
    right-casing-color: priority_road_end#FF0000;
    set correct_fw_priority_road_value;
    right-casing-width: 10;
    z-index: 0.2;
}
way["priority_road:backward"="end"]:righthandtraffic::priority_road_layer {
    left-casing-color: priority_road_end#FF0000;
    set correct_bw_priority_road_value;
    left-casing-width: 10;
    z-index: 0.2;
}
way["priority_road:forward"="end"]!:righthandtraffic::priority_road_layer {
    left-casing-color: priority_road_end#FF0000;
    set correct_fw_priority_road_value;
    left-casing-width: 10;
    z-index: 0.2;
}
way["priority_road:backward"="end"]!:righthandtraffic::priority_road_layer {
    right-casing-color: priority_road_end#FF0000;
    set correct_bw_priority_road_value;
    right-casing-width: 10;
    z-index: 0.2;
}

/* zoom dependency */
way|z17.correct_priority_road_value::priority_road_layer,
way|z17.correct_fw_priority_road_value:righthandtraffic::priority_road_layer,
way|z17.correct_bw_priority_road_value!:righthandtraffic::priority_road_layer {
    right-casing-width: 8;
}
way|z17.correct_priority_road_value::priority_road_layer,
way|z17.correct_fw_priority_road_value!:righthandtraffic::priority_road_layer,
way|z17.correct_bw_priority_road_value:righthandtraffic::priority_road_layer {
    left-casing-width: 8;
}
way|z-16.correct_priority_road_value::priority_road_layer,
way|z-16.correct_fw_priority_road_value:righthandtraffic::priority_road_layer,
way|z-16.correct_bw_priority_road_value!:righthandtraffic::priority_road_layer {
    right-casing-width: 6;
}
way|z-16.correct_priority_road_value::priority_road_layer,
way|z-16.correct_fw_priority_road_value!:righthandtraffic::priority_road_layer,
way|z-16.correct_bw_priority_road_value:righthandtraffic::priority_road_layer {
    left-casing-width: 6;
}

/* z index */
way.correct_priority_road_value::priority_road_layer,
way.correct_fw_priority_road_value::priority_road_layer,
way.correct_bw_priority_road_value::priority_road_layer {
    major-z-index: 1.9; /* below bridge layer of default style, to see the bridge */
}


/* report wrong value of priority_road */
way["priority_road"][!is_prop_set("correct_priority_road_value", "priority_road_layer")] { /* in default layer to override street name */
    color: yellow;
    dashes-background-color: red;
    dashes: 4,24;
    opacity: 1;
    width: 5;
    text: tr("no correct value for priority_road!");
    text-color: black;
    font-size: 11;
    text-halo-color: red;
    text-halo-radius: 2;
    casing-width: 1;
    casing-color: yellow;
}
way["priority_road:forward"][!is_prop_set("correct_fw_priority_road_value", "priority_road_layer")] {
    color: yellow;
    dashes-background-color: red;
    dashes: 4,24;
    opacity: 1;
    width: 5;
    text: tr("no correct value for priority_road:forward!");
    text-color: black;
    font-size: 11;
    text-halo-color: red;
    text-halo-radius: 2;
    casing-width: 1;
    casing-color: yellow;
}
way["priority_road:backward"][!is_prop_set("correct_bw_priority_road_value", "priority_road_layer")] {
    color: yellow;
    dashes-background-color: red;
    dashes: 4,24;
    opacity: 1;
    width: 5;
    text: tr("no correct value for priority_road:backward!");
    text-color: black;
    font-size: 11;
    text-halo-color: red;
    text-halo-radius: 2;
    casing-width: 1;
    casing-color: yellow;
}

way["priority_road:backward"][oneway?], /* in default layer to also not hide the oneway arrows */
way["priority_road:forward"][oneway=-1]
{
    color: yellow;
    dashes-background-color: red;
    dashes: 4,24;
    opacity: 1;
    width: 5;
    text: tr("priority_road opposed to oneway direction!");
    text-color: black;
    font-size: 11;
    text-halo-color: red;
    text-halo-radius: 2;
    casing-width: 1;
    casing-color: yellow;
}
node["priority_road"]::priority_road_layer,
node["priority_road:forward"]::priority_road_layer,
node["priority_road:backward"]::priority_road_layer {
    symbol-shape: triangle;
    symbol-fill-color: red;
    symbol-size: 30;
    symbol-stroke-color: yellow;
    text: tr("priority_road on a node. Use traffic_sign=* instead.");
    font-size: 10;
}
