Changes between Version 196 and Version 197 of Help/Styles/MapCSSImplementation
- Timestamp:
- 2021-11-07T09:39:25+01:00 (4 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Help/Styles/MapCSSImplementation
v196 v197 7 7 * [wikitr:/Rules Validator rules], see [wikitr:/Help/Validator/MapCSSTagChecker MapCSS tag checker] for the special part for rules only. 8 8 * [wikitr:/Help/Action/Search Search dialog] 9 9 10 10 11 == General Structure == … … 38 39 }}} 39 40 41 40 42 == Selectors == 41 ''Selectors'' denote the filter expressions of a MapCSS rule. The rule is only applied to a map object, if its selectors match 42 with the object. 43 44 Selectors in MapCSS are different from standard CSS for the web. MapCSS only supports a subset of the standard CSS selectors, but 45 extends them with additional selectors required for OSM data. 43 ''Selectors'' denote the filter expressions of a MapCSS rule. The rule is only applied to a map object, if its selectors match with the object. 44 45 Selectors in MapCSS are different from standard CSS for the web. MapCSS only supports a subset of the standard CSS selectors, but extends them with additional selectors required for OSM data. 46 46 47 47 Some basic examples: … … 82 82 |------------------------------------------------------------------------------- 83 83 {{{#!td align=center valign=top 84 {{{node}}}, {{{way}}}, {{{relation}}}84 `node`, `way`, `relation` 85 85 }}} 86 86 {{{#!td align=left valign=top … … 89 89 |------------------------------------------------------------------------------- 90 90 {{{#!td align=center valign=top 91 {{{area}}} 91 `area` 92 92 }}} 93 93 {{{#!td align=left valign=top … … 99 99 way[natural=beach], relation[type=multipolygon][natural=beach] {...} 100 100 }}} 101 Note that {{{area}}}selects unclosed ways as well, so it may be useful to add the{{{:closed}}}pseudo class. The JOSM Validator will give a warning for unclosed ways that have an area style.102 }}} 103 |------------------------------------------------------------------------------- 104 {{{#!td align=center valign=top 105 {{{meta}}} 106 }}} 107 {{{#!td align=left valign=top 108 The {{{meta}}}selector starts a special rule that should stand at the beginning of the file. It gives some general information on the style sheet. All software that supports MapCSS should be able to parse this sections without errors, so do not use exotic syntax extensions in this part.101 Note that `area` selects unclosed ways as well, so it may be useful to add the `:closed` pseudo class. The JOSM Validator will give a warning for unclosed ways that have an area style. 102 }}} 103 |------------------------------------------------------------------------------- 104 {{{#!td align=center valign=top 105 `meta` 106 }}} 107 {{{#!td align=left valign=top 108 The `meta` selector starts a special rule that should stand at the beginning of the file. It gives some general information on the style sheet. All software that supports MapCSS should be able to parse this sections without errors, so do not use exotic syntax extensions in this part. 109 109 {{{ 110 110 #!mapcss … … 122 122 |------------------------------------------------------------------------------- 123 123 {{{#!td align=center valign=top 124 {{{canvas}}} 124 `canvas` 125 125 }}} 126 126 {{{#!td align=left valign=top … … 148 148 |- 149 149 {{{#!td align=center 150 {{{fill-color}}}150 `fill-color` 151 151 }}} 152 152 {{{#!td … … 157 157 }}} 158 158 {{{#!td align=center 159 {{{black}}} 159 `black` 160 160 }}} 161 161 |- 162 162 {{{#!td align=center 163 {{{default-points}}}163 `default-points` 164 164 }}} 165 165 {{{#!td … … 170 170 }}} 171 171 {{{#!td align=center 172 {{{true}}} 172 `true` 173 173 }}} 174 174 |- 175 175 {{{#!td align=center 176 {{{default-lines}}}176 `default-lines` 177 177 }}} 178 178 {{{#!td … … 183 183 }}} 184 184 {{{#!td align=center 185 {{{true}}} 185 `true` 186 186 }}} 187 187 }}} … … 206 206 * The functions ''prop()'' and ''is_prop_set()'' are only supported on the right side of the > sign. 207 207 * The functions ''parent_tag'' and ''parent_tags'' (see below) can be used to access tags from the parent(s). 208 * For compatibility with the MapCSS 0.2 standard, `relation[type=route][route=foot] way {/*...*/}`, without the greater-than-sign `>` is supported, too. However, no [[#Linkselector]] may be specified in this case. 209 208 * For compatibility with the MapCSS 0.2 standard, `relation[type=route][route=foot] way {/*...*/}`, without the greater-than-sign `>` is supported, too. However, no [[#Linkselector|Link selector]] may be specified in this case. 210 209 211 210 === Parent selector === … … 226 225 227 226 === Condition selector === 228 Selectors can include a set of conditions. If any of these conditions evaluates to false, the selector doesn't match and the style 229 rule isn't applied. 227 Selectors can include a set of conditions. If any of these conditions evaluates to false, the selector doesn't match and the style rule isn't applied. 230 228 231 229 An '''attribute condition''' specifies a condition on a tag of an OSM object. … … 288 286 |------------------------------------------------------------------------------- 289 287 {{{#!td align=center valign=top 290 {{{^=}}} 288 `^=` 291 289 }}} 292 290 {{{#!td align=left valign=top … … 568 566 569 567 === Territory selector === 570 571 You can test whether an object is located inside or outside of a specific territory. JOSM has an internal database for this. The [source:/trunk/resources/data/boundaries.osm territories file] can be downloaded and opened in JOSM to investigate it [attachment:boundaries.png (screenshot preview)]. It contains borders of all countries of the world. Due to performance reasons the borders are simplified. They can be refined for special cases on request. The territories are "tagged" with their [https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 ISO_3166-1_alpha-2 codes]. USA, Canada, China, India and Australia have additional boundaries for their subdivisions. See the following examples on how to use the territory selectors. Territory selectors are less useful in mappaint styles and can be very resource heavy there. However they are much more useful for [wikitr:/Help/Validator/MapCSSTagChecker mapcss based validator rules]. To select territories with left-hand-traffic or right-hand-traffic, there is a simpler way, see [#PseudoClasses]. See #10387 for main implementation of this feature. 568 You can test whether an object is located inside or outside of a specific territory. JOSM has an internal database for this. The [source:/trunk/resources/data/boundaries.osm territories file] can be downloaded and opened in JOSM to investigate it [attachment:boundaries.png (screenshot preview)]. It contains borders of all countries of the world. Due to performance reasons the borders are simplified. They can be refined for special cases on request. The territories are "tagged" with their [https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 ISO_3166-1_alpha-2 codes]. USA, Canada, China, India and Australia have additional boundaries for their subdivisions. See the following examples on how to use the territory selectors. Territory selectors are less useful in mappaint styles and can be very resource heavy there. However they are much more useful for [wikitr:/Help/Validator/MapCSSTagChecker mapcss based validator rules]. To select territories with left-hand-traffic or right-hand-traffic, there is a simpler way, see [#PseudoClasses Pseudo Classes]. See #10387 for main implementation of this feature. 572 569 573 570 {{{ … … 586 583 }}} 587 584 588 === Link selector === 585 === Link selector === #Linkselector 589 586 In a child selector, you can formulate conditions on the link between a parent and a child object. 590 587 … … 611 608 }}} 612 609 {{{#!td align=left valign=top 613 Exact match of the role name. The name name {{{role}}}is compulsory in this context.610 Exact match of the role name. The name `role` is compulsory in this context. 614 611 }}} 615 612 {{{#!td align=left valign=top … … 621 618 }}} 622 619 623 The operators {{{!=, ^=, $=, *=, and ~=}}} are supported too. Please refer to [#condition_selector_operators condition selector operators]. 624 625 Nodes in ways and members in relations are ordered. You can formulate conditions on the position of a node in a way or a member 626 object in a relation. Positive numbers count from first to last element, negative numbers (since r8236) count from last to first element. 620 The operators `!=`, `^=`, `$=`, `*=` and `~=` are supported too. Please refer to [#condition_selector_operators condition selector operators]. 621 622 Nodes in ways and members in relations are ordered. You can formulate conditions on the position of a node in a way or a member object in a relation. Positive numbers count from first to last element, negative numbers (since r8236) count from last to first element. 627 623 628 624 {{{ … … 642 638 }}} 643 639 644 645 640 === Zoom selector === 646 You can decorate a type selector with a '''zoom selector'''. The zoom selector restricts the range of zoom levels 647 at which the respective MapCSS rule is applied. 641 You can decorate a type selector with a '''zoom selector'''. The zoom selector restricts the range of zoom levels at which the respective MapCSS rule is applied. 648 642 649 643 {{{#!th align=center valign=top … … 654 648 }}} 655 649 |------------------------------------------------------------------------------- 656 || {{{way|z12 {...}}}}|| At zoom level 12 ||657 || {{{way|z13-15 {...}}}}|| From 13 to 15 ||658 || {{{way|z16- {...}}}}|| 16 and above ||659 || {{{way|z-12 {...}}}}|| 12 and below ||660 || {{{way {...}}}}|| any zoom level ||650 || `way|z12 {...} ` || At zoom level 12 || 651 || `way|z13-15 {...} ` || From 13 to 15 || 652 || `way|z16- {...} ` || 16 and above || 653 || `way|z-12 {...} ` || 12 and below || 654 || `way {...} ` || any zoom level || 661 655 662 656 The precise definition of scale ranges for each zoom level may change in the future. By rule of thumb you can expect to be approximately at zoom level ''n'' when imagery displays slippymap tiles of level ''n''. 663 657 664 665 === Pseudo Classes === 658 === Pseudo Classes === #PseudoClasses 666 659 See [/doc/org/openstreetmap/josm/gui/mappaint/mapcss/ConditionFactory.PseudoClasses.html Javadoc] for the up-to-date list of pseudo classes supported by JOSM's MapCSS implementation. 667 660 668 661 ||= Class =||= Description =|| 669 || {{{:closed}}}|| true for ways where the first node is the same as the last and for any (completely downloaded) multipolygon relation ||670 || {{{:closed2}}}|| same as above, but this one ignores if a multipolygon is downloaded completely (since r9099) ||671 || {{{:completely_downloaded}}}|| true for a relation whose members are all downloaded (since r9099) ||672 || {{{:new}}}|| all new objects ||673 || {{{:connection}}}|| true for nodes that are used by more than one way ||674 || {{{:unconnected}}}|| true for nodes that are not used by any way (since r6687) ||675 || {{{:tagged}}} || What JOSM considers tagged, i.e. an object that with a tag key other than the following: {{{source*, source_ref, note, comment, converted_by, created_by, watch*, fixme, FIXME, description, attribution}}} (version r4008; in this list, {{{*}}}is a glob)676 || {{{:righthandtraffic}}}|| true if there is right-hand traffic at the current location (since r7193); see [wikitr:/left-right-hand-traffic left-right-hand-traffic] for screenshot of areas ||677 || {{{:clockwise}}}|| Whether the way is closed and oriented clockwise, or non-closed and the 1st, 2nd and last node are in clockwise order. ||678 || {{{:anticlockwise}}}|| Whether the way is closed and oriented anticlockwise, or non-closed and the 1st, 2nd and last node are in anticlockwise order. ||679 || {{{:unclosed_multipolygon}}}|| true for fully loaded unclosed multipolygon relations (since r8252) ||680 || {{{:open_end}}}|| to select end nodes of unclosed multipolygon relations with `relation:unclosed_multipolygon >:open_end node` (since r8252) ||681 || {{{:in-downloaded-area}}}|| true if an object is within source area and false if in the hatched area (since r8495). ||682 || {{{:selected}}}|| true if an object is selected in the editor (since r9341). ||683 || {{{:modified}}}|| changed and new objects (since r7193). ||684 You can also negate pseudo classes. E.g. {{{!:new}}}for all old objects.662 || `:closed` || true for ways where the first node is the same as the last and for any (completely downloaded) multipolygon relation || 663 || `:closed2` || same as above, but this one ignores if a multipolygon is downloaded completely (since r9099) || 664 || `:completely_downloaded` || true for a relation whose members are all downloaded (since r9099) || 665 || `:new` || all new objects || 666 || `:connection` || true for nodes that are used by more than one way || 667 || `:unconnected` || true for nodes that are not used by any way (since r6687) || 668 || `:tagged` || What JOSM considers tagged, i.e. an object that with a tag key other than the following: `source*`, `source_ref`, `note`, `comment`, `converted_by`, `created_by`, `watch*`, `fixme`, `FIXME`, `description`, `attribution` (version r4008; in this list, `*` is a glob) 669 || `:righthandtraffic` || true if there is right-hand traffic at the current location (since r7193); see [wikitr:/left-right-hand-traffic left-right-hand-traffic] for screenshot of areas || 670 || `:clockwise` || Whether the way is closed and oriented clockwise, or non-closed and the 1st, 2nd and last node are in clockwise order. || 671 || `:anticlockwise` || Whether the way is closed and oriented anticlockwise, or non-closed and the 1st, 2nd and last node are in anticlockwise order. || 672 || `:unclosed_multipolygon` || true for fully loaded unclosed multipolygon relations (since r8252) || 673 || `:open_end` || to select end nodes of unclosed multipolygon relations with `relation:unclosed_multipolygon >:open_end node` (since r8252) || 674 || `:in-downloaded-area` || true if an object is within source area and false if in the hatched area (since r8495). || 675 || `:selected` || true if an object is selected in the editor (since r9341). || 676 || `:modified` || changed and new objects (since r7193). || 677 You can also negate pseudo classes. E.g. `!:new` for all old objects. 685 678 686 679 === Layer Identifier === 687 688 680 Layers can be used to create more than one style for a single object. Here is an example: 689 681 {{{ … … 713 705 } 714 706 }}} 715 This draws all secondary and tertiary roads in yellow and orange respectively. Any road with an access tag other than yes will get an extra line style below (''' {{{object-z-index:-1.0;}}}''') the main line. If that part of the street happens to be a bridge, it will also get a half transparent blue overlay. The relative width value ('''{{{width: +2;}}}''') refers to the width on the default layer (2 or 3 in this case).707 This draws all secondary and tertiary roads in yellow and orange respectively. Any road with an access tag other than yes will get an extra line style below ('''`object-z-index:-1.0;`''') the main line. If that part of the street happens to be a bridge, it will also get a half transparent blue overlay. The relative width value ('''`width: +2;`''') refers to the width on the default layer (2 or 3 in this case). 716 708 717 709 The name for the layer can be any identifier. 718 710 719 If you omit the layer in the selector, this is the same as using {{{::default}}}.711 If you omit the layer in the selector, this is the same as using `::default`. 720 712 721 713 One more example: … … 740 732 [[Image(multiple_icons_and_texts.png,link=)]] 741 733 742 In addition, you can use the * layer to override and initialize all layers. [[br]]734 In addition, you can use the * layer to override and initialize all layers. \\ 743 735 It overrides all existing subparts, so 744 736 … … 781 773 way::A { a; b; } 782 774 }}} 783 784 775 785 776 === Grouping === … … 822 813 way.path { text:auto; text-color: green; text-position: line; text-offset: 5; } 823 814 }}} 824 You can also negate classes. E.g. {{{way!.path}}} for all ways, which are not part of the class ''.path''. 825 815 You can also negate classes. E.g. `way!.path` for all ways, which are not part of the class ''.path''. 826 816 827 817 === @supports Conditional Processing === … … 875 865 }}} 876 866 {{{#!td 877 Only include {{{@supports}}}section when the current version of JOSM is greater than or equal to the specified number.867 Only include `@supports` section when the current version of JOSM is greater than or equal to the specified number. 878 868 }}} 879 869 |- … … 882 872 }}} 883 873 {{{#!td 884 Only include {{{@supports}}}section when the current version of JOSM is lower than or equal to the specified number.874 Only include `@supports` section when the current version of JOSM is lower than or equal to the specified number. 885 875 }}} 886 876 |- … … 889 879 }}} 890 880 {{{#!td 891 Only include {{{@supports}}}section when the name of the editor / renderer matches the given string. In JOSM, the only accepted value is{{{josm}}}.892 }}} 893 894 Conditions can be combined with {{{and}}}:881 Only include `@supports` section when the name of the editor / renderer matches the given string. In JOSM, the only accepted value is `josm`. 882 }}} 883 884 Conditions can be combined with `and`: 895 885 896 886 {{{ … … 901 891 }}} 902 892 903 Other logical operators like {{{or}}} and {{{not}}}can also be used. Parentheses are needed if you want to combine different logical operators:893 Other logical operators like `or` and `not` can also be used. Parentheses are needed if you want to combine different logical operators: 904 894 905 895 {{{ … … 920 910 }}} 921 911 912 922 913 == Style settings == 923 924 914 [wikitr:/Help/Dialog/MapPaint/StyleSettings Styles settings] are used to provide the user settings to customize a mappaint style. The user can use them in the [wikitr:/Help/Dialog/MapPaint MapPaint dialog]. The following `type` of settings are available: 925 915 * `boolean` (since r7450) … … 929 919 930 920 === Settings of type `boolean` === 931 932 921 Create a setting of type `boolean`: 933 922 {{{ … … 950 939 951 940 === Settings of type `double` === 952 953 941 Create a setting of type `double`: 954 942 {{{ … … 970 958 971 959 === Settings of type `string` === 972 973 960 Create a setting of type `string`: 974 961 {{{ … … 990 977 991 978 === Settings of type `color` === 992 993 Create a setting of type `color`. The `default` color can be any color as understood under https://josm.openstreetmap.de/wiki/Help/Styles/MapCSSImplementation#Propertyvaluesexplanations: 979 Create a setting of type `color`. The `default` color can be any color as understood under [wikitr:/Help/Styles/MapCSSImplementation#Propertyvaluesexplanations Property values explanations]: 994 980 {{{ 995 981 #!mapcss … … 1010 996 1011 997 === Grouping settings === 1012 1013 998 Similar settings can be grouped together by defining ''settings groups'' (since r15289): 1014 999 … … 1035 1020 }}} 1036 1021 1037 Settings groups are displayed as sub-menus from the style settings menu. If at least two settings belong to a group, a special "Toggle all settings" menu item allows to quickly switch on/off all settings from this group at once. Usage example: wiki:/Styles/MapWithAI. 1022 Settings groups are displayed as sub-menus from the style settings menu. If at least two settings belong to a group, a special "Toggle all settings" menu item allows to quickly switch on/off all settings from this group at once. Usage example: [wiki:/Styles/MapWithAI MapWithAI]. 1023 1038 1024 1039 1025 == Properties ==#Properties 1040 1041 1026 === General properties === 1042 1027 1043 1028 ||= '''Key''' =||= '''Description''' =||= '''Value Format''' =||= '''Default Value''' =|| 1044 || {{{z-index}}}|| Specify the order the objects are drawn: The objects with higher z-index are drawn on top of objects with lower z-index || ''Number'' (can be negative) || 0 ||1045 || {{{major-z-index}}}|| Similar to{{{z-index}}}, but it has higher priority than{{{z-index}}}. So if one object has a higher{{{major-z-index}}}than the other, it is drawn on top. If the{{{major-z-index}}} is the same, {{{z-index}}}decides. || ''Number'' (can be negative) || Depends on style element: area: 1, casing: 2, left-/right-casing: 2.1, line-pattern: 2.9, line: 3, point: 4, default-point: 4.1, line-text: 4.9, point-text: 5 ||1046 || {{{object-z-index}}}|| Similar to{{{z-index}}}, but has lower priority. Controls the painting order for overlapping objects. E.g. for two crossing ways with text: Use{{{z-index}}} or {{{major-z-index}}}if you first want to draw the two lines and then the two captions. Use{{{object-z-index}}}if one of the ways should be completely on top of the other. || ''Number'' (can be negative) || 0 ||1047 || {{{modifier}}}|| Better control, whether a default line / node symbol is generated by JOSM. This happens when there is no proper style ({{{modifier=false}}}) found on any layer. ||{{{false}}} or {{{true}}} || {{{false}}} for the default layer and {{{true}}}for any other layer ||1029 || `z-index` || Specify the order the objects are drawn: The objects with higher z-index are drawn on top of objects with lower z-index || ''Number'' (can be negative) || 0 || 1030 || `major-z-index` || Similar to `z-index`, but it has higher priority than `z-index`. So if one object has a higher `major-z-index` than the other, it is drawn on top. If the `major-z-index` is the same, `z-index` decides. || ''Number'' (can be negative) || Depends on style element: area: 1, casing: 2, left-/right-casing: 2.1, line-pattern: 2.9, line: 3, point: 4, default-point: 4.1, line-text: 4.9, point-text: 5 || 1031 || `object-z-index` || Similar to `z-index`, but has lower priority. Controls the painting order for overlapping objects. E.g. for two crossing ways with text: Use `z-index` or `major-z-index` if you first want to draw the two lines and then the two captions. Use `object-z-index` if one of the ways should be completely on top of the other. || ''Number'' (can be negative) || 0 || 1032 || `modifier` || Better control, whether a default line / node symbol is generated by JOSM. This happens when there is no proper style (`modifier=false`) found on any layer. || `false` or `true` || `false` for the default layer and `true` for any other layer || 1048 1033 1049 1034 Note that due to performance reasons the values for the three z-indexes are limited to 24 bit float values with max. 5 decimal digits. Currently the internal mappaint style uses values with max. 2 digits before and after the decimal separator. To avoid problems use values of z-indexes between -99.999 and +99.999. (See also #14485) 1050 1035 1051 1052 1036 === Icon and symbol styles === 1053 1037 1054 1038 ||= '''Key''' =||= '''Description''' =||= '''Value Format''' =||= '''Default Value''' =|| 1055 || {{{icon-image}}}|| The icon at node position. See also [wikitr:/Help/Styles/Images Images]. || ''Image'' || - ||1056 || {{{icon-opacity}}}|| Opacity of the icon image || ''Opacity'' || 1.0 ||1057 || {{{icon-width}}}|| Width of the icon. If only one of the properties{{{icon-width}}} and {{{icon-height}}}is given, the image will be scaled proportionally. The icon will keep the original size, if neither{{{icon-width}}} nor {{{icon-height}}}is set. || ''Number'' || - ||1058 || {{{icon-height}}}|| Height of the icon. (See{{{icon-width}}}) || ''Number'' || - ||1039 || `icon-image` || The icon at node position. See also [wikitr:/Help/Styles/Images Images]. || ''Image'' || - || 1040 || `icon-opacity` || Opacity of the icon image || ''Opacity'' || 1.0 || 1041 || `icon-width` || Width of the icon. If only one of the properties `icon-width` and `icon-height` is given, the image will be scaled proportionally. The icon will keep the original size, if neither `icon-width` nor `icon-height` is set. || ''Number'' || - || 1042 || `icon-height` || Height of the icon. (See `icon-width`) || ''Number'' || - || 1059 1043 || `icon-offset-x` || Shift the icon in horizontal direction (positive values to the right) (since r8085) || ''Number'' || 0 || 1060 1044 || `icon-offset-y` || Shift the icon in vertical direction (positive values downwards) (since r8085) || ''Number'' || 0 || 1061 1045 || `icon-rotation` || Rotate the icon clockwise or anti clockwise (negative value)(since r8260) || `[rad]`, `[rad]rad`, `[deg]°`, `[deg]deg`, `[grad]grad`, `[turn]turn` ([https://developer.mozilla.org/en/docs/Web/CSS/angle definition]) or a cardinal direction (e.g. `northeast` or `sw`); See also the functions `degree_to_radians`, `cardinal_to_radians`. || - || 1062 || `icon-position` || Define the position of the icon for areas. Same as `text-position` (since r11730). || {{{center}}}, {{{inside}}}, {{{line}}} || {{{center}}} || 1063 || {{{symbol-shape}}} || Display a symbol at the position of the node || {{{square}}}, {{{circle}}}, {{{triangle}}}, {{{pentagon}}}, {{{hexagon}}}, {{{heptagon}}}, {{{octagon}}}, {{{nonagon}}}, {{{decagon}}} || - || 1064 || {{{symbol-size}}} || Size of the symbol || ''Number'', can be relative ("+4") || 10 || 1065 || {{{symbol-stroke-width}}} || outline stroke width || ''Width'' || 1.0 if {{{symbol-stroke-color}}} is set || 1066 || {{{symbol-stroke-color}}} || line color || ''Color'' || {{{#FFC800}}} if {{{symbol-stroke-width}}} is set || 1067 || {{{symbol-stroke-opacity}}} || line opacity || ''Opacity'' || 1.0 || 1068 || {{{symbol-fill-color}}} || fill color for the shape || ''Color'' || {{{blue}}}, unless either {{{symbol-stroke-width}}} or {{{symbol-stroke-color}}} is set || 1069 || {{{symbol-fill-opacity}}} || fill opacity || ''Opacity'' || 1.0 || 1070 || {{{text-...}}}, {{{font-...}}} |||||| general text & font properties || 1071 || {{{text-anchor-horizontal}}} || horizontal text label placement || {{{left}}}, {{{center}}}, {{{right}}} || {{{right}}} || 1072 || {{{text-anchor-vertical}}} || vertical text label placement || {{{above}}}, {{{top}}}, {{{center}}}, {{{bottom}}}, {{{below}}} || {{{bottom}}} || 1073 || {{{text-rotation}}} || Rotate the text clockwise or anti clockwise (negative value)(since r16253) || `[rad]`, `[rad]rad`, `[deg]°`, `[deg]deg`, `[grad]grad`, `[turn]turn` ([https://developer.mozilla.org/en/docs/Web/CSS/angle definition]) or a cardinal direction (e.g. `northeast` or `sw`); See also the functions `degree_to_radians`, `cardinal_to_radians`. (Note that the direction means where the upper edge of the text faces. That means with the default direction of north the text flows to east (with a left to right language). So if you want to flow it to e.g. south you need to set east.) || - || 1074 1075 Do not rely on the default values for {{{symbol-...}}} properties (except for {{{opacity}}}). They are intended for "quick & dirty" style sheets and should be set to an explicit value. 1076 1077 1078 1079 1046 || `icon-position` || Define the position of the icon for areas. Same as `text-position` (since r11730). || `center`, `inside`, `line` || `center` || 1047 || `symbol-shape` || Display a symbol at the position of the node || `square`, `circle`, `triangle`, `pentagon`, `hexagon`, `heptagon`, `octagon`, `nonagon`, `decagon` || - || 1048 || `symbol-size` || Size of the symbol || ''Number'', can be relative ("+4") || 10 || 1049 || `symbol-stroke-width` || outline stroke width || ''Width'' || 1.0 if `symbol-stroke-color` is set || 1050 || `symbol-stroke-color` || line color || ''Color'' || `#FFC800` if `symbol-stroke-width` is set || 1051 || `symbol-stroke-opacity` || line opacity || ''Opacity'' || 1.0 || 1052 || `symbol-fill-color` || fill color for the shape || ''Color'' || `blue`, unless either `symbol-stroke-width` or `symbol-stroke-color` is set || 1053 || `symbol-fill-opacity` || fill opacity || ''Opacity'' || 1.0 || 1054 || `text-...`, `font-...` |||||| general text & font properties || 1055 || `text-anchor-horizontal` || horizontal text label placement || `left`, `center`, `right` || `right` || 1056 || `text-anchor-vertical` || vertical text label placement || `above`, `top`, `center`, `bottom`, `below` || `bottom` || 1057 || `text-rotation` || Rotate the text clockwise or anti clockwise (negative value) (since r16253) || `[rad]`, `[rad]rad`, `[deg]°`, `[deg]deg`, `[grad]grad`, `[turn]turn` ([https://developer.mozilla.org/en/docs/Web/CSS/angle definition]) or a cardinal direction (e.g. `northeast` or `sw`); See also the functions `degree_to_radians`, `cardinal_to_radians`. (Note that the direction means where the upper edge of the text faces. That means with the default direction of north the text flows to east (with a left to right language). So if you want to flow it to e.g. south you need to set east.) || - || 1058 1059 Do not rely on the default values for `symbol-...` properties (except for `opacity`). They are intended for "quick & dirty" style sheets and should be set to an explicit value. 1080 1060 1081 1061 === Line styles === 1082 1062 ||= '''Key''' =||= '''Description''' =||= '''Value Format''' =||= '''Default Value''' =|| 1083 || {{{width}}}|| Line width || ''Width'' || - ||1084 || {{{color}}}|| Line color || ''Color'' || value of{{{fill-color}}}or (if unset) JOSM's default untagged color ({{{#808080}}}) ||1085 || {{{opacity}}}|| How transparent the line is. || ''Opacity'' || 1.0 ||1086 || {{{dashes}}}|| An array of alternating on/off lengths || list of numbers, e.g.[[br]]> 15, 5[[br]][[br]]may be written as expression:[[br]] > {{{list(3, 4, 5, 6)}}} [[br]][[br]]or the keyword{{{none}}}[[br]]to turn dashes off || - ||1087 || {{{dashes-offset}}}|| shift the dash pattern by a certain amount || ''Number'' (>= 0) || 0 ||1088 || {{{dashes-background-color}}}|| The color to use in between the dashes (optional) || ''Color'' || - ||1089 || {{{dashes-background-opacity}}}|| Opacity value for the dashes background || ''Opacity'' || value of{{{opacity}}}||1090 || {{{linecap}}}|| Shape at the end of the line (see [https://www.w3.org/TR/SVG/painting.html#StrokeLinecapProperty here]) ||{{{none}}}, {{{round}}}, {{{square}}} || {{{none}}}||1091 || {{{linejoin}}}|| Shape at the line corners ||{{{round}}}, {{{miter}}}, {{{bevel}}} || {{{round}}}||1092 || {{{miterlimit}}}|| Applies for{{{linejoin: miter}}}. Sets the maximum overshoot when line segments meet at a very small angle || ''Number'' (>= 1.0) || 10.0 ||1093 || {{{offset}}}|| Move line to the left or right (when looking in way direction). This could be used to draw multiple lanes for one way or mark left and right side of a way differently. || ''Number'' (positive value moves line to the left, negative to the right) || 0 ||1094 || {{{text-position}}}|| set to{{{line}}}, if text should be drawn along the line ||{{{line}}}, {{{center}}}|| - ||1095 || {{{text-...}}}, {{{font-...}}}|||||| general text & font properties ||1063 || `width` || Line width || ''Width'' || - || 1064 || `color` || Line color || ''Color'' || value of `fill-color` or (if unset) JOSM's default untagged color (`#808080`) || 1065 || `opacity` || How transparent the line is. || ''Opacity'' || 1.0 || 1066 || `dashes` || An array of alternating on/off lengths || list of numbers, e.g. \\> 15, 5 \\ \\may be written as expression: \\ > `list(3, 4, 5, 6)` \\ \\or the keyword `none` \\to turn dashes off || - || 1067 || `dashes-offset` || shift the dash pattern by a certain amount || ''Number'' (>= 0) || 0 || 1068 || `dashes-background-color` || The color to use in between the dashes (optional) || ''Color'' || - || 1069 || `dashes-background-opacity` || Opacity value for the dashes background || ''Opacity'' || value of `opacity` || 1070 || `linecap` || Shape at the end of the line (see [https://www.w3.org/TR/SVG/painting.html#StrokeLinecapProperty here]) || `none`, `round`, `square` || `none` || 1071 || `linejoin` || Shape at the line corners || `round`, `miter`, `bevel` || `round` || 1072 || `miterlimit` || Applies for `linejoin: miter`. Sets the maximum overshoot when line segments meet at a very small angle || ''Number'' (>= 1.0) || 10.0 || 1073 || `offset` || Move line to the left or right (when looking in way direction). This could be used to draw multiple lanes for one way or mark left and right side of a way differently. || ''Number'' (positive value moves line to the left, negative to the right) || 0 || 1074 || `text-position` || set to `line`, if text should be drawn along the line || `line`, `center` || - || 1075 || `text-...`, `font-...` |||||| general text & font properties || 1096 1076 || `repeat-image` || repeated image along a line ''(since r5801)'' || ''Image'' || - || 1097 1077 || `repeat-image-width` || Width of the image (optional, see `icon-width`) ''(since r5811)'' || ''Number'' || - || … … 1103 1083 || `repeat-image-opacity` || Opacity of the repeated image ''(since r16700)'' || ''Number'' || 1.0 || 1104 1084 1105 All these properties (except for {{{text-...}}} and {{{font-...}}}) exist also with the{{{casing-}}}prefix. The casing is a second independent line element, that is drawn below the normal line and can be used to draw a thin frame around the line in another color.1085 All these properties (except for `text-...` and `font-...`) exist also with the `casing-` prefix. The casing is a second independent line element, that is drawn below the normal line and can be used to draw a thin frame around the line in another color. 1106 1086 ||= '''Key''' =||= '''Description''' =||= '''Value Format''' =||= '''Default Value''' =|| 1107 || {{{casing-width}}}|| Width of the border on both sides of the main line. In JOSM < 5214: Total width of the casing || ''Width'' (revers to{{{width}}}if relative width is specified) || - ||1108 || {{{casing-color}}}|| Casing color || ''Color'' || value of{{{fill-color}}}or (if unset) JOSM's default untagged color ({{{#808080}}}) ||1109 || {{{casing-opacity}}}|| How transparent the casing is. || ''Opacity'' || 1.0 ||1110 || {{{casing-}}}... || ... || ... || ... ||1111 Similar to {{{casing-}}}, there is also the{{{left-casing-}}} and {{{right-casing-}}}prefix. It draws additional lines to the left and to the right of the main line.1087 || `casing-width` || Width of the border on both sides of the main line. In JOSM < 5214: Total width of the casing || ''Width'' (revers to `width` if relative width is specified) || - || 1088 || `casing-color` || Casing color || ''Color'' || value of `fill-color` or (if unset) JOSM's default untagged color (`#808080`) || 1089 || `casing-opacity` || How transparent the casing is. || ''Opacity'' || 1.0 || 1090 || `casing-`... || ... || ... || ... || 1091 Similar to `casing-`, there is also the `left-casing-` and `right-casing-` prefix. It draws additional lines to the left and to the right of the main line. 1112 1092 1113 1093 === Area styles === 1114 1094 ||= '''Key''' =||= '''Description''' =||= '''Value Format''' =||= '''Default Value''' =|| 1115 || {{{fill-color}}} || Color in which to fill the area. Until 11700, the alpha component was set to 50 to create a transparency effect. || ''Color'' || - || 1116 || {{{fill-image}}} || Image pattern || ''Image'' || - || 1117 || {{{fill-extent}}} || Set this property, to draw only the outline of the area. The number specifies, how far to fill from the border of the area towards the center. (If unset, the area will be filled completely) ''(since r9008)'' || ''Number'' || - || 1118 || {{{fill-extent-threshold}}} || Set this property, to draw full area when the given percentage of coverage is reached. Can be greater than 100% as the covered area is estimated as **perimeter * extent**. || ''Number'' || - || 1119 || {{{fill-opacity}}} || How transparent the fill is; applies to both color and image || ''Opacity'' || 0.2 ''(since r11700, 1.0 before that)'' (can be changed with the {{{mappaint.fillalpha}}} and {{{mappaint.fill-image-alpha}}} preferences) || 1120 || {{{text-position}}} || set to {{{center}}}, if text should be drawn in the center of the area. Set to {{{inside}}} to place the text completely inside the area. ''(since r11722)'' || {{{line}}}, {{{center}}}, {{{inside}}} || - || 1121 || {{{text-...}}}, {{{font-...}}} |||||| general text & font properties || 1122 Required properties to create an Area style: {{{fill-color}}} or {{{fill-image}}} 1123 1095 || `fill-color` || Color in which to fill the area. Until 11700, the alpha component was set to 50 to create a transparency effect. || ''Color'' || - || 1096 || `fill-image` || Image pattern || ''Image'' || - || 1097 || `fill-extent` || Set this property, to draw only the outline of the area. The number specifies, how far to fill from the border of the area towards the center. (If unset, the area will be filled completely) ''(since r9008)'' || ''Number'' || - || 1098 || `fill-extent-threshold` || Set this property, to draw full area when the given percentage of coverage is reached. Can be greater than 100% as the covered area is estimated as **perimeter * extent**. || ''Number'' || - || 1099 || `fill-opacity` || How transparent the fill is; applies to both color and image || ''Opacity'' || 0.2 ''(since r11700, 1.0 before that)'' (can be changed with the `mappaint.fillalpha` and `mappaint.fill-image-alpha` preferences) || 1100 || `text-position` || set to `center`, if text should be drawn in the center of the area. Set to `inside` to place the text completely inside the area. ''(since r11722)'' || `line`, `center`, `inside` || - || 1101 || `text-...`, `font-...` |||||| general text & font properties || 1102 Required properties to create an Area style: `fill-color` or `fill-image` 1124 1103 1125 1104 === Text & Font properties === … … 1138 1117 |------------------------------------------------------------------------------- 1139 1118 {{{#!td align=left valign=top 1140 {{{text}}} 1119 `text` 1141 1120 }}} 1142 1121 {{{#!td align=left valign=top … … 1144 1123 }}} 1145 1124 {{{#!td align=left valign=top 1146 {{{auto}}} 1147 Derive the text automatically. The default name tags are: " {{{name:}}}"+''<LANG>'', "{{{name}}}", "{{{int_name}}}", "{{{ref}}}", "{{{operator}}}", "{{{brand}}}" and "{{{addr:housenumber}}}".1148 1149 Configure a list of tag names in the preference " {{{mappaint.nameOrder}}}" in order to change this list. (After changing the list, a restart of JOSM is required.)1125 `auto` 1126 Derive the text automatically. The default name tags are: "`name:`"+''<LANG>'', "`name`", "`int_name`", "`ref`", "`operator`", "`brand`" and "`addr:housenumber`". 1127 1128 Configure a list of tag names in the preference "`mappaint.nameOrder`" in order to change this list. (After changing the list, a restart of JOSM is required.) 1150 1129 1151 1130 ''String'' … … 1154 1133 ''Expressions'' 1155 1134 You can enter an expression to compute the text to be displayed. Examples: 1156 * {{{eval("this is a static text")}}}- renderes a static text1157 * {{{eval(concat(tag("first"), "-", tag("second")))}}}- displays the concatenated tags "first" and "second"1158 1159 {{{""}}} 1135 * `eval("this is a static text")` - renderes a static text 1136 * `eval(concat(tag("first"), "-", tag("second")))` - displays the concatenated tags "first" and "second" 1137 1138 `""` 1160 1139 To delete a previous set text. 1161 1140 }}} … … 1164 1143 }}} 1165 1144 |------------------------------------------------------------------------------- 1166 || {{{text-color}}}|| the text color || ''Color'' ||{{{white}}}for lines and nodes,{{{#c0c0c0}}}for areas (JOSM "{{{text}}}" and "{{{areatext}}}" color preferences) ||1167 || {{{text-opacity}}}|| how transparent the text is || ''Opacity'' || 1.0 ||1168 || {{{text-offset-x}}}|| shift the text horizontally, (not supported for text along line) || ''Number'' || 0 ||1169 || {{{text-offset-y}}}(can also be written as{{{text-offset}}}) || shift the text vertically, positive values shift the text in upwards direction || ''Number'' || 0 ||1170 || {{{text-halo-radius}}}|| size of text background border (to make text visible on background with a similar color) || ''Number'' || - ||1171 || {{{text-halo-color}}}|| color of the text halo || ''Color'' || complement of the text color ||1172 || {{{text-halo-opacity}}}|| transparency for the text halo || ''Opacity'' || 1.0 ||1173 || {{{font-family}}}|| font family || ''String'' || "Droid Sans"[[br]](JOSM preference "mappaint.font") ||1174 || {{{font-size}}}|| font size || ''Number'' || 8[[br]](JOSM preference "mappaint.fontsize") ||1175 || {{{font-weight}}}|| bold or not ||{{{bold}}}, {{{normal}}} || {{{normal}}}||1176 || {{{font-style}}}|| italic or not ||{{{italic}}}, {{{normal}}} || {{{normal}}}||1145 || `text-color` || the text color || ''Color'' || `white` for lines and nodes, `#c0c0c0` for areas (JOSM "`text`" and "`areatext`" color preferences) || 1146 || `text-opacity` || how transparent the text is || ''Opacity'' || 1.0 || 1147 || `text-offset-x` || shift the text horizontally, (not supported for text along line) || ''Number'' || 0 || 1148 || `text-offset-y` (can also be written as `text-offset`) || shift the text vertically, positive values shift the text in upwards direction || ''Number'' || 0 || 1149 || `text-halo-radius` || size of text background border (to make text visible on background with a similar color) || ''Number'' || - || 1150 || `text-halo-color` || color of the text halo || ''Color'' || complement of the text color || 1151 || `text-halo-opacity` || transparency for the text halo || ''Opacity'' || 1.0 || 1152 || `font-family` || font family || ''String'' || "Droid Sans" \\(JOSM preference "mappaint.font") || 1153 || `font-size` || font size || ''Number'' || 8 \\(JOSM preference "mappaint.fontsize") || 1154 || `font-weight` || bold or not || `bold`, `normal` || `normal` || 1155 || `font-style` || italic or not || `italic`, `normal` || `normal` || 1177 1156 1178 1157 === User defined properties === … … 1183 1162 '' '''Width''' '' 1184 1163 - 14.0 (any positive number) 1185 - {{{default}}}(use JOSM's default line width, which is 2, but can be configured)1186 - {{{thinnest}}}(draws the line as thin as possible)1187 - +3 (with plus sign in front) adds the amount to the width on the default layer. This applies only for styles that are not on the default layer, e.g. highlights. Another way to write this would be {{{prop("width","default")+3}}}. For {{{casing-width}}}, this refers to the {{{width}}}value on the same layer.1164 - `default` (use JOSM's default line width, which is 2, but can be configured) 1165 - `thinnest` (draws the line as thin as possible) 1166 - +3 (with plus sign in front) adds the amount to the width on the default layer. This applies only for styles that are not on the default layer, e.g. highlights. Another way to write this would be `prop("width","default")+3`. For `casing-width`, this refers to the `width` value on the same layer. 1188 1167 1189 1168 '' '''Image''' '' … … 1192 1171 '' '''Color''' '' 1193 1172 * named color as found in [https://www.w3.org/TR/css3-color/#svg-color this] list 1194 * html style: ''' {{{#RRGGBB}}}''', '''{{{#RGB}}}''', '''{{{#RRGGBBAA}}}'''1195 * ''' {{{rgb(/*r*/, /*g*/, /*b*/)}}}''' - rgb value with arguments from 0.0 to 1.01196 * ''' {{{rgba(/*r*/, /*g*/, /*b*/, /*alpha*/)}}}''' - rgb value with alpha1197 * ''' {{{hsb_color(/*hue*/, /*saturation*/, /*brightness*/)}}}''' - color from HSB color space1173 * html style: '''`#RRGGBB`''', '''`#RGB`''', '''`#RRGGBBAA`''' 1174 * '''`rgb(/*r*/, /*g*/, /*b*/)`''' - rgb value with arguments from 0.0 to 1.0 1175 * '''`rgba(/*r*/, /*g*/, /*b*/, /*alpha*/)`''' - rgb value with alpha 1176 * '''`hsb_color(/*hue*/, /*saturation*/, /*brightness*/)`''' - color from HSB color space 1198 1177 1199 1178 '' '''Opacity''' '' … … 1201 1180 1202 1181 '' '''String''' '' 1203 * any character sequence, in quotes, e.g. {{{"images/fill.png"}}}. If the string is an identifier, quotes are optional. (Quote and backslash sign can be escaped.)1182 * any character sequence, in quotes, e.g. `"images/fill.png"`. If the string is an identifier, quotes are optional. (Quote and backslash sign can be escaped.) 1204 1183 1205 1184 '' '''Number''' '' … … 1207 1186 * has a special meaning if you put a "+" sign in front (relative width) 1208 1187 1188 1209 1189 == Eval expressions == 1210 1211 1212 1190 See [/doc/org/openstreetmap/josm/gui/mappaint/mapcss/Functions.html#method_summary Javadoc of Functions] for the up-to-date list of functions supported by JOSM's MapCSS implementation. 1213 1191 … … 1224 1202 if ('''b''') then '''fst''' else '''snd''' 1225 1203 list(a, b, ...):: 1226 create list of values, e.g. for the {{{dashes}}}property1204 create list of values, e.g. for the `dashes` property 1227 1205 get(lst, n):: 1228 1206 get the ''n''th element of the list ''lst'' (counting starts at 0) [''since r5699''] … … 1230 1208 splits string ''str'' at occurrences of the separator string ''sep'', returns a list [''since r5699''] 1231 1209 prop(''p_name''):: 1232 value of the property ''p_name'' of the current layer, e.g. prop( {{{"width"}}})1210 value of the property ''p_name'' of the current layer, e.g. prop(`"width"`) 1233 1211 prop(''p_name'', ''layer_name''):: 1234 1212 property from the layer ''layer_name'' … … 1314 1292 [https://en.wikipedia.org/wiki/Percent-encoding percent-decode] a string. [''since r11756''] 1315 1293 XML_encode(str):: 1316 escape special characters in xml. E.g. {{{<}}}becomes{{{<}}}, other special characters:{{{>}}}, {{{"}}}, {{{'}}}, {{{&}}}, {{{\n}}}, {{{\t}}} and {{{\r}}}[''since r6809'']1294 escape special characters in xml. E.g. `<` becomes `<`, other special characters: `>`, `"`, `'`, `&`, `\n`, `\t` and `\r` [''since r6809''] 1317 1295 CRC32_checksum(''str''):: 1318 1296 calculate the CRC32 checksum of a string (result is an integer from 0 to 2^32^-1) [''since r6908''] … … 1326 1304 prints a string representation of `o` to the command line, followed by a new line (for debugging) [''since r7237''] 1327 1305 JOSM_pref(''key'', ''default''):: 1328 Get value from the JOSM advanced preferences. This way you can offer certain options to the user and make the style customizable. It works with strings, numbers, colors and boolean values. [[br]][This function exists since version r3856, but with some restrictions. `JOSM_pref` always returns a string, but in version r7237 and earlier, the automatic conversion of string to boolean and color was not working. You can use the following workarounds for boolean values and color in version r7237 and earlier: `cond(JOSM_pref("myprefkey", "true")="true", "X", "O")` and `html2color(JOSM_pref("mycolor", "#FF345611"))`. These explicit conversions should be no longer necessary in version r7238 and later. Automatic conversion to a number works in any version. Furthermore, in version r16590, can be used to set color properties. So `* { set_color: JOSM_pref("pref", #000000); }` will create a color property now.]1306 Get value from the JOSM advanced preferences. This way you can offer certain options to the user and make the style customizable. It works with strings, numbers, colors and boolean values. \\[This function exists since version r3856, but with some restrictions. `JOSM_pref` always returns a string, but in version r7237 and earlier, the automatic conversion of string to boolean and color was not working. You can use the following workarounds for boolean values and color in version r7237 and earlier: `cond(JOSM_pref("myprefkey", "true")="true", "X", "O")` and `html2color(JOSM_pref("mycolor", "#FF345611"))`. These explicit conversions should be no longer necessary in version r7238 and later. Automatic conversion to a number works in any version. Furthermore, in version r16590, can be used to set color properties. So `* { set_color: JOSM_pref("pref", #000000); }` will create a color property now.] 1329 1307 setting():: 1330 1308 to use a [wikitr:/Help/Styles/MapCSSImplementation#Stylesettings style setting] [''since r7450''] … … 1340 1318 returns true if the object centroid lies at given ''lat''/''lon'' coordinates, e.g. to check for nodes at "null island" `node[at(0.0,0.0)]` [''since r12514''] 1341 1319 is_similar(''str1'', ''str2''):: 1342 returns true if the two strings are similar, but not identical, i.e., have a Levenshtein distance of 1 or 2. Example: {{{way[highway][name][is_similar(tag(name), "Main Street")]}}}checks for streets with a possible typo in the name (e.g. Main Streeg). [''since r14371'']1320 returns true if the two strings are similar, but not identical, i.e., have a Levenshtein distance of 1 or 2. Example: `way[highway][name][is_similar(tag(name), "Main Street")]` checks for streets with a possible typo in the name (e.g. Main Streeg). [''since r14371''] 1343 1321 gpx_distance():: 1344 1322 returns the lowest distance between the OSM object and a GPX point [''since r14802''] … … 1371 1349 1372 1350 === Examples === 1373 1374 1351 * circle symbol for house number with size depending of the number of digits 1375 1352 {{{ … … 1432 1409 == Compatibility notes == 1433 1410 === MapCSS 0.2 === 1434 1435 1411 ==== Grammar ==== 1436 1437 * {{{way[oneway=yes]}}} does not have any magic, you can use {{{way[oneway?]}}} instead 1438 * no {{{@import}}} 1439 * JOSM does not require {{{eval(...)}}} to be wrapped around expressions, but for compatibility with other MapCSS implementations you should write it out. 1412 * `way[oneway=yes]` does not have any magic, you can use `way[oneway?]` instead 1413 * no `@import` 1414 * JOSM does not require `eval(...)` to be wrapped around expressions, but for compatibility with other MapCSS implementations you should write it out. 1440 1415 1441 1416 ==== Properties ==== 1442 1417 At the moment, JOSM does ''not'' support the following properties: 1443 1418 line: :: 1444 {{{image}}}1419 `image` 1445 1420 label: :: 1446 {{{font-variant, text-decoration, text-transform, max-width}}}1421 `font-variant, text-decoration, text-transform, max-width` 1447 1422 shield: :: 1448 1423 not supported 1449 1424 1450 1425 === Halcyon (Potlatch 2) === 1451 1452 1426 * Text label is placed in the center of the icon. For compatibility with Halcyon put 1453 1427 {{{ … … 1457 1431 at the beginning of your style sheet. 1458 1432 * standard z-index in Halcyon is 5, but it is 0 in JOSM 1459 * ''' {{{image: circle;}}}''' corresponds to '''{{{symbol-shape: circle;}}}'''1433 * '''`image: circle;`''' corresponds to '''`symbol-shape: circle;`''' 1460 1434 1461 1435 === Kothic === 1462 1463 1436 * Kothic has support for eval, which probably differs from JOSM's eval. 1464 1437 * Kothic understands units, whereas JOSM always calculates in pixel. 1465 * The extrusion features are not available in JOSM 1438 * The extrusion features are not available in JOSM. 1466 1439 1467 1440 === Ceyx === 1468 1469 * seems to have {{{[tunnel=1]}}} instead of {{{[tunnel=yes]}}} (Halcyon) or {{{[tunnel?]}}} (JOSM) 1441 * seems to have `[tunnel=1]` instead of `[tunnel=yes]` (Halcyon) or `[tunnel?]` (JOSM) 1442 1470 1443 1471 1444 == Media queries (deprecated) == … … 1509 1482 }}} 1510 1483 {{{#!td 1511 Only include {{{@media}}}section when the current version of JOSM is greater than or equal to the specified number.1484 Only include `@media` section when the current version of JOSM is greater than or equal to the specified number. 1512 1485 }}} 1513 1486 |- … … 1516 1489 }}} 1517 1490 {{{#!td 1518 Only include {{{@media}}}section when the current version of JOSM is lower than or equal to the specified number.1491 Only include `@media` section when the current version of JOSM is lower than or equal to the specified number. 1519 1492 }}} 1520 1493 |- … … 1523 1496 }}} 1524 1497 {{{#!td 1525 Only include {{{@media}}}section when the name of the editor / renderer matches the given string. In JOSM, the only accepted value is{{{josm}}}.1526 }}} 1527 1528 Conditions can be combined with {{{and}}}:1498 Only include `@media` section when the name of the editor / renderer matches the given string. In JOSM, the only accepted value is `josm`. 1499 }}} 1500 1501 Conditions can be combined with `and`: 1529 1502 1530 1503 {{{ … … 1556 1529 1557 1530 {{{#!comment 1558 There is also the {{{not}}}keyword (see the linked css doc for details).1531 There is also the `not` keyword (see the linked css doc for details). 1559 1532 This is implemented, but probably not very useful. Feel free to add documentation. 1560 1533 }}}