
meta {
    title: "HiDPI Support";
    version: "1.12_2025-01-13";
    description: "Allows to scale the nodes size and the font size of the default JOSM mappaint style.";
    icon: "HiDPISupportLogo.svg";
    author: "Klumbumbus";
    link: "https://josm.openstreetmap.de/wiki/Styles/HiDPISupport";
    min-josm-version: "10018";
    /* This mapcss mappaint style is a temporary solution until all hidpi issues are solved. */
}

setting::shrink_nodes {
  type: boolean;
  label: tr("Less obtrusive node symbols at low zoom");
  default: true;
}

* {
    font-size-summand: JOSM_pref("font-size-summand", 2);
}
node {
    node-size-factor: JOSM_pref("node-size-factor", 1.8);
}


node["openGeoDB:type"],
node[place] {
    font-size: 10 + prop("font-size-summand");
}

node|z-16,
node[!is_prop_set("icon-image")]!.maxspeedclass {
    symbol-size: 2 * prop("node-size-factor");
}

way > node|z16[setting("shrink_nodes")]!:tagged { symbol-size: 1 * prop("node-size-factor"); }

node|z17[setting("shrink_nodes")]               { symbol-size: 4 * prop("node-size-factor"); }
way > node|z17[setting("shrink_nodes")]         { symbol-size: 2 * prop("node-size-factor"); }
node|z17[setting("shrink_nodes")]:connection    { symbol-size: 4 * prop("node-size-factor"); }

node|z18[setting("shrink_nodes")]               { symbol-size: 4 * prop("node-size-factor"); }
way > node|z18[setting("shrink_nodes")]         { symbol-size: 3 * prop("node-size-factor"); }
node|z18[setting("shrink_nodes")]:connection    { symbol-size: 5 * prop("node-size-factor"); }

node|z19-[setting("shrink_nodes")]              { symbol-size: 4 * prop("node-size-factor"); }
way > node|z19-[setting("shrink_nodes")]        { symbol-size: 4 * prop("node-size-factor"); }
node|z19-[setting("shrink_nodes")]:connection   { symbol-size: 6 * prop("node-size-factor"); }

node[!setting("shrink_nodes")]                  { symbol-size: 4 * prop("node-size-factor"); }
way > node[!setting("shrink_nodes")]            { symbol-size: 4 * prop("node-size-factor"); }
node[!setting("shrink_nodes")]:connection       { symbol-size: 6 * prop("node-size-factor"); }

node:selected {
    symbol-size: 6 * prop("node-size-factor");
}

node|z-18,area|z-18 { font-size: 8 + prop("font-size-summand"); }
node|z19,area|z19   { font-size: 9 + prop("font-size-summand"); }
node|z20-,area|z20- { font-size: 10 + prop("font-size-summand"); }

way|z17[highway] {
    font-size: 9 + prop("font-size-summand");
}
way|z18[highway] {
    font-size: 10 + prop("font-size-summand");
}
way|z19[highway] {
    font-size: 11 + prop("font-size-summand");
}
way|z20-[highway] {
    font-size: 12 + prop("font-size-summand");
}
