style.mapcss 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775
  1. /*
  2. * This file is part of OsmInEdit, released under ISC license (see LICENSE.md)
  3. *
  4. * Copyright (c) Adrien Pavie 2019
  5. * Copyright (c) Daimler AG 2019
  6. *
  7. * Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
  8. *
  9. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  10. *
  11. */
  12. meta {
  13. title: 'OsmInEdit indoor map stylesheet';
  14. }
  15. /****************************************************************************
  16. * Labels
  17. */
  18. *[name],
  19. *[ref] {
  20. font-family: Arial;
  21. font-size: 12;
  22. font-weight: bold;
  23. text-color: black;
  24. text-offset: 6; /** Half of the font-size **/
  25. }
  26. line[name],
  27. line[ref] {
  28. text-position: line;
  29. }
  30. /****************************************************************************
  31. * Default rules
  32. */
  33. node, way {
  34. symbol-size: 24;
  35. color: #8EBEFF;
  36. opacity: 1;
  37. fill-color: white;
  38. fill-opacity: 0.7;
  39. }
  40. line {
  41. color: #8EBEFF;
  42. opacity: 1;
  43. }
  44. relation[type=multipolygon] way {
  45. width: 0;
  46. opacity: 0;
  47. }
  48. /****************************************************************************
  49. * Indoor structures
  50. */
  51. /*
  52. * Labelled features
  53. */
  54. *[indoor][ref],
  55. *[buildingpart][ref],
  56. *[room][ref] {
  57. text: ref;
  58. }
  59. *[indoor][name],
  60. *[buildingpart][name],
  61. *[room][name],
  62. *[public_transport=platform][name],
  63. *[railway=platform][name],
  64. area[highway][name],
  65. relation[type=multipolygon][highway][name] {
  66. text: name;
  67. }
  68. /*
  69. * Surface of objects
  70. */
  71. /** Rooms **/
  72. area[indoor=room],
  73. area[buildingpart=room],
  74. area[room],
  75. relation[type=multipolygon][indoor=room],
  76. relation[type=multipolygon][buildingpart=room],
  77. relation[type=multipolygon][room] {
  78. fill-color: #E0E0E0;
  79. fill-opacity: 0.5;
  80. z-index: -5;
  81. }
  82. /** Walls **/
  83. area[indoor=wall][area=yes],
  84. relation[type=multipolygon][indoor=wall] {
  85. fill-color: #444444;
  86. fill-opacity: 0.9;
  87. z-index: -2;
  88. }
  89. /** Areas (travelling spaces) **/
  90. area[indoor=~/area|corridor|level/],
  91. area[buildingpart=~/corridor|hall/],
  92. area[room=~/corridor|hall|entry|gallery|collection|entrance/],
  93. area[highway=~/pedestrian|footway|corridor/],
  94. area[railway=platform],
  95. area[public_transport=platform],
  96. area[shop=mall],
  97. relation[type=multipolygon][indoor=~/area|corridor|level/],
  98. relation[type=multipolygon][buildingpart=~/corridor|hall/],
  99. relation[type=multipolygon][room=~/corridor|hall|entry|gallery|collection|entrance/],
  100. relation[type=multipolygon][highway=~/pedestrian|footway|corridor/],
  101. relation[type=multipolygon][railway=platform],
  102. relation[type=multipolygon][public_transport=platform],
  103. relation[type=multipolygon][shop=mall] {
  104. fill-color: #EEEEEE;
  105. fill-opacity: 0.5;
  106. z-index: -6;
  107. }
  108. /** Restricted room/areas **/
  109. area[indoor=~/room|area|corridor/][access=~/private|no/],
  110. area[buildingpart][access=~/private|no/],
  111. area[room=technical],
  112. relation[type=multipolygon][indoor=~/room|area|corridor/][access=~/private|no/],
  113. relation[type=multipolygon][buildingpart][access=~/private|no/],
  114. relation[type=multipolygon][room=technical]{
  115. fill-color: #A2A2A2;
  116. }
  117. /*
  118. * Walls of objects
  119. */
  120. /** Hard wall **/
  121. area[indoor=room],
  122. area[buildingpart=~/room|hall/],
  123. area[room],
  124. *[indoor=column],
  125. *[indoor=wall],
  126. area[building],
  127. area[building:part],
  128. relation[type=multipolygon][indoor=~/room|corridor/],
  129. relation[type=multipolygon][buildingpart=~/room|corridor|hall/],
  130. relation[type=multipolygon][room],
  131. relation[type=multipolygon][building],
  132. relation[type=multipolygon][building:part] {
  133. color: #444444;
  134. opacity: 1;
  135. width: 7;
  136. }
  137. /** No wall **/
  138. area[indoor=~/area|corridor/],
  139. area[buildingpart=corridor],
  140. area[railway=platform],
  141. area[public_transport=platform],
  142. area[indoor=level],
  143. area[highway=~/pedestrian|footway|corridor/],
  144. relation[type=multipolygon][indoor=~/area|corridor/],
  145. relation[type=multipolygon][railway=platform],
  146. relation[type=multipolygon][public_transport=platform],
  147. relation[type=multipolygon][indoor=level],
  148. relation[type=multipolygon][highway=~/pedestrian|footway|corridor/] {
  149. color: #AAAAAA;
  150. opacity: 1;
  151. width: 0.5;
  152. }
  153. /** Pillars **/
  154. *[indoor=column],
  155. *[man_made=pillar],
  156. *[building:part=column] {
  157. fill-color: #999999;
  158. fill-opacity: 0.5;
  159. }
  160. /*
  161. * Room/area icons
  162. */
  163. area[room],
  164. area[area][area!=yes],
  165. relation[type=multipolygon][room],
  166. relation[type=multipolygon][area][area!=yes] {
  167. icon-image-aliases: '"amphitheatre": "auditorium", "reception": "administration", "refectory": "restaurant", "checkroom": "locker"';
  168. icon-width: 16;
  169. icon-height: 16;
  170. icon-opacity: 1;
  171. }
  172. area[room],
  173. relation[type=multipolygon][room] {
  174. icon-image: url('room_$[room].png');
  175. }
  176. area[area][area!=yes],
  177. relation[type=multipolygon][area][area!=yes] {
  178. icon-image: url('room_$[area].png');
  179. }
  180. /*
  181. * Doors
  182. */
  183. node[door][door!=no],
  184. node[entrance] {
  185. color: #003F05;
  186. fill-color: #00AB0D;
  187. opacity: 1;
  188. fill-opacity: 1;
  189. width: 5;
  190. symbol-size: 14;
  191. }
  192. line[door][door!=no],
  193. line[entrance] {
  194. color: #006804;
  195. opacity: 1;
  196. width: 12;
  197. linecap: none;
  198. }
  199. /** Passages **/
  200. node[door=no] {
  201. color: #AAAAAA;
  202. fill-color: #EEEEEE;
  203. opacity: 1;
  204. width: 1;
  205. symbol-size: 14;
  206. icon-opacity: 0;
  207. }
  208. line[door=no] {
  209. color: #AAAAAA;
  210. fill-color: #EEEEEE;
  211. opacity: 1;
  212. width: 12;
  213. linecap: none;
  214. icon-opacity: 0;
  215. }
  216. /*
  217. * Vertical passages
  218. */
  219. /** General definition **/
  220. area[buildingpart=verticalpassage],
  221. area[buildingpart:verticalpassage],
  222. area[room=~/stairs|escalator/],
  223. area[indoor=elevator],
  224. area[highway=~/elevator|lift|steps/],
  225. area[stairs=yes] {
  226. color: #7495DA;
  227. fill-color: #AEBDDA;
  228. opacity: 1;
  229. fill-opacity: 0.5;
  230. width: 2.5;
  231. z-index: -1;
  232. }
  233. /** Icons **/
  234. *[buildingpart=verticalpassage],
  235. *[buildingpart:verticalpassage],
  236. *[room=~/stairs|escalator/],
  237. *[indoor=elevator],
  238. *[highway=elevator],
  239. *[stairs=yes] {
  240. icon-width: 16;
  241. icon-height: 16;
  242. icon-opacity: 1;
  243. }
  244. *[buildingpart:verticalpassage=elevator],
  245. *[indoor=elevator],
  246. *[highway=~/elevator|lift/] {
  247. icon-image: url('highway_elevator.png');
  248. }
  249. *[buildingpart:verticalpassage=stairway],
  250. *[room=stairs],
  251. *[stairs=yes],
  252. area[highway=steps] {
  253. icon-image: url('highway_steps.png');
  254. }
  255. *[buildingpart:verticalpassage=escalator],
  256. *[room=escalator],
  257. *[conveying=yes],
  258. area[conveying=~/yes|forward|backward|reversible/] {
  259. icon-image: url('passage_escalator.png');
  260. }
  261. /** Emergency stairs **/
  262. area[buildingpart=verticalpassage][access=emergency],
  263. area[room=stairs][access=emergency],
  264. area[stairs=yes][access=emergency] {
  265. color: #009262;
  266. fill-color: #C0FFCB;
  267. icon-image: url('emergency_stairs.png');
  268. }
  269. /*
  270. * Building delimitation
  271. */
  272. area[building],
  273. area[building:part],
  274. relation[type=multipolygon][building],
  275. relation[type=multipolygon][building:part] {
  276. fill-color: #D4CACA;
  277. fill-opacity: 0.6;
  278. z-index: -10;
  279. width: 5;
  280. color: #8F5467;
  281. }
  282. /** Gradins **/
  283. area[building:part=tier],
  284. relation[type=multipolygon][building:part=tier] {
  285. color: #B4ADB3;
  286. opacity: 1;
  287. width: 1;
  288. fill-color: #BABABA;
  289. fill-opacity: 0.5;
  290. z-index: -4;
  291. }
  292. /****************************************************************************
  293. * Road objects
  294. */
  295. line[highway] {
  296. color: #9E8747;
  297. opacity: 1;
  298. width: 10;
  299. linecap: none;
  300. }
  301. line[highway=footway] {
  302. color: #C97582;
  303. dashes: 10,3;
  304. }
  305. line[highway=steps] {
  306. color: #5B8D62;
  307. dashes: 8,3;
  308. }
  309. /** Escalator **/
  310. line[conveying=~/yes|forward|backward|reversible/] {
  311. color: #848484;
  312. dashes: 8,3;
  313. }
  314. line[conveying=~/yes|forward|backward|reversible/][highway!=footway] {
  315. icon-image: url('passage_escalator.png');
  316. }
  317. /****************************************************************************
  318. * Barriers
  319. */
  320. *[barrier] {
  321. icon-image: url('barrier_$[barrier].png');
  322. color: #5B5B5B;
  323. opacity: 1;
  324. fill-opacity: 0.5;
  325. fill-color: #5B5B5B;
  326. linecap: none;
  327. }
  328. node[barrier] {
  329. fill-color: white;
  330. fill-opacity: 0.7;
  331. }
  332. line[barrier] {
  333. width: 6;
  334. icon-image: none;
  335. }
  336. *[barrier=hedge] {
  337. color: #8CD16E;
  338. }
  339. *[barrier=shelf] {
  340. color: #DBA0A0;
  341. fill-color: #DBA0A0;
  342. }
  343. /****************************************************************************
  344. * Railway
  345. */
  346. way[railway=~/rail|subway|light_rail|monorail|narrow_gauge|tram/] {
  347. color: #888888;
  348. opacity: 1;
  349. width: 15;
  350. linecap: none;
  351. dashes: 5,5;
  352. }
  353. *[railway=~/platform|subway_entrance/] {
  354. icon-image: url('railway_$[railway].png');
  355. icon-width: 16;
  356. icon-height: 16;
  357. icon-opacity: 1;
  358. }
  359. node[railway] {
  360. color: #888888;
  361. }
  362. /****************************************************************************
  363. * Aeroways
  364. */
  365. *[aeroway] {
  366. icon-image: url('aeroway_$[aeroway].png');
  367. icon-width: 16;
  368. icon-height: 16;
  369. icon-opacity: 1;
  370. }
  371. node[aeroway] {
  372. color: #0092DA;
  373. }
  374. /****************************************************************************
  375. * Labels
  376. */
  377. *[name][amenity] {
  378. text-color: #3E3E3E;
  379. }
  380. *[name][shop] {
  381. text-color: #AC39AC;
  382. }
  383. *[name][tourism] {
  384. text-color: #0099E4;
  385. }
  386. /****************************************************************************
  387. * Public transport objects
  388. */
  389. *[highway=bus_stop] {
  390. icon-image: url('highway_bus_stop.png');
  391. icon-width: 16;
  392. icon-height: 16;
  393. icon-opacity: 1;
  394. color: #0092DA;
  395. }
  396. /****************************************************************************
  397. * Amenities
  398. */
  399. /** All amenities **/
  400. *[amenity][amenity!=showcase] {
  401. fill-color: #FFDAAD;
  402. opacity: 1;
  403. fill-opacity: 0.5;
  404. icon-image: url('amenity_$[amenity].png');
  405. icon-width: 16;
  406. icon-height: 16;
  407. icon-opacity: 1;
  408. text: name;
  409. }
  410. node[amenity] {
  411. color: #734A08;
  412. fill-opacity: 0.8;
  413. fill-color: white;
  414. }
  415. /** Comfort amenities **/
  416. *[amenity=toilets],
  417. *[public_transport=waiting_area],
  418. *[room=waiting],
  419. *[area=waiting] {
  420. fill-color: #E3C8E3;
  421. }
  422. /** Small amenities **/
  423. *[amenity=~/atm|photo_booth|post_box|piano|telephone|parking_space/] {
  424. color: #FFBA66;
  425. }
  426. /** Large, landuse-like, amenities **/
  427. area[amenity=~/school|college|university|hospital|parking/],
  428. area[leisure=sports_centre],
  429. area[public_transport=station] {
  430. z-index: -9;
  431. }
  432. /** Independant amenities **/
  433. *[amenity=~/parking|parking_space|taxi|bus_station|shelter/] {
  434. color: #E0BF96;
  435. width: 1;
  436. }
  437. /** Parking for disabled people **/
  438. *[amenity=parking_space][wheelchair=yes],
  439. *[amenity=parking_space][capacity:disabled] {
  440. icon-image: url('parking_disabled.png');
  441. }
  442. /** Toilets **/
  443. *[amenity=toilets][female=~/yes|only|designated/][!male],
  444. *[amenity=toilets][female=~/yes|only|designated/][male=no] {
  445. icon-image: url('amenity_toilets_women.png');
  446. }
  447. *[amenity=toilets][male=~/yes|only|designated/][!female],
  448. *[amenity=toilets][male=~/yes|only|designated/][female=no] {
  449. icon-image: url('amenity_toilets_men.png');
  450. }
  451. *[amenity=toilets][wheelchair=~/yes|only|designated/] {
  452. icon-image: url('amenity_toilets_disabled.png');
  453. }
  454. /****************************************************************************
  455. * Shops
  456. */
  457. *[shop] {
  458. icon-image: url('shop_$[shop].png');
  459. icon-width: 16;
  460. icon-height: 16;
  461. icon-opacity: 1;
  462. opacity: 1;
  463. text: name;
  464. }
  465. node[shop] {
  466. color: #AC39AC;
  467. }
  468. *[shop][!name][brand] {
  469. text: brand;
  470. }
  471. area[shop] {
  472. fill-color: #FFDAAD;
  473. fill-opacity: 0.5;
  474. }
  475. /** Store departements **/
  476. *[department] {
  477. fill-color: #FFCFCC;
  478. color: #D29494;
  479. fill-opacity: 0.5;
  480. z-index: -4;
  481. opacity: 1;
  482. width: 0.5;
  483. }
  484. /****************************************************************************
  485. * Tourism-related objects
  486. */
  487. *[tourism=~/aquarium|artwork|attraction|gallery|hostel|hotel|motel|museum/],
  488. *[information=~/office|map/] {
  489. icon-image: url('tourism_$[tourism].png');
  490. icon-width: 16;
  491. icon-height: 16;
  492. icon-opacity: 1;
  493. color: #BF9962;
  494. fill-color: #FFF6AD;
  495. opacity: 1;
  496. fill-opacity: 0.5;
  497. text: name;
  498. }
  499. /** Glass cabinet **/
  500. *[indoor=glass_cabinet] {
  501. color: #A2CCC8;
  502. fill-color: #E3F3F5;
  503. opacity: 1;
  504. fill-opacity: 0.5;
  505. width: 2;
  506. z-index: -1;
  507. }
  508. /** Showcase **/
  509. *[amenity=showcase] {
  510. color: #A2CCC8;
  511. fill-color: #A2CCC8;
  512. opacity: 1;
  513. fill-opacity: 0.5;
  514. width: 2;
  515. z-index: -1;
  516. }
  517. /** Historic elements **/
  518. *[historic] {
  519. text: name;
  520. }
  521. node[historic] {
  522. color: #8E7409;
  523. }
  524. way[historic],
  525. relation[type=multipolygon][historic] {
  526. color: #C0B0A2;
  527. opacity: 0.5;
  528. width: 0.5;
  529. fill-color: #C0B0A2;
  530. z-index: -1;
  531. }
  532. *[historic=tomb] {
  533. icon-image: url('historic_tomb.png');
  534. icon-width: 16;
  535. icon-height: 16;
  536. icon-opacity: 1;
  537. }
  538. *[historic=artifact] {
  539. icon-image: url('tourism_archaeological.png');
  540. icon-width: 16;
  541. icon-height: 16;
  542. icon-opacity: 1;
  543. }
  544. /** Grass **/
  545. area[landuse=grass],
  546. relation[type=multipolygon][landuse=grass] {
  547. opacity: 0;
  548. width: 0;
  549. fill-color: #CFECA8;
  550. fill-opacity: 0.5;
  551. z-index: -1;
  552. }
  553. /****************************************************************************
  554. * Craft/office
  555. */
  556. *[craft] {
  557. color: #FFDAAD;
  558. fill-color: #FFDAAD;
  559. fill-opacity: 0.5;
  560. }
  561. *[office] {
  562. color: #299CEA;
  563. fill-color: #299CEA;
  564. fill-opacity: 0.5;
  565. }
  566. /****************************************************************************
  567. * Railway
  568. */
  569. *[railway=buffer_stop] {
  570. icon-image: url('railway_$[railway].png');
  571. icon-width: 16;
  572. icon-height: 16;
  573. icon-opacity: 1;
  574. }
  575. /****************************************************************************
  576. * Emergency
  577. */
  578. *[emergency] {
  579. icon-image: url('emergency_$[emergency].png');
  580. icon-width: 16;
  581. icon-height: 16;
  582. icon-opacity: 1;
  583. }
  584. node[emergency] {
  585. color: #FA0032;
  586. }
  587. /****************************************************************************
  588. * Man made
  589. */
  590. *[man_made=~/surveillance|lamp|street_lamp/] {
  591. icon-image: url('man_made_$[man_made].png');
  592. icon-image-aliases: '"street_lamp": "lamp"';
  593. icon-width: 16;
  594. icon-height: 16;
  595. icon-opacity: 1;
  596. }
  597. /****************************************************************************
  598. * Natural
  599. */
  600. *[natural=~/tree/] {
  601. icon-image: url('natural_$[natural].png');
  602. icon-width: 16;
  603. icon-height: 16;
  604. icon-opacity: 1;
  605. }
  606. way[natural] {
  607. color: #1E6B00;
  608. width: 5;
  609. }
  610. node[natural] {
  611. color: #1F6C02;
  612. }
  613. /****************************************************************************
  614. * Signaletics
  615. */
  616. *[advertising] {
  617. color: #5B5B5B;
  618. opacity: 1;
  619. icon-image: url('pub_$[advertising].png');
  620. icon-image-aliases: '"sign": "poster_box", "wall_painting": "poster_box"';
  621. }
  622. *[advertising=billboard][support=pole] {
  623. icon-image: url('pub_$[advertising]_$[support].png');
  624. }
  625. *[pole=landmark_sign] {
  626. icon-image: url('pole_landmark_sign.png');
  627. icon-width: 16;
  628. icon-height: 16;
  629. icon-opacity: 1;
  630. text: ref;
  631. }
  632. *[highway=milestone] {
  633. icon-image: url('poi_point_of_interest.png');
  634. icon-width: 16;
  635. icon-height: 16;
  636. icon-opacity: 1;
  637. text: name;
  638. }
  639. *:active {
  640. color: red;
  641. fill-color: red;
  642. }