Improved POI handling in IMG maps
79
gpxsee.qrc
@ -1,5 +1,6 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<!-- GUI -->
|
||||
<file alias="gpxsee.png">icons/gpxsee.png</file>
|
||||
<file alias="gpxsee@2x.png">icons/gpxsee@2x.png</file>
|
||||
<file alias="dialog-close.png">icons/GUI/dialog-close.png</file>
|
||||
@ -42,5 +43,83 @@
|
||||
<file alias="view-filter@2x.png">icons/GUI/view-filter@2x.png</file>
|
||||
<file alias="applications-internet_32.png">icons/GUI/applications-internet_32.png</file>
|
||||
<file alias="applications-internet_32@2x.png">icons/GUI/applications-internet_32@2x.png</file>
|
||||
|
||||
<!-- POI -->
|
||||
<file alias="airfield-11.png">icons/POI/airfield-11.png</file>
|
||||
<file alias="airport-11.png">icons/POI/airport-11.png</file>
|
||||
<file alias="amusement-park-11.png">icons/POI/amusement-park-11.png</file>
|
||||
<file alias="bakery-11.png">icons/POI/bakery-11.png</file>
|
||||
<file alias="bank-11.png">icons/POI/bank-11.png</file>
|
||||
<file alias="bar-11.png">icons/POI/bar-11.png</file>
|
||||
<file alias="bbq-11.png">icons/POI/bbq-11.png</file>
|
||||
<file alias="beach-11.png">icons/POI/beach-11.png</file>
|
||||
<file alias="bowling-alley-11.png">icons/POI/bowling-alley-11.png</file>
|
||||
<file alias="building-alt1-11.png">icons/POI/building-alt1-11.png</file>
|
||||
<file alias="bridge-11.png">icons/POI/bridge-11.png</file>
|
||||
<file alias="bus-11.png">icons/POI/bus-11.png</file>
|
||||
<file alias="cafe-11.png">icons/POI/cafe-11.png</file>
|
||||
<file alias="campsite-11.png">icons/POI/campsite-11.png</file>
|
||||
<file alias="car-11.png">icons/POI/car-11.png</file>
|
||||
<file alias="car-rental-11.png">icons/POI/car-rental-11.png</file>
|
||||
<file alias="car-repair-11.png">icons/POI/car-repair-11.png</file>
|
||||
<file alias="casino-11.png">icons/POI/casino-11.png</file>
|
||||
<file alias="cemetery-11.png">icons/POI/cemetery-11.png</file>
|
||||
<file alias="cinema-11.png">icons/POI/cinema-11.png</file>
|
||||
<file alias="clothing-store-11.png">icons/POI/clothing-store-11.png</file>
|
||||
<file alias="communications-tower-11.png">icons/POI/communications-tower-11.png</file>
|
||||
<file alias="dam-11.png">icons/POI/dam-11.png</file>
|
||||
<file alias="danger-11.png">icons/POI/danger-11.png</file>
|
||||
<file alias="drinking-water-11.png">icons/POI/drinking-water-11.png</file>
|
||||
<file alias="fast-food-11.png">icons/POI/fast-food-11.png</file>
|
||||
<file alias="fire-station-11.png">icons/POI/fire-station-11.png</file>
|
||||
<file alias="fitness-centre-11.png">icons/POI/fitness-centre-11.png</file>
|
||||
<file alias="fuel-11.png">icons/POI/fuel-11.png</file>
|
||||
<file alias="furniture-11.png">icons/POI/furniture-11.png</file>
|
||||
<file alias="garden-11.png">icons/POI/garden-11.png</file>
|
||||
<file alias="garden-centre-11.png">icons/POI/garden-centre-11.png</file>
|
||||
<file alias="golf-11.png">icons/POI/golf-11.png</file>
|
||||
<file alias="grocery-11.png">icons/POI/grocery-11.png</file>
|
||||
<file alias="hairdresser-11.png">icons/POI/hairdresser-11.png</file>
|
||||
<file alias="harbor-11.png">icons/POI/harbor-11.png</file>
|
||||
<file alias="hardware-11.png">icons/POI/hardware-11.png</file>
|
||||
<file alias="heliport-11.png">icons/POI/heliport-11.png</file>
|
||||
<file alias="hospital-11.png">icons/POI/hospital-11.png</file>
|
||||
<file alias="information-11.png">icons/POI/information-11.png</file>
|
||||
<file alias="landmark-11.png">icons/POI/landmark-11.png</file>
|
||||
<file alias="library-11.png">icons/POI/library-11.png</file>
|
||||
<file alias="lodging-11.png">icons/POI/lodging-11.png</file>
|
||||
<file alias="mountain-11.png">icons/POI/mountain-11.png</file>
|
||||
<file alias="museum-11.png">icons/POI/museum-11.png</file>
|
||||
<file alias="park-11.png">icons/POI/park-11.png</file>
|
||||
<file alias="parking-11.png">icons/POI/parking-11.png</file>
|
||||
<file alias="pharmacy-11.png">icons/POI/pharmacy-11.png</file>
|
||||
<file alias="picnic-site-11.png">icons/POI/picnic-site-11.png</file>
|
||||
<file alias="place-of-worship-11.png">icons/POI/place-of-worship-11.png</file>
|
||||
<file alias="police-11.png">icons/POI/police-11.png</file>
|
||||
<file alias="post-11.png">icons/POI/post-11.png</file>
|
||||
<file alias="prison-11.png">icons/POI/prison-11.png</file>
|
||||
<file alias="religious-christian-11.png">icons/POI/religious-christian-11.png</file>
|
||||
<file alias="religious-jewish-11.png">icons/POI/religious-jewish-11.png</file>
|
||||
<file alias="religious-muslim-11.png">icons/POI/religious-muslim-11.png</file>
|
||||
<file alias="restaurant-11.png">icons/POI/restaurant-11.png</file>
|
||||
<file alias="restaurant-noodle-11.png">icons/POI/restaurant-noodle-11.png</file>
|
||||
<file alias="restaurant-pizza-11.png">icons/POI/restaurant-pizza-11.png</file>
|
||||
<file alias="restaurant-seafood-11.png">icons/POI/restaurant-seafood-11.png</file>
|
||||
<file alias="roadblock-11.png">icons/POI/roadblock-11.png</file>
|
||||
<file alias="school-11.png">icons/POI/school-11.png</file>
|
||||
<file alias="shelter-11.png">icons/POI/shelter-11.png</file>
|
||||
<file alias="shop-11.png">icons/POI/shop-11.png</file>
|
||||
<file alias="skiing-11.png">icons/POI/skiing-11.png</file>
|
||||
<file alias="soccer-11.png">icons/POI/soccer-11.png</file>
|
||||
<file alias="swimming-11.png">icons/POI/swimming-11.png</file>
|
||||
<file alias="theatre-11.png">icons/POI/theatre-11.png</file>
|
||||
<file alias="telephone-11.png">icons/POI/telephone-11.png</file>
|
||||
<file alias="toilet-11.png">icons/POI/toilet-11.png</file>
|
||||
<file alias="town-hall-11.png">icons/POI/town-hall-11.png</file>
|
||||
<file alias="viewpoint-11.png">icons/POI/viewpoint-11.png</file>
|
||||
<file alias="village-11.png">icons/POI/village-11.png</file>
|
||||
<file alias="waterfall-11.png">icons/POI/waterfall-11.png</file>
|
||||
<file alias="wetland-11.png">icons/POI/wetland-11.png</file>
|
||||
<file alias="zoo-11.png">icons/POI/zoo-11.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
BIN
icons/POI/airfield-11.png
Normal file
After Width: | Height: | Size: 380 B |
BIN
icons/POI/airport-11.png
Normal file
After Width: | Height: | Size: 402 B |
BIN
icons/POI/amusement-park-11.png
Normal file
After Width: | Height: | Size: 428 B |
BIN
icons/POI/bakery-11.png
Normal file
After Width: | Height: | Size: 383 B |
BIN
icons/POI/bank-11.png
Normal file
After Width: | Height: | Size: 363 B |
BIN
icons/POI/bar-11.png
Normal file
After Width: | Height: | Size: 374 B |
BIN
icons/POI/bbq-11.png
Normal file
After Width: | Height: | Size: 393 B |
BIN
icons/POI/beach-11.png
Normal file
After Width: | Height: | Size: 395 B |
BIN
icons/POI/bowling-alley-11.png
Normal file
After Width: | Height: | Size: 386 B |
BIN
icons/POI/bridge-11.png
Normal file
After Width: | Height: | Size: 365 B |
BIN
icons/POI/building-alt1-11.png
Normal file
After Width: | Height: | Size: 343 B |
BIN
icons/POI/bus-11.png
Normal file
After Width: | Height: | Size: 378 B |
BIN
icons/POI/cafe-11.png
Normal file
After Width: | Height: | Size: 351 B |
BIN
icons/POI/campsite-11.png
Normal file
After Width: | Height: | Size: 366 B |
BIN
icons/POI/car-11.png
Normal file
After Width: | Height: | Size: 368 B |
BIN
icons/POI/car-rental-11.png
Normal file
After Width: | Height: | Size: 390 B |
BIN
icons/POI/car-repair-11.png
Normal file
After Width: | Height: | Size: 381 B |
BIN
icons/POI/casino-11.png
Normal file
After Width: | Height: | Size: 369 B |
BIN
icons/POI/cemetery-11.png
Normal file
After Width: | Height: | Size: 357 B |
BIN
icons/POI/cinema-11.png
Normal file
After Width: | Height: | Size: 356 B |
BIN
icons/POI/clothing-store-11.png
Normal file
After Width: | Height: | Size: 351 B |
BIN
icons/POI/communications-tower-11.png
Normal file
After Width: | Height: | Size: 402 B |
BIN
icons/POI/dam-11.png
Normal file
After Width: | Height: | Size: 376 B |
BIN
icons/POI/danger-11.png
Normal file
After Width: | Height: | Size: 421 B |
BIN
icons/POI/drinking-water-11.png
Normal file
After Width: | Height: | Size: 367 B |
BIN
icons/POI/fast-food-11.png
Normal file
After Width: | Height: | Size: 344 B |
BIN
icons/POI/fire-station-11.png
Normal file
After Width: | Height: | Size: 403 B |
BIN
icons/POI/fitness-centre-11.png
Normal file
After Width: | Height: | Size: 326 B |
BIN
icons/POI/fuel-11.png
Normal file
After Width: | Height: | Size: 377 B |
BIN
icons/POI/furniture-11.png
Normal file
After Width: | Height: | Size: 348 B |
BIN
icons/POI/garden-11.png
Normal file
After Width: | Height: | Size: 402 B |
BIN
icons/POI/garden-centre-11.png
Normal file
After Width: | Height: | Size: 352 B |
BIN
icons/POI/golf-11.png
Normal file
After Width: | Height: | Size: 394 B |
BIN
icons/POI/grocery-11.png
Normal file
After Width: | Height: | Size: 355 B |
BIN
icons/POI/hairdresser-11.png
Normal file
After Width: | Height: | Size: 380 B |
BIN
icons/POI/harbor-11.png
Normal file
After Width: | Height: | Size: 404 B |
BIN
icons/POI/hardware-11.png
Normal file
After Width: | Height: | Size: 366 B |
BIN
icons/POI/heliport-11.png
Normal file
After Width: | Height: | Size: 390 B |
BIN
icons/POI/hospital-11.png
Normal file
After Width: | Height: | Size: 326 B |
BIN
icons/POI/information-11.png
Normal file
After Width: | Height: | Size: 359 B |
BIN
icons/POI/landmark-11.png
Normal file
After Width: | Height: | Size: 341 B |
BIN
icons/POI/library-11.png
Normal file
After Width: | Height: | Size: 410 B |
126
icons/POI/licence.txt
Normal file
@ -0,0 +1,126 @@
|
||||
The POI icons are Mapbox Maki icons (https://labs.mapbox.com/maki-icons/)
|
||||
licensed under CC0.
|
||||
|
||||
-----
|
||||
|
||||
Creative Commons Legal Code
|
||||
|
||||
CC0 1.0 Universal
|
||||
|
||||
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
|
||||
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
|
||||
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
|
||||
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
|
||||
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
|
||||
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
|
||||
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
|
||||
HEREUNDER.
|
||||
|
||||
Statement of Purpose
|
||||
|
||||
The laws of most jurisdictions throughout the world automatically confer
|
||||
exclusive Copyright and Related Rights (defined below) upon the creator
|
||||
and subsequent owner(s) (each and all, an "owner") of an original work of
|
||||
authorship and/or a database (each, a "Work").
|
||||
|
||||
Certain owners wish to permanently relinquish those rights to a Work for
|
||||
the purpose of contributing to a commons of creative, cultural and
|
||||
scientific works ("Commons") that the public can reliably and without fear
|
||||
of later claims of infringement build upon, modify, incorporate in other
|
||||
works, reuse and redistribute as freely as possible in any form whatsoever
|
||||
and for any purposes, including without limitation commercial purposes.
|
||||
These owners may contribute to the Commons to promote the ideal of a free
|
||||
culture and the further production of creative, cultural and scientific
|
||||
works, or to gain reputation or greater distribution for their Work in
|
||||
part through the use and efforts of others.
|
||||
|
||||
For these and/or other purposes and motivations, and without any
|
||||
expectation of additional consideration or compensation, the person
|
||||
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
|
||||
is an owner of Copyright and Related Rights in the Work, voluntarily
|
||||
elects to apply CC0 to the Work and publicly distribute the Work under its
|
||||
terms, with knowledge of his or her Copyright and Related Rights in the
|
||||
Work and the meaning and intended legal effect of CC0 on those rights.
|
||||
|
||||
1. Copyright and Related Rights. A Work made available under CC0 may be
|
||||
protected by copyright and related or neighboring rights ("Copyright and
|
||||
Related Rights"). Copyright and Related Rights include, but are not
|
||||
limited to, the following:
|
||||
|
||||
i. the right to reproduce, adapt, distribute, perform, display,
|
||||
communicate, and translate a Work;
|
||||
ii. moral rights retained by the original author(s) and/or performer(s);
|
||||
iii. publicity and privacy rights pertaining to a person's image or
|
||||
likeness depicted in a Work;
|
||||
iv. rights protecting against unfair competition in regards to a Work,
|
||||
subject to the limitations in paragraph 4(a), below;
|
||||
v. rights protecting the extraction, dissemination, use and reuse of data
|
||||
in a Work;
|
||||
vi. database rights (such as those arising under Directive 96/9/EC of the
|
||||
European Parliament and of the Council of 11 March 1996 on the legal
|
||||
protection of databases, and under any national implementation
|
||||
thereof, including any amended or successor version of such
|
||||
directive); and
|
||||
vii. other similar, equivalent or corresponding rights throughout the
|
||||
world based on applicable law or treaty, and any national
|
||||
implementations thereof.
|
||||
|
||||
2. Waiver. To the greatest extent permitted by, but not in contravention
|
||||
of, applicable law, Affirmer hereby overtly, fully, permanently,
|
||||
irrevocably and unconditionally waives, abandons, and surrenders all of
|
||||
Affirmer's Copyright and Related Rights and associated claims and causes
|
||||
of action, whether now known or unknown (including existing as well as
|
||||
future claims and causes of action), in the Work (i) in all territories
|
||||
worldwide, (ii) for the maximum duration provided by applicable law or
|
||||
treaty (including future time extensions), (iii) in any current or future
|
||||
medium and for any number of copies, and (iv) for any purpose whatsoever,
|
||||
including without limitation commercial, advertising or promotional
|
||||
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
|
||||
member of the public at large and to the detriment of Affirmer's heirs and
|
||||
successors, fully intending that such Waiver shall not be subject to
|
||||
revocation, rescission, cancellation, termination, or any other legal or
|
||||
equitable action to disrupt the quiet enjoyment of the Work by the public
|
||||
as contemplated by Affirmer's express Statement of Purpose.
|
||||
|
||||
3. Public License Fallback. Should any part of the Waiver for any reason
|
||||
be judged legally invalid or ineffective under applicable law, then the
|
||||
Waiver shall be preserved to the maximum extent permitted taking into
|
||||
account Affirmer's express Statement of Purpose. In addition, to the
|
||||
extent the Waiver is so judged Affirmer hereby grants to each affected
|
||||
person a royalty-free, non transferable, non sublicensable, non exclusive,
|
||||
irrevocable and unconditional license to exercise Affirmer's Copyright and
|
||||
Related Rights in the Work (i) in all territories worldwide, (ii) for the
|
||||
maximum duration provided by applicable law or treaty (including future
|
||||
time extensions), (iii) in any current or future medium and for any number
|
||||
of copies, and (iv) for any purpose whatsoever, including without
|
||||
limitation commercial, advertising or promotional purposes (the
|
||||
"License"). The License shall be deemed effective as of the date CC0 was
|
||||
applied by Affirmer to the Work. Should any part of the License for any
|
||||
reason be judged legally invalid or ineffective under applicable law, such
|
||||
partial invalidity or ineffectiveness shall not invalidate the remainder
|
||||
of the License, and in such case Affirmer hereby affirms that he or she
|
||||
will not (i) exercise any of his or her remaining Copyright and Related
|
||||
Rights in the Work or (ii) assert any associated claims and causes of
|
||||
action with respect to the Work, in either case contrary to Affirmer's
|
||||
express Statement of Purpose.
|
||||
|
||||
4. Limitations and Disclaimers.
|
||||
|
||||
a. No trademark or patent rights held by Affirmer are waived, abandoned,
|
||||
surrendered, licensed or otherwise affected by this document.
|
||||
b. Affirmer 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, merchantability, fitness for a particular purpose, non
|
||||
infringement, or the absence of latent or other defects, accuracy, or
|
||||
the present or absence of errors, whether or not discoverable, all to
|
||||
the greatest extent permissible under applicable law.
|
||||
c. Affirmer disclaims responsibility for clearing rights of other persons
|
||||
that may apply to the Work or any use thereof, including without
|
||||
limitation any person's Copyright and Related Rights in the Work.
|
||||
Further, Affirmer disclaims responsibility for obtaining any necessary
|
||||
consents, permissions or other rights required for any use of the
|
||||
Work.
|
||||
d. Affirmer understands and acknowledges that Creative Commons is not a
|
||||
party to this document and has no duty or obligation with respect to
|
||||
this CC0 or use of the Work.
|
BIN
icons/POI/lodging-11.png
Normal file
After Width: | Height: | Size: 345 B |
BIN
icons/POI/mountain-11.png
Normal file
After Width: | Height: | Size: 384 B |
BIN
icons/POI/museum-11.png
Normal file
After Width: | Height: | Size: 366 B |
BIN
icons/POI/park-11.png
Normal file
After Width: | Height: | Size: 399 B |
BIN
icons/POI/parking-11.png
Normal file
After Width: | Height: | Size: 369 B |
BIN
icons/POI/pharmacy-11.png
Normal file
After Width: | Height: | Size: 364 B |
BIN
icons/POI/picnic-site-11.png
Normal file
After Width: | Height: | Size: 377 B |
BIN
icons/POI/place-of-worship-11.png
Normal file
After Width: | Height: | Size: 344 B |
BIN
icons/POI/police-11.png
Normal file
After Width: | Height: | Size: 394 B |
BIN
icons/POI/post-11.png
Normal file
After Width: | Height: | Size: 365 B |
BIN
icons/POI/prison-11.png
Normal file
After Width: | Height: | Size: 323 B |
BIN
icons/POI/religious-christian-11.png
Normal file
After Width: | Height: | Size: 311 B |
BIN
icons/POI/religious-jewish-11.png
Normal file
After Width: | Height: | Size: 359 B |
BIN
icons/POI/religious-muslim-11.png
Normal file
After Width: | Height: | Size: 401 B |
BIN
icons/POI/restaurant-11.png
Normal file
After Width: | Height: | Size: 361 B |
BIN
icons/POI/restaurant-noodle-11.png
Normal file
After Width: | Height: | Size: 396 B |
BIN
icons/POI/restaurant-pizza-11.png
Normal file
After Width: | Height: | Size: 396 B |
BIN
icons/POI/restaurant-seafood-11.png
Normal file
After Width: | Height: | Size: 407 B |
BIN
icons/POI/roadblock-11.png
Normal file
After Width: | Height: | Size: 383 B |
BIN
icons/POI/school-11.png
Normal file
After Width: | Height: | Size: 333 B |
BIN
icons/POI/shelter-11.png
Normal file
After Width: | Height: | Size: 325 B |
BIN
icons/POI/shop-11.png
Normal file
After Width: | Height: | Size: 381 B |
BIN
icons/POI/skiing-11.png
Normal file
After Width: | Height: | Size: 399 B |
BIN
icons/POI/soccer-11.png
Normal file
After Width: | Height: | Size: 397 B |
BIN
icons/POI/swimming-11.png
Normal file
After Width: | Height: | Size: 404 B |
BIN
icons/POI/telephone-11.png
Normal file
After Width: | Height: | Size: 377 B |
BIN
icons/POI/theatre-11.png
Normal file
After Width: | Height: | Size: 428 B |
BIN
icons/POI/toilet-11.png
Normal file
After Width: | Height: | Size: 407 B |
BIN
icons/POI/town-hall-11.png
Normal file
After Width: | Height: | Size: 348 B |
BIN
icons/POI/viewpoint-11.png
Normal file
After Width: | Height: | Size: 383 B |
BIN
icons/POI/village-11.png
Normal file
After Width: | Height: | Size: 373 B |
BIN
icons/POI/waterfall-11.png
Normal file
After Width: | Height: | Size: 392 B |
BIN
icons/POI/wetland-11.png
Normal file
After Width: | Height: | Size: 427 B |
BIN
icons/POI/zoo-11.png
Normal file
After Width: | Height: | Size: 382 B |
@ -255,3 +255,18 @@ bool IMG::readBlock(int blockNum, QByteArray &data)
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifndef QT_NO_DEBUG
|
||||
QDebug operator<<(QDebug dbg, const IMG::Point &point)
|
||||
{
|
||||
dbg.nospace() << "Point(" << hex << point.type << ", " << point.label
|
||||
<< ", " << point.poi << ")";
|
||||
return dbg.space();
|
||||
}
|
||||
|
||||
QDebug operator<<(QDebug dbg, const IMG::Poly &poly)
|
||||
{
|
||||
dbg.nospace() << "Poly(" << hex << poly.type << ", " << poly.label << ")";
|
||||
return dbg.space();
|
||||
}
|
||||
#endif // QT_NO_DEBUG
|
||||
|
@ -40,7 +40,7 @@ public:
|
||||
quint64 id;
|
||||
|
||||
bool operator<(const Point &other) const
|
||||
{return id < other.id;}
|
||||
{return id > other.id;}
|
||||
};
|
||||
|
||||
|
||||
@ -84,4 +84,9 @@ private:
|
||||
QString _errorString;
|
||||
};
|
||||
|
||||
#ifndef QT_NO_DEBUG
|
||||
QDebug operator<<(QDebug dbg, const IMG::Point &point);
|
||||
QDebug operator<<(QDebug dbg, const IMG::Poly &poly);
|
||||
#endif // QT_NO_DEBUG
|
||||
|
||||
#endif // IMG_H
|
||||
|
@ -338,7 +338,8 @@ bool RGNFile::pointObjects(const RectC &rect, Handle &hdl, const SubDiv *subdiv,
|
||||
point.poi = labelPtr & 0x400000;
|
||||
if (lbl && (labelPtr & 0x3FFFFF)) {
|
||||
point.label = lbl->label(lblHdl, labelPtr & 0x3FFFFF, point.poi);
|
||||
point.id = ((quint64)lbl->offset())<<24 | (labelPtr & 0x3FFFFF);
|
||||
point.id = ((quint64)point.type)<<40 | ((quint64)lbl->offset())<<24
|
||||
| (labelPtr & 0x3FFFFF);
|
||||
}
|
||||
|
||||
points->append(point);
|
||||
@ -383,7 +384,8 @@ bool RGNFile::extPointObjects(const RectC &rect, Handle &hdl,
|
||||
point.poi = labelPtr & 0x400000;
|
||||
if (lbl && (labelPtr & 0x3FFFFF)) {
|
||||
point.label = lbl->label(lblHdl, labelPtr & 0x3FFFFF, point.poi);
|
||||
point.id = ((quint64)lbl->offset())<<24 | (labelPtr & 0x3FFFFF);
|
||||
point.id = ((quint64)point.type)<<40
|
||||
| ((quint64)lbl->offset())<<24 | (labelPtr & 0x3FFFFF);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -147,6 +147,137 @@ void Style::defaultLineStyle()
|
||||
_lines[TYPE(0x29)].setTextFontSize(Style::None);
|
||||
}
|
||||
|
||||
void Style::defaultPOIStyle()
|
||||
{
|
||||
_points[0x2a00] = Point(QImage(":/restaurant-11.png"));
|
||||
_points[0x2a01] = Point(QImage(":/restaurant-11.png"));
|
||||
_points[0x2a02] = Point(QImage(":/restaurant-noodle-11.png"));
|
||||
_points[0x2a03] = Point(QImage(":/bbq-11.png"));
|
||||
_points[0x2a04] = Point(QImage(":/restaurant-noodle-11.png"));
|
||||
_points[0x2a05] = Point(QImage(":/bakery-11.png"));
|
||||
_points[0x2a06] = Point(QImage(":/restaurant-11.png"));
|
||||
_points[0x2a07] = Point(QImage(":/fast-food-11.png"));
|
||||
_points[0x2a08] = Point(QImage(":/restaurant-pizza-11.png"));
|
||||
_points[0x2a09] = Point(QImage(":/restaurant-11.png"));
|
||||
_points[0x2a0a] = Point(QImage(":/restaurant-pizza-11.png"));
|
||||
_points[0x2a0b] = Point(QImage(":/restaurant-seafood-11.png"));
|
||||
_points[0x2a0c] = Point(QImage(":/restaurant-11.png"));
|
||||
_points[0x2a0d] = Point(QImage(":/bakery-11.png"));
|
||||
_points[0x2a0e] = Point(QImage(":/cafe-11.png"));
|
||||
_points[0x2a0f] = Point(QImage(":/restaurant-11.png"));
|
||||
_points[0x2a10] = Point(QImage(":/restaurant-11.png"));
|
||||
_points[0x2a11] = Point(QImage(":/restaurant-11.png"));
|
||||
_points[0x2a12] = Point(QImage(":/restaurant-11.png"));
|
||||
_points[0x2a13] = Point(QImage(":/restaurant-11.png"));
|
||||
|
||||
_points[0x2b01] = Point(QImage(":/lodging-11.png"));
|
||||
_points[0x2b02] = Point(QImage(":/lodging-11.png"));
|
||||
_points[0x2b03] = Point(QImage(":/campsite-11.png"));
|
||||
_points[0x2b04] = Point(QImage(":/village-11.png"));
|
||||
_points[0x2b06] = Point(QImage(":/shelter-11.png"));
|
||||
|
||||
_points[0x2c01] = Point(QImage(":/amusement-park-11.png"));
|
||||
_points[0x2c02] = Point(QImage(":/museum-11.png"));
|
||||
_points[0x2c03] = Point(QImage(":/library-11.png"));
|
||||
_points[0x2c04] = Point(QImage(":/landmark-11.png"));
|
||||
_points[0x2c05] = Point(QImage(":/school-11.png"));
|
||||
_points[0x2c06] = Point(QImage(":/garden-11.png"));
|
||||
_points[0x2c07] = Point(QImage(":/zoo-11.png"));
|
||||
_points[0x2c08] = Point(QImage(":/soccer-11.png"));
|
||||
_points[0x2c0a] = Point(QImage(":/bar-11.png"));
|
||||
_points[0x2c0b] = Point(QImage(":/place-of-worship-11.png"));
|
||||
_points[0x2c0d] = Point(QImage(":/religious-muslim-11.png"));
|
||||
_points[0x2c0e] = Point(QImage(":/religious-christian-11.png"));
|
||||
_points[0x2c10] = Point(QImage(":/religious-jewish-11.png"));
|
||||
_points[0x2d01] = Point(QImage(":/theatre-11.png"));
|
||||
_points[0x2d02] = Point(QImage(":/bar-11.png"));
|
||||
_points[0x2d03] = Point(QImage(":/cinema-11.png"));
|
||||
_points[0x2d04] = Point(QImage(":/casino-11.png"));
|
||||
_points[0x2d05] = Point(QImage(":/golf-11.png"));
|
||||
_points[0x2d06] = Point(QImage(":/skiing-11.png"));
|
||||
_points[0x2d07] = Point(QImage(":/bowling-alley-11.png"));
|
||||
_points[0x2d09] = Point(QImage(":/swimming-11.png"));
|
||||
_points[0x2d0a] = Point(QImage(":/fitness-centre-11.png"));
|
||||
_points[0x2d0b] = Point(QImage(":/airfield-11.png"));
|
||||
|
||||
_points[0x2e02] = Point(QImage(":/grocery-11.png"));
|
||||
_points[0x2e05] = Point(QImage(":/pharmacy-11.png"));
|
||||
_points[0x2e07] = Point(QImage(":/clothing-store-11.png"));
|
||||
_points[0x2e08] = Point(QImage(":/garden-centre-11.png"));
|
||||
_points[0x2e09] = Point(QImage(":/furniture-11.png"));
|
||||
_points[0x2e0c] = Point(QImage(":/shop-11.png"));
|
||||
|
||||
_points[0x2f01] = Point(QImage(":/fuel-11.png"));
|
||||
_points[0x2f02] = Point(QImage(":/car-rental-11.png"));
|
||||
_points[0x2f03] = Point(QImage(":/car-repair-11.png"));
|
||||
_points[0x2f04] = Point(QImage(":/airport-11.png"));
|
||||
_points[0x2f05] = Point(QImage(":/post-11.png"));
|
||||
_points[0x2f06] = Point(QImage(":/bank-11.png"));
|
||||
_points[0x2f07] = Point(QImage(":/car-11.png"));
|
||||
_points[0x2f08] = Point(QImage(":/bus-11.png"));
|
||||
_points[0x2f09] = Point(QImage(":/harbor-11.png"));
|
||||
_points[0x2f0b] = Point(QImage(":/parking-11.png"));
|
||||
_points[0x2f0b].setTextFontSize(None);
|
||||
_points[0x2f0c] = Point(QImage(":/toilet-11.png"));
|
||||
_points[0x2f0c].setTextFontSize(None);
|
||||
_points[0x2f10] = Point(QImage(":/hairdresser-11.png"));
|
||||
_points[0x2f12].setTextFontSize(None);
|
||||
_points[0x2f13] = Point(QImage(":/hardware-11.png"));
|
||||
_points[0x2f17] = Point(QImage(":/bus-11.png"));
|
||||
|
||||
_points[0x3001] = Point(QImage(":/police-11.png"));
|
||||
_points[0x3002] = Point(QImage(":/hospital-11.png"));
|
||||
_points[0x3003] = Point(QImage(":/town-hall-11.png"));
|
||||
_points[0x3007] = Point(QImage(":/prison-11.png"));
|
||||
_points[0x3008] = Point(QImage(":/fire-station-11.png"));
|
||||
|
||||
_points[0x4000] = Point(QImage(":/golf-11.png"));
|
||||
_points[0x4300] = Point(QImage(":/harbor-11.png"));
|
||||
_points[0x4400] = Point(QImage(":/fuel-11.png"));
|
||||
_points[0x4500] = Point(QImage(":/restaurant-11.png"));
|
||||
_points[0x4600] = Point(QImage(":/bar-11.png"));
|
||||
_points[0x4900] = Point(QImage(":/park-11.png"));
|
||||
_points[0x4a00] = Point(QImage(":/picnic-site-11.png"));
|
||||
_points[0x4c00] = Point(QImage(":/information-11.png"));
|
||||
_points[0x4800] = Point(QImage(":/campsite-11.png"));
|
||||
_points[0x4a00] = Point(QImage(":/picnic-site-11.png"));
|
||||
_points[0x4b00] = Point(QImage(":/hospital-11.png"));
|
||||
_points[0x4c00] = Point(QImage(":/information-11.png"));
|
||||
_points[0x4d00] = Point(QImage(":/parking-11.png"));
|
||||
_points[0x4d00].setTextFontSize(None);
|
||||
_points[0x4e00] = Point(QImage(":/toilet-11.png"));
|
||||
_points[0x4e00].setTextFontSize(None);
|
||||
_points[0x5000] = Point(QImage(":/drinking-water-11.png"));
|
||||
_points[0x5000].setTextFontSize(None);
|
||||
_points[0x5100] = Point(QImage(":/telephone-11.png"));
|
||||
_points[0x5200] = Point(QImage(":/viewpoint-11.png"));
|
||||
_points[0x5300] = Point(QImage(":/skiing-11.png"));
|
||||
_points[0x5400] = Point(QImage(":/swimming-11.png"));
|
||||
_points[0x5500] = Point(QImage(":/dam-11.png"));
|
||||
_points[0x5700] = Point(QImage(":/danger-11.png"));
|
||||
_points[0x5800] = Point(QImage(":/roadblock-11.png"));
|
||||
_points[0x5900] = Point(QImage(":/airport-11.png"));
|
||||
_points[0x5901] = Point(QImage(":/airport-11.png"));
|
||||
_points[0x5904] = Point(QImage(":/heliport-11.png"));
|
||||
|
||||
_points[0x6401] = Point(QImage(":/bridge-11.png"));
|
||||
_points[0x6402] = Point(QImage(":/building-alt1-11.png"));
|
||||
_points[0x6403] = Point(QImage(":/cemetery-11.png"));
|
||||
_points[0x6404] = Point(QImage(":/religious-christian-11.png"));
|
||||
_points[0x6407] = Point(QImage(":/dam-11.png"));
|
||||
_points[0x6408] = Point(QImage(":/hospital-11.png"));
|
||||
_points[0x6409] = Point(QImage(":/dam-11.png"));
|
||||
_points[0x640d] = Point(QImage(":/communications-tower-11.png"));
|
||||
_points[0x640e] = Point(QImage(":/park-11.png"));
|
||||
_points[0x640f] = Point(QImage(":/post-11.png"));
|
||||
_points[0x6411] = Point(QImage(":/communications-tower-11.png"));
|
||||
|
||||
_points[0x6508] = Point(QImage(":/waterfall-11.png"));
|
||||
_points[0x6513] = Point(QImage(":/wetland-11.png"));
|
||||
_points[0x6604] = Point(QImage(":/beach-11.png"));
|
||||
_points[0x6616] = Point(QImage(":/mountain-11.png"));
|
||||
}
|
||||
|
||||
static bool readBitmap(SubFile *file, SubFile::Handle &hdl, QImage &img,
|
||||
int bpp)
|
||||
{
|
||||
@ -790,6 +921,7 @@ Style::Style(SubFile *typ)
|
||||
{
|
||||
defaultLineStyle();
|
||||
defaultPolygonStyle();
|
||||
defaultPOIStyle();
|
||||
|
||||
if (typ && typ->isValid())
|
||||
parseTYPFile(typ);
|
||||
@ -830,6 +962,32 @@ bool Style::isSpot(quint32 type)
|
||||
return (type == TYPE(0x62) || type == TYPE(0x63));
|
||||
}
|
||||
|
||||
Style::POIClass Style::poiClass(quint32 type)
|
||||
{
|
||||
if ((type >= 0x2a00 && type < 0x2b00) || type == 0x2c0a || type == 0x2d02)
|
||||
return Food;
|
||||
else if (type >= 0x2b00 && type < 0x2c00)
|
||||
return Accommodation;
|
||||
else if (type >= 0x2c00 && type < 0x2e00)
|
||||
return Recreation;
|
||||
else if (type >= 0x2e00 && type < 0x2f00)
|
||||
return Shopping;
|
||||
else if (type >= 0x2f00 && type < 0x2f0f)
|
||||
return Transport;
|
||||
else if (type >= 0x2f0f && type < 0x3000)
|
||||
return Services;
|
||||
else if (type >= 0x3000 && type < 0x3100)
|
||||
return Community;
|
||||
else if (type >= 0x4000 && type < 0x6000)
|
||||
return Elementary;
|
||||
else if (type >= 0x6400 && type < 0x6500)
|
||||
return ManmadePlaces;
|
||||
else if (type >= 0x6500 && type < 0x6700)
|
||||
return NaturePlaces;
|
||||
else
|
||||
return Unknown;
|
||||
}
|
||||
|
||||
#ifndef QT_NO_DEBUG
|
||||
static QString penColor(const QPen &pen)
|
||||
{
|
||||
|
@ -18,6 +18,20 @@ public:
|
||||
Large = 4
|
||||
};
|
||||
|
||||
enum POIClass {
|
||||
Unknown,
|
||||
Food,
|
||||
Accommodation,
|
||||
Recreation,
|
||||
Shopping,
|
||||
Transport,
|
||||
Services,
|
||||
Community,
|
||||
Elementary,
|
||||
ManmadePlaces,
|
||||
NaturePlaces
|
||||
};
|
||||
|
||||
class Polygon {
|
||||
public:
|
||||
Polygon() : _brush(Qt::NoBrush), _pen(Qt::NoPen) {}
|
||||
@ -91,6 +105,7 @@ public:
|
||||
|
||||
static bool isContourLine(quint32 type);
|
||||
static bool isSpot(quint32 type);
|
||||
static POIClass poiClass(quint32 type);
|
||||
|
||||
private:
|
||||
struct Section {
|
||||
@ -121,6 +136,7 @@ private:
|
||||
const Section §ion, ItemInfo &info);
|
||||
void defaultPolygonStyle();
|
||||
void defaultLineStyle();
|
||||
void defaultPOIStyle();
|
||||
|
||||
QMap<quint32, Line> _lines;
|
||||
QMap<quint32, Polygon> _polygons;
|
||||
|
@ -25,8 +25,6 @@
|
||||
#define POI_FONT_SIZE 9
|
||||
|
||||
#define LINE_TEXT_MIN_ZOOM 23
|
||||
#define POI_MIN_ZOOM 25
|
||||
#define POI_TEXT_MIN_ZOOM 26
|
||||
|
||||
class RasterTile
|
||||
{
|
||||
@ -76,6 +74,26 @@ static void convertUnits(QString &str)
|
||||
str = QString::number(qRound(number * 0.3048));
|
||||
}
|
||||
|
||||
static int minPOIZoom(Style::POIClass cl)
|
||||
{
|
||||
switch (cl) {
|
||||
case Style::Food:
|
||||
case Style::Shopping:
|
||||
case Style::Services:
|
||||
return 27;
|
||||
case Style::Accommodation:
|
||||
case Style::Recreation:
|
||||
return 25;
|
||||
case Style::ManmadePlaces:
|
||||
case Style::NaturePlaces:
|
||||
case Style::Transport:
|
||||
case Style::Community:
|
||||
case Style::Elementary:
|
||||
return 23;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
IMGMap::IMGMap(const QString &fileName, QObject *parent)
|
||||
: Map(parent), _fileName(fileName), _img(fileName),
|
||||
@ -280,17 +298,20 @@ void IMGMap::drawPoints(QPainter *painter, QList<IMG::Point> &points)
|
||||
for (int i = 0; i < points.size(); i++) {
|
||||
IMG::Point &point = points[i];
|
||||
const Style::Point &style = _img.style().point(point.type);
|
||||
int mz = minPOIZoom(Style::poiClass(point.type));
|
||||
|
||||
if (point.poi && _zoom < POI_MIN_ZOOM)
|
||||
if (point.poi && _zoom < mz)
|
||||
continue;
|
||||
|
||||
const QString *label = ((point.poi && _zoom < POI_TEXT_MIN_ZOOM)
|
||||
|| point.label.isEmpty()) ? 0 : &(point.label);
|
||||
const QString *label = point.label.isEmpty() ? 0 : &(point.label);
|
||||
const QImage *img = style.img().isNull() ? 0 : &style.img();
|
||||
const QFont *font = 0;
|
||||
if (point.poi)
|
||||
font = &_poiFont;
|
||||
else {
|
||||
if (point.poi) {
|
||||
if (style.textFontSize() == Style::None)
|
||||
label = 0;
|
||||
else
|
||||
font = &_poiFont;
|
||||
} else {
|
||||
switch (style.textFontSize()) {
|
||||
case Style::None:
|
||||
label = 0;
|
||||
|