diff --git a/README.md b/README.md
index 09f06857..d5b4e479 100644
--- a/README.md
+++ b/README.md
@@ -48,7 +48,8 @@ GPXSee uses [Weblate](https://hosted.weblate.org/projects/gpxsee/translations/)
GPXSee is licensed under GPL-3.0 (only). However, some 3rd party parts are using different, GPL compatible,
licenses:
* [Oxygen icons](icons/GUI) - LGPLv3
-* [Mapbox Maki icons](icons/POI) - CC0
+* [Mapbox Maki icons](icons/IMG) - CC0
+* [Map Icons Collection](icons/symbols) - CC BY SA 3.0
* [RTree implementation](src/common/rtree.h) - Public domain
* [Albers](src/map/proj/albersequal.cpp), [Geocentric](src/map/geocentric.cpp), [LCC](src/map/proj/lambertconic.cpp),
[Mercator](src/map/proj/mercator.cpp), [Polar Stereographic](src/map/proj/polarstereographic.cpp),
diff --git a/gpxsee.pro b/gpxsee.pro
index 1dcbf7e4..8abf28ec 100644
--- a/gpxsee.pro
+++ b/gpxsee.pro
@@ -33,6 +33,7 @@ HEADERS += src/common/config.h \
src/common/tifffile.h \
src/common/downloader.h \
src/common/polygon.h \
+ src/common/color.h \
src/GUI/authenticationwidget.h \
src/GUI/axislabelitem.h \
src/GUI/dirselectwidget.h \
@@ -191,7 +192,6 @@ HEADERS += src/common/config.h \
src/map/osm.h \
src/map/rmap.h \
src/map/calibrationpoint.h \
- src/map/color.h \
src/map/textitem.h \
src/map/aqmmap.h \
src/map/mapsforgemap.h \
@@ -439,58 +439,17 @@ macx {
ICON = icons/app/gpxsee.icns
QMAKE_INFO_PLIST = pkg/Info.plist
locale.path = Contents/Resources/translations
- locale.files = lang/gpxsee_en.qm \
- lang/gpxsee_cs.qm \
- lang/gpxsee_de.qm \
- lang/gpxsee_fi.qm \
- lang/gpxsee_fr.qm \
- lang/gpxsee_ru.qm \
- lang/gpxsee_sv.qm \
- lang/gpxsee_pl.qm \
- lang/gpxsee_nb.qm \
- lang/gpxsee_da.qm \
- lang/gpxsee_tr.qm \
- lang/gpxsee_es.qm \
- lang/gpxsee_pt_BR.qm \
- lang/gpxsee_uk.qm \
- lang/gpxsee_hu.qm \
- lang/gpxsee_it.qm \
- lang/gpxsee_eo.qm \
- lang/gpxsee_zh.qm
+ locale.files = lang/*.qm
csv.path = Contents/Resources
csv.files = pkg/csv
maps.path = Contents/Resources
maps.files = pkg/maps
+ symbols.path = Contents/Resources/symbols
+ symbols.files = icons/symbols/*.png
icons.path = Contents/Resources/icons
- icons.files = icons/formats/gpx.icns \
- icons/formats/tcx.icns \
- icons/formats/kml.icns \
- icons/formats/fit.icns \
- icons/formats/igc.icns \
- icons/formats/nmea.icns \
- icons/formats/plt.icns \
- icons/formats/rte.icns \
- icons/formats/wpt.icns \
- icons/formats/loc.icns \
- icons/formats/slf.icns \
- icons/formats/json.icns \
- icons/formats/cup.icns \
- icons/formats/gpi.icns \
- icons/formats/sml.icns \
- icons/formats/img.icns \
- icons/formats/jnx.icns \
- icons/formats/kap.icns \
- icons/formats/mbts.icns \
- icons/formats/rmap.icns \
- icons/formats/tba.icns \
- icons/formats/aqm.icns \
- icons/formats/sqlt.icns \
- icons/formats/ov2.icns \
- icons/formats/itn.icns \
- icons/formats/wld.icns \
- icons/formats/omd.icns \
- icons/formats/ghp.icns
- QMAKE_BUNDLE_DATA += locale maps icons csv
+ icons.files = icons/formats/*.icns
+
+ QMAKE_BUNDLE_DATA += locale maps symbols icons csv
}
win32 {
@@ -535,6 +494,8 @@ unix:!macx {
maps.path = $$PREFIX/share/gpxsee/maps
csv.files = pkg/csv/*
csv.path = $$PREFIX/share/gpxsee/csv
+ symbols.files = icons/symbols/*.png
+ symbols.path = $$PREFIX/share/gpxsee/symbols
locale.files = lang/*.qm
locale.path = $$PREFIX/share/gpxsee/translations
icon.files = icons/app/hicolor/*
@@ -544,5 +505,5 @@ unix:!macx {
mime.files = pkg/gpxsee.xml
mime.path = $$PREFIX/share/mime/packages
target.path = $$PREFIX/bin
- INSTALLS += target maps csv locale icon desktop mime
+ INSTALLS += target maps csv symbols locale icon desktop mime
}
diff --git a/gpxsee.qrc b/gpxsee.qrc
index f53ff4e6..e6fa24fa 100644
--- a/gpxsee.qrc
+++ b/gpxsee.qrc
@@ -51,85 +51,85 @@
icons/GUI/document-encrypt.png
-
-
- icons/POI/airfield-11.png
- icons/POI/airport-11.png
- icons/POI/amusement-park-11.png
- icons/POI/bakery-11.png
- icons/POI/bank-11.png
- icons/POI/bar-11.png
- icons/POI/bbq-11.png
- icons/POI/beach-11.png
- icons/POI/bowling-alley-11.png
- icons/POI/building-alt1-11.png
- icons/POI/bridge-11.png
- icons/POI/bus-11.png
- icons/POI/cafe-11.png
- icons/POI/campsite-11.png
- icons/POI/car-11.png
- icons/POI/car-rental-11.png
- icons/POI/car-repair-11.png
- icons/POI/casino-11.png
- icons/POI/cemetery-11.png
- icons/POI/cinema-11.png
- icons/POI/clothing-store-11.png
- icons/POI/communications-tower-11.png
- icons/POI/convenience-11.png
- icons/POI/dam-11.png
- icons/POI/danger-11.png
- icons/POI/drinking-water-11.png
- icons/POI/fast-food-11.png
- icons/POI/entrance-alt1-11.png
- icons/POI/fire-station-11.png
- icons/POI/fitness-centre-11.png
- icons/POI/fuel-11.png
- icons/POI/furniture-11.png
- icons/POI/garden-11.png
- icons/POI/garden-centre-11.png
- icons/POI/golf-11.png
- icons/POI/grocery-11.png
- icons/POI/hairdresser-11.png
- icons/POI/harbor-11.png
- icons/POI/hardware-11.png
- icons/POI/heliport-11.png
- icons/POI/hospital-11.png
- icons/POI/information-11.png
- icons/POI/landmark-11.png
- icons/POI/library-11.png
- icons/POI/lodging-11.png
- icons/POI/mountain-11.png
- icons/POI/museum-11.png
- icons/POI/park-11.png
- icons/POI/parking-11.png
- icons/POI/pharmacy-11.png
- icons/POI/picnic-site-11.png
- icons/POI/place-of-worship-11.png
- icons/POI/police-11.png
- icons/POI/post-11.png
- icons/POI/religious-christian-11.png
- icons/POI/religious-jewish-11.png
- icons/POI/religious-muslim-11.png
- icons/POI/restaurant-11.png
- icons/POI/restaurant-noodle-11.png
- icons/POI/restaurant-pizza-11.png
- icons/POI/restaurant-seafood-11.png
- icons/POI/roadblock-11.png
- icons/POI/school-11.png
- icons/POI/shelter-11.png
- icons/POI/shop-11.png
- icons/POI/skiing-11.png
- icons/POI/soccer-11.png
- icons/POI/swimming-11.png
- icons/POI/theatre-11.png
- icons/POI/telephone-11.png
- icons/POI/toilet-11.png
- icons/POI/town-hall-11.png
- icons/POI/viewpoint-11.png
- icons/POI/village-11.png
- icons/POI/waterfall-11.png
- icons/POI/wetland-11.png
- icons/POI/zoo-11.png
+
+
+ icons/IMG/airfield-11.png
+ icons/IMG/airport-11.png
+ icons/IMG/amusement-park-11.png
+ icons/IMG/bakery-11.png
+ icons/IMG/bank-11.png
+ icons/IMG/bar-11.png
+ icons/IMG/bbq-11.png
+ icons/IMG/beach-11.png
+ icons/IMG/bowling-alley-11.png
+ icons/IMG/building-alt1-11.png
+ icons/IMG/bridge-11.png
+ icons/IMG/bus-11.png
+ icons/IMG/cafe-11.png
+ icons/IMG/campsite-11.png
+ icons/IMG/car-11.png
+ icons/IMG/car-rental-11.png
+ icons/IMG/car-repair-11.png
+ icons/IMG/casino-11.png
+ icons/IMG/cemetery-11.png
+ icons/IMG/cinema-11.png
+ icons/IMG/clothing-store-11.png
+ icons/IMG/communications-tower-11.png
+ icons/IMG/convenience-11.png
+ icons/IMG/dam-11.png
+ icons/IMG/danger-11.png
+ icons/IMG/drinking-water-11.png
+ icons/IMG/fast-food-11.png
+ icons/IMG/entrance-alt1-11.png
+ icons/IMG/fire-station-11.png
+ icons/IMG/fitness-centre-11.png
+ icons/IMG/fuel-11.png
+ icons/IMG/furniture-11.png
+ icons/IMG/garden-11.png
+ icons/IMG/garden-centre-11.png
+ icons/IMG/golf-11.png
+ icons/IMG/grocery-11.png
+ icons/IMG/hairdresser-11.png
+ icons/IMG/harbor-11.png
+ icons/IMG/hardware-11.png
+ icons/IMG/heliport-11.png
+ icons/IMG/hospital-11.png
+ icons/IMG/information-11.png
+ icons/IMG/landmark-11.png
+ icons/IMG/library-11.png
+ icons/IMG/lodging-11.png
+ icons/IMG/mountain-11.png
+ icons/IMG/museum-11.png
+ icons/IMG/park-11.png
+ icons/IMG/parking-11.png
+ icons/IMG/pharmacy-11.png
+ icons/IMG/picnic-site-11.png
+ icons/IMG/place-of-worship-11.png
+ icons/IMG/police-11.png
+ icons/IMG/post-11.png
+ icons/IMG/religious-christian-11.png
+ icons/IMG/religious-jewish-11.png
+ icons/IMG/religious-muslim-11.png
+ icons/IMG/restaurant-11.png
+ icons/IMG/restaurant-noodle-11.png
+ icons/IMG/restaurant-pizza-11.png
+ icons/IMG/restaurant-seafood-11.png
+ icons/IMG/roadblock-11.png
+ icons/IMG/school-11.png
+ icons/IMG/shelter-11.png
+ icons/IMG/shop-11.png
+ icons/IMG/skiing-11.png
+ icons/IMG/soccer-11.png
+ icons/IMG/swimming-11.png
+ icons/IMG/theatre-11.png
+ icons/IMG/telephone-11.png
+ icons/IMG/toilet-11.png
+ icons/IMG/town-hall-11.png
+ icons/IMG/viewpoint-11.png
+ icons/IMG/village-11.png
+ icons/IMG/waterfall-11.png
+ icons/IMG/wetland-11.png
+ icons/IMG/zoo-11.png
diff --git a/icons/POI/airfield-11.png b/icons/IMG/airfield-11.png
similarity index 100%
rename from icons/POI/airfield-11.png
rename to icons/IMG/airfield-11.png
diff --git a/icons/POI/airport-11.png b/icons/IMG/airport-11.png
similarity index 100%
rename from icons/POI/airport-11.png
rename to icons/IMG/airport-11.png
diff --git a/icons/POI/amusement-park-11.png b/icons/IMG/amusement-park-11.png
similarity index 100%
rename from icons/POI/amusement-park-11.png
rename to icons/IMG/amusement-park-11.png
diff --git a/icons/POI/bakery-11.png b/icons/IMG/bakery-11.png
similarity index 100%
rename from icons/POI/bakery-11.png
rename to icons/IMG/bakery-11.png
diff --git a/icons/POI/bank-11.png b/icons/IMG/bank-11.png
similarity index 100%
rename from icons/POI/bank-11.png
rename to icons/IMG/bank-11.png
diff --git a/icons/POI/bar-11.png b/icons/IMG/bar-11.png
similarity index 100%
rename from icons/POI/bar-11.png
rename to icons/IMG/bar-11.png
diff --git a/icons/POI/bbq-11.png b/icons/IMG/bbq-11.png
similarity index 100%
rename from icons/POI/bbq-11.png
rename to icons/IMG/bbq-11.png
diff --git a/icons/POI/beach-11.png b/icons/IMG/beach-11.png
similarity index 100%
rename from icons/POI/beach-11.png
rename to icons/IMG/beach-11.png
diff --git a/icons/POI/bowling-alley-11.png b/icons/IMG/bowling-alley-11.png
similarity index 100%
rename from icons/POI/bowling-alley-11.png
rename to icons/IMG/bowling-alley-11.png
diff --git a/icons/POI/bridge-11.png b/icons/IMG/bridge-11.png
similarity index 100%
rename from icons/POI/bridge-11.png
rename to icons/IMG/bridge-11.png
diff --git a/icons/POI/building-alt1-11.png b/icons/IMG/building-alt1-11.png
similarity index 100%
rename from icons/POI/building-alt1-11.png
rename to icons/IMG/building-alt1-11.png
diff --git a/icons/POI/bus-11.png b/icons/IMG/bus-11.png
similarity index 100%
rename from icons/POI/bus-11.png
rename to icons/IMG/bus-11.png
diff --git a/icons/POI/cafe-11.png b/icons/IMG/cafe-11.png
similarity index 100%
rename from icons/POI/cafe-11.png
rename to icons/IMG/cafe-11.png
diff --git a/icons/POI/campsite-11.png b/icons/IMG/campsite-11.png
similarity index 100%
rename from icons/POI/campsite-11.png
rename to icons/IMG/campsite-11.png
diff --git a/icons/POI/car-11.png b/icons/IMG/car-11.png
similarity index 100%
rename from icons/POI/car-11.png
rename to icons/IMG/car-11.png
diff --git a/icons/POI/car-rental-11.png b/icons/IMG/car-rental-11.png
similarity index 100%
rename from icons/POI/car-rental-11.png
rename to icons/IMG/car-rental-11.png
diff --git a/icons/POI/car-repair-11.png b/icons/IMG/car-repair-11.png
similarity index 100%
rename from icons/POI/car-repair-11.png
rename to icons/IMG/car-repair-11.png
diff --git a/icons/POI/casino-11.png b/icons/IMG/casino-11.png
similarity index 100%
rename from icons/POI/casino-11.png
rename to icons/IMG/casino-11.png
diff --git a/icons/POI/cemetery-11.png b/icons/IMG/cemetery-11.png
similarity index 100%
rename from icons/POI/cemetery-11.png
rename to icons/IMG/cemetery-11.png
diff --git a/icons/POI/cinema-11.png b/icons/IMG/cinema-11.png
similarity index 100%
rename from icons/POI/cinema-11.png
rename to icons/IMG/cinema-11.png
diff --git a/icons/POI/clothing-store-11.png b/icons/IMG/clothing-store-11.png
similarity index 100%
rename from icons/POI/clothing-store-11.png
rename to icons/IMG/clothing-store-11.png
diff --git a/icons/POI/communications-tower-11.png b/icons/IMG/communications-tower-11.png
similarity index 100%
rename from icons/POI/communications-tower-11.png
rename to icons/IMG/communications-tower-11.png
diff --git a/icons/POI/convenience-11.png b/icons/IMG/convenience-11.png
similarity index 100%
rename from icons/POI/convenience-11.png
rename to icons/IMG/convenience-11.png
diff --git a/icons/POI/dam-11.png b/icons/IMG/dam-11.png
similarity index 100%
rename from icons/POI/dam-11.png
rename to icons/IMG/dam-11.png
diff --git a/icons/POI/danger-11.png b/icons/IMG/danger-11.png
similarity index 100%
rename from icons/POI/danger-11.png
rename to icons/IMG/danger-11.png
diff --git a/icons/POI/drinking-water-11.png b/icons/IMG/drinking-water-11.png
similarity index 100%
rename from icons/POI/drinking-water-11.png
rename to icons/IMG/drinking-water-11.png
diff --git a/icons/POI/entrance-alt1-11.png b/icons/IMG/entrance-alt1-11.png
similarity index 100%
rename from icons/POI/entrance-alt1-11.png
rename to icons/IMG/entrance-alt1-11.png
diff --git a/icons/POI/fast-food-11.png b/icons/IMG/fast-food-11.png
similarity index 100%
rename from icons/POI/fast-food-11.png
rename to icons/IMG/fast-food-11.png
diff --git a/icons/POI/fire-station-11.png b/icons/IMG/fire-station-11.png
similarity index 100%
rename from icons/POI/fire-station-11.png
rename to icons/IMG/fire-station-11.png
diff --git a/icons/POI/fitness-centre-11.png b/icons/IMG/fitness-centre-11.png
similarity index 100%
rename from icons/POI/fitness-centre-11.png
rename to icons/IMG/fitness-centre-11.png
diff --git a/icons/POI/fuel-11.png b/icons/IMG/fuel-11.png
similarity index 100%
rename from icons/POI/fuel-11.png
rename to icons/IMG/fuel-11.png
diff --git a/icons/POI/furniture-11.png b/icons/IMG/furniture-11.png
similarity index 100%
rename from icons/POI/furniture-11.png
rename to icons/IMG/furniture-11.png
diff --git a/icons/POI/garden-11.png b/icons/IMG/garden-11.png
similarity index 100%
rename from icons/POI/garden-11.png
rename to icons/IMG/garden-11.png
diff --git a/icons/POI/garden-centre-11.png b/icons/IMG/garden-centre-11.png
similarity index 100%
rename from icons/POI/garden-centre-11.png
rename to icons/IMG/garden-centre-11.png
diff --git a/icons/POI/golf-11.png b/icons/IMG/golf-11.png
similarity index 100%
rename from icons/POI/golf-11.png
rename to icons/IMG/golf-11.png
diff --git a/icons/POI/grocery-11.png b/icons/IMG/grocery-11.png
similarity index 100%
rename from icons/POI/grocery-11.png
rename to icons/IMG/grocery-11.png
diff --git a/icons/POI/hairdresser-11.png b/icons/IMG/hairdresser-11.png
similarity index 100%
rename from icons/POI/hairdresser-11.png
rename to icons/IMG/hairdresser-11.png
diff --git a/icons/POI/harbor-11.png b/icons/IMG/harbor-11.png
similarity index 100%
rename from icons/POI/harbor-11.png
rename to icons/IMG/harbor-11.png
diff --git a/icons/POI/hardware-11.png b/icons/IMG/hardware-11.png
similarity index 100%
rename from icons/POI/hardware-11.png
rename to icons/IMG/hardware-11.png
diff --git a/icons/POI/heliport-11.png b/icons/IMG/heliport-11.png
similarity index 100%
rename from icons/POI/heliport-11.png
rename to icons/IMG/heliport-11.png
diff --git a/icons/POI/hospital-11.png b/icons/IMG/hospital-11.png
similarity index 100%
rename from icons/POI/hospital-11.png
rename to icons/IMG/hospital-11.png
diff --git a/icons/POI/information-11.png b/icons/IMG/information-11.png
similarity index 100%
rename from icons/POI/information-11.png
rename to icons/IMG/information-11.png
diff --git a/icons/POI/landmark-11.png b/icons/IMG/landmark-11.png
similarity index 100%
rename from icons/POI/landmark-11.png
rename to icons/IMG/landmark-11.png
diff --git a/icons/POI/library-11.png b/icons/IMG/library-11.png
similarity index 100%
rename from icons/POI/library-11.png
rename to icons/IMG/library-11.png
diff --git a/icons/POI/licence.txt b/icons/IMG/licence.txt
similarity index 98%
rename from icons/POI/licence.txt
rename to icons/IMG/licence.txt
index 73caf1b7..79b151f0 100644
--- a/icons/POI/licence.txt
+++ b/icons/IMG/licence.txt
@@ -1,4 +1,4 @@
-The POI icons are Mapbox Maki icons (https://labs.mapbox.com/maki-icons/)
+The IMG style icons are Mapbox Maki icons (https://labs.mapbox.com/maki-icons/)
licensed under CC0.
-----
diff --git a/icons/POI/lodging-11.png b/icons/IMG/lodging-11.png
similarity index 100%
rename from icons/POI/lodging-11.png
rename to icons/IMG/lodging-11.png
diff --git a/icons/POI/mountain-11.png b/icons/IMG/mountain-11.png
similarity index 100%
rename from icons/POI/mountain-11.png
rename to icons/IMG/mountain-11.png
diff --git a/icons/POI/museum-11.png b/icons/IMG/museum-11.png
similarity index 100%
rename from icons/POI/museum-11.png
rename to icons/IMG/museum-11.png
diff --git a/icons/POI/park-11.png b/icons/IMG/park-11.png
similarity index 100%
rename from icons/POI/park-11.png
rename to icons/IMG/park-11.png
diff --git a/icons/POI/parking-11.png b/icons/IMG/parking-11.png
similarity index 100%
rename from icons/POI/parking-11.png
rename to icons/IMG/parking-11.png
diff --git a/icons/POI/pharmacy-11.png b/icons/IMG/pharmacy-11.png
similarity index 100%
rename from icons/POI/pharmacy-11.png
rename to icons/IMG/pharmacy-11.png
diff --git a/icons/POI/picnic-site-11.png b/icons/IMG/picnic-site-11.png
similarity index 100%
rename from icons/POI/picnic-site-11.png
rename to icons/IMG/picnic-site-11.png
diff --git a/icons/POI/place-of-worship-11.png b/icons/IMG/place-of-worship-11.png
similarity index 100%
rename from icons/POI/place-of-worship-11.png
rename to icons/IMG/place-of-worship-11.png
diff --git a/icons/POI/police-11.png b/icons/IMG/police-11.png
similarity index 100%
rename from icons/POI/police-11.png
rename to icons/IMG/police-11.png
diff --git a/icons/POI/post-11.png b/icons/IMG/post-11.png
similarity index 100%
rename from icons/POI/post-11.png
rename to icons/IMG/post-11.png
diff --git a/icons/POI/religious-christian-11.png b/icons/IMG/religious-christian-11.png
similarity index 100%
rename from icons/POI/religious-christian-11.png
rename to icons/IMG/religious-christian-11.png
diff --git a/icons/POI/religious-jewish-11.png b/icons/IMG/religious-jewish-11.png
similarity index 100%
rename from icons/POI/religious-jewish-11.png
rename to icons/IMG/religious-jewish-11.png
diff --git a/icons/POI/religious-muslim-11.png b/icons/IMG/religious-muslim-11.png
similarity index 100%
rename from icons/POI/religious-muslim-11.png
rename to icons/IMG/religious-muslim-11.png
diff --git a/icons/POI/restaurant-11.png b/icons/IMG/restaurant-11.png
similarity index 100%
rename from icons/POI/restaurant-11.png
rename to icons/IMG/restaurant-11.png
diff --git a/icons/POI/restaurant-noodle-11.png b/icons/IMG/restaurant-noodle-11.png
similarity index 100%
rename from icons/POI/restaurant-noodle-11.png
rename to icons/IMG/restaurant-noodle-11.png
diff --git a/icons/POI/restaurant-pizza-11.png b/icons/IMG/restaurant-pizza-11.png
similarity index 100%
rename from icons/POI/restaurant-pizza-11.png
rename to icons/IMG/restaurant-pizza-11.png
diff --git a/icons/POI/restaurant-seafood-11.png b/icons/IMG/restaurant-seafood-11.png
similarity index 100%
rename from icons/POI/restaurant-seafood-11.png
rename to icons/IMG/restaurant-seafood-11.png
diff --git a/icons/POI/roadblock-11.png b/icons/IMG/roadblock-11.png
similarity index 100%
rename from icons/POI/roadblock-11.png
rename to icons/IMG/roadblock-11.png
diff --git a/icons/POI/school-11.png b/icons/IMG/school-11.png
similarity index 100%
rename from icons/POI/school-11.png
rename to icons/IMG/school-11.png
diff --git a/icons/POI/shelter-11.png b/icons/IMG/shelter-11.png
similarity index 100%
rename from icons/POI/shelter-11.png
rename to icons/IMG/shelter-11.png
diff --git a/icons/POI/shop-11.png b/icons/IMG/shop-11.png
similarity index 100%
rename from icons/POI/shop-11.png
rename to icons/IMG/shop-11.png
diff --git a/icons/POI/skiing-11.png b/icons/IMG/skiing-11.png
similarity index 100%
rename from icons/POI/skiing-11.png
rename to icons/IMG/skiing-11.png
diff --git a/icons/POI/soccer-11.png b/icons/IMG/soccer-11.png
similarity index 100%
rename from icons/POI/soccer-11.png
rename to icons/IMG/soccer-11.png
diff --git a/icons/POI/swimming-11.png b/icons/IMG/swimming-11.png
similarity index 100%
rename from icons/POI/swimming-11.png
rename to icons/IMG/swimming-11.png
diff --git a/icons/POI/telephone-11.png b/icons/IMG/telephone-11.png
similarity index 100%
rename from icons/POI/telephone-11.png
rename to icons/IMG/telephone-11.png
diff --git a/icons/POI/theatre-11.png b/icons/IMG/theatre-11.png
similarity index 100%
rename from icons/POI/theatre-11.png
rename to icons/IMG/theatre-11.png
diff --git a/icons/POI/toilet-11.png b/icons/IMG/toilet-11.png
similarity index 100%
rename from icons/POI/toilet-11.png
rename to icons/IMG/toilet-11.png
diff --git a/icons/POI/town-hall-11.png b/icons/IMG/town-hall-11.png
similarity index 100%
rename from icons/POI/town-hall-11.png
rename to icons/IMG/town-hall-11.png
diff --git a/icons/POI/viewpoint-11.png b/icons/IMG/viewpoint-11.png
similarity index 100%
rename from icons/POI/viewpoint-11.png
rename to icons/IMG/viewpoint-11.png
diff --git a/icons/POI/village-11.png b/icons/IMG/village-11.png
similarity index 100%
rename from icons/POI/village-11.png
rename to icons/IMG/village-11.png
diff --git a/icons/POI/waterfall-11.png b/icons/IMG/waterfall-11.png
similarity index 100%
rename from icons/POI/waterfall-11.png
rename to icons/IMG/waterfall-11.png
diff --git a/icons/POI/wetland-11.png b/icons/IMG/wetland-11.png
similarity index 100%
rename from icons/POI/wetland-11.png
rename to icons/IMG/wetland-11.png
diff --git a/icons/POI/zoo-11.png b/icons/IMG/zoo-11.png
similarity index 100%
rename from icons/POI/zoo-11.png
rename to icons/IMG/zoo-11.png
diff --git a/icons/symbols/ATV.png b/icons/symbols/ATV.png
new file mode 100644
index 00000000..ada669e4
Binary files /dev/null and b/icons/symbols/ATV.png differ
diff --git a/icons/symbols/Airport.png b/icons/symbols/Airport.png
new file mode 100644
index 00000000..c59bfc40
Binary files /dev/null and b/icons/symbols/Airport.png differ
diff --git a/icons/symbols/Amusement Park.png b/icons/symbols/Amusement Park.png
new file mode 100644
index 00000000..341c75a7
Binary files /dev/null and b/icons/symbols/Amusement Park.png differ
diff --git a/icons/symbols/Anchor.png b/icons/symbols/Anchor.png
new file mode 100644
index 00000000..f2eb8696
Binary files /dev/null and b/icons/symbols/Anchor.png differ
diff --git a/icons/symbols/Ballpark.png b/icons/symbols/Ballpark.png
new file mode 100644
index 00000000..a7c2fb06
Binary files /dev/null and b/icons/symbols/Ballpark.png differ
diff --git a/icons/symbols/Bank.png b/icons/symbols/Bank.png
new file mode 100644
index 00000000..72535ced
Binary files /dev/null and b/icons/symbols/Bank.png differ
diff --git a/icons/symbols/Bar.png b/icons/symbols/Bar.png
new file mode 100644
index 00000000..7ed861ac
Binary files /dev/null and b/icons/symbols/Bar.png differ
diff --git a/icons/symbols/Beach.png b/icons/symbols/Beach.png
new file mode 100644
index 00000000..c6caaabe
Binary files /dev/null and b/icons/symbols/Beach.png differ
diff --git a/icons/symbols/Big Game.png b/icons/symbols/Big Game.png
new file mode 100644
index 00000000..e3803fb7
Binary files /dev/null and b/icons/symbols/Big Game.png differ
diff --git a/icons/symbols/Bike Trail.png b/icons/symbols/Bike Trail.png
new file mode 100644
index 00000000..42a3ad99
Binary files /dev/null and b/icons/symbols/Bike Trail.png differ
diff --git a/icons/symbols/Boat Ramp.png b/icons/symbols/Boat Ramp.png
new file mode 100644
index 00000000..7b0a22df
Binary files /dev/null and b/icons/symbols/Boat Ramp.png differ
diff --git a/icons/symbols/Bowling.png b/icons/symbols/Bowling.png
new file mode 100644
index 00000000..eebaede4
Binary files /dev/null and b/icons/symbols/Bowling.png differ
diff --git a/icons/symbols/Bridge.png b/icons/symbols/Bridge.png
new file mode 100644
index 00000000..03ee8b95
Binary files /dev/null and b/icons/symbols/Bridge.png differ
diff --git a/icons/symbols/Building.png b/icons/symbols/Building.png
new file mode 100644
index 00000000..f2d5f3b9
Binary files /dev/null and b/icons/symbols/Building.png differ
diff --git a/icons/symbols/Campground.png b/icons/symbols/Campground.png
new file mode 100644
index 00000000..de24a001
Binary files /dev/null and b/icons/symbols/Campground.png differ
diff --git a/icons/symbols/Car Rental.png b/icons/symbols/Car Rental.png
new file mode 100644
index 00000000..aa4657ff
Binary files /dev/null and b/icons/symbols/Car Rental.png differ
diff --git a/icons/symbols/Car Repair.png b/icons/symbols/Car Repair.png
new file mode 100644
index 00000000..07e96d55
Binary files /dev/null and b/icons/symbols/Car Repair.png differ
diff --git a/icons/symbols/Car.png b/icons/symbols/Car.png
new file mode 100644
index 00000000..fbf3e2d5
Binary files /dev/null and b/icons/symbols/Car.png differ
diff --git a/icons/symbols/Cemetary.png b/icons/symbols/Cemetary.png
new file mode 100644
index 00000000..007ed2b4
Binary files /dev/null and b/icons/symbols/Cemetary.png differ
diff --git a/icons/symbols/Church.png b/icons/symbols/Church.png
new file mode 100644
index 00000000..d4262da1
Binary files /dev/null and b/icons/symbols/Church.png differ
diff --git a/icons/symbols/Crossing.png b/icons/symbols/Crossing.png
new file mode 100644
index 00000000..fa1164d6
Binary files /dev/null and b/icons/symbols/Crossing.png differ
diff --git a/icons/symbols/Dam.png b/icons/symbols/Dam.png
new file mode 100644
index 00000000..b5942345
Binary files /dev/null and b/icons/symbols/Dam.png differ
diff --git a/icons/symbols/Drinking Water.png b/icons/symbols/Drinking Water.png
new file mode 100644
index 00000000..c0347bed
Binary files /dev/null and b/icons/symbols/Drinking Water.png differ
diff --git a/icons/symbols/Fastfood.png b/icons/symbols/Fastfood.png
new file mode 100644
index 00000000..f8b1d860
Binary files /dev/null and b/icons/symbols/Fastfood.png differ
diff --git a/icons/symbols/Fishing Area.png b/icons/symbols/Fishing Area.png
new file mode 100644
index 00000000..39718f0c
Binary files /dev/null and b/icons/symbols/Fishing Area.png differ
diff --git a/icons/symbols/Forest.png b/icons/symbols/Forest.png
new file mode 100644
index 00000000..048f9b0f
Binary files /dev/null and b/icons/symbols/Forest.png differ
diff --git a/icons/symbols/Furbearer.png b/icons/symbols/Furbearer.png
new file mode 100644
index 00000000..b3410b37
Binary files /dev/null and b/icons/symbols/Furbearer.png differ
diff --git a/icons/symbols/Gas Station.png b/icons/symbols/Gas Station.png
new file mode 100644
index 00000000..85e69247
Binary files /dev/null and b/icons/symbols/Gas Station.png differ
diff --git a/icons/symbols/Ghost Town.png b/icons/symbols/Ghost Town.png
new file mode 100644
index 00000000..3af19157
Binary files /dev/null and b/icons/symbols/Ghost Town.png differ
diff --git a/icons/symbols/Golf Course.png b/icons/symbols/Golf Course.png
new file mode 100644
index 00000000..b5adf473
Binary files /dev/null and b/icons/symbols/Golf Course.png differ
diff --git a/icons/symbols/Ground Transportation.png b/icons/symbols/Ground Transportation.png
new file mode 100644
index 00000000..4ef4ac4e
Binary files /dev/null and b/icons/symbols/Ground Transportation.png differ
diff --git a/icons/symbols/Heliport.png b/icons/symbols/Heliport.png
new file mode 100644
index 00000000..a2756dda
Binary files /dev/null and b/icons/symbols/Heliport.png differ
diff --git a/icons/symbols/Hunting Area.png b/icons/symbols/Hunting Area.png
new file mode 100644
index 00000000..91053458
Binary files /dev/null and b/icons/symbols/Hunting Area.png differ
diff --git a/icons/symbols/Iceskating.png b/icons/symbols/Iceskating.png
new file mode 100644
index 00000000..55894baa
Binary files /dev/null and b/icons/symbols/Iceskating.png differ
diff --git a/icons/symbols/Information.png b/icons/symbols/Information.png
new file mode 100644
index 00000000..0578db8a
Binary files /dev/null and b/icons/symbols/Information.png differ
diff --git a/icons/symbols/Library.png b/icons/symbols/Library.png
new file mode 100644
index 00000000..95c0f5d4
Binary files /dev/null and b/icons/symbols/Library.png differ
diff --git a/icons/symbols/Live Theater.png b/icons/symbols/Live Theater.png
new file mode 100644
index 00000000..83ffa65f
Binary files /dev/null and b/icons/symbols/Live Theater.png differ
diff --git a/icons/symbols/Lodging.png b/icons/symbols/Lodging.png
new file mode 100644
index 00000000..8281131e
Binary files /dev/null and b/icons/symbols/Lodging.png differ
diff --git a/icons/symbols/Marina.png b/icons/symbols/Marina.png
new file mode 100644
index 00000000..b2a9286e
Binary files /dev/null and b/icons/symbols/Marina.png differ
diff --git a/icons/symbols/Medical Facility.png b/icons/symbols/Medical Facility.png
new file mode 100644
index 00000000..ca7709cf
Binary files /dev/null and b/icons/symbols/Medical Facility.png differ
diff --git a/icons/symbols/Military.png b/icons/symbols/Military.png
new file mode 100644
index 00000000..a0ff7915
Binary files /dev/null and b/icons/symbols/Military.png differ
diff --git a/icons/symbols/Mine.png b/icons/symbols/Mine.png
new file mode 100644
index 00000000..a60a1608
Binary files /dev/null and b/icons/symbols/Mine.png differ
diff --git a/icons/symbols/Movie Theater.png b/icons/symbols/Movie Theater.png
new file mode 100644
index 00000000..43c89a6a
Binary files /dev/null and b/icons/symbols/Movie Theater.png differ
diff --git a/icons/symbols/Museum.png b/icons/symbols/Museum.png
new file mode 100644
index 00000000..921b4a81
Binary files /dev/null and b/icons/symbols/Museum.png differ
diff --git a/icons/symbols/Oil Field.png b/icons/symbols/Oil Field.png
new file mode 100644
index 00000000..b2677f3d
Binary files /dev/null and b/icons/symbols/Oil Field.png differ
diff --git a/icons/symbols/Parachute Area.png b/icons/symbols/Parachute Area.png
new file mode 100644
index 00000000..0abea756
Binary files /dev/null and b/icons/symbols/Parachute Area.png differ
diff --git a/icons/symbols/Park.png b/icons/symbols/Park.png
new file mode 100644
index 00000000..83a252d9
Binary files /dev/null and b/icons/symbols/Park.png differ
diff --git a/icons/symbols/Parking Area.png b/icons/symbols/Parking Area.png
new file mode 100644
index 00000000..43394077
Binary files /dev/null and b/icons/symbols/Parking Area.png differ
diff --git a/icons/symbols/Pharmacy.png b/icons/symbols/Pharmacy.png
new file mode 100644
index 00000000..ebc93033
Binary files /dev/null and b/icons/symbols/Pharmacy.png differ
diff --git a/icons/symbols/Picnic Area.png b/icons/symbols/Picnic Area.png
new file mode 100644
index 00000000..2663f6bc
Binary files /dev/null and b/icons/symbols/Picnic Area.png differ
diff --git a/icons/symbols/Police Station.png b/icons/symbols/Police Station.png
new file mode 100644
index 00000000..ebc3b50e
Binary files /dev/null and b/icons/symbols/Police Station.png differ
diff --git a/icons/symbols/Post Office.png b/icons/symbols/Post Office.png
new file mode 100644
index 00000000..6b769881
Binary files /dev/null and b/icons/symbols/Post Office.png differ
diff --git a/icons/symbols/RV Park.png b/icons/symbols/RV Park.png
new file mode 100644
index 00000000..273503b0
Binary files /dev/null and b/icons/symbols/RV Park.png differ
diff --git a/icons/symbols/Radio Beacon.png b/icons/symbols/Radio Beacon.png
new file mode 100644
index 00000000..193f1386
Binary files /dev/null and b/icons/symbols/Radio Beacon.png differ
diff --git a/icons/symbols/Residence.png b/icons/symbols/Residence.png
new file mode 100644
index 00000000..93385c1a
Binary files /dev/null and b/icons/symbols/Residence.png differ
diff --git a/icons/symbols/Restaurant.png b/icons/symbols/Restaurant.png
new file mode 100644
index 00000000..060a2674
Binary files /dev/null and b/icons/symbols/Restaurant.png differ
diff --git a/icons/symbols/Restroom.png b/icons/symbols/Restroom.png
new file mode 100644
index 00000000..4ab916fe
Binary files /dev/null and b/icons/symbols/Restroom.png differ
diff --git a/icons/symbols/Scenic Area.png b/icons/symbols/Scenic Area.png
new file mode 100644
index 00000000..4fe02721
Binary files /dev/null and b/icons/symbols/Scenic Area.png differ
diff --git a/icons/symbols/School.png b/icons/symbols/School.png
new file mode 100644
index 00000000..ae122593
Binary files /dev/null and b/icons/symbols/School.png differ
diff --git a/icons/symbols/Shipwreck.png b/icons/symbols/Shipwreck.png
new file mode 100644
index 00000000..71284726
Binary files /dev/null and b/icons/symbols/Shipwreck.png differ
diff --git a/icons/symbols/Shopping Center.png b/icons/symbols/Shopping Center.png
new file mode 100644
index 00000000..e3a4faf7
Binary files /dev/null and b/icons/symbols/Shopping Center.png differ
diff --git a/icons/symbols/Ski Resort.png b/icons/symbols/Ski Resort.png
new file mode 100644
index 00000000..42b69a36
Binary files /dev/null and b/icons/symbols/Ski Resort.png differ
diff --git a/icons/symbols/Skiing Area.png b/icons/symbols/Skiing Area.png
new file mode 100644
index 00000000..fc6d6f47
Binary files /dev/null and b/icons/symbols/Skiing Area.png differ
diff --git a/icons/symbols/Skull and Crossbones.png b/icons/symbols/Skull and Crossbones.png
new file mode 100644
index 00000000..6a167954
Binary files /dev/null and b/icons/symbols/Skull and Crossbones.png differ
diff --git a/icons/symbols/Small Game.png b/icons/symbols/Small Game.png
new file mode 100644
index 00000000..000f2d3a
Binary files /dev/null and b/icons/symbols/Small Game.png differ
diff --git a/icons/symbols/Stadium.png b/icons/symbols/Stadium.png
new file mode 100644
index 00000000..c8e396c2
Binary files /dev/null and b/icons/symbols/Stadium.png differ
diff --git a/icons/symbols/Summit.png b/icons/symbols/Summit.png
new file mode 100644
index 00000000..26760484
Binary files /dev/null and b/icons/symbols/Summit.png differ
diff --git a/icons/symbols/Tall Tower.png b/icons/symbols/Tall Tower.png
new file mode 100644
index 00000000..0e420884
Binary files /dev/null and b/icons/symbols/Tall Tower.png differ
diff --git a/icons/symbols/Telephone.png b/icons/symbols/Telephone.png
new file mode 100644
index 00000000..cacb3b5e
Binary files /dev/null and b/icons/symbols/Telephone.png differ
diff --git a/icons/symbols/Trail Head.png b/icons/symbols/Trail Head.png
new file mode 100644
index 00000000..3cf19cf2
Binary files /dev/null and b/icons/symbols/Trail Head.png differ
diff --git a/icons/symbols/Truck Stop.png b/icons/symbols/Truck Stop.png
new file mode 100644
index 00000000..f2bcafbf
Binary files /dev/null and b/icons/symbols/Truck Stop.png differ
diff --git a/icons/symbols/Truck.png b/icons/symbols/Truck.png
new file mode 100644
index 00000000..adbdc048
Binary files /dev/null and b/icons/symbols/Truck.png differ
diff --git a/icons/symbols/Tunnel.png b/icons/symbols/Tunnel.png
new file mode 100644
index 00000000..6ae605bd
Binary files /dev/null and b/icons/symbols/Tunnel.png differ
diff --git a/icons/symbols/Ultralight Area.png b/icons/symbols/Ultralight Area.png
new file mode 100644
index 00000000..7c770a52
Binary files /dev/null and b/icons/symbols/Ultralight Area.png differ
diff --git a/icons/symbols/Upland Game.png b/icons/symbols/Upland Game.png
new file mode 100644
index 00000000..85c13368
Binary files /dev/null and b/icons/symbols/Upland Game.png differ
diff --git a/icons/symbols/Water Hydrant.png b/icons/symbols/Water Hydrant.png
new file mode 100644
index 00000000..fdf05a15
Binary files /dev/null and b/icons/symbols/Water Hydrant.png differ
diff --git a/icons/symbols/Water Source.png b/icons/symbols/Water Source.png
new file mode 100644
index 00000000..f33e7508
Binary files /dev/null and b/icons/symbols/Water Source.png differ
diff --git a/icons/symbols/Waterfowl.png b/icons/symbols/Waterfowl.png
new file mode 100644
index 00000000..02cacc36
Binary files /dev/null and b/icons/symbols/Waterfowl.png differ
diff --git a/icons/symbols/Waypoint.png b/icons/symbols/Waypoint.png
new file mode 100644
index 00000000..6ad8e9be
Binary files /dev/null and b/icons/symbols/Waypoint.png differ
diff --git a/icons/symbols/Winery.png b/icons/symbols/Winery.png
new file mode 100644
index 00000000..53685211
Binary files /dev/null and b/icons/symbols/Winery.png differ
diff --git a/icons/symbols/Zoo.png b/icons/symbols/Zoo.png
new file mode 100644
index 00000000..a57b6ef5
Binary files /dev/null and b/icons/symbols/Zoo.png differ
diff --git a/icons/symbols/licence.txt b/icons/symbols/licence.txt
new file mode 100644
index 00000000..29429c01
--- /dev/null
+++ b/icons/symbols/licence.txt
@@ -0,0 +1,364 @@
+The symbols icons are "Map Icons Collection" (https://mapicons.mapsmarker.com)
+icons licensed under CC BY SA 3.0.
+
+-----
+
+Creative Commons Legal Code
+
+Attribution-ShareAlike 3.0 Unported
+
+ CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
+ LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
+ ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
+ INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
+ REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
+ DAMAGES RESULTING FROM ITS USE.
+
+License
+
+THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
+COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
+COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
+AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
+
+BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE
+TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY
+BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS
+CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
+CONDITIONS.
+
+1. Definitions
+
+ a. "Adaptation" means a work based upon the Work, or upon the Work and
+ other pre-existing works, such as a translation, adaptation,
+ derivative work, arrangement of music or other alterations of a
+ literary or artistic work, or phonogram or performance and includes
+ cinematographic adaptations or any other form in which the Work may be
+ recast, transformed, or adapted including in any form recognizably
+ derived from the original, except that a work that constitutes a
+ Collection will not be considered an Adaptation for the purpose of
+ this License. For the avoidance of doubt, where the Work is a musical
+ work, performance or phonogram, the synchronization of the Work in
+ timed-relation with a moving image ("synching") will be considered an
+ Adaptation for the purpose of this License.
+ b. "Collection" means a collection of literary or artistic works, such as
+ encyclopedias and anthologies, or performances, phonograms or
+ broadcasts, or other works or subject matter other than works listed
+ in Section 1(f) below, which, by reason of the selection and
+ arrangement of their contents, constitute intellectual creations, in
+ which the Work is included in its entirety in unmodified form along
+ with one or more other contributions, each constituting separate and
+ independent works in themselves, which together are assembled into a
+ collective whole. A work that constitutes a Collection will not be
+ considered an Adaptation (as defined below) for the purposes of this
+ License.
+ c. "Creative Commons Compatible License" means a license that is listed
+ at https://creativecommons.org/compatiblelicenses that has been
+ approved by Creative Commons as being essentially equivalent to this
+ License, including, at a minimum, because that license: (i) contains
+ terms that have the same purpose, meaning and effect as the License
+ Elements of this License; and, (ii) explicitly permits the relicensing
+ of adaptations of works made available under that license under this
+ License or a Creative Commons jurisdiction license with the same
+ License Elements as this License.
+ d. "Distribute" means to make available to the public the original and
+ copies of the Work or Adaptation, as appropriate, through sale or
+ other transfer of ownership.
+ e. "License Elements" means the following high-level license attributes
+ as selected by Licensor and indicated in the title of this License:
+ Attribution, ShareAlike.
+ f. "Licensor" means the individual, individuals, entity or entities that
+ offer(s) the Work under the terms of this License.
+ g. "Original Author" means, in the case of a literary or artistic work,
+ the individual, individuals, entity or entities who created the Work
+ or if no individual or entity can be identified, the publisher; and in
+ addition (i) in the case of a performance the actors, singers,
+ musicians, dancers, and other persons who act, sing, deliver, declaim,
+ play in, interpret or otherwise perform literary or artistic works or
+ expressions of folklore; (ii) in the case of a phonogram the producer
+ being the person or legal entity who first fixes the sounds of a
+ performance or other sounds; and, (iii) in the case of broadcasts, the
+ organization that transmits the broadcast.
+ h. "Work" means the literary and/or artistic work offered under the terms
+ of this License including without limitation any production in the
+ literary, scientific and artistic domain, whatever may be the mode or
+ form of its expression including digital form, such as a book,
+ pamphlet and other writing; a lecture, address, sermon or other work
+ of the same nature; a dramatic or dramatico-musical work; a
+ choreographic work or entertainment in dumb show; a musical
+ composition with or without words; a cinematographic work to which are
+ assimilated works expressed by a process analogous to cinematography;
+ a work of drawing, painting, architecture, sculpture, engraving or
+ lithography; a photographic work to which are assimilated works
+ expressed by a process analogous to photography; a work of applied
+ art; an illustration, map, plan, sketch or three-dimensional work
+ relative to geography, topography, architecture or science; a
+ performance; a broadcast; a phonogram; a compilation of data to the
+ extent it is protected as a copyrightable work; or a work performed by
+ a variety or circus performer to the extent it is not otherwise
+ considered a literary or artistic work.
+ i. "You" means an individual or entity exercising rights under this
+ License who has not previously violated the terms of this License with
+ respect to the Work, or who has received express permission from the
+ Licensor to exercise rights under this License despite a previous
+ violation.
+ j. "Publicly Perform" means to perform public recitations of the Work and
+ to communicate to the public those public recitations, by any means or
+ process, including by wire or wireless means or public digital
+ performances; to make available to the public Works in such a way that
+ members of the public may access these Works from a place and at a
+ place individually chosen by them; to perform the Work to the public
+ by any means or process and the communication to the public of the
+ performances of the Work, including by public digital performance; to
+ broadcast and rebroadcast the Work by any means including signs,
+ sounds or images.
+ k. "Reproduce" means to make copies of the Work by any means including
+ without limitation by sound or visual recordings and the right of
+ fixation and reproducing fixations of the Work, including storage of a
+ protected performance or phonogram in digital form or other electronic
+ medium.
+
+2. Fair Dealing Rights. Nothing in this License is intended to reduce,
+limit, or restrict any uses free from copyright or rights arising from
+limitations or exceptions that are provided for in connection with the
+copyright protection under copyright law or other applicable laws.
+
+3. License Grant. Subject to the terms and conditions of this License,
+Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
+perpetual (for the duration of the applicable copyright) license to
+exercise the rights in the Work as stated below:
+
+ a. to Reproduce the Work, to incorporate the Work into one or more
+ Collections, and to Reproduce the Work as incorporated in the
+ Collections;
+ b. to create and Reproduce Adaptations provided that any such Adaptation,
+ including any translation in any medium, takes reasonable steps to
+ clearly label, demarcate or otherwise identify that changes were made
+ to the original Work. For example, a translation could be marked "The
+ original work was translated from English to Spanish," or a
+ modification could indicate "The original work has been modified.";
+ c. to Distribute and Publicly Perform the Work including as incorporated
+ in Collections; and,
+ d. to Distribute and Publicly Perform Adaptations.
+ e. For the avoidance of doubt:
+
+ i. Non-waivable Compulsory License Schemes. In those jurisdictions in
+ which the right to collect royalties through any statutory or
+ compulsory licensing scheme cannot be waived, the Licensor
+ reserves the exclusive right to collect such royalties for any
+ exercise by You of the rights granted under this License;
+ ii. Waivable Compulsory License Schemes. In those jurisdictions in
+ which the right to collect royalties through any statutory or
+ compulsory licensing scheme can be waived, the Licensor waives the
+ exclusive right to collect such royalties for any exercise by You
+ of the rights granted under this License; and,
+ iii. Voluntary License Schemes. The Licensor waives the right to
+ collect royalties, whether individually or, in the event that the
+ Licensor is a member of a collecting society that administers
+ voluntary licensing schemes, via that society, from any exercise
+ by You of the rights granted under this License.
+
+The above rights may be exercised in all media and formats whether now
+known or hereafter devised. The above rights include the right to make
+such modifications as are technically necessary to exercise the rights in
+other media and formats. Subject to Section 8(f), all rights not expressly
+granted by Licensor are hereby reserved.
+
+4. Restrictions. The license granted in Section 3 above is expressly made
+subject to and limited by the following restrictions:
+
+ a. You may Distribute or Publicly Perform the Work only under the terms
+ of this License. You must include a copy of, or the Uniform Resource
+ Identifier (URI) for, this License with every copy of the Work You
+ Distribute or Publicly Perform. You may not offer or impose any terms
+ on the Work that restrict the terms of this License or the ability of
+ the recipient of the Work to exercise the rights granted to that
+ recipient under the terms of the License. You may not sublicense the
+ Work. You must keep intact all notices that refer to this License and
+ to the disclaimer of warranties with every copy of the Work You
+ Distribute or Publicly Perform. When You Distribute or Publicly
+ Perform the Work, You may not impose any effective technological
+ measures on the Work that restrict the ability of a recipient of the
+ Work from You to exercise the rights granted to that recipient under
+ the terms of the License. This Section 4(a) applies to the Work as
+ incorporated in a Collection, but this does not require the Collection
+ apart from the Work itself to be made subject to the terms of this
+ License. If You create a Collection, upon notice from any Licensor You
+ must, to the extent practicable, remove from the Collection any credit
+ as required by Section 4(c), as requested. If You create an
+ Adaptation, upon notice from any Licensor You must, to the extent
+ practicable, remove from the Adaptation any credit as required by
+ Section 4(c), as requested.
+ b. You may Distribute or Publicly Perform an Adaptation only under the
+ terms of: (i) this License; (ii) a later version of this License with
+ the same License Elements as this License; (iii) a Creative Commons
+ jurisdiction license (either this or a later license version) that
+ contains the same License Elements as this License (e.g.,
+ Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible
+ License. If you license the Adaptation under one of the licenses
+ mentioned in (iv), you must comply with the terms of that license. If
+ you license the Adaptation under the terms of any of the licenses
+ mentioned in (i), (ii) or (iii) (the "Applicable License"), you must
+ comply with the terms of the Applicable License generally and the
+ following provisions: (I) You must include a copy of, or the URI for,
+ the Applicable License with every copy of each Adaptation You
+ Distribute or Publicly Perform; (II) You may not offer or impose any
+ terms on the Adaptation that restrict the terms of the Applicable
+ License or the ability of the recipient of the Adaptation to exercise
+ the rights granted to that recipient under the terms of the Applicable
+ License; (III) You must keep intact all notices that refer to the
+ Applicable License and to the disclaimer of warranties with every copy
+ of the Work as included in the Adaptation You Distribute or Publicly
+ Perform; (IV) when You Distribute or Publicly Perform the Adaptation,
+ You may not impose any effective technological measures on the
+ Adaptation that restrict the ability of a recipient of the Adaptation
+ from You to exercise the rights granted to that recipient under the
+ terms of the Applicable License. This Section 4(b) applies to the
+ Adaptation as incorporated in a Collection, but this does not require
+ the Collection apart from the Adaptation itself to be made subject to
+ the terms of the Applicable License.
+ c. If You Distribute, or Publicly Perform the Work or any Adaptations or
+ Collections, You must, unless a request has been made pursuant to
+ Section 4(a), keep intact all copyright notices for the Work and
+ provide, reasonable to the medium or means You are utilizing: (i) the
+ name of the Original Author (or pseudonym, if applicable) if supplied,
+ and/or if the Original Author and/or Licensor designate another party
+ or parties (e.g., a sponsor institute, publishing entity, journal) for
+ attribution ("Attribution Parties") in Licensor's copyright notice,
+ terms of service or by other reasonable means, the name of such party
+ or parties; (ii) the title of the Work if supplied; (iii) to the
+ extent reasonably practicable, the URI, if any, that Licensor
+ specifies to be associated with the Work, unless such URI does not
+ refer to the copyright notice or licensing information for the Work;
+ and (iv) , consistent with Ssection 3(b), in the case of an
+ Adaptation, a credit identifying the use of the Work in the Adaptation
+ (e.g., "French translation of the Work by Original Author," or
+ "Screenplay based on original Work by Original Author"). The credit
+ required by this Section 4(c) may be implemented in any reasonable
+ manner; provided, however, that in the case of a Adaptation or
+ Collection, at a minimum such credit will appear, if a credit for all
+ contributing authors of the Adaptation or Collection appears, then as
+ part of these credits and in a manner at least as prominent as the
+ credits for the other contributing authors. For the avoidance of
+ doubt, You may only use the credit required by this Section for the
+ purpose of attribution in the manner set out above and, by exercising
+ Your rights under this License, You may not implicitly or explicitly
+ assert or imply any connection with, sponsorship or endorsement by the
+ Original Author, Licensor and/or Attribution Parties, as appropriate,
+ of You or Your use of the Work, without the separate, express prior
+ written permission of the Original Author, Licensor and/or Attribution
+ Parties.
+ d. Except as otherwise agreed in writing by the Licensor or as may be
+ otherwise permitted by applicable law, if You Reproduce, Distribute or
+ Publicly Perform the Work either by itself or as part of any
+ Adaptations or Collections, You must not distort, mutilate, modify or
+ take other derogatory action in relation to the Work which would be
+ prejudicial to the Original Author's honor or reputation. Licensor
+ agrees that in those jurisdictions (e.g. Japan), in which any exercise
+ of the right granted in Section 3(b) of this License (the right to
+ make Adaptations) would be deemed to be a distortion, mutilation,
+ modification or other derogatory action prejudicial to the Original
+ Author's honor and reputation, the Licensor will waive or not assert,
+ as appropriate, this Section, to the fullest extent permitted by the
+ applicable national law, to enable You to reasonably exercise Your
+ right under Section 3(b) of this License (right to make Adaptations)
+ but not otherwise.
+
+5. Representations, Warranties and Disclaimer
+
+UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR
+OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY
+KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
+INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
+FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
+LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS,
+WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION
+OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
+
+6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE
+LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR
+ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES
+ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS
+BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. Termination
+
+ a. This License and the rights granted hereunder will terminate
+ automatically upon any breach by You of the terms of this License.
+ Individuals or entities who have received Adaptations or Collections
+ from You under this License, however, will not have their licenses
+ terminated provided such individuals or entities remain in full
+ compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will
+ survive any termination of this License.
+ b. Subject to the above terms and conditions, the license granted here is
+ perpetual (for the duration of the applicable copyright in the Work).
+ Notwithstanding the above, Licensor reserves the right to release the
+ Work under different license terms or to stop distributing the Work at
+ any time; provided, however that any such election will not serve to
+ withdraw this License (or any other license that has been, or is
+ required to be, granted under the terms of this License), and this
+ License will continue in full force and effect unless terminated as
+ stated above.
+
+8. Miscellaneous
+
+ a. Each time You Distribute or Publicly Perform the Work or a Collection,
+ the Licensor offers to the recipient a license to the Work on the same
+ terms and conditions as the license granted to You under this License.
+ b. Each time You Distribute or Publicly Perform an Adaptation, Licensor
+ offers to the recipient a license to the original Work on the same
+ terms and conditions as the license granted to You under this License.
+ c. If any provision of this License is invalid or unenforceable under
+ applicable law, it shall not affect the validity or enforceability of
+ the remainder of the terms of this License, and without further action
+ by the parties to this agreement, such provision shall be reformed to
+ the minimum extent necessary to make such provision valid and
+ enforceable.
+ d. No term or provision of this License shall be deemed waived and no
+ breach consented to unless such waiver or consent shall be in writing
+ and signed by the party to be charged with such waiver or consent.
+ e. This License constitutes the entire agreement between the parties with
+ respect to the Work licensed here. There are no understandings,
+ agreements or representations with respect to the Work not specified
+ here. Licensor shall not be bound by any additional provisions that
+ may appear in any communication from You. This License may not be
+ modified without the mutual written agreement of the Licensor and You.
+ f. The rights granted under, and the subject matter referenced, in this
+ License were drafted utilizing the terminology of the Berne Convention
+ for the Protection of Literary and Artistic Works (as amended on
+ September 28, 1979), the Rome Convention of 1961, the WIPO Copyright
+ Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996
+ and the Universal Copyright Convention (as revised on July 24, 1971).
+ These rights and subject matter take effect in the relevant
+ jurisdiction in which the License terms are sought to be enforced
+ according to the corresponding provisions of the implementation of
+ those treaty provisions in the applicable national law. If the
+ standard suite of rights granted under applicable copyright law
+ includes additional rights not granted under this License, such
+ additional rights are deemed to be included in the License; this
+ License is not intended to restrict the license of any rights under
+ applicable law.
+
+
+Creative Commons Notice
+
+ Creative Commons is not a party to this License, and makes no warranty
+ whatsoever in connection with the Work. Creative Commons will not be
+ liable to You or any party on any legal theory for any damages
+ whatsoever, including without limitation any general, special,
+ incidental or consequential damages arising in connection to this
+ license. Notwithstanding the foregoing two (2) sentences, if Creative
+ Commons has expressly identified itself as the Licensor hereunder, it
+ shall have all rights and obligations of Licensor.
+
+ Except for the limited purpose of indicating to the public that the
+ Work is licensed under the CCPL, Creative Commons does not authorize
+ the use by either party of the trademark "Creative Commons" or any
+ related trademark or logo of Creative Commons without the prior
+ written consent of Creative Commons. Any permitted use will be in
+ compliance with Creative Commons' then-current trademark usage
+ guidelines, as may be published on its website or otherwise made
+ available upon request from time to time. For the avoidance of doubt,
+ this trademark restriction does not form part of the License.
+
+ Creative Commons may be contacted at https://creativecommons.org/.
diff --git a/src/GUI/app.cpp b/src/GUI/app.cpp
index 994d9693..2e232fc0 100644
--- a/src/GUI/app.cpp
+++ b/src/GUI/app.cpp
@@ -13,6 +13,7 @@
#include "map/gcs.h"
#include "map/pcs.h"
#include "data/dem.h"
+#include "data/waypoint.h"
#include "gui.h"
#include "mapaction.h"
#include "app.h"
@@ -57,6 +58,7 @@ App::App(int &argc, char **argv) : QApplication(argc, argv)
loadDatums();
loadPCSs();
+ Waypoint::loadSymbolIcons(ProgramPaths::symbolsDir());
_gui = new GUI();
}
diff --git a/src/GUI/gui.cpp b/src/GUI/gui.cpp
index ec41df6b..a6d1f3fc 100644
--- a/src/GUI/gui.cpp
+++ b/src/GUI/gui.cpp
@@ -269,6 +269,11 @@ void GUI::createActions()
_overlapPOIAction->setCheckable(true);
connect(_overlapPOIAction, &QAction::triggered, _mapView,
&MapView::showOverlappedPOIs);
+ _showPOIIconsAction = new QAction(tr("Show POI icons"), this);
+ _showPOIIconsAction->setMenuRole(QAction::NoRole);
+ _showPOIIconsAction->setCheckable(true);
+ connect(_showPOIIconsAction, &QAction::triggered, _mapView,
+ &MapView::showPOIIcons);
_showPOILabelsAction = new QAction(tr("Show POI labels"), this);
_showPOILabelsAction->setMenuRole(QAction::NoRole);
_showPOILabelsAction->setCheckable(true);
@@ -343,6 +348,11 @@ void GUI::createActions()
_showAreasAction->setMenuRole(QAction::NoRole);
_showAreasAction->setCheckable(true);
connect(_showAreasAction, &QAction::triggered, this, &GUI::showAreas);
+ _showWaypointIconsAction = new QAction(tr("Waypoint icons"), this);
+ _showWaypointIconsAction->setMenuRole(QAction::NoRole);
+ _showWaypointIconsAction->setCheckable(true);
+ connect(_showWaypointIconsAction, &QAction::triggered, _mapView,
+ &MapView::showWaypointIcons);
_showWaypointLabelsAction = new QAction(tr("Waypoint labels"), this);
_showWaypointLabelsAction->setMenuRole(QAction::NoRole);
_showWaypointLabelsAction->setCheckable(true);
@@ -572,6 +582,7 @@ void GUI::createMenus()
graphMenu->addAction(_showGraphsAction);
QMenu *dataMenu = menuBar()->addMenu(tr("&Data"));
+ dataMenu->addAction(_showWaypointIconsAction);
dataMenu->addAction(_showWaypointLabelsAction);
dataMenu->addAction(_showRouteWaypointsAction);
dataMenu->addAction(_showTicksAction);
@@ -592,6 +603,7 @@ void GUI::createMenus()
_poiMenu->addAction(_selectAllPOIAction);
_poiMenu->addAction(_unselectAllPOIAction);
_poiMenu->addSeparator();
+ _poiMenu->addAction(_showPOIIconsAction);
_poiMenu->addAction(_showPOILabelsAction);
_poiMenu->addAction(_overlapPOIAction);
_poiMenu->addSeparator();
@@ -2145,6 +2157,9 @@ void GUI::writeSettings()
if (_showPOILabelsAction->isChecked() != SHOW_POI_LABELS_DEFAULT)
settings.setValue(SHOW_POI_LABELS_SETTING,
_showPOILabelsAction->isChecked());
+ if (_showPOIIconsAction->isChecked() != SHOW_POI_ICONS_DEFAULT)
+ settings.setValue(SHOW_POI_ICONS_SETTING,
+ _showPOIIconsAction->isChecked());
int j = 0;
QList poiActions(_poisActionGroup->actions());
@@ -2171,6 +2186,9 @@ void GUI::writeSettings()
_showWaypointsAction->isChecked());
if (_showAreasAction->isChecked() != SHOW_AREAS_DEFAULT)
settings.setValue(SHOW_AREAS_SETTING, _showAreasAction->isChecked());
+ if (_showWaypointIconsAction->isChecked() != SHOW_WAYPOINT_ICONS_DEFAULT)
+ settings.setValue(SHOW_WAYPOINT_ICONS_SETTING,
+ _showWaypointIconsAction->isChecked());
if (_showWaypointLabelsAction->isChecked() != SHOW_WAYPOINT_LABELS_DEFAULT)
settings.setValue(SHOW_WAYPOINT_LABELS_SETTING,
_showWaypointLabelsAction->isChecked());
@@ -2433,6 +2451,9 @@ void GUI::readSettings(QString &activeMap, QStringList &disabledPOIs)
_mapView->showOverlappedPOIs(false);
else
_overlapPOIAction->setChecked(true);
+ if (settings.value(SHOW_POI_ICONS_SETTING, SHOW_POI_ICONS_DEFAULT)
+ .toBool())
+ _showPOIIconsAction->trigger();
if (!settings.value(SHOW_POI_LABELS_SETTING, SHOW_POI_LABELS_DEFAULT)
.toBool())
_mapView->showPOILabels(false);
@@ -2473,6 +2494,9 @@ void GUI::readSettings(QString &activeMap, QStringList &disabledPOIs)
_mapView->showAreas(false);
else
_showAreasAction->setChecked(true);
+ if (settings.value(SHOW_WAYPOINT_ICONS_SETTING,
+ SHOW_WAYPOINT_ICONS_DEFAULT).toBool())
+ _showWaypointIconsAction->trigger();
if (!settings.value(SHOW_WAYPOINT_LABELS_SETTING,
SHOW_WAYPOINT_LABELS_DEFAULT).toBool())
_mapView->showWaypointLabels(false);
diff --git a/src/GUI/gui.h b/src/GUI/gui.h
index 3e8e5001..e9bc3aa6 100644
--- a/src/GUI/gui.h
+++ b/src/GUI/gui.h
@@ -196,6 +196,7 @@ private:
QAction *_showPOIAction;
QAction *_overlapPOIAction;
QAction *_showPOILabelsAction;
+ QAction *_showPOIIconsAction;
QAction *_showMapAction;
QAction *_fullscreenAction;
QAction *_loadMapAction;
@@ -225,6 +226,7 @@ private:
QAction *_showRoutesAction;
QAction *_showWaypointsAction;
QAction *_showWaypointLabelsAction;
+ QAction *_showWaypointIconsAction;
QAction *_showAreasAction;
QAction *_showRouteWaypointsAction;
QAction *_hideMarkersAction;
diff --git a/src/GUI/mapview.cpp b/src/GUI/mapview.cpp
index 36404da9..4e7edfe5 100644
--- a/src/GUI/mapview.cpp
+++ b/src/GUI/mapview.cpp
@@ -89,8 +89,10 @@ MapView::MapView(Map *map, POI *poi, QWidget *parent)
_showAreas = true;
_showWaypoints = true;
_showWaypointLabels = true;
+ _showWaypointIcons = false;
_showPOI = true;
_showPOILabels = true;
+ _showPOIIcons = false;
_overlapPOIs = true;
_showRouteWaypoints = true;
_showMarkers = true;
@@ -169,6 +171,7 @@ PathItem *MapView::addRoute(const Route &route)
ri->setVisible(_showRoutes);
ri->showWaypoints(_showRouteWaypoints);
ri->showWaypointLabels(_showWaypointLabels);
+ ri->showWaypointIcons(_showWaypointLabels);
ri->setDigitalZoom(_digitalZoom);
ri->setMarkerColor(_markerColor);
ri->showMarker(_showMarkers);
@@ -217,6 +220,7 @@ void MapView::addWaypoints(const QVector &waypoints)
wi->setSize(_waypointSize);
wi->setColor(_waypointColor);
wi->showLabel(_showWaypointLabels);
+ wi->showIcon(_showWaypointIcons);
wi->setVisible(_showWaypoints);
wi->setDigitalZoom(_digitalZoom);
_scene->addItem(wi);
@@ -478,6 +482,7 @@ void MapView::addPOI(const QList &waypoints)
pi->setSize(_poiSize);
pi->setColor(_poiColor);
pi->showLabel(_showPOILabels);
+ pi->showIcon(_showPOIIcons);
pi->setVisible(_showPOI);
pi->setDigitalZoom(_digitalZoom);
_scene->addItem(pi);
@@ -492,9 +497,9 @@ void MapView::setUnits(Units units)
PathItem::setUnits(units);
for (int i = 0; i < _tracks.count(); i++)
- _tracks[i]->updateTicks();
+ _tracks.at(i)->updateTicks();
for (int i = 0; i < _routes.count(); i++)
- _routes[i]->updateTicks();
+ _routes.at(i)->updateTicks();
_mapScale->setUnits(units);
}
@@ -505,9 +510,9 @@ void MapView::setCoordinatesFormat(CoordinatesFormat format)
PathItem::setCoordinatesFormat(format);
for (int i = 0; i < _tracks.count(); i++)
- _tracks[i]->updateMarkerInfo();
+ _tracks.at(i)->updateMarkerInfo();
for (int i = 0; i < _routes.count(); i++)
- _routes[i]->updateMarkerInfo();
+ _routes.at(i)->updateMarkerInfo();
_coordinates->setFormat(format);
}
@@ -518,9 +523,9 @@ void MapView::setTimeZone(const QTimeZone &zone)
PathItem::setTimeZone(zone);
for (int i = 0; i < _tracks.count(); i++)
- _tracks[i]->updateMarkerInfo();
+ _tracks.at(i)->updateMarkerInfo();
for (int i = 0; i < _routes.count(); i++)
- _routes[i]->updateMarkerInfo();
+ _routes.at(i)->updateMarkerInfo();
}
void MapView::clearMapCache()
@@ -819,6 +824,16 @@ void MapView::showWaypointLabels(bool show)
_routes.at(i)->showWaypointLabels(show);
}
+void MapView::showWaypointIcons(bool show)
+{
+ _showWaypointIcons = show;
+
+ for (int i = 0; i < _waypoints.size(); i++)
+ _waypoints.at(i)->showIcon(show);
+ for (int i = 0; i < _routes.size(); i++)
+ _routes.at(i)->showWaypointIcons(show);
+}
+
void MapView::showRouteWaypoints(bool show)
{
_showRouteWaypoints = show;
@@ -884,6 +899,17 @@ void MapView::showPOILabels(bool show)
updatePOIVisibility();
}
+void MapView::showPOIIcons(bool show)
+{
+ _showPOIIcons = show;
+
+ for (POIHash::const_iterator it = _pois.constBegin();
+ it != _pois.constEnd(); it++)
+ it.value()->showIcon(show);
+
+ updatePOIVisibility();
+}
+
void MapView::showCoordinates(bool show)
{
_coordinates->setVisible(show);
diff --git a/src/GUI/mapview.h b/src/GUI/mapview.h
index 455140ba..59e6c7d0 100644
--- a/src/GUI/mapview.h
+++ b/src/GUI/mapview.h
@@ -95,12 +95,14 @@ public slots:
void showMap(bool show);
void showPOI(bool show);
void showPOILabels(bool show);
+ void showPOIIcons(bool show);
void showCoordinates(bool show);
void showTicks(bool show);
void showMarkers(bool show);
void showMarkerInfo(MarkerInfoItem::Type type);
void showOverlappedPOIs(bool show);
void showWaypointLabels(bool show);
+ void showWaypointIcons(bool show);
void showTracks(bool show);
void showRoutes(bool show);
void showAreas(bool show);
@@ -165,7 +167,7 @@ private:
bool _showMap, _showTracks, _showRoutes, _showAreas, _showWaypoints,
_showWaypointLabels, _showPOI, _showPOILabels, _showRouteWaypoints,
- _showMarkers, _showPathTicks;
+ _showMarkers, _showPathTicks, _showPOIIcons, _showWaypointIcons;
MarkerInfoItem::Type _markerInfoType;
bool _overlapPOIs;
int _trackWidth, _routeWidth, _areaWidth;
diff --git a/src/GUI/routeitem.cpp b/src/GUI/routeitem.cpp
index f7f21ed3..782abb46 100644
--- a/src/GUI/routeitem.cpp
+++ b/src/GUI/routeitem.cpp
@@ -53,7 +53,7 @@ RouteItem::RouteItem(const Route &route, Map *map, QGraphicsItem *parent)
void RouteItem::setMap(Map *map)
{
for (int i = 0; i < _waypoints.count(); i++)
- _waypoints[i]->setMap(map);
+ _waypoints.at(i)->setMap(map);
PathItem::setMap(map);
}
@@ -61,19 +61,25 @@ void RouteItem::setMap(Map *map)
void RouteItem::showWaypoints(bool show)
{
for (int i = 0; i < _waypoints.count(); i++)
- _waypoints[i]->setVisible(show);
+ _waypoints.at(i)->setVisible(show);
}
void RouteItem::showWaypointLabels(bool show)
{
for (int i = 0; i < _waypoints.count(); i++)
- _waypoints[i]->showLabel(show);
+ _waypoints.at(i)->showLabel(show);
+}
+
+void RouteItem::showWaypointIcons(bool show)
+{
+ for (int i = 0; i < _waypoints.count(); i++)
+ _waypoints.at(i)->showIcon(show);
}
void RouteItem::setDigitalZoom(int zoom)
{
for (int i = 0; i < _waypoints.count(); i++)
- _waypoints[i]->setDigitalZoom(zoom);
+ _waypoints.at(i)->setDigitalZoom(zoom);
PathItem::setDigitalZoom(zoom);
}
diff --git a/src/GUI/routeitem.h b/src/GUI/routeitem.h
index 16d72a9e..3ae84a51 100644
--- a/src/GUI/routeitem.h
+++ b/src/GUI/routeitem.h
@@ -20,6 +20,7 @@ public:
void showWaypoints(bool show);
void showWaypointLabels(bool show);
+ void showWaypointIcons(bool show);
ToolTip info() const;
QDateTime date() const {return QDateTime();}
diff --git a/src/GUI/settings.h b/src/GUI/settings.h
index 5ff1b7a4..56028090 100644
--- a/src/GUI/settings.h
+++ b/src/GUI/settings.h
@@ -40,6 +40,9 @@
#define POI_SETTINGS_GROUP "POI"
#define OVERLAP_POI_SETTING "overlap"
#define OVERLAP_POI_DEFAULT false
+
+#define SHOW_POI_ICONS_SETTING "icons"
+#define SHOW_POI_ICONS_DEFAULT true
#define SHOW_POI_LABELS_SETTING "labels"
#define SHOW_POI_LABELS_DEFAULT true
#define SHOW_POI_SETTING "show"
@@ -58,6 +61,8 @@
#define SHOW_AREAS_DEFAULT true
#define SHOW_ROUTE_WAYPOINTS_SETTING "routeWaypoints"
#define SHOW_ROUTE_WAYPOINTS_DEFAULT true
+#define SHOW_WAYPOINT_ICONS_SETTING "waypointIcons"
+#define SHOW_WAYPOINT_ICONS_DEFAULT false
#define SHOW_WAYPOINT_LABELS_SETTING "waypointLabels"
#define SHOW_WAYPOINT_LABELS_DEFAULT true
#define SHOW_MARKERS_SETTING "positionMarkers"
diff --git a/src/GUI/waypointitem.cpp b/src/GUI/waypointitem.cpp
index 23edff1b..e33df50c 100644
--- a/src/GUI/waypointitem.cpp
+++ b/src/GUI/waypointitem.cpp
@@ -44,6 +44,8 @@ ToolTip WaypointItem::info() const
&& _waypoint.comment() != _waypoint.description())
tt.insert(qApp->translate("WaypointItem", "Comment"),
_waypoint.comment());
+ if (!_waypoint.symbol().isEmpty())
+ tt.insert(qApp->translate("WaypointItem", "Symbol"), _waypoint.symbol());
if (!_waypoint.address().isEmpty()) {
QString addr(_waypoint.address());
addr.replace('\n', " ");
@@ -63,6 +65,7 @@ ToolTip WaypointItem::info() const
}
tt.insert(qApp->translate("WaypointItem", "Links"), links);
}
+
tt.setImages(_waypoint.images());
return tt;
@@ -73,9 +76,14 @@ WaypointItem::WaypointItem(const Waypoint &waypoint, Map *map,
{
_waypoint = waypoint;
_showLabel = true;
+ _showIcon = false;
_size = 8;
_color = Qt::black;
+ _icon = (_waypoint.icon().isNull())
+ ? Waypoint::symbolIcon(_waypoint.symbol())
+ : &_waypoint.icon();
+
_font.setPixelSize(FS(_size));
_font.setFamily(FONT_FAMILY);
@@ -95,11 +103,22 @@ void WaypointItem::updateCache()
QFontMetrics fm(_font);
_labelBB = fm.tightBoundingRect(_waypoint.name());
- p.addRect(-pointSize/2, -pointSize/2, pointSize, pointSize);
- p.addRect(pointSize/2, pointSize/2, _labelBB.width(), _labelBB.height()
- + fm.descent());
- } else
- p.addRect(-pointSize/2, -pointSize/2, pointSize, pointSize);
+ if (_showIcon && _icon) {
+ p.addRect(-_icon->width()/2.0, -_icon->height(), _icon->width(),
+ _icon->height());
+ p.addRect(0, 0, _labelBB.width(), _labelBB.height() + fm.descent());
+ } else {
+ p.addRect(-pointSize/2, -pointSize/2, pointSize, pointSize);
+ p.addRect(pointSize/2, pointSize/2, _labelBB.width(),
+ _labelBB.height() + fm.descent());
+ }
+ } else {
+ if (_showIcon && _icon)
+ p.addRect(-_icon->width()/2, -_icon->height(), _icon->width(),
+ _icon->height());
+ else
+ p.addRect(-pointSize/2, -pointSize/2, pointSize, pointSize);
+ }
_shape = p;
}
@@ -115,12 +134,19 @@ void WaypointItem::paint(QPainter *painter,
if (_showLabel) {
painter->setFont(_font);
- painter->drawText(pointSize/2 - qMax(_labelBB.x(), 0), pointSize/2
- + _labelBB.height(), _waypoint.name());
+ if (_showIcon && _icon)
+ painter->drawText(-qMax(_labelBB.x(), 0), _labelBB.height(),
+ _waypoint.name());
+ else
+ painter->drawText(pointSize/2 - qMax(_labelBB.x(), 0), pointSize/2
+ + _labelBB.height(), _waypoint.name());
}
painter->setBrush(QBrush(_color, Qt::SolidPattern));
- painter->drawEllipse(-pointSize/2, -pointSize/2, pointSize, pointSize);
+ if (_showIcon && _icon)
+ painter->drawPixmap(-_icon->width()/2.0, -_icon->height(), *_icon);
+ else
+ painter->drawEllipse(-pointSize/2, -pointSize/2, pointSize, pointSize);
/*
painter->setPen(Qt::red);
@@ -159,6 +185,16 @@ void WaypointItem::showLabel(bool show)
updateCache();
}
+void WaypointItem::showIcon(bool show)
+{
+ if (_showIcon == show)
+ return;
+
+ prepareGeometryChange();
+ _showIcon = show;
+ updateCache();
+}
+
void WaypointItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
{
Q_UNUSED(event);
diff --git a/src/GUI/waypointitem.h b/src/GUI/waypointitem.h
index 68bec205..a81540d8 100644
--- a/src/GUI/waypointitem.h
+++ b/src/GUI/waypointitem.h
@@ -23,6 +23,7 @@ public:
void setSize(int size);
void setColor(const QColor &color);
void showLabel(bool show);
+ void showIcon(bool show);
void setDigitalZoom(int zoom) {setScale(pow(2, -zoom));}
QPainterPath shape() const {return _shape;}
@@ -50,8 +51,10 @@ private:
QColor _color;
int _size;
bool _showLabel;
+ bool _showIcon;
QFont _font;
QRect _labelBB;
+ const QPixmap *_icon;
static Units _units;
static CoordinatesFormat _format;
diff --git a/src/map/color.h b/src/common/color.h
similarity index 100%
rename from src/map/color.h
rename to src/common/color.h
diff --git a/src/common/programpaths.cpp b/src/common/programpaths.cpp
index a7f89ac5..7c03595c 100644
--- a/src/common/programpaths.cpp
+++ b/src/common/programpaths.cpp
@@ -11,6 +11,8 @@
#define TILES_DIR "tiles"
#define TRANSLATIONS_DIR "translations"
#define STYLE_DIR "style"
+#define SYMBOLS_DIR "symbols"
+
#define ELLIPSOID_FILE "ellipsoids.csv"
#define GCS_FILE "gcs.csv"
#define PCS_FILE "pcs.csv"
@@ -68,6 +70,16 @@ QString ProgramPaths::styleDir(bool writable)
STYLE_DIR, QStandardPaths::LocateDirectory);
}
+QString ProgramPaths::symbolsDir(bool writable)
+{
+ if (writable)
+ return QDir(QStandardPaths::writableLocation(
+ QStandardPaths::AppDataLocation)).filePath(SYMBOLS_DIR);
+ else
+ return QStandardPaths::locate(QStandardPaths::AppDataLocation,
+ SYMBOLS_DIR, QStandardPaths::LocateDirectory);
+}
+
QString ProgramPaths::tilesDir()
{
return QDir(QStandardPaths::writableLocation(
diff --git a/src/common/programpaths.h b/src/common/programpaths.h
index f07a2b09..221ec7e4 100644
--- a/src/common/programpaths.h
+++ b/src/common/programpaths.h
@@ -10,6 +10,7 @@ namespace ProgramPaths
QString csvDir(bool writable = false);
QString demDir(bool writable = false);
QString styleDir(bool writable = false);
+ QString symbolsDir(bool writable = false);
QString tilesDir();
QString translationsDir();
QString ellipsoidsFile();
diff --git a/src/data/gpiparser.cpp b/src/data/gpiparser.cpp
index 9139de51..217c74a8 100644
--- a/src/data/gpiparser.cpp
+++ b/src/data/gpiparser.cpp
@@ -10,6 +10,7 @@
#include
#include "common/garmin.h"
#include "common/textcodec.h"
+#include "common/color.h"
#include "address.h"
#include "gpiparser.h"
@@ -36,6 +37,14 @@ private:
QString _str;
};
+#ifndef QT_NO_DEBUG
+QDebug operator<<(QDebug dbg, const TranslatedString &ts)
+{
+ dbg.nospace() << "TS(" << ts.lang() << ", " << ts.str() << ")";
+ return dbg.space();
+}
+#endif // QT_NO_DEBUG
+
class CryptDevice : public QIODevice
{
public:
@@ -530,8 +539,22 @@ static quint32 readCamera(DataStream &stream, QVector &waypoints,
return rs + rh.size;
}
+static quint32 readIconId(DataStream &stream, quint16 &id)
+{
+ RecordHeader rh;
+ quint8 rs;
+
+ rs = stream.readRecordHeader(rh);
+ stream >> id;
+
+ if (2 != rh.size)
+ stream.setStatus(QDataStream::ReadCorruptData);
+
+ return rs + rh.size;
+}
+
static quint32 readPOI(DataStream &stream, QVector &waypoints,
- const QString &fileName, int &imgId)
+ const QString &fileName, int &imgId, QVector > &icons)
{
RecordHeader rh;
quint8 rs;
@@ -551,7 +574,13 @@ static quint32 readPOI(DataStream &stream, QVector &waypoints,
waypoints.last().setName(obj.first().str());
while (stream.status() == QDataStream::Ok && ds < rh.size) {
- switch(stream.nextHeaderType()) {
+ quint16 type = stream.nextHeaderType();
+ switch(type) {
+ case 4:
+ {quint16 id;
+ ds += readIconId(stream, id);
+ icons.append(QPair(waypoints.size() - 1, id));}
+ break;
case 10:
ds += readDescription(stream, waypoints.last());
break;
@@ -579,7 +608,8 @@ static quint32 readPOI(DataStream &stream, QVector &waypoints,
}
static quint32 readSpatialIndex(DataStream &stream, QVector &waypoints,
- QList &polygons, const QString &fileName, int &imgId)
+ QList &polygons, const QString &fileName, int &imgId,
+ QVector > &icons)
{
RecordHeader rh;
quint32 ds, s5;
@@ -595,11 +625,12 @@ static quint32 readSpatialIndex(DataStream &stream, QVector &waypoints
while (stream.status() == QDataStream::Ok && ds < rh.size) {
switch(stream.nextHeaderType()) {
case 2:
- ds += readPOI(stream, waypoints, fileName, imgId);
+ ds += readPOI(stream, waypoints, fileName, imgId,
+ icons);
break;
case 8:
ds += readSpatialIndex(stream, waypoints, polygons,
- fileName, imgId);
+ fileName, imgId, icons);
break;
case 19:
ds += readCamera(stream, waypoints, polygons);
@@ -616,31 +647,89 @@ static quint32 readSpatialIndex(DataStream &stream, QVector &waypoints
return rs + rh.size;
}
+static quint32 readSymbol(DataStream &stream, QPixmap &pixmap)
+{
+ RecordHeader rh;
+ quint8 rs, u8, bpp, transparent;
+ quint32 ds = 36, u32, imageSize, paletteSize, bgColor;
+ quint16 id, height, width, lineSize;
+ QByteArray data;
+ QVector palette;
+ QImage img;
+
+ rs = stream.readRecordHeader(rh);
+ stream >> id >> height >> width >> lineSize >> bpp >> u8 >> u8 >> u8
+ >> imageSize >> u32 >> paletteSize >> bgColor >> transparent >> u8 >> u8
+ >> u8 >> u32;
+ if (imageSize) {
+ data.resize(imageSize);
+ stream.readRawData(data.data(), data.size());
+ ds += data.size();
+ }
+ if (paletteSize) {
+ quint32 rgb;
+ palette.resize(paletteSize);
+ for (quint32 i = 0; i < paletteSize; i++) {
+ stream >> rgb;
+ palette[i] = (transparent && rgb == bgColor)
+ ? QRgb(0)
+ : Color::rgb((rgb & 0x000000FF), (rgb & 0x0000FF00) >> 8,
+ (rgb & 0x00FF0000) >> 16);
+ }
+ ds += paletteSize * 4;
+ }
+
+ if (paletteSize) {
+ img = QImage((uchar*)data.data(), width, height, lineSize,
+ QImage::Format_Indexed8);
+ img.setColorTable(palette);
+ } else
+ img = QImage((uchar*)data.data(), width, height, lineSize,
+ QImage::Format_RGB32);
+ pixmap = QPixmap::fromImage(img);
+
+ if (ds != rh.size)
+ stream.setStatus(QDataStream::ReadCorruptData);
+
+ return rs + rh.size;
+}
+
static void readPOIDatabase(DataStream &stream, QVector &waypoints,
QList &polygons, const QString &fileName, int &imgId)
{
RecordHeader rh;
QList obj;
quint32 ds;
+ QVector > il;
+ QVector icons;
stream.readRecordHeader(rh);
ds = stream.readTranslatedObjects(obj);
- ds += readSpatialIndex(stream, waypoints, polygons, fileName, imgId);
+ ds += readSpatialIndex(stream, waypoints, polygons, fileName, imgId, il);
if (rh.flags & 0x8) {
while (stream.status() == QDataStream::Ok && ds < rh.size) {
- switch(stream.nextHeaderType()) {
+ quint16 type = stream.nextHeaderType();
+ switch(type) {
+ case 5:
+ icons.append(QPixmap());
+ ds += readSymbol(stream, icons.last());
+ break;
case 8:
ds += readSpatialIndex(stream, waypoints, polygons,
- fileName, imgId);
+ fileName, imgId, il);
break;
- case 5: // symbol
- case 7: // category
default:
ds += stream.skipRecord();
}
}
}
+ for (int i = 0; i < il.size(); i++) {
+ const QPair &e = il.at(i);
+ if (e.second < icons.size())
+ waypoints[e.first].setIcon(icons.at(e.second));
+ }
+
if (ds != rh.size)
stream.setStatus(QDataStream::ReadCorruptData);
}
@@ -652,7 +741,7 @@ bool GPIParser::readData(DataStream &stream, QVector &waypoints,
while (stream.status() == QDataStream::Ok) {
switch (stream.nextHeaderType()) {
- case 0x09: // POI database
+ case 0x09:
readPOIDatabase(stream, waypoints, polygons, fileName,
imgId);
break;
@@ -661,8 +750,6 @@ bool GPIParser::readData(DataStream &stream, QVector &waypoints,
if (stream.status() == QDataStream::Ok)
return true;
break;
- case 0x16: // route
- case 0x15: // info header
default:
stream.skipRecord();
}
diff --git a/src/data/gpxparser.cpp b/src/data/gpxparser.cpp
index 3187f604..a5229052 100644
--- a/src/data/gpxparser.cpp
+++ b/src/data/gpxparser.cpp
@@ -205,6 +205,8 @@ void GPXParser::waypointData(Waypoint &waypoint, SegmentData *autoRoute)
link10.setText(_reader.readElementText());
else if (_reader.name() == QLatin1String("extensions"))
waypointExtensions(waypoint, autoRoute);
+ else if (_reader.name() == QLatin1String("sym"))
+ waypoint.setSymbol(_reader.readElementText());
else
_reader.skipCurrentElement();
}
diff --git a/src/data/waypoint.cpp b/src/data/waypoint.cpp
index e8f52114..275fa6b1 100644
--- a/src/data/waypoint.cpp
+++ b/src/data/waypoint.cpp
@@ -1,8 +1,11 @@
+#include
+#include
#include "dem.h"
#include "waypoint.h"
bool Waypoint::_useDEM = false;
bool Waypoint::_show2ndElevation = false;
+QHash Waypoint::_symbolIcons;
QPair Waypoint::elevations() const
{
@@ -21,3 +24,26 @@ QPair Waypoint::elevations() const
return QPair(DEM::elevation(coordinates()), NAN);
}
}
+
+void Waypoint::loadSymbolIcons(const QString &dir)
+{
+ QDir d(dir);
+ QFileInfoList files(d.entryInfoList(QDir::Files | QDir::Readable));
+
+ for (int i = 0; i < files.size(); i++) {
+ QPixmap pm(files.at(i).absoluteFilePath());
+ if (pm.isNull())
+ qWarning("%s: error loading image",
+ qPrintable(files.at(i).absoluteFilePath()));
+ else
+ _symbolIcons.insert(files.at(i).baseName(), pm);
+ }
+}
+
+const QPixmap *Waypoint::symbolIcon(const QString &symbol)
+{
+ if (symbol.isEmpty())
+ return 0;
+ QHash::const_iterator it(_symbolIcons.find(symbol));
+ return (it == _symbolIcons.constEnd()) ? 0 : &*it;
+}
diff --git a/src/data/waypoint.h b/src/data/waypoint.h
index 0001d5f6..1d04bffa 100644
--- a/src/data/waypoint.h
+++ b/src/data/waypoint.h
@@ -5,6 +5,7 @@
#include
#include
#include
+#include
#include
#include "common/config.h"
#include "common/coordinates.h"
@@ -24,10 +25,12 @@ public:
const QString &comment() const {return _comment;}
const QString &address() const {return _address;}
const QString &phone() const {return _phone;}
+ const QString &symbol() const {return _symbol;}
const QVector &images() const {return _images;}
const QVector &links() const {return _links;}
const QDateTime ×tamp() const {return _timestamp;}
qreal elevation() const {return _elevation;}
+ const QPixmap &icon() const {return _icon;}
QPair elevations() const;
@@ -39,10 +42,12 @@ public:
void setComment(const QString &comment) {_comment = comment;}
void setAddress(const QString &address) {_address = address;}
void setPhone(const QString &phone) {_phone = phone;}
+ void setSymbol(const QString &symbol) {_symbol = symbol;}
void setTimestamp(const QDateTime ×tamp) {_timestamp = timestamp;}
void setElevation(qreal elevation) {_elevation = elevation;}
void addImage(const QString &path) {_images.append(path);}
void addLink(const Link &link) {_links.append(link);}
+ void setIcon(const QPixmap &icon) {_icon = icon;}
bool hasElevation() const {return !std::isnan(_elevation);}
@@ -54,6 +59,9 @@ public:
static void showSecondaryElevation(bool show)
{_show2ndElevation = show;}
+ static const QPixmap *symbolIcon(const QString &symbol);
+ static void loadSymbolIcons(const QString &dir);
+
private:
Coordinates _coordinates;
QString _name;
@@ -61,13 +69,16 @@ private:
QString _comment;
QString _address;
QString _phone;
+ QString _symbol;
QVector _images;
QVector _links;
QDateTime _timestamp;
qreal _elevation;
+ QPixmap _icon;
static bool _useDEM;
static bool _show2ndElevation;
+ static QHash _symbolIcons;
};
inline HASH_T qHash(const Waypoint &key)
diff --git a/src/map/IMG/style.cpp b/src/map/IMG/style.cpp
index 262eff8f..ce246667 100644
--- a/src/map/IMG/style.cpp
+++ b/src/map/IMG/style.cpp
@@ -239,137 +239,137 @@ void Style::defaultPointStyle()
_points[TYPE(0x03)].setTextFontSize(Large);
// POI
- _points[0x2a00] = Point(QImage(":/POI/restaurant-11.png"));
- _points[0x2a01] = Point(QImage(":/POI/restaurant-11.png"));
- _points[0x2a02] = Point(QImage(":/POI/restaurant-noodle-11.png"));
- _points[0x2a03] = Point(QImage(":/POI/bbq-11.png"));
- _points[0x2a04] = Point(QImage(":/POI/restaurant-noodle-11.png"));
- _points[0x2a05] = Point(QImage(":/POI/bakery-11.png"));
- _points[0x2a06] = Point(QImage(":/POI/restaurant-11.png"));
- _points[0x2a07] = Point(QImage(":/POI/fast-food-11.png"));
- _points[0x2a08] = Point(QImage(":/POI/restaurant-pizza-11.png"));
- _points[0x2a09] = Point(QImage(":/POI/restaurant-11.png"));
- _points[0x2a0a] = Point(QImage(":/POI/restaurant-pizza-11.png"));
- _points[0x2a0b] = Point(QImage(":/POI/restaurant-seafood-11.png"));
- _points[0x2a0c] = Point(QImage(":/POI/restaurant-11.png"));
- _points[0x2a0d] = Point(QImage(":/POI/bakery-11.png"));
- _points[0x2a0e] = Point(QImage(":/POI/cafe-11.png"));
- _points[0x2a0f] = Point(QImage(":/POI/restaurant-11.png"));
- _points[0x2a10] = Point(QImage(":/POI/restaurant-11.png"));
- _points[0x2a11] = Point(QImage(":/POI/restaurant-11.png"));
- _points[0x2a12] = Point(QImage(":/POI/restaurant-11.png"));
- _points[0x2a13] = Point(QImage(":/POI/restaurant-11.png"));
+ _points[0x2a00] = Point(QImage(":/IMG/restaurant-11.png"));
+ _points[0x2a01] = Point(QImage(":/IMG/restaurant-11.png"));
+ _points[0x2a02] = Point(QImage(":/IMG/restaurant-noodle-11.png"));
+ _points[0x2a03] = Point(QImage(":/IMG/bbq-11.png"));
+ _points[0x2a04] = Point(QImage(":/IMG/restaurant-noodle-11.png"));
+ _points[0x2a05] = Point(QImage(":/IMG/bakery-11.png"));
+ _points[0x2a06] = Point(QImage(":/IMG/restaurant-11.png"));
+ _points[0x2a07] = Point(QImage(":/IMG/fast-food-11.png"));
+ _points[0x2a08] = Point(QImage(":/IMG/restaurant-pizza-11.png"));
+ _points[0x2a09] = Point(QImage(":/IMG/restaurant-11.png"));
+ _points[0x2a0a] = Point(QImage(":/IMG/restaurant-pizza-11.png"));
+ _points[0x2a0b] = Point(QImage(":/IMG/restaurant-seafood-11.png"));
+ _points[0x2a0c] = Point(QImage(":/IMG/restaurant-11.png"));
+ _points[0x2a0d] = Point(QImage(":/IMG/bakery-11.png"));
+ _points[0x2a0e] = Point(QImage(":/IMG/cafe-11.png"));
+ _points[0x2a0f] = Point(QImage(":/IMG/restaurant-11.png"));
+ _points[0x2a10] = Point(QImage(":/IMG/restaurant-11.png"));
+ _points[0x2a11] = Point(QImage(":/IMG/restaurant-11.png"));
+ _points[0x2a12] = Point(QImage(":/IMG/restaurant-11.png"));
+ _points[0x2a13] = Point(QImage(":/IMG/restaurant-11.png"));
- _points[0x2b01] = Point(QImage(":/POI/lodging-11.png"));
- _points[0x2b02] = Point(QImage(":/POI/lodging-11.png"));
- _points[0x2b03] = Point(QImage(":/POI/campsite-11.png"));
- _points[0x2b04] = Point(QImage(":/POI/village-11.png"));
- _points[0x2b06] = Point(QImage(":/POI/shelter-11.png"));
+ _points[0x2b01] = Point(QImage(":/IMG/lodging-11.png"));
+ _points[0x2b02] = Point(QImage(":/IMG/lodging-11.png"));
+ _points[0x2b03] = Point(QImage(":/IMG/campsite-11.png"));
+ _points[0x2b04] = Point(QImage(":/IMG/village-11.png"));
+ _points[0x2b06] = Point(QImage(":/IMG/shelter-11.png"));
- _points[0x2c01] = Point(QImage(":/POI/amusement-park-11.png"));
- _points[0x2c02] = Point(QImage(":/POI/museum-11.png"));
- _points[0x2c03] = Point(QImage(":/POI/library-11.png"));
- _points[0x2c04] = Point(QImage(":/POI/landmark-11.png"));
- _points[0x2c05] = Point(QImage(":/POI/school-11.png"));
- _points[0x2c06] = Point(QImage(":/POI/garden-11.png"));
- _points[0x2c07] = Point(QImage(":/POI/zoo-11.png"));
- _points[0x2c08] = Point(QImage(":/POI/soccer-11.png"));
- _points[0x2c0a] = Point(QImage(":/POI/bar-11.png"));
- _points[0x2c0b] = Point(QImage(":/POI/place-of-worship-11.png"));
- _points[0x2c0d] = Point(QImage(":/POI/religious-muslim-11.png"));
- _points[0x2c0e] = Point(QImage(":/POI/religious-christian-11.png"));
- _points[0x2c10] = Point(QImage(":/POI/religious-jewish-11.png"));
- _points[0x2d01] = Point(QImage(":/POI/theatre-11.png"));
- _points[0x2d02] = Point(QImage(":/POI/bar-11.png"));
- _points[0x2d03] = Point(QImage(":/POI/cinema-11.png"));
- _points[0x2d04] = Point(QImage(":/POI/casino-11.png"));
- _points[0x2d05] = Point(QImage(":/POI/golf-11.png"));
- _points[0x2d06] = Point(QImage(":/POI/skiing-11.png"));
- _points[0x2d07] = Point(QImage(":/POI/bowling-alley-11.png"));
- _points[0x2d09] = Point(QImage(":/POI/swimming-11.png"));
- _points[0x2d0a] = Point(QImage(":/POI/fitness-centre-11.png"));
- _points[0x2d0b] = Point(QImage(":/POI/airfield-11.png"));
+ _points[0x2c01] = Point(QImage(":/IMG/amusement-park-11.png"));
+ _points[0x2c02] = Point(QImage(":/IMG/museum-11.png"));
+ _points[0x2c03] = Point(QImage(":/IMG/library-11.png"));
+ _points[0x2c04] = Point(QImage(":/IMG/landmark-11.png"));
+ _points[0x2c05] = Point(QImage(":/IMG/school-11.png"));
+ _points[0x2c06] = Point(QImage(":/IMG/garden-11.png"));
+ _points[0x2c07] = Point(QImage(":/IMG/zoo-11.png"));
+ _points[0x2c08] = Point(QImage(":/IMG/soccer-11.png"));
+ _points[0x2c0a] = Point(QImage(":/IMG/bar-11.png"));
+ _points[0x2c0b] = Point(QImage(":/IMG/place-of-worship-11.png"));
+ _points[0x2c0d] = Point(QImage(":/IMG/religious-muslim-11.png"));
+ _points[0x2c0e] = Point(QImage(":/IMG/religious-christian-11.png"));
+ _points[0x2c10] = Point(QImage(":/IMG/religious-jewish-11.png"));
+ _points[0x2d01] = Point(QImage(":/IMG/theatre-11.png"));
+ _points[0x2d02] = Point(QImage(":/IMG/bar-11.png"));
+ _points[0x2d03] = Point(QImage(":/IMG/cinema-11.png"));
+ _points[0x2d04] = Point(QImage(":/IMG/casino-11.png"));
+ _points[0x2d05] = Point(QImage(":/IMG/golf-11.png"));
+ _points[0x2d06] = Point(QImage(":/IMG/skiing-11.png"));
+ _points[0x2d07] = Point(QImage(":/IMG/bowling-alley-11.png"));
+ _points[0x2d09] = Point(QImage(":/IMG/swimming-11.png"));
+ _points[0x2d0a] = Point(QImage(":/IMG/fitness-centre-11.png"));
+ _points[0x2d0b] = Point(QImage(":/IMG/airfield-11.png"));
- _points[0x2e02] = Point(QImage(":/POI/grocery-11.png"));
- _points[0x2e03] = Point(QImage(":/POI/shop-11.png"));
- _points[0x2e05] = Point(QImage(":/POI/pharmacy-11.png"));
- _points[0x2e06] = Point(QImage(":/POI/convenience-11.png"));
- _points[0x2e07] = Point(QImage(":/POI/clothing-store-11.png"));
- _points[0x2e08] = Point(QImage(":/POI/garden-centre-11.png"));
- _points[0x2e09] = Point(QImage(":/POI/furniture-11.png"));
- _points[0x2e0a] = Point(QImage(":/POI/shop-11.png"));
- _points[0x2e0c] = Point(QImage(":/POI/shop-11.png"));
+ _points[0x2e02] = Point(QImage(":/IMG/grocery-11.png"));
+ _points[0x2e03] = Point(QImage(":/IMG/shop-11.png"));
+ _points[0x2e05] = Point(QImage(":/IMG/pharmacy-11.png"));
+ _points[0x2e06] = Point(QImage(":/IMG/convenience-11.png"));
+ _points[0x2e07] = Point(QImage(":/IMG/clothing-store-11.png"));
+ _points[0x2e08] = Point(QImage(":/IMG/garden-centre-11.png"));
+ _points[0x2e09] = Point(QImage(":/IMG/furniture-11.png"));
+ _points[0x2e0a] = Point(QImage(":/IMG/shop-11.png"));
+ _points[0x2e0c] = Point(QImage(":/IMG/shop-11.png"));
- _points[0x2f01] = Point(QImage(":/POI/fuel-11.png"));
- _points[0x2f02] = Point(QImage(":/POI/car-rental-11.png"));
- _points[0x2f03] = Point(QImage(":/POI/car-repair-11.png"));
- _points[0x2f04] = Point(QImage(":/POI/airport-11.png"));
- _points[0x2f05] = Point(QImage(":/POI/post-11.png"));
- _points[0x2f06] = Point(QImage(":/POI/bank-11.png"));
- _points[0x2f07] = Point(QImage(":/POI/car-11.png"));
- _points[0x2f08] = Point(QImage(":/POI/bus-11.png"));
- _points[0x2f09] = Point(QImage(":/POI/harbor-11.png"));
- _points[0x2f0b] = Point(QImage(":/POI/parking-11.png"));
+ _points[0x2f01] = Point(QImage(":/IMG/fuel-11.png"));
+ _points[0x2f02] = Point(QImage(":/IMG/car-rental-11.png"));
+ _points[0x2f03] = Point(QImage(":/IMG/car-repair-11.png"));
+ _points[0x2f04] = Point(QImage(":/IMG/airport-11.png"));
+ _points[0x2f05] = Point(QImage(":/IMG/post-11.png"));
+ _points[0x2f06] = Point(QImage(":/IMG/bank-11.png"));
+ _points[0x2f07] = Point(QImage(":/IMG/car-11.png"));
+ _points[0x2f08] = Point(QImage(":/IMG/bus-11.png"));
+ _points[0x2f09] = Point(QImage(":/IMG/harbor-11.png"));
+ _points[0x2f0b] = Point(QImage(":/IMG/parking-11.png"));
_points[0x2f0b].setTextFontSize(None);
- _points[0x2f0c] = Point(QImage(":/POI/toilet-11.png"));
+ _points[0x2f0c] = Point(QImage(":/IMG/toilet-11.png"));
_points[0x2f0c].setTextFontSize(None);
- _points[0x2f10] = Point(QImage(":/POI/hairdresser-11.png"));
+ _points[0x2f10] = Point(QImage(":/IMG/hairdresser-11.png"));
_points[0x2f12].setTextFontSize(None);
- _points[0x2f13] = Point(QImage(":/POI/hardware-11.png"));
- _points[0x2f17] = Point(QImage(":/POI/bus-11.png"));
+ _points[0x2f13] = Point(QImage(":/IMG/hardware-11.png"));
+ _points[0x2f17] = Point(QImage(":/IMG/bus-11.png"));
- _points[0x3001] = Point(QImage(":/POI/police-11.png"));
- _points[0x3002] = Point(QImage(":/POI/hospital-11.png"));
- _points[0x3003] = Point(QImage(":/POI/town-hall-11.png"));
- _points[0x3006] = Point(QImage(":/POI/entrance-alt1-11.png"));
- _points[0x3007] = Point(QImage(":/POI/town-hall-11.png"));
- _points[0x3008] = Point(QImage(":/POI/fire-station-11.png"));
+ _points[0x3001] = Point(QImage(":/IMG/police-11.png"));
+ _points[0x3002] = Point(QImage(":/IMG/hospital-11.png"));
+ _points[0x3003] = Point(QImage(":/IMG/town-hall-11.png"));
+ _points[0x3006] = Point(QImage(":/IMG/entrance-alt1-11.png"));
+ _points[0x3007] = Point(QImage(":/IMG/town-hall-11.png"));
+ _points[0x3008] = Point(QImage(":/IMG/fire-station-11.png"));
- _points[0x4000] = Point(QImage(":/POI/golf-11.png"));
- _points[0x4300] = Point(QImage(":/POI/harbor-11.png"));
- _points[0x4400] = Point(QImage(":/POI/fuel-11.png"));
- _points[0x4500] = Point(QImage(":/POI/restaurant-11.png"));
- _points[0x4600] = Point(QImage(":/POI/bar-11.png"));
- _points[0x4900] = Point(QImage(":/POI/park-11.png"));
- _points[0x4a00] = Point(QImage(":/POI/picnic-site-11.png"));
- _points[0x4c00] = Point(QImage(":/POI/information-11.png"));
- _points[0x4800] = Point(QImage(":/POI/campsite-11.png"));
- _points[0x4a00] = Point(QImage(":/POI/picnic-site-11.png"));
- _points[0x4b00] = Point(QImage(":/POI/hospital-11.png"));
- _points[0x4c00] = Point(QImage(":/POI/information-11.png"));
- _points[0x4d00] = Point(QImage(":/POI/parking-11.png"));
+ _points[0x4000] = Point(QImage(":/IMG/golf-11.png"));
+ _points[0x4300] = Point(QImage(":/IMG/harbor-11.png"));
+ _points[0x4400] = Point(QImage(":/IMG/fuel-11.png"));
+ _points[0x4500] = Point(QImage(":/IMG/restaurant-11.png"));
+ _points[0x4600] = Point(QImage(":/IMG/bar-11.png"));
+ _points[0x4900] = Point(QImage(":/IMG/park-11.png"));
+ _points[0x4a00] = Point(QImage(":/IMG/picnic-site-11.png"));
+ _points[0x4c00] = Point(QImage(":/IMG/information-11.png"));
+ _points[0x4800] = Point(QImage(":/IMG/campsite-11.png"));
+ _points[0x4a00] = Point(QImage(":/IMG/picnic-site-11.png"));
+ _points[0x4b00] = Point(QImage(":/IMG/hospital-11.png"));
+ _points[0x4c00] = Point(QImage(":/IMG/information-11.png"));
+ _points[0x4d00] = Point(QImage(":/IMG/parking-11.png"));
_points[0x4d00].setTextFontSize(None);
- _points[0x4e00] = Point(QImage(":/POI/toilet-11.png"));
+ _points[0x4e00] = Point(QImage(":/IMG/toilet-11.png"));
_points[0x4e00].setTextFontSize(None);
- _points[0x5000] = Point(QImage(":/POI/drinking-water-11.png"));
+ _points[0x5000] = Point(QImage(":/IMG/drinking-water-11.png"));
_points[0x5000].setTextFontSize(None);
- _points[0x5100] = Point(QImage(":/POI/telephone-11.png"));
- _points[0x5200] = Point(QImage(":/POI/viewpoint-11.png"));
- _points[0x5300] = Point(QImage(":/POI/skiing-11.png"));
- _points[0x5400] = Point(QImage(":/POI/swimming-11.png"));
- _points[0x5500] = Point(QImage(":/POI/dam-11.png"));
- _points[0x5700] = Point(QImage(":/POI/danger-11.png"));
- _points[0x5800] = Point(QImage(":/POI/roadblock-11.png"));
- _points[0x5900] = Point(QImage(":/POI/airport-11.png"));
- _points[0x5901] = Point(QImage(":/POI/airport-11.png"));
- _points[0x5904] = Point(QImage(":/POI/heliport-11.png"));
+ _points[0x5100] = Point(QImage(":/IMG/telephone-11.png"));
+ _points[0x5200] = Point(QImage(":/IMG/viewpoint-11.png"));
+ _points[0x5300] = Point(QImage(":/IMG/skiing-11.png"));
+ _points[0x5400] = Point(QImage(":/IMG/swimming-11.png"));
+ _points[0x5500] = Point(QImage(":/IMG/dam-11.png"));
+ _points[0x5700] = Point(QImage(":/IMG/danger-11.png"));
+ _points[0x5800] = Point(QImage(":/IMG/roadblock-11.png"));
+ _points[0x5900] = Point(QImage(":/IMG/airport-11.png"));
+ _points[0x5901] = Point(QImage(":/IMG/airport-11.png"));
+ _points[0x5904] = Point(QImage(":/IMG/heliport-11.png"));
- _points[0x6401] = Point(QImage(":/POI/bridge-11.png"));
- _points[0x6402] = Point(QImage(":/POI/building-alt1-11.png"));
- _points[0x6403] = Point(QImage(":/POI/cemetery-11.png"));
- _points[0x6404] = Point(QImage(":/POI/religious-christian-11.png"));
- _points[0x6407] = Point(QImage(":/POI/dam-11.png"));
- _points[0x6408] = Point(QImage(":/POI/hospital-11.png"));
- _points[0x6409] = Point(QImage(":/POI/dam-11.png"));
- _points[0x640d] = Point(QImage(":/POI/communications-tower-11.png"));
- _points[0x640e] = Point(QImage(":/POI/park-11.png"));
- _points[0x640f] = Point(QImage(":/POI/post-11.png"));
- _points[0x6411] = Point(QImage(":/POI/communications-tower-11.png"));
+ _points[0x6401] = Point(QImage(":/IMG/bridge-11.png"));
+ _points[0x6402] = Point(QImage(":/IMG/building-alt1-11.png"));
+ _points[0x6403] = Point(QImage(":/IMG/cemetery-11.png"));
+ _points[0x6404] = Point(QImage(":/IMG/religious-christian-11.png"));
+ _points[0x6407] = Point(QImage(":/IMG/dam-11.png"));
+ _points[0x6408] = Point(QImage(":/IMG/hospital-11.png"));
+ _points[0x6409] = Point(QImage(":/IMG/dam-11.png"));
+ _points[0x640d] = Point(QImage(":/IMG/communications-tower-11.png"));
+ _points[0x640e] = Point(QImage(":/IMG/park-11.png"));
+ _points[0x640f] = Point(QImage(":/IMG/post-11.png"));
+ _points[0x6411] = Point(QImage(":/IMG/communications-tower-11.png"));
- _points[0x6508] = Point(QImage(":/POI/waterfall-11.png"));
- _points[0x6513] = Point(QImage(":/POI/wetland-11.png"));
- _points[0x6604] = Point(QImage(":/POI/beach-11.png"));
- _points[0x6616] = Point(QImage(":/POI/mountain-11.png"));
+ _points[0x6508] = Point(QImage(":/IMG/waterfall-11.png"));
+ _points[0x6513] = Point(QImage(":/IMG/wetland-11.png"));
+ _points[0x6604] = Point(QImage(":/IMG/beach-11.png"));
+ _points[0x6616] = Point(QImage(":/IMG/mountain-11.png"));
// NT types
diff --git a/src/map/bsbmap.cpp b/src/map/bsbmap.cpp
index 3cb1f542..3758a50f 100644
--- a/src/map/bsbmap.cpp
+++ b/src/map/bsbmap.cpp
@@ -1,11 +1,11 @@
#include
#include
#include
+#include "common/color.h"
#include "image.h"
#include "gcs.h"
#include "pcs.h"
#include "calibrationpoint.h"
-#include "color.h"
#include "bsbmap.h"
diff --git a/src/map/ozf.cpp b/src/map/ozf.cpp
index c0654810..7ff7499d 100644
--- a/src/map/ozf.cpp
+++ b/src/map/ozf.cpp
@@ -1,7 +1,7 @@
#include
#include
#include
-#include "color.h"
+#include "common/color.h"
#include "ozf.h"
diff --git a/src/map/rmap.cpp b/src/map/rmap.cpp
index 0af194c3..be0fb38e 100644
--- a/src/map/rmap.cpp
+++ b/src/map/rmap.cpp
@@ -6,11 +6,11 @@
#include
#include "common/rectc.h"
#include "common/wgs84.h"
+#include "common/color.h"
#include "calibrationpoint.h"
#include "utm.h"
#include "pcs.h"
#include "rectd.h"
-#include "color.h"
#include "rmap.h"