9#include "StyleBuilder.h" 
   11#include "GeoDataGeometry.h" 
   12#include "GeoDataIconStyle.h" 
   13#include "GeoDataLabelStyle.h" 
   14#include "GeoDataLineString.h" 
   15#include "GeoDataLineStyle.h" 
   16#include "GeoDataLinearRing.h" 
   17#include "GeoDataPlacemark.h" 
   18#include "GeoDataPoint.h" 
   19#include "GeoDataPolyStyle.h" 
   20#include "GeoDataPolygon.h" 
   21#include "MarbleDirs.h" 
   22#include "OsmPlacemarkData.h" 
   23#include "OsmcSymbol.h" 
   25#include <QApplication> 
   36class StyleBuilder::Private
 
   43    static GeoDataStyle::Ptr createStyle(qreal width,
 
   46                                         const QColor &outlineColor,
 
   53                                         const QList<qreal> &dashPattern,
 
   56                                         const QString &texturePath = QString());
 
   57    static GeoDataStyle::Ptr createPOIStyle(
const QFont &font,
 
   58                                            const QString &bitmap,
 
   60                                            const QColor &color = QColor(0xBE, 0xAD, 0xAD),
 
   61                                            const QColor &outline = QColor(0xBE, 0xAD, 0xAD).darker(),
 
   63                                            bool renderOutline = 
true);
 
   64    static GeoDataStyle::Ptr createOsmPOIStyle(
const QFont &font,
 
   65                                               const QString &bitmap,
 
   67                                               const QColor &color = QColor(0xBE, 0xAD, 0xAD),
 
   68                                               const QColor &outline = QColor(0xBE, 0xAD, 0xAD).darker());
 
   69    static GeoDataStyle::Ptr createOsmPOIRingStyle(
const QFont &font,
 
   70                                                   const QString &bitmap,
 
   72                                                   const QColor &color = QColor(0xBE, 0xAD, 0xAD),
 
   73                                                   const QColor &outline = QColor(0xBE, 0xAD, 0xAD).darker());
 
   74    static GeoDataStyle::Ptr createOsmPOIAreaStyle(
const QFont &font,
 
   75                                                   const QString &bitmap,
 
   77                                                   const QColor &color = QColor(0xBE, 0xAD, 0xAD),
 
   78                                                   const QColor &outline = QColor(0xBE, 0xAD, 0xAD).darker());
 
   79    static GeoDataStyle::Ptr createHighwayStyle(
const QColor &color,
 
   80                                                const QColor &outlineColor,
 
   84                                                qreal realWidth = 0.0,
 
   87                                                bool lineBackground = 
false);
 
   88    GeoDataStyle::Ptr createWayStyle(
const QColor &color,
 
   89                                     const QColor &outlineColor,
 
   93                                     const QString &texturePath = QString()) 
const;
 
   94    static GeoDataStyle::Ptr
 
   95    createIconWayStyle(
const QColor &color, 
const QFont &font, 
const QColor &textColor, 
double lineWidth = 1.0, 
const QString &iconPath = QString());
 
   97    GeoDataStyle::ConstPtr createRelationStyle(
const StyleParameters ¶meters);
 
   98    GeoDataStyle::ConstPtr createPlacemarkStyle(
const StyleParameters ¶meters);
 
   99    GeoDataStyle::ConstPtr adjustPisteStyle(
const StyleParameters ¶meters, 
const GeoDataStyle::ConstPtr &style);
 
  100    static void adjustWayWidth(
const StyleParameters ¶meters, GeoDataLineStyle &lineStyle);
 
  105    void initializeDefaultStyles();
 
  107    static QColor effectColor(
const QColor &color);
 
  111    static void initializeOsmVisualCategories();
 
  112    static void initializeMinimumZoomLevels();
 
  114    int m_maximumZoomLevel;
 
  115    QColor m_defaultLabelColor;
 
  117    GeoDataStyle::Ptr m_defaultStyle[GeoDataPlacemark::LastIndex];
 
  118    GeoDataStyle::Ptr m_styleTreeAutumn;
 
  119    GeoDataStyle::Ptr m_styleTreeWinter;
 
  120    bool m_defaultStyleInitialized;
 
  122    QHash<QString, GeoDataStyle::Ptr> m_styleCache;
 
  123    QHash<GeoDataPlacemark::GeoDataVisualCategory, GeoDataStyle::Ptr> m_buildingStyles;
 
  124    QSet<QLocale::Country> m_oceanianCountries;
 
  129    static QHash<OsmTag, GeoDataPlacemark::GeoDataVisualCategory> s_visualCategories;
 
  130    static int s_defaultMinZoomLevels[GeoDataPlacemark::LastIndex];
 
  131    static bool s_defaultMinZoomLevelsInitialized;
 
  132    static QHash<GeoDataPlacemark::GeoDataVisualCategory, qint64> s_popularities;
 
  133    static StyleEffect s_styleEffect;
 
  136QHash<StyleBuilder::OsmTag, GeoDataPlacemark::GeoDataVisualCategory> StyleBuilder::Private::s_visualCategories;
 
  137int StyleBuilder::Private::s_defaultMinZoomLevels[GeoDataPlacemark::LastIndex];
 
  138bool StyleBuilder::Private::s_defaultMinZoomLevelsInitialized = 
false;
 
  139QHash<GeoDataPlacemark::GeoDataVisualCategory, qint64> StyleBuilder::Private::s_popularities;
 
  140StyleEffect StyleBuilder::Private::s_styleEffect = NoEffect;
 
  142StyleBuilder::Private::Private()
 
  143    : m_maximumZoomLevel(15)
 
  144    , m_defaultLabelColor(Qt::
black)
 
  145    , m_defaultFont(QStringLiteral(
"Sans Serif"))
 
  147    , m_defaultStyleInitialized(false)
 
  172    initializeMinimumZoomLevels();
 
  173    for (
int i = 0; i < GeoDataPlacemark::LastIndex; ++i) {
 
  174        m_maximumZoomLevel = qMax(m_maximumZoomLevel, s_defaultMinZoomLevels[i]);
 
  178GeoDataStyle::Ptr StyleBuilder::Private::createPOIStyle(
const QFont &font,
 
  182                                                        const QColor &outlineColor,
 
  186    GeoDataStyle::Ptr style = createStyle(1,
 
  189                                          effectColor(outlineColor),
 
  198    style->setIconStyle(GeoDataIconStyle(path));
 
  200    double const physicalSize = 6.0; 
 
  201    int const pixelSize = qRound(physicalSize * screen->physicalDotsPerInch() / (IN2M * M2MM));
 
  202    style->iconStyle().setSize(
QSize(pixelSize, pixelSize));
 
  203    style->setLabelStyle(GeoDataLabelStyle(font, effectColor(textColor)));
 
  204    style->labelStyle().setAlignment(GeoDataLabelStyle::Center);
 
  209StyleBuilder::Private::createOsmPOIStyle(
const QFont &font, 
const QString &imagePath, 
const QColor &textColor, 
const QColor &color, 
const QColor &outlineColor)
 
  212    return createPOIStyle(font, path, textColor, color, outlineColor, 
false, 
false);
 
  215GeoDataStyle::Ptr StyleBuilder::Private::createOsmPOIRingStyle(
const QFont &font,
 
  219                                                               const QColor &outlineColor)
 
  222    return createPOIStyle(font, path, textColor, color, outlineColor, 
false, 
true);
 
  225GeoDataStyle::Ptr StyleBuilder::Private::createOsmPOIAreaStyle(
const QFont &font,
 
  229                                                               const QColor &outlineColor)
 
  232    return createPOIStyle(font, path, textColor, color, outlineColor, 
true, 
false);
 
  235GeoDataStyle::Ptr StyleBuilder::Private::createHighwayStyle(
const QColor &color,
 
  236                                                            const QColor &outlineColor,
 
  245    return createStyle(width,
 
  260GeoDataStyle::Ptr StyleBuilder::Private::createWayStyle(
const QColor &color,
 
  261                                                        const QColor &outlineColor,
 
  265                                                        const QString &texturePath)
 const 
  267    return createStyle(1,
 
  284StyleBuilder::Private::createIconWayStyle(
const QColor &color, 
const QFont &font, 
const QColor &textColor, 
double lineWidth, 
const QString &iconPath)
 
  286    auto const path = iconPath.
isEmpty() ? iconPath : MarbleDirs::path(iconPath);
 
  287    auto style = createPOIStyle(font, path, textColor, color, color, 
true, 
true);
 
  288    style->lineStyle().setWidth(
float(lineWidth));
 
  292GeoDataStyle::ConstPtr StyleBuilder::Private::createRelationStyle(
const StyleParameters ¶meters)
 
  294    Q_ASSERT(parameters.relation);
 
  295    const GeoDataPlacemark *
const placemark = parameters.placemark;
 
  296    auto const visualCategory = placemark->visualCategory();
 
  297    bool const isHighway = visualCategory >= GeoDataPlacemark::HighwaySteps && visualCategory <= GeoDataPlacemark::HighwayMotorway;
 
  298    bool const isRailway = visualCategory >= GeoDataPlacemark::RailwayRail && visualCategory <= GeoDataPlacemark::RailwayFunicular;
 
  299    if (isHighway || isRailway) {
 
  300        if (parameters.relation->relationType() == GeoDataRelation::RouteHiking
 
  301            && parameters.relation->osmData().containsTagKey(QStringLiteral(
"osmc:symbol"))) {
 
  302            QString const osmcSymbolValue = parameters.relation->osmData().tagValue(QStringLiteral(
"osmc:symbol"));
 
  304            QString const cacheKey = QStringLiteral(
"/route/hiking/%1").
arg(osmcSymbolValue);
 
  305            if (m_styleCache.contains(cacheKey)) {
 
  306                return m_styleCache[cacheKey];
 
  309            auto style = presetStyle(visualCategory);
 
  310            auto lineStyle = style->lineStyle();
 
  312                adjustWayWidth(parameters, lineStyle);
 
  314            auto iconStyle = style->iconStyle();
 
  315            GeoDataStyle::Ptr newStyle(
new GeoDataStyle(*style));
 
  316            OsmcSymbol symbol = OsmcSymbol(osmcSymbolValue);
 
  317            lineStyle.setColor(symbol.wayColor());
 
  318            iconStyle.setIcon(symbol.icon());
 
  319            newStyle->setLineStyle(lineStyle);
 
  320            newStyle->setIconStyle(iconStyle);
 
  322            m_styleCache.insert(cacheKey, newStyle);
 
  326        if (parameters.relation->relationType() >= GeoDataRelation::RouteRoad && parameters.relation->relationType() <= GeoDataRelation::RouteInlineSkates) {
 
  327            auto const colorValue = parameters.relation->osmData().tagValue(QStringLiteral(
"colour"));
 
  330                switch (parameters.relation->relationType()) {
 
  331                case GeoDataRelation::RouteTrain:
 
  332                    color = QStringLiteral(
"navy");
 
  334                case GeoDataRelation::RouteSubway:
 
  335                    color = QStringLiteral(
"cornflowerblue");
 
  337                case GeoDataRelation::RouteTram:
 
  338                    color = QStringLiteral(
"steelblue");
 
  340                case GeoDataRelation::RouteBus:
 
  341                case GeoDataRelation::RouteTrolleyBus:
 
  342                    color = QStringLiteral(
"tomato");
 
  344                case GeoDataRelation::RouteBicycle:
 
  345                case GeoDataRelation::RouteMountainbike:
 
  346                case GeoDataRelation::RouteFoot:
 
  347                case GeoDataRelation::RouteHiking:
 
  348                case GeoDataRelation::RouteHorse:
 
  349                case GeoDataRelation::RouteInlineSkates:
 
  350                    color = QStringLiteral(
"paleturquoise");
 
  352                case GeoDataRelation::UnknownType:
 
  353                case GeoDataRelation::RouteRoad:
 
  354                case GeoDataRelation::RouteDetour:
 
  355                case GeoDataRelation::RouteFerry:
 
  356                case GeoDataRelation::RouteSkiDownhill:
 
  357                case GeoDataRelation::RouteSkiNordic:
 
  358                case GeoDataRelation::RouteSkitour:
 
  359                case GeoDataRelation::RouteSled:
 
  365            QString const cacheKey = QStringLiteral(
"/route/%1/%2").
arg(parameters.relation->relationType()).
arg(color);
 
  366            if (m_styleCache.contains(cacheKey)) {
 
  367                return m_styleCache[cacheKey];
 
  370            auto style = presetStyle(visualCategory);
 
  371            auto lineStyle = style->lineStyle();
 
  373                adjustWayWidth(parameters, lineStyle);
 
  375            GeoDataStyle::Ptr newStyle(
new GeoDataStyle(*style));
 
  377                lineStyle.setColor(
QColor(color));
 
  378                auto labelStyle = style->labelStyle();
 
  379                labelStyle.setColor(GeoDataColorStyle::contrastColor(color));
 
  380                newStyle->setLabelStyle(labelStyle);
 
  382            newStyle->setLineStyle(lineStyle);
 
  384            m_styleCache.insert(cacheKey, newStyle);
 
  391GeoDataStyle::ConstPtr StyleBuilder::Private::createPlacemarkStyle(
const StyleParameters ¶meters)
 
  393    const GeoDataPlacemark *
const placemark = parameters.placemark;
 
  396    OsmPlacemarkData 
const &osmData = placemark->osmData();
 
  397    auto const visualCategory = placemark->visualCategory();
 
  398    if (visualCategory == GeoDataPlacemark::Building) {
 
  399        auto const tagMap = osmTagMapping();
 
  400        auto const &osmData = placemark->osmData();
 
  401        auto const buildingTag = QStringLiteral(
"building");
 
  402        for (
auto iter = osmData.tagsBegin(), end = osmData.tagsEnd(); iter != end; ++iter) {
 
  403            auto const osmTag = StyleBuilder::OsmTag(iter.key(), iter.value());
 
  404            if (iter.key() != buildingTag && tagMap.contains(osmTag)) {
 
  405                return m_buildingStyles.value(tagMap.value(osmTag), m_defaultStyle[visualCategory]);
 
  410    GeoDataStyle::ConstPtr style = presetStyle(visualCategory);
 
  412    if (geodata_cast<GeoDataPoint>(placemark->geometry())) {
 
  413        if (visualCategory == GeoDataPlacemark::NaturalTree) {
 
  415            qreal 
const lat = coordinates.latitude(GeoDataCoordinates::Degree);
 
  416            if (qAbs(lat) > 15) {
 
  419                bool const southernHemisphere = lat < 0;
 
  420                if (southernHemisphere) {
 
  421                    if (month >= 3 && month <= 5) {
 
  422                        style = m_styleTreeAutumn;
 
  423                    } 
else if (month >= 6 && month <= 8) {
 
  424                        style = m_styleTreeWinter;
 
  427                    if (month >= 9 && month <= 11) {
 
  428                        style = m_styleTreeAutumn;
 
  429                    } 
else if (month == 12 || month == 1 || month == 2) {
 
  430                        style = m_styleTreeWinter;
 
  435    } 
else if (geodata_cast<GeoDataLinearRing>(placemark->geometry())) {
 
  436        bool adjustStyle = 
false;
 
  438        GeoDataPolyStyle polyStyle = style->polyStyle();
 
  439        GeoDataLineStyle lineStyle = style->lineStyle();
 
  440        if (visualCategory == GeoDataPlacemark::NaturalWater) {
 
  441            if (osmData.containsTag(QStringLiteral(
"salt"), QStringLiteral(
"yes"))) {
 
  442                polyStyle.setColor(effectColor(0xffff80));
 
  444                lineStyle.setWidth(2);
 
  447        } 
else if (visualCategory == GeoDataPlacemark::Bathymetry) {
 
  448            auto tagIter = osmData.findTag(QStringLiteral(
"ele"));
 
  449            if (tagIter != osmData.tagsEnd()) {
 
  450                const QString &elevation = tagIter.value();
 
  452                    polyStyle.setColor(effectColor(0x94c2c2));
 
  453                    lineStyle.setColor(effectColor(0x94c2c2));
 
  457        } 
else if (visualCategory == GeoDataPlacemark::AmenityGraveyard || visualCategory == GeoDataPlacemark::LanduseCemetery) {
 
  458            auto tagIter = osmData.findTag(QStringLiteral(
"religion"));
 
  459            if (tagIter != osmData.tagsEnd()) {
 
  460                const QString &religion = tagIter.value();
 
  462                    polyStyle.setTexturePath(MarbleDirs::path(
"bitmaps/osmcarto/patterns/grave_yard_jewish.png"));
 
  465                    polyStyle.setTexturePath(MarbleDirs::path(
"bitmaps/osmcarto/patterns/grave_yard_christian.png"));
 
  468                    polyStyle.setTexturePath(MarbleDirs::path(
"bitmaps/osmcarto/patterns/grave_yard_generic.png"));
 
  472        } 
else if (visualCategory == GeoDataPlacemark::PisteDownhill) {
 
  473            return adjustPisteStyle(parameters, style);
 
  477            GeoDataStyle::Ptr newStyle(
new GeoDataStyle(*style));
 
  478            newStyle->setPolyStyle(polyStyle);
 
  479            newStyle->setLineStyle(lineStyle);
 
  483        if (style->iconStyle().iconPath().isEmpty()) {
 
  484            const GeoDataPlacemark::GeoDataVisualCategory 
category = determineVisualCategory(osmData);
 
  485            const GeoDataStyle::ConstPtr categoryStyle = presetStyle(category);
 
  486            if (category != GeoDataPlacemark::None && !categoryStyle->iconStyle().scaledIcon().isNull()) {
 
  487                GeoDataStyle::Ptr newStyle(
new GeoDataStyle(*style));
 
  488                newStyle->setIconStyle(categoryStyle->iconStyle());
 
  492    } 
else if (geodata_cast<GeoDataLineString>(placemark->geometry())) {
 
  493        GeoDataPolyStyle polyStyle = style->polyStyle();
 
  494        GeoDataLineStyle lineStyle = style->lineStyle();
 
  495        GeoDataLabelStyle labelStyle = style->labelStyle();
 
  496        GeoDataIconStyle iconStyle = style->iconStyle();
 
  497        lineStyle.setCosmeticOutline(
true);
 
  499        bool adjustStyle = 
false;
 
  501        if (visualCategory == GeoDataPlacemark::AdminLevel2) {
 
  502            if (osmData.containsTag(QStringLiteral(
"maritime"), QStringLiteral(
"yes"))) {
 
  503                lineStyle.setColor(effectColor(0x88b3bf));
 
  504                polyStyle.setColor(effectColor(0x88b3bf));
 
  505                if (osmData.containsTag(QStringLiteral(
"marble:disputed"), QStringLiteral(
"yes"))) {
 
  510        } 
else if ((visualCategory >= GeoDataPlacemark::HighwayService && visualCategory <= GeoDataPlacemark::HighwayMotorway)
 
  511                   || visualCategory == GeoDataPlacemark::TransportAirportRunway) {
 
  513            styleCacheKey = QStringLiteral(
"%1/%2").
arg(parameters.tileLevel).
arg(visualCategory);
 
  514            if (m_styleCache.contains(styleCacheKey)) {
 
  515                style = m_styleCache[styleCacheKey];
 
  520            styleCacheKey = QStringLiteral(
"%1/%2").
arg(parameters.tileLevel).
arg(visualCategory);
 
  521            adjustWayWidth(parameters, lineStyle);
 
  523            QString const accessValue = osmData.tagValue(QStringLiteral(
"access"));
 
  526                QColor polyColor = polyStyle.color();
 
  528                polyColor.
getHsvF(&hue, &sat, &val);
 
  529                polyColor.
setHsvF(0.98, qMin(1.0, 0.2 + sat), val);
 
  530                polyStyle.setColor(effectColor(polyColor));
 
  531                lineStyle.setColor(effectColor(lineStyle.color().darker(150)));
 
  534            if (osmData.containsTag(
"tunnel", 
"yes")) {
 
  535                QColor polyColor = polyStyle.color();
 
  537                polyColor.
getHsvF(&hue, &sat, &val);
 
  538                polyColor.
setHsvF(hue, 0.25 * sat, 0.95 * val);
 
  539                polyStyle.setColor(effectColor(polyColor));
 
  540                lineStyle.setColor(effectColor(lineStyle.color().lighter(115)));
 
  543        } 
else if (visualCategory >= GeoDataPlacemark::WaterwayCanal && visualCategory <= GeoDataPlacemark::WaterwayStream) {
 
  547            styleCacheKey = QStringLiteral(
"%1/%2").
arg(parameters.tileLevel).
arg(visualCategory);
 
  548            if (m_styleCache.contains(styleCacheKey)) {
 
  549                style = m_styleCache[styleCacheKey];
 
  553            if (parameters.tileLevel <= 3) {
 
  554                lineStyle.setWidth(1);
 
  555                lineStyle.setPhysicalWidth(0.0);
 
  556                styleCacheKey = QStringLiteral(
"%1/%2").
arg(parameters.tileLevel).
arg(visualCategory);
 
  557            } 
else if (parameters.tileLevel <= 7) {
 
  558                lineStyle.setWidth(2);
 
  559                lineStyle.setPhysicalWidth(0.0);
 
  560                styleCacheKey = QStringLiteral(
"%1/%2").
arg(parameters.tileLevel).
arg(visualCategory);
 
  562                QString const widthValue = osmData.tagValue(QStringLiteral(
"width")).
remove(QStringLiteral(
" meters")).
remove(QStringLiteral(
" m"));
 
  564                float const width = widthValue.
toFloat(&ok);
 
  565                lineStyle.setPhysicalWidth(ok ? qBound(0.1f, width, 200.0f) : 0.0f);
 
  567        } 
else if (visualCategory == GeoDataPlacemark::PisteDownhill) {
 
  568            return adjustPisteStyle(parameters, style);
 
  572            GeoDataStyle::Ptr newStyle(
new GeoDataStyle(*style));
 
  573            newStyle->setPolyStyle(polyStyle);
 
  574            newStyle->setLineStyle(lineStyle);
 
  575            newStyle->setLabelStyle(labelStyle);
 
  576            newStyle->setIconStyle(iconStyle);
 
  578            if (!styleCacheKey.
isEmpty()) {
 
  579                m_styleCache.insert(styleCacheKey, newStyle);
 
  583    } 
else if (geodata_cast<GeoDataPolygon>(placemark->geometry())) {
 
  584        GeoDataPolyStyle polyStyle = style->polyStyle();
 
  585        GeoDataLineStyle lineStyle = style->lineStyle();
 
  586        bool adjustStyle = 
false;
 
  587        if (visualCategory == GeoDataPlacemark::Bathymetry) {
 
  588            auto tagIter = osmData.findTag(QStringLiteral(
"ele"));
 
  589            if (tagIter != osmData.tagsEnd()) {
 
  590                const QString &elevation = tagIter.value();
 
  592                    polyStyle.setColor(effectColor(0xa5c9c9));
 
  593                    lineStyle.setColor(effectColor(0xa5c9c9));
 
  597        } 
else if (visualCategory == GeoDataPlacemark::PisteDownhill) {
 
  598            return adjustPisteStyle(parameters, style);
 
  602            GeoDataStyle::Ptr newStyle(
new GeoDataStyle(*style));
 
  603            newStyle->setPolyStyle(polyStyle);
 
  604            newStyle->setLineStyle(lineStyle);
 
  612GeoDataStyle::ConstPtr StyleBuilder::Private::adjustPisteStyle(
const StyleParameters ¶meters, 
const GeoDataStyle::ConstPtr &style)
 
  615    auto const &osmData = parameters.placemark->osmData();
 
  616    auto const visualCategory = parameters.placemark->visualCategory();
 
  617    auto const difficulty = osmData.tagValue(
"piste:difficulty");
 
  618    QString styleCacheKey = QStringLiteral(
"piste/%1/%2").
arg(visualCategory).
arg(difficulty);
 
  619    if (m_styleCache.contains(styleCacheKey)) {
 
  620        return m_styleCache[styleCacheKey];
 
  623    GeoDataLineStyle lineStyle = style->lineStyle();
 
  630    auto orange = 
QColor(255, 165, 0);
 
  634        if (difficulty == 
"easy") {
 
  635            lineStyle.setColor(green);
 
  636        } 
else if (difficulty == 
"intermediate") {
 
  637            lineStyle.setColor(red);
 
  638        } 
else if (difficulty == 
"advanced") {
 
  639            lineStyle.setColor(black);
 
  641            lineStyle.setColor(fallBack);
 
  644               || m_oceanianCountries.contains(country)) {
 
  645        if (difficulty == 
"easy") {
 
  646            lineStyle.setColor(green);
 
  647        } 
else if (difficulty == 
"intermediate") {
 
  648            lineStyle.setColor(blue);
 
  649        } 
else if (difficulty == 
"advanced" || difficulty == 
"expert") {
 
  650            lineStyle.setColor(black);
 
  652            lineStyle.setColor(fallBack);
 
  656        if (difficulty == 
"novice") {
 
  657            lineStyle.setColor(green);
 
  658        } 
else if (difficulty == 
"easy") {
 
  659            lineStyle.setColor(blue);
 
  660        } 
else if (difficulty == 
"intermediate") {
 
  661            lineStyle.setColor(red);
 
  662        } 
else if (difficulty == 
"advanced") {
 
  663            lineStyle.setColor(black);
 
  664        } 
else if (difficulty == 
"expert") {
 
  667                lineStyle.setColor(black);
 
  669                lineStyle.setColor(orange);
 
  671        } 
else if (difficulty == 
"freeride") {
 
  672            lineStyle.setColor(yellow);
 
  674            lineStyle.setColor(fallBack);
 
  678    GeoDataPolyStyle polyStyle = style->polyStyle();
 
  679    polyStyle.setColor(effectColor(lineStyle.color()));
 
  680    GeoDataStyle::Ptr newStyle(
new GeoDataStyle(*style));
 
  681    newStyle->setPolyStyle(polyStyle);
 
  682    newStyle->setLineStyle(lineStyle);
 
  683    m_styleCache.insert(styleCacheKey, newStyle);
 
  687void StyleBuilder::Private::adjustWayWidth(
const StyleParameters ¶meters, GeoDataLineStyle &lineStyle)
 
  689    auto const &osmData = parameters.placemark->osmData();
 
  690    auto const visualCategory = parameters.placemark->visualCategory();
 
  691    if (parameters.tileLevel <= 8) {
 
  692        lineStyle.setPhysicalWidth(0.0);
 
  693        lineStyle.setWidth(2.0);
 
  694    } 
else if (parameters.tileLevel <= 10) {
 
  695        lineStyle.setPhysicalWidth(0.0);
 
  696        lineStyle.setWidth(3.0);
 
  697    } 
else if (parameters.tileLevel <= 12) {
 
  698        lineStyle.setPhysicalWidth(0.0);
 
  699        lineStyle.setWidth(4.0);
 
  701        auto tagIter = osmData.findTag(QStringLiteral(
"width"));
 
  702        if (tagIter != osmData.tagsEnd()) {
 
  705            float const width = widthValue.
toFloat(&ok);
 
  706            lineStyle.setPhysicalWidth(ok ? qBound(0.1f, width, 200.0f) : 0.0f);
 
  708            bool const isOneWay =
 
  709                osmData.containsTag(QStringLiteral(
"oneway"), QStringLiteral(
"yes")) || osmData.containsTag(QStringLiteral(
"oneway"), QStringLiteral(
"-1"));
 
  710            int const lanes = isOneWay ? 1 : 2; 
 
  711            double const laneWidth = 3.0;
 
  712            double const margins = visualCategory == GeoDataPlacemark::HighwayMotorway ? 2.0 : (isOneWay ? 1.0 : 0.0);
 
  713            double const physicalWidth = margins + lanes * laneWidth;
 
  714            lineStyle.setPhysicalWidth(physicalWidth);
 
  719GeoDataStyle::Ptr StyleBuilder::Private::createStyle(qreal width,
 
  722                                                     const QColor &outlineColor,
 
  734    auto style = 
new GeoDataStyle;
 
  735    GeoDataLineStyle lineStyle(effectColor(outlineColor));
 
  736    lineStyle.setCapStyle(capStyle);
 
  737    lineStyle.setPenStyle(penStyle);
 
  738    lineStyle.setWidth(width);
 
  739    lineStyle.setPhysicalWidth(realWidth);
 
  740    lineStyle.setBackground(lineBackground);
 
  741    lineStyle.setDashPattern(dashPattern);
 
  742    GeoDataPolyStyle polyStyle(effectColor(color));
 
  743    polyStyle.setOutline(outline);
 
  744    polyStyle.setFill(fill);
 
  745    polyStyle.setBrushStyle(brushStyle);
 
  746    polyStyle.setTexturePath(texturePath);
 
  747    GeoDataLabelStyle labelStyle(font, effectColor(fontColor));
 
  748    style->setLineStyle(lineStyle);
 
  749    style->setPolyStyle(polyStyle);
 
  750    style->setLabelStyle(labelStyle);
 
  751    return GeoDataStyle::Ptr(style);
 
  754void StyleBuilder::Private::initializeDefaultStyles()
 
  760    if (m_defaultStyleInitialized) {
 
  764    m_defaultStyleInitialized = 
true;
 
  766    QString defaultFamily = m_defaultFont.family();
 
  774    QColor const defaultLabelColor = effectColor(m_defaultLabelColor);
 
  776    m_defaultStyle[GeoDataPlacemark::None] = GeoDataStyle::Ptr(
new GeoDataStyle(
QString(), 
QFont(defaultFamily, defaultSize, 50, 
false), defaultLabelColor));
 
  778    m_defaultStyle[GeoDataPlacemark::Default] =
 
  779        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/default_location.png"), 
QFont(defaultFamily, defaultSize, 50, 
false), defaultLabelColor));
 
  781    m_defaultStyle[GeoDataPlacemark::Unknown] = GeoDataStyle::Ptr(
new GeoDataStyle(
QString(), 
QFont(defaultFamily, defaultSize, 50, 
false), defaultLabelColor));
 
  783    m_defaultStyle[GeoDataPlacemark::SmallCity] =
 
  784        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/city_4_white.png"), 
QFont(defaultFamily, defaultSize, 50, 
false), defaultLabelColor));
 
  786    m_defaultStyle[GeoDataPlacemark::SmallCountyCapital] =
 
  787        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/city_4_yellow.png"), 
QFont(defaultFamily, defaultSize, 50, 
false), defaultLabelColor));
 
  789    m_defaultStyle[GeoDataPlacemark::SmallStateCapital] =
 
  790        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/city_4_orange.png"), 
QFont(defaultFamily, defaultSize, 50, 
true), defaultLabelColor));
 
  792    m_defaultStyle[GeoDataPlacemark::SmallNationCapital] =
 
  793        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/city_4_red.png"), 
QFont(defaultFamily, defaultSize, 50, 
false), defaultLabelColor));
 
  795    m_defaultStyle[GeoDataPlacemark::MediumCity] =
 
  796        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/city_3_white.png"), 
QFont(defaultFamily, defaultSize, 50, 
false), defaultLabelColor));
 
  798    m_defaultStyle[GeoDataPlacemark::MediumCountyCapital] =
 
  799        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/city_3_yellow.png"), 
QFont(defaultFamily, defaultSize, 50, 
false), defaultLabelColor));
 
  801    m_defaultStyle[GeoDataPlacemark::MediumStateCapital] =
 
  802        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/city_3_orange.png"), 
QFont(defaultFamily, defaultSize, 50, 
true), defaultLabelColor));
 
  804    m_defaultStyle[GeoDataPlacemark::MediumNationCapital] =
 
  805        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/city_3_red.png"), 
QFont(defaultFamily, defaultSize, 50, 
false), defaultLabelColor));
 
  807    m_defaultStyle[GeoDataPlacemark::BigCity] =
 
  808        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/city_2_white.png"), 
QFont(defaultFamily, defaultSize, 50, 
false), defaultLabelColor));
 
  810    m_defaultStyle[GeoDataPlacemark::BigCountyCapital] =
 
  811        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/city_2_yellow.png"), 
QFont(defaultFamily, defaultSize, 50, 
false), defaultLabelColor));
 
  813    m_defaultStyle[GeoDataPlacemark::BigStateCapital] =
 
  814        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/city_2_orange.png"), 
QFont(defaultFamily, defaultSize, 50, 
true), defaultLabelColor));
 
  816    m_defaultStyle[GeoDataPlacemark::BigNationCapital] =
 
  817        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/city_2_red.png"), 
QFont(defaultFamily, defaultSize, 50, 
false), defaultLabelColor));
 
  819    m_defaultStyle[GeoDataPlacemark::LargeCity] =
 
  820        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/city_1_white.png"), 
QFont(defaultFamily, defaultSize, 75, 
false), defaultLabelColor));
 
  822    m_defaultStyle[GeoDataPlacemark::LargeCountyCapital] =
 
  823        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/city_1_yellow.png"), 
QFont(defaultFamily, defaultSize, 75, 
false), defaultLabelColor));
 
  825    m_defaultStyle[GeoDataPlacemark::LargeStateCapital] =
 
  826        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/city_1_orange.png"), 
QFont(defaultFamily, defaultSize, 75, 
true), defaultLabelColor));
 
  828    m_defaultStyle[GeoDataPlacemark::LargeNationCapital] =
 
  829        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/city_1_red.png"), 
QFont(defaultFamily, defaultSize, 75, 
false), defaultLabelColor));
 
  831    m_defaultStyle[GeoDataPlacemark::Nation] =
 
  832        GeoDataStyle::Ptr(
new GeoDataStyle(
QString(), 
QFont(defaultFamily, 
int(defaultSize * 1.5), 75, 
false), 
QColor(0x404040)));
 
  834    m_defaultStyle[GeoDataPlacemark::Nation]->labelStyle().setAlignment(GeoDataLabelStyle::Center);
 
  836    QFont osmCityFont = 
QFont(defaultFamily, 
int(defaultSize * 1.5), 75, 
false);
 
  837    m_defaultStyle[GeoDataPlacemark::PlaceCity] = createOsmPOIStyle(osmCityFont, 
"place/place-6", 
QColor(0x202020));
 
  838    m_defaultStyle[GeoDataPlacemark::PlaceCityCapital] = createOsmPOIStyle(osmCityFont, 
"place/place-capital-6", 
QColor(0x202020));
 
  839    m_defaultStyle[GeoDataPlacemark::PlaceCityNationalCapital] = createOsmPOIStyle(osmCityFont, 
"place/place-capital-adminlevel2", 
QColor(0x202020));
 
  840    m_defaultStyle[GeoDataPlacemark::PlaceSuburb] = createOsmPOIStyle(osmCityFont, 
QString(), 
QColor(0x707070));
 
  841    m_defaultStyle[GeoDataPlacemark::PlaceHamlet] = createOsmPOIStyle(osmCityFont, 
QString(), 
QColor(0x707070));
 
  842    QFont localityFont = osmCityFont;
 
  844    m_defaultStyle[GeoDataPlacemark::PlaceLocality] = createOsmPOIStyle(localityFont, 
QString(), 
QColor(0x707070));
 
  845    m_defaultStyle[GeoDataPlacemark::PlaceTown] = createOsmPOIStyle(osmCityFont, 
"place/place-6", 
QColor(0x404040));
 
  846    m_defaultStyle[GeoDataPlacemark::PlaceTownCapital] = createOsmPOIStyle(osmCityFont, 
"place/place-capital-6", 
QColor(0x404040));
 
  847    m_defaultStyle[GeoDataPlacemark::PlaceTownNationalCapital] = createOsmPOIStyle(osmCityFont, 
"place/place-capital-adminlevel2", 
QColor(0x404040));
 
  848    m_defaultStyle[GeoDataPlacemark::PlaceVillage] = createOsmPOIStyle(osmCityFont, 
"place/place-6", 
QColor(0x505050));
 
  849    m_defaultStyle[GeoDataPlacemark::PlaceVillageCapital] = createOsmPOIStyle(osmCityFont, 
"place/place-capital-6", 
QColor(0x505050));
 
  850    m_defaultStyle[GeoDataPlacemark::PlaceVillageNationalCapital] = createOsmPOIStyle(osmCityFont, 
"place/place-capital-adminlevel2", 
QColor(0x505050));
 
  851    for (
int i = GeoDataPlacemark::PlaceCity; i <= GeoDataPlacemark::PlaceVillageCapital; ++i) {
 
  852        m_defaultStyle[GeoDataPlacemark::GeoDataVisualCategory(i)]->polyStyle().setFill(
false);
 
  853        m_defaultStyle[GeoDataPlacemark::GeoDataVisualCategory(i)]->polyStyle().setOutline(
false);
 
  854        m_defaultStyle[GeoDataPlacemark::GeoDataVisualCategory(i)]->labelStyle().setAlignment(GeoDataLabelStyle::Center);
 
  856        if (i == GeoDataPlacemark::PlaceCityNationalCapital || i == GeoDataPlacemark::PlaceTownNationalCapital
 
  857            || i == GeoDataPlacemark::PlaceVillageNationalCapital) {
 
  858            m_defaultStyle[GeoDataPlacemark::GeoDataVisualCategory(i)]->iconStyle().setScale(0.55f);
 
  860            m_defaultStyle[GeoDataPlacemark::GeoDataVisualCategory(i)]->iconStyle().setScale(0.25);
 
  864    m_defaultStyle[GeoDataPlacemark::Mountain] = GeoDataStyle::Ptr(
 
  865        new GeoDataStyle(MarbleDirs::path(
"bitmaps/mountain_1.png"), 
QFont(defaultFamily, 
int(defaultSize * 0.9), 50, 
false), defaultLabelColor));
 
  867    m_defaultStyle[GeoDataPlacemark::Volcano] = GeoDataStyle::Ptr(
 
  868        new GeoDataStyle(MarbleDirs::path(
"bitmaps/volcano_1.png"), 
QFont(defaultFamily, 
int(defaultSize * 0.9), 50, 
false), defaultLabelColor));
 
  870    m_defaultStyle[GeoDataPlacemark::Mons] = GeoDataStyle::Ptr(
 
  871        new GeoDataStyle(MarbleDirs::path(
"bitmaps/mountain_1.png"), 
QFont(defaultFamily, 
int(defaultSize * 0.9), 50, 
false), defaultLabelColor));
 
  873    m_defaultStyle[GeoDataPlacemark::Valley] =
 
  874        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/valley.png"), 
QFont(defaultFamily, 
int(defaultSize * 0.9), 50, 
false), defaultLabelColor));
 
  876    m_defaultStyle[GeoDataPlacemark::Continent] =
 
  877        GeoDataStyle::Ptr(
new GeoDataStyle(
QString(), 
QFont(defaultFamily, 
int(defaultSize * 1.7), 50, 
false), 
QColor(0xbf0303)));
 
  879    m_defaultStyle[GeoDataPlacemark::Continent]->labelStyle().setAlignment(GeoDataLabelStyle::Center);
 
  881    m_defaultStyle[GeoDataPlacemark::Ocean] =
 
  882        GeoDataStyle::Ptr(
new GeoDataStyle(
QString(), 
QFont(defaultFamily, 
int(defaultSize * 1.7), 50, 
true), 
QColor(0x2c72c7)));
 
  884    m_defaultStyle[GeoDataPlacemark::Ocean]->labelStyle().setAlignment(GeoDataLabelStyle::Center);
 
  886    m_defaultStyle[GeoDataPlacemark::OtherTerrain] =
 
  887        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/other.png"), 
QFont(defaultFamily, 
int(defaultSize * 0.9), 50, 
false), defaultLabelColor));
 
  889    m_defaultStyle[GeoDataPlacemark::Crater] =
 
  890        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/crater.png"), 
QFont(defaultFamily, 
int(defaultSize * 0.9), 50, 
false), defaultLabelColor));
 
  892    m_defaultStyle[GeoDataPlacemark::Mare] =
 
  893        GeoDataStyle::Ptr(
new GeoDataStyle(
QString(), 
QFont(defaultFamily, 
int(defaultSize * 1.7), 50, 
false), 
QColor(0xbf0303)));
 
  895    m_defaultStyle[GeoDataPlacemark::Mare]->labelStyle().setAlignment(GeoDataLabelStyle::Center);
 
  897    m_defaultStyle[GeoDataPlacemark::GeographicPole] =
 
  898        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/pole_1.png"), 
QFont(defaultFamily, defaultSize, 50, 
false), defaultLabelColor));
 
  900    m_defaultStyle[GeoDataPlacemark::MagneticPole] =
 
  901        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/pole_2.png"), 
QFont(defaultFamily, defaultSize, 50, 
false), defaultLabelColor));
 
  903    m_defaultStyle[GeoDataPlacemark::ShipWreck] = GeoDataStyle::Ptr(
 
  904        new GeoDataStyle(MarbleDirs::path(
"bitmaps/shipwreck.png"), 
QFont(defaultFamily, 
int(defaultSize * 0.8), 50, 
false), defaultLabelColor));
 
  906    m_defaultStyle[GeoDataPlacemark::AirPort] =
 
  907        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/airport.png"), 
QFont(defaultFamily, defaultSize, 50, 
false), defaultLabelColor));
 
  909    m_defaultStyle[GeoDataPlacemark::Observatory] =
 
  910        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/observatory.png"), 
QFont(defaultFamily, defaultSize, 50, 
false), defaultLabelColor));
 
  912    m_defaultStyle[GeoDataPlacemark::OsmSite] =
 
  913        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/osm.png"), 
QFont(defaultFamily, defaultSize, 50, 
false), defaultLabelColor));
 
  915    m_defaultStyle[GeoDataPlacemark::Coordinate] =
 
  916        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/coordinate.png"), 
QFont(defaultFamily, defaultSize, 50, 
false), defaultLabelColor));
 
  918    m_defaultStyle[GeoDataPlacemark::MannedLandingSite] =
 
  919        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/manned_landing.png"), 
QFont(defaultFamily, defaultSize, 50, 
false), defaultLabelColor));
 
  921    m_defaultStyle[GeoDataPlacemark::RoboticRover] =
 
  922        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/robotic_rover.png"), 
QFont(defaultFamily, defaultSize, 50, 
false), defaultLabelColor));
 
  924    m_defaultStyle[GeoDataPlacemark::UnmannedSoftLandingSite] = GeoDataStyle::Ptr(
 
  925        new GeoDataStyle(MarbleDirs::path(
"bitmaps/unmanned_soft_landing.png"), 
QFont(defaultFamily, defaultSize, 50, 
false), defaultLabelColor));
 
  927    m_defaultStyle[GeoDataPlacemark::UnmannedHardLandingSite] = GeoDataStyle::Ptr(
 
  928        new GeoDataStyle(MarbleDirs::path(
"bitmaps/unmanned_hard_landing.png"), 
QFont(defaultFamily, defaultSize, 50, 
false), defaultLabelColor));
 
  930    m_defaultStyle[GeoDataPlacemark::Bookmark] =
 
  931        createPOIStyle(
QFont(defaultFamily, defaultSize, 50, 
false), MarbleDirs::path(
"svg/bookmark.svg"), m_defaultLabelColor);
 
  932    m_defaultStyle[GeoDataPlacemark::Bookmark]->iconStyle().setScale(0.75);
 
  934    QColor const shopColor(0xac39ac);
 
  935    QColor const transportationColor(0x0092da);
 
  936    QColor const amenityColor(0x734a08);
 
  937    QColor const healthColor(0xda0092);
 
  938    QColor const airTransportColor(0x8461C4);
 
  939    QColor const educationalAreasAndHospital(0xf0f0d8);
 
  940    QColor const buildingColor(0xbeadad);
 
  941    QColor const waterColor(0xb5d0d0);
 
  945    QFont const osmFont(defaultFamily, 10, 50, 
false);
 
  946    m_defaultStyle[GeoDataPlacemark::AccomodationCamping] = createOsmPOIRingStyle(osmFont, 
"transportation/camping.16", transportationColor);
 
  947    m_defaultStyle[GeoDataPlacemark::AccomodationHostel] = createOsmPOIStyle(osmFont, 
"transportation/hostel.16", transportationColor);
 
  948    m_defaultStyle[GeoDataPlacemark::AccomodationHotel] = createOsmPOIStyle(osmFont, 
"transportation/hotel.16", transportationColor);
 
  949    m_defaultStyle[GeoDataPlacemark::AccomodationMotel] = createOsmPOIStyle(osmFont, 
"transportation/motel.16", transportationColor);
 
  950    m_defaultStyle[GeoDataPlacemark::AccomodationYouthHostel] = createOsmPOIStyle(osmFont, 
"transportation/hostel.16", transportationColor);
 
  951    m_defaultStyle[GeoDataPlacemark::AccomodationGuestHouse] = createOsmPOIStyle(osmFont, 
"transportation/guest_house.16", transportationColor);
 
  952    m_defaultStyle[GeoDataPlacemark::AmenityLibrary] = createOsmPOIStyle(osmFont, 
"amenity/library.20", amenityColor);
 
  953    m_defaultStyle[GeoDataPlacemark::AmenityKindergarten] = createOsmPOIAreaStyle(osmFont, 
QString(), amenityColor, educationalAreasAndHospital, amenityColor);
 
  954    m_defaultStyle[GeoDataPlacemark::EducationCollege] = createOsmPOIAreaStyle(osmFont, 
QString(), amenityColor, educationalAreasAndHospital, amenityColor);
 
  955    m_defaultStyle[GeoDataPlacemark::EducationSchool] = createOsmPOIAreaStyle(osmFont, 
QString(), amenityColor, educationalAreasAndHospital, amenityColor);
 
  956    m_defaultStyle[GeoDataPlacemark::EducationUniversity] = createOsmPOIAreaStyle(osmFont, 
QString(), amenityColor, educationalAreasAndHospital, amenityColor);
 
  957    m_defaultStyle[GeoDataPlacemark::FoodBar] = createOsmPOIStyle(osmFont, 
"amenity/bar.16", amenityColor);
 
  958    m_defaultStyle[GeoDataPlacemark::FoodBiergarten] = createOsmPOIStyle(osmFont, 
"amenity/biergarten.16", amenityColor);
 
  959    m_defaultStyle[GeoDataPlacemark::FoodCafe] = createOsmPOIStyle(osmFont, 
"amenity/cafe.16", amenityColor);
 
  960    m_defaultStyle[GeoDataPlacemark::FoodFastFood] = createOsmPOIStyle(osmFont, 
"amenity/fast_food.16", amenityColor);
 
  961    m_defaultStyle[GeoDataPlacemark::FoodPub] = createOsmPOIStyle(osmFont, 
"amenity/pub.16", amenityColor);
 
  962    m_defaultStyle[GeoDataPlacemark::FoodRestaurant] = createOsmPOIStyle(osmFont, 
"amenity/restaurant.16", amenityColor);
 
  964    m_defaultStyle[GeoDataPlacemark::HealthDentist] = createOsmPOIStyle(osmFont, 
"health/dentist.16", healthColor);
 
  965    m_defaultStyle[GeoDataPlacemark::HealthDoctors] = createOsmPOIStyle(osmFont, 
"health/doctors.16", healthColor);
 
  966    m_defaultStyle[GeoDataPlacemark::HealthHospital] = createOsmPOIStyle(osmFont, 
"health/hospital.16", healthColor, educationalAreasAndHospital, amenityColor);
 
  967    m_defaultStyle[GeoDataPlacemark::HealthPharmacy] = createOsmPOIStyle(osmFont, 
"health/pharmacy.16", healthColor);
 
  968    m_defaultStyle[GeoDataPlacemark::HealthVeterinary] = createOsmPOIStyle(osmFont, 
"health/veterinary-14", healthColor);
 
  970    m_defaultStyle[GeoDataPlacemark::MoneyAtm] = createOsmPOIStyle(osmFont, 
"amenity/atm.16", amenityColor);
 
  971    m_defaultStyle[GeoDataPlacemark::MoneyBank] = createOsmPOIStyle(osmFont, 
"amenity/bank.16", amenityColor);
 
  973    m_defaultStyle[GeoDataPlacemark::HistoricArchaeologicalSite] =
 
  974        createOsmPOIAreaStyle(osmFont, 
"amenity/archaeological_site.16", amenityColor, 
Qt::transparent);
 
  975    m_defaultStyle[GeoDataPlacemark::AmenityEmbassy] = createOsmPOIStyle(osmFont, 
"transportation/embassy.16", transportationColor);
 
  976    m_defaultStyle[GeoDataPlacemark::AmenityEmergencyPhone] = createOsmPOIStyle(osmFont, 
"amenity/emergency_phone.16", amenityColor);
 
  977    m_defaultStyle[GeoDataPlacemark::AmenityMountainRescue] = createOsmPOIStyle(osmFont, 
"amenity/mountain_rescue.16", amenityColor);
 
  978    m_defaultStyle[GeoDataPlacemark::LeisureWaterPark] = createOsmPOIStyle(osmFont, 
"amenity/water_park.16", amenityColor);
 
  979    m_defaultStyle[GeoDataPlacemark::AmenityCommunityCentre] = createOsmPOIStyle(osmFont, 
"amenity/community_centre-14", amenityColor);
 
  980    m_defaultStyle[GeoDataPlacemark::AmenityFountain] = createOsmPOIStyle(osmFont, 
"amenity/fountain-14", 
QColor(0x7989de), waterColor, waterColor.
darker(150));
 
  981    m_defaultStyle[GeoDataPlacemark::AmenityNightClub] = createOsmPOIStyle(osmFont, 
"amenity/nightclub.18", amenityColor);
 
  982    m_defaultStyle[GeoDataPlacemark::AmenityBench] = createOsmPOIStyle(osmFont, 
"individual/bench.16", amenityColor);
 
  983    m_defaultStyle[GeoDataPlacemark::AmenityCourtHouse] = createOsmPOIStyle(osmFont, 
"amenity/courthouse-16", amenityColor);
 
  984    m_defaultStyle[GeoDataPlacemark::AmenityFireStation] = createOsmPOIStyle(osmFont, 
"amenity/firestation.16", amenityColor);
 
  985    m_defaultStyle[GeoDataPlacemark::AmenityHuntingStand] = createOsmPOIStyle(osmFont, 
"manmade/hunting-stand.16", amenityColor);
 
  986    m_defaultStyle[GeoDataPlacemark::AmenityPolice] = createOsmPOIStyle(osmFont, 
"amenity/police.16", amenityColor);
 
  987    m_defaultStyle[GeoDataPlacemark::AmenityPostBox] = createOsmPOIStyle(osmFont, 
"amenity/post_box-12", amenityColor);
 
  988    m_defaultStyle[GeoDataPlacemark::AmenityPostOffice] = createOsmPOIStyle(osmFont, 
"amenity/post_office-14", amenityColor);
 
  989    m_defaultStyle[GeoDataPlacemark::AmenityPrison] = createOsmPOIStyle(osmFont, 
"amenity/prison.16", amenityColor);
 
  990    m_defaultStyle[GeoDataPlacemark::AmenityRecycling] = createOsmPOIStyle(osmFont, 
"amenity/recycling.16", amenityColor);
 
  991    m_defaultStyle[GeoDataPlacemark::AmenityShelter] = createOsmPOIStyle(osmFont, 
"transportation/shelter", transportationColor);
 
  992    m_defaultStyle[GeoDataPlacemark::AmenityTelephone] = createOsmPOIStyle(osmFont, 
"amenity/telephone.16", amenityColor);
 
  993    m_defaultStyle[GeoDataPlacemark::AmenityToilets] = createOsmPOIStyle(osmFont, 
"amenity/toilets.16", amenityColor);
 
  994    m_defaultStyle[GeoDataPlacemark::AmenityTownHall] = createOsmPOIStyle(osmFont, 
"amenity/town_hall.16", amenityColor);
 
  995    m_defaultStyle[GeoDataPlacemark::AmenityWasteBasket] = createOsmPOIStyle(osmFont, 
"individual/waste_basket.10", amenityColor);
 
  996    m_defaultStyle[GeoDataPlacemark::AmenityWasteBasket]->iconStyle().setScale(0.75);
 
  997    m_defaultStyle[GeoDataPlacemark::AmenityChargingStation] = createOsmPOIStyle(osmFont, 
"transportation/charging_station");
 
  998    m_defaultStyle[GeoDataPlacemark::AmenityCarWash] = createOsmPOIStyle(osmFont, 
"amenity/car_wash", amenityColor);
 
  999    m_defaultStyle[GeoDataPlacemark::AmenitySocialFacility] = createOsmPOIStyle(osmFont, 
"amenity/social_facility", amenityColor);
 
 1001    m_defaultStyle[GeoDataPlacemark::AmenityDrinkingWater] = createOsmPOIStyle(osmFont, 
"amenity/drinking_water.16", amenityColor);
 
 1003    m_defaultStyle[GeoDataPlacemark::NaturalPeak] = createOsmPOIStyle(osmFont, 
"individual/peak", amenityColor);
 
 1004    m_defaultStyle[GeoDataPlacemark::NaturalPeak]->iconStyle().setScale(0.33f);
 
 1005    m_defaultStyle[GeoDataPlacemark::NaturalVolcano] = createOsmPOIStyle(osmFont, 
"individual/volcano", amenityColor);
 
 1006    m_defaultStyle[GeoDataPlacemark::NaturalVolcano]->iconStyle().setScale(0.33f);
 
 1007    m_defaultStyle[GeoDataPlacemark::NaturalTree] = createOsmPOIStyle(osmFont, 
"individual/tree-29", amenityColor); 
 
 1008    m_styleTreeAutumn = createOsmPOIStyle(osmFont, 
"individual/tree-29-autumn", amenityColor);
 
 1009    m_styleTreeWinter = createOsmPOIStyle(osmFont, 
"individual/tree-29-winter", amenityColor);
 
 1010    qreal 
const treeIconScale = 0.75;
 
 1011    m_defaultStyle[GeoDataPlacemark::NaturalTree]->iconStyle().setScale(treeIconScale);
 
 1012    m_styleTreeAutumn->iconStyle().setScale(treeIconScale);
 
 1013    m_styleTreeWinter->iconStyle().setScale(treeIconScale);
 
 1015    m_defaultStyle[GeoDataPlacemark::ShopBeverages] = createOsmPOIStyle(osmFont, 
"shop/beverages-14", shopColor);
 
 1016    m_defaultStyle[GeoDataPlacemark::ShopHifi] = createOsmPOIStyle(osmFont, 
"shop/hifi-14", shopColor);
 
 1017    m_defaultStyle[GeoDataPlacemark::ShopSupermarket] = createOsmPOIStyle(osmFont, 
"shop/shop_supermarket", shopColor);
 
 1018    m_defaultStyle[GeoDataPlacemark::ShopAlcohol] = createOsmPOIStyle(osmFont, 
"shop/shop_alcohol.16", shopColor);
 
 1019    m_defaultStyle[GeoDataPlacemark::ShopBakery] = createOsmPOIStyle(osmFont, 
"shop/shop_bakery.16", shopColor);
 
 1020    m_defaultStyle[GeoDataPlacemark::ShopButcher] = createOsmPOIStyle(osmFont, 
"shop/butcher-14", shopColor);
 
 1021    m_defaultStyle[GeoDataPlacemark::ShopConfectionery] = createOsmPOIStyle(osmFont, 
"shop/confectionery.14", shopColor);
 
 1022    m_defaultStyle[GeoDataPlacemark::ShopConvenience] = createOsmPOIStyle(osmFont, 
"shop/shop_convenience", shopColor);
 
 1023    m_defaultStyle[GeoDataPlacemark::ShopGreengrocer] = createOsmPOIStyle(osmFont, 
"shop/greengrocer-14", shopColor);
 
 1024    m_defaultStyle[GeoDataPlacemark::ShopSeafood] = createOsmPOIStyle(osmFont, 
"shop/seafood-14", shopColor);
 
 1025    m_defaultStyle[GeoDataPlacemark::ShopDepartmentStore] = createOsmPOIStyle(osmFont, 
"shop/department_store-16", shopColor);
 
 1026    m_defaultStyle[GeoDataPlacemark::ShopKiosk] = createOsmPOIStyle(osmFont, 
"shop/kiosk-14", shopColor);
 
 1027    m_defaultStyle[GeoDataPlacemark::ShopBag] = createOsmPOIStyle(osmFont, 
"shop/bag-14", shopColor);
 
 1028    m_defaultStyle[GeoDataPlacemark::ShopClothes] = createOsmPOIStyle(osmFont, 
"shop/shop_clothes.16", shopColor);
 
 1029    m_defaultStyle[GeoDataPlacemark::ShopFashion] = createOsmPOIStyle(osmFont, 
"shop/shop_clothes.16", shopColor);
 
 1030    m_defaultStyle[GeoDataPlacemark::ShopJewelry] = createOsmPOIStyle(osmFont, 
"shop/shop_jewelry.16", shopColor);
 
 1031    m_defaultStyle[GeoDataPlacemark::ShopShoes] = createOsmPOIStyle(osmFont, 
"shop/shop_shoes.16", shopColor);
 
 1032    m_defaultStyle[GeoDataPlacemark::ShopVarietyStore] = createOsmPOIStyle(osmFont, 
"shop/variety_store-14", shopColor);
 
 1033    m_defaultStyle[GeoDataPlacemark::ShopBeauty] = createOsmPOIStyle(osmFont, 
"shop/beauty-14", shopColor);
 
 1034    m_defaultStyle[GeoDataPlacemark::ShopChemist] = createOsmPOIStyle(osmFont, 
"shop/chemist-14", shopColor);
 
 1035    m_defaultStyle[GeoDataPlacemark::ShopCosmetics] = createOsmPOIStyle(osmFont, 
"shop/perfumery-14", shopColor);
 
 1036    m_defaultStyle[GeoDataPlacemark::ShopHairdresser] = createOsmPOIStyle(osmFont, 
"shop/shop_hairdresser.16", shopColor);
 
 1037    m_defaultStyle[GeoDataPlacemark::ShopOptician] = createOsmPOIStyle(osmFont, 
"shop/shop_optician.16", shopColor);
 
 1038    m_defaultStyle[GeoDataPlacemark::ShopPerfumery] = createOsmPOIStyle(osmFont, 
"shop/perfumery-14", shopColor);
 
 1039    m_defaultStyle[GeoDataPlacemark::ShopDoitYourself] = createOsmPOIStyle(osmFont, 
"shop/shop_diy.16", shopColor);
 
 1040    m_defaultStyle[GeoDataPlacemark::ShopFlorist] = createOsmPOIStyle(osmFont, 
"shop/florist.16", shopColor);
 
 1041    m_defaultStyle[GeoDataPlacemark::ShopHardware] = createOsmPOIStyle(osmFont, 
"shop/shop_diy.16", shopColor);
 
 1042    m_defaultStyle[GeoDataPlacemark::ShopFurniture] = createOsmPOIStyle(osmFont, 
"shop/shop_furniture.16", shopColor);
 
 1043    m_defaultStyle[GeoDataPlacemark::ShopElectronics] = createOsmPOIStyle(osmFont, 
"shop/shop_electronics.16", shopColor);
 
 1044    m_defaultStyle[GeoDataPlacemark::ShopMobilePhone] = createOsmPOIStyle(osmFont, 
"shop/shop_mobile_phone.16", shopColor);
 
 1045    m_defaultStyle[GeoDataPlacemark::ShopBicycle] = createOsmPOIStyle(osmFont, 
"shop/shop_bicycle.16", shopColor);
 
 1046    m_defaultStyle[GeoDataPlacemark::ShopCar] = createOsmPOIStyle(osmFont, 
"shop/shop_car", shopColor);
 
 1047    m_defaultStyle[GeoDataPlacemark::ShopCarRepair] = createOsmPOIStyle(osmFont, 
"shop/shopping_car_repair.16", shopColor);
 
 1048    m_defaultStyle[GeoDataPlacemark::ShopCarParts] = createOsmPOIStyle(osmFont, 
"shop/car_parts-14", shopColor);
 
 1049    m_defaultStyle[GeoDataPlacemark::ShopMotorcycle] = createOsmPOIStyle(osmFont, 
"shop/motorcycle-14", shopColor);
 
 1050    m_defaultStyle[GeoDataPlacemark::ShopOutdoor] = createOsmPOIStyle(osmFont, 
"shop/outdoor-14", shopColor);
 
 1051    m_defaultStyle[GeoDataPlacemark::ShopSports] = createOsmPOIStyle(osmFont, 
"shop/sports", shopColor);
 
 1052    m_defaultStyle[GeoDataPlacemark::ShopCopy] = createOsmPOIStyle(osmFont, 
"shop/copyshop", shopColor);
 
 1053    m_defaultStyle[GeoDataPlacemark::ShopArt] = createOsmPOIStyle(osmFont, 
"shop/art", shopColor);
 
 1054    m_defaultStyle[GeoDataPlacemark::ShopMusicalInstrument] = createOsmPOIStyle(osmFont, 
"shop/musical_instrument-14", shopColor);
 
 1055    m_defaultStyle[GeoDataPlacemark::ShopPhoto] = createOsmPOIStyle(osmFont, 
"shop/photo-14", shopColor);
 
 1056    m_defaultStyle[GeoDataPlacemark::ShopBook] = createOsmPOIStyle(osmFont, 
"shop/shop_books.16", shopColor);
 
 1057    m_defaultStyle[GeoDataPlacemark::ShopGift] = createOsmPOIStyle(osmFont, 
"shop/shop_gift.16", shopColor);
 
 1058    m_defaultStyle[GeoDataPlacemark::ShopStationery] = createOsmPOIStyle(osmFont, 
"shop/stationery-14", shopColor);
 
 1059    m_defaultStyle[GeoDataPlacemark::ShopLaundry] = createOsmPOIStyle(osmFont, 
"shop/laundry-14", shopColor);
 
 1060    m_defaultStyle[GeoDataPlacemark::ShopPet] = createOsmPOIStyle(osmFont, 
"shop/shop_pet.16", shopColor);
 
 1061    m_defaultStyle[GeoDataPlacemark::ShopToys] = createOsmPOIStyle(osmFont, 
"shop/toys-14", shopColor);
 
 1062    m_defaultStyle[GeoDataPlacemark::ShopTravelAgency] = createOsmPOIStyle(osmFont, 
"shop/travel_agency-14", shopColor);
 
 1063    m_defaultStyle[GeoDataPlacemark::ShopDeli] = createOsmPOIStyle(osmFont, 
"shop/deli", shopColor);
 
 1064    m_defaultStyle[GeoDataPlacemark::ShopTobacco] = createOsmPOIStyle(osmFont, 
"shop/tobacco", shopColor);
 
 1065    m_defaultStyle[GeoDataPlacemark::ShopTea] = createOsmPOIStyle(osmFont, 
"shop/tea", shopColor);
 
 1066    m_defaultStyle[GeoDataPlacemark::ShopComputer] = createOsmPOIStyle(osmFont, 
"shop/computer-14", shopColor);
 
 1067    m_defaultStyle[GeoDataPlacemark::ShopGardenCentre] = createOsmPOIStyle(osmFont, 
"shop/garden_centre-14", shopColor);
 
 1068    m_defaultStyle[GeoDataPlacemark::Shop] = createOsmPOIStyle(osmFont, 
"shop/shop-14", shopColor);
 
 1070    m_defaultStyle[GeoDataPlacemark::ManmadeBridge] = createWayStyle(
QColor(0xb8b8b8), 
Qt::transparent, 
true, 
true);
 
 1071    m_defaultStyle[GeoDataPlacemark::ManmadeLighthouse] =
 
 1072        createOsmPOIStyle(osmFont, 
"transportation/lighthouse.16", transportationColor, 0xf2efe9, 
QColor(0xf2efe9).darker());
 
 1073    m_defaultStyle[GeoDataPlacemark::ManmadePier] =
 
 1074        createStyle(0.0, 3.0, 0xf2efe9, 0xf2efe9, 
true, 
false, 
Qt::SolidPattern, 
Qt::SolidLine, 
Qt::FlatCap, 
false, 
QList<qreal>(), osmFont);
 
 1075    m_defaultStyle[GeoDataPlacemark::ManmadeWaterTower] = createOsmPOIStyle(osmFont, 
"amenity/water_tower.16", amenityColor);
 
 1076    m_defaultStyle[GeoDataPlacemark::ManmadeWindMill] = createOsmPOIStyle(osmFont, 
"amenity/windmill.16", amenityColor);
 
 1077    m_defaultStyle[GeoDataPlacemark::ManmadeCommunicationsTower] = createOsmPOIStyle(osmFont, 
"manmade/communications.16", amenityColor);
 
 1079    m_defaultStyle[GeoDataPlacemark::HistoricCastle] = createOsmPOIRingStyle(osmFont, 
"amenity/cinema.16", amenityColor);
 
 1080    m_defaultStyle[GeoDataPlacemark::HistoricMemorial] = createOsmPOIStyle(osmFont, 
"amenity/tourist_memorial.16", amenityColor);
 
 1081    m_defaultStyle[GeoDataPlacemark::HistoricMonument] = createOsmPOIStyle(osmFont, 
"amenity/monument.16", amenityColor);
 
 1082    m_defaultStyle[GeoDataPlacemark::HistoricRuins] = createOsmPOIRingStyle(osmFont, 
QString(), amenityColor);
 
 1084    m_defaultStyle[GeoDataPlacemark::TourismAttraction] = createOsmPOIStyle(osmFont, 
"amenity/tourist_memorial.16", amenityColor);
 
 1085    m_defaultStyle[GeoDataPlacemark::TourismArtwork] = createOsmPOIStyle(osmFont, 
"amenity/artwork", amenityColor);
 
 1086    m_defaultStyle[GeoDataPlacemark::AmenityCinema] = createOsmPOIStyle(osmFont, 
"amenity/cinema.16", amenityColor);
 
 1087    m_defaultStyle[GeoDataPlacemark::TourismInformation] = createOsmPOIStyle(osmFont, 
"amenity/information.16", amenityColor);
 
 1088    m_defaultStyle[GeoDataPlacemark::TourismMuseum] = createOsmPOIStyle(osmFont, 
"amenity/museum.16", amenityColor);
 
 1089    m_defaultStyle[GeoDataPlacemark::AmenityTheatre] = createOsmPOIStyle(osmFont, 
"amenity/theatre.16", amenityColor);
 
 1090    m_defaultStyle[GeoDataPlacemark::TourismThemePark] = createOsmPOIStyle(osmFont, 
QString(), amenityColor);
 
 1091    m_defaultStyle[GeoDataPlacemark::TourismViewPoint] = createOsmPOIStyle(osmFont, 
"amenity/viewpoint.16", amenityColor);
 
 1092    m_defaultStyle[GeoDataPlacemark::TourismZoo] = createOsmPOIRingStyle(osmFont, 
QString(), amenityColor, 
Qt::transparent);
 
 1093    m_defaultStyle[GeoDataPlacemark::TourismAlpineHut] = createOsmPOIStyle(osmFont, 
"transportation/alpinehut.16", transportationColor);
 
 1094    m_defaultStyle[GeoDataPlacemark::TourismWildernessHut] = createOsmPOIStyle(osmFont, 
"transportation/wilderness_hut", transportationColor);
 
 1095    m_defaultStyle[GeoDataPlacemark::TransportAerodrome] = createOsmPOIStyle(osmFont, 
"airtransport/aerodrome", airTransportColor);
 
 1096    m_defaultStyle[GeoDataPlacemark::TransportHelipad] = createOsmPOIStyle(osmFont, 
"airtransport/helipad", airTransportColor);
 
 1097    m_defaultStyle[GeoDataPlacemark::TransportAirportTerminal] = createOsmPOIAreaStyle(osmFont, 
QString(), airTransportColor);
 
 1098    m_defaultStyle[GeoDataPlacemark::TransportAirportGate] = createOsmPOIAreaStyle(osmFont, 
QString(), airTransportColor);
 
 1099    m_defaultStyle[GeoDataPlacemark::TransportBusStation] = createOsmPOIStyle(osmFont, 
"transportation/bus_station.16", transportationColor);
 
 1100    m_defaultStyle[GeoDataPlacemark::TransportBusStop] = createOsmPOIStyle(osmFont, 
"transportation/bus_stop.12", transportationColor);
 
 1101    m_defaultStyle[GeoDataPlacemark::TransportCarShare] = createOsmPOIStyle(osmFont, 
"transportation/car_share.16", transportationColor);
 
 1102    m_defaultStyle[GeoDataPlacemark::TransportFuel] = createOsmPOIStyle(osmFont, 
"transportation/fuel.16", transportationColor);
 
 1103    m_defaultStyle[GeoDataPlacemark::TransportParking] =
 
 1104        createOsmPOIAreaStyle(osmFont, 
"transportation/parking", transportationColor, 0xF6EEB6, 
QColor(0xF6EEB6).darker());
 
 1105    m_defaultStyle[GeoDataPlacemark::TransportBicycleParking] = createOsmPOIAreaStyle(osmFont, 
"transportation/bicycle_parking.16", transportationColor);
 
 1106    m_defaultStyle[GeoDataPlacemark::TransportMotorcycleParking] = createOsmPOIAreaStyle(osmFont, 
"transportation/motorcycle_parking.16", transportationColor);
 
 1107    qreal 
const parkingIconScale = 0.75;
 
 1108    m_defaultStyle[GeoDataPlacemark::TransportParking]->iconStyle().setScale(parkingIconScale);
 
 1109    m_defaultStyle[GeoDataPlacemark::TransportBicycleParking]->iconStyle().setScale(parkingIconScale);
 
 1110    m_defaultStyle[GeoDataPlacemark::TransportMotorcycleParking]->iconStyle().setScale(parkingIconScale);
 
 1111    m_defaultStyle[GeoDataPlacemark::TransportParkingSpace] = createWayStyle(0xF6EEB6, 
QColor(0xF6EEB6).darker(), 
true, 
true);
 
 1112    m_defaultStyle[GeoDataPlacemark::TransportPlatform] = createWayStyle(0xbbbbbb, 
Qt::transparent, 
true, 
false);
 
 1113    m_defaultStyle[GeoDataPlacemark::TransportTrainStation] = createOsmPOIStyle(osmFont, 
"individual/railway_station", transportationColor);
 
 1114    m_defaultStyle[GeoDataPlacemark::TransportTrainStation]->iconStyle().setScale(0.5);
 
 1115    m_defaultStyle[GeoDataPlacemark::TransportTramStop] = createOsmPOIStyle(osmFont, 
"individual/railway_station", transportationColor);
 
 1116    m_defaultStyle[GeoDataPlacemark::TransportTramStop]->iconStyle().setScale(0.33f);
 
 1117    m_defaultStyle[GeoDataPlacemark::TransportRentalBicycle] = createOsmPOIStyle(osmFont, 
"transportation/rental_bicycle.16", transportationColor);
 
 1118    m_defaultStyle[GeoDataPlacemark::TransportRentalCar] = createOsmPOIStyle(osmFont, 
"transportation/rental_car.16", transportationColor);
 
 1119    m_defaultStyle[GeoDataPlacemark::TransportRentalSki] = createOsmPOIStyle(osmFont, 
"transportation/rental_ski.16", transportationColor);
 
 1120    m_defaultStyle[GeoDataPlacemark::TransportTaxiRank] = createOsmPOIStyle(osmFont, 
"transportation/taxi.16", transportationColor);
 
 1121    m_defaultStyle[GeoDataPlacemark::TransportSubwayEntrance] = createOsmPOIStyle(osmFont, 
"transportation/subway_entrance", transportationColor);
 
 1122    m_defaultStyle[GeoDataPlacemark::ReligionPlaceOfWorship] = createOsmPOIStyle(osmFont, 
"black/place_of_worship.16");
 
 1123    m_defaultStyle[GeoDataPlacemark::ReligionBahai] = createOsmPOIStyle(osmFont, 
QString());
 
 1124    m_defaultStyle[GeoDataPlacemark::ReligionBuddhist] = createOsmPOIStyle(osmFont, 
"black/buddhist.16");
 
 1125    m_defaultStyle[GeoDataPlacemark::ReligionChristian] = createOsmPOIStyle(osmFont, 
"black/christian.16");
 
 1126    m_defaultStyle[GeoDataPlacemark::ReligionMuslim] = createOsmPOIStyle(osmFont, 
"black/muslim.16");
 
 1127    m_defaultStyle[GeoDataPlacemark::ReligionHindu] = createOsmPOIStyle(osmFont, 
"black/hinduist.16");
 
 1128    m_defaultStyle[GeoDataPlacemark::ReligionJain] = createOsmPOIStyle(osmFont, 
QString());
 
 1129    m_defaultStyle[GeoDataPlacemark::ReligionJewish] = createOsmPOIStyle(osmFont, 
"black/jewish.16");
 
 1130    m_defaultStyle[GeoDataPlacemark::ReligionShinto] = createOsmPOIStyle(osmFont, 
"black/shintoist.16");
 
 1131    m_defaultStyle[GeoDataPlacemark::ReligionSikh] = createOsmPOIStyle(osmFont, 
"black/sikhist.16");
 
 1132    m_defaultStyle[GeoDataPlacemark::ReligionTaoist] = createOsmPOIStyle(osmFont, 
"black/taoist.16");
 
 1134    m_defaultStyle[GeoDataPlacemark::IndoorDoor] = createOsmPOIRingStyle(osmFont, 
"indoor/door_b.16");
 
 1135    m_defaultStyle[GeoDataPlacemark::IndoorWall] = createOsmPOIStyle(osmFont, 
QString());
 
 1136    m_defaultStyle[GeoDataPlacemark::IndoorRoom] = createWayStyle(buildingColor.darker(), 
QColor(
Qt::black));
 
 1138    m_defaultStyle[GeoDataPlacemark::HighwayTrafficSignals] = createOsmPOIStyle(osmFont, 
"individual/traffic_light");
 
 1139    m_defaultStyle[GeoDataPlacemark::HighwayTrafficSignals]->iconStyle().setScale(0.75);
 
 1141    m_defaultStyle[GeoDataPlacemark::HighwayElevator] = createOsmPOIStyle(osmFont, 
"transportation/elevator-12", transportationColor);
 
 1142    m_defaultStyle[GeoDataPlacemark::HighwayElevator]->iconStyle().setScale(0.75);
 
 1144    m_defaultStyle[GeoDataPlacemark::PowerTower] = createOsmPOIStyle(osmFont, 
"individual/power_tower", 
QColor(0x888888));
 
 1145    m_defaultStyle[GeoDataPlacemark::PowerTower]->iconStyle().setScale(0.6f);
 
 1147    m_defaultStyle[GeoDataPlacemark::BarrierCityWall] = createStyle(6.0,
 
 1160    m_defaultStyle[GeoDataPlacemark::BarrierGate] = createOsmPOIStyle(osmFont, 
"individual/gate");
 
 1161    m_defaultStyle[GeoDataPlacemark::BarrierGate]->iconStyle().setScale(0.75);
 
 1162    m_defaultStyle[GeoDataPlacemark::BarrierLiftGate] = createOsmPOIStyle(osmFont, 
"individual/liftgate");
 
 1163    m_defaultStyle[GeoDataPlacemark::BarrierLiftGate]->iconStyle().setScale(0.75);
 
 1164    m_defaultStyle[GeoDataPlacemark::BarrierWall] = createStyle(2.0,
 
 1178    m_defaultStyle[GeoDataPlacemark::HighwaySteps] = createStyle(0.0,
 
 1190    m_defaultStyle[GeoDataPlacemark::HighwayUnknown] = createHighwayStyle(0xdddddd, 0xbbbbbb, osmFont, 
"000000", 0, 1);
 
 1191    m_defaultStyle[GeoDataPlacemark::HighwayPath] = createHighwayStyle(0xdddde8, 0x999999, osmFont, 
"000000", 0, 1, 
Qt::DotLine, 
Qt::SquareCap, 
true);
 
 1192    m_defaultStyle[GeoDataPlacemark::HighwayTrack] =
 
 1194    m_defaultStyle[GeoDataPlacemark::HighwayPedestrian] = createHighwayStyle(0xdddde8, 0x999999, osmFont, 
"000000", 0, 2);
 
 1195    m_defaultStyle[GeoDataPlacemark::HighwayPedestrian]->polyStyle().setOutline(
false);
 
 1196    m_defaultStyle[GeoDataPlacemark::HighwayFootway] =
 
 1198    m_defaultStyle[GeoDataPlacemark::HighwayCycleway] =
 
 1200    m_defaultStyle[GeoDataPlacemark::HighwayService] = createHighwayStyle(0xffffff, 0xbbbbbb, osmFont, 
"000000", 1, 6);
 
 1201    m_defaultStyle[GeoDataPlacemark::HighwayResidential] = createHighwayStyle(0xffffff, 0xbbbbbb, osmFont, 
"000000", 3, 6);
 
 1202    m_defaultStyle[GeoDataPlacemark::HighwayLivingStreet] = createHighwayStyle(0xffffff, 0xbbbbbb, osmFont, 
"000000", 3, 6);
 
 1203    m_defaultStyle[GeoDataPlacemark::HighwayRoad] = createHighwayStyle(0xdddddd, 0xbbbbbb, osmFont, 
"000000", 3, 6);
 
 1204    m_defaultStyle[GeoDataPlacemark::HighwayUnclassified] = createHighwayStyle(0xffffff, 0xbbbbbb, osmFont, 
"000000", 3, 6);
 
 1205    m_defaultStyle[GeoDataPlacemark::HighwayTertiary] = createHighwayStyle(0xffffff, 0x8f8f8f, osmFont, 
"000000", 6, 6);
 
 1206    m_defaultStyle[GeoDataPlacemark::HighwayTertiaryLink] = createHighwayStyle(0xffffff, 0x8f8f8f, osmFont, 
"000000", 6, 6);
 
 1207    m_defaultStyle[GeoDataPlacemark::HighwaySecondary] = createHighwayStyle(0xf7fabf, 0x707d05, osmFont, 
"000000", 6, 6);
 
 1208    m_defaultStyle[GeoDataPlacemark::HighwaySecondaryLink] = createHighwayStyle(0xf7fabf, 0x707d05, osmFont, 
"000000", 6, 6);
 
 1209    m_defaultStyle[GeoDataPlacemark::HighwayPrimary] = createHighwayStyle(0xfcd6a4, 0xa06b00, osmFont, 
"000000", 9, 6);
 
 1210    m_defaultStyle[GeoDataPlacemark::HighwayPrimaryLink] = createHighwayStyle(0xfcd6a4, 0xa06b00, osmFont, 
"000000", 6, 6);
 
 1211    m_defaultStyle[GeoDataPlacemark::HighwayRaceway] = createHighwayStyle(0xffc0cb, 0xffc0cb, osmFont, 
"000000", 1, 5);
 
 1212    m_defaultStyle[GeoDataPlacemark::HighwayTrunk] = createHighwayStyle(0xf9b29c, 0xc84e2f, osmFont, 
"000000", 9, 6);
 
 1213    m_defaultStyle[GeoDataPlacemark::HighwayTrunkLink] = createHighwayStyle(0xf9b29c, 0xc84e2f, osmFont, 
"000000", 9, 6);
 
 1214    m_defaultStyle[GeoDataPlacemark::HighwayMotorway] = createHighwayStyle(0xe892a2, 0xdc2a67, osmFont, 
"000000", 9, 10);
 
 1215    m_defaultStyle[GeoDataPlacemark::HighwayMotorwayLink] = createHighwayStyle(0xe892a2, 0xdc2a67, osmFont, 
"000000", 9, 10);
 
 1216    m_defaultStyle[GeoDataPlacemark::HighwayCorridor] = createHighwayStyle(0xffffff, 0xbbbbbb, osmFont, 
"000000", 1, 3);
 
 1217    m_defaultStyle[GeoDataPlacemark::TransportAirportRunway] = createHighwayStyle(0xbbbbcc, 0xbbbbcc, osmFont, 
"000000", 0, 1, 
Qt::NoPen);
 
 1218    m_defaultStyle[GeoDataPlacemark::TransportAirportTaxiway] = createHighwayStyle(0xbbbbcc, 0xbbbbcc, osmFont, 
"000000", 0, 1, 
Qt::NoPen);
 
 1219    m_defaultStyle[GeoDataPlacemark::TransportAirportApron] = createWayStyle(0xe9d1ff, 
Qt::transparent, 
true, 
false);
 
 1220    m_defaultStyle[GeoDataPlacemark::TransportSpeedCamera] = createOsmPOIStyle(osmFont, 
"individual/speedcamera");
 
 1222    m_defaultStyle[GeoDataPlacemark::NaturalWater] = createStyle(4,
 
 1234                                                                 waterColor.darker(150));
 
 1235    m_defaultStyle[GeoDataPlacemark::WaterwayRiver] = createStyle(4,
 
 1247                                                                  waterColor.darker(150));
 
 1248    m_defaultStyle[GeoDataPlacemark::WaterwayCanal] = m_defaultStyle[GeoDataPlacemark::WaterwayRiver];
 
 1249    m_defaultStyle[GeoDataPlacemark::WaterwayDitch] = m_defaultStyle[GeoDataPlacemark::WaterwayRiver];
 
 1250    m_defaultStyle[GeoDataPlacemark::WaterwayDrain] = m_defaultStyle[GeoDataPlacemark::WaterwayRiver];
 
 1251    m_defaultStyle[GeoDataPlacemark::WaterwayStream] = m_defaultStyle[GeoDataPlacemark::WaterwayRiver];
 
 1252    m_defaultStyle[GeoDataPlacemark::WaterwayWeir] =
 
 1253        createStyle(4, 0, 0xffffff, 0x87939b, 
true, 
false, 
Qt::SolidPattern, 
Qt::DotLine, 
Qt::RoundCap, 
true, 
QList<qreal>(), osmFont, waterColor.darker(150));
 
 1255    m_defaultStyle[GeoDataPlacemark::CrossingIsland] = createOsmPOIStyle(osmFont, 
"transportation/zebra_crossing", transportationColor);
 
 1256    m_defaultStyle[GeoDataPlacemark::CrossingIsland]->iconStyle().setScale(0.75);
 
 1257    m_defaultStyle[GeoDataPlacemark::CrossingRailway] = createOsmPOIStyle(osmFont, 
"transportation/railway_crossing", transportationColor);
 
 1258    m_defaultStyle[GeoDataPlacemark::CrossingRailway]->iconStyle().setScale(0.5);
 
 1259    m_defaultStyle[GeoDataPlacemark::CrossingSignals] = createOsmPOIStyle(osmFont, 
"transportation/traffic_light_crossing", transportationColor);
 
 1260    m_defaultStyle[GeoDataPlacemark::CrossingSignals]->iconStyle().setScale(0.75);
 
 1261    m_defaultStyle[GeoDataPlacemark::CrossingZebra] = createOsmPOIStyle(osmFont, 
"transportation/zebra_crossing", transportationColor);
 
 1262    m_defaultStyle[GeoDataPlacemark::CrossingZebra]->iconStyle().setScale(0.75);
 
 1264    m_defaultStyle[GeoDataPlacemark::NaturalReef] = createStyle(5.5,
 
 1276                                                                waterColor.darker(150));
 
 1278    m_defaultStyle[GeoDataPlacemark::AmenityGraveyard] =
 
 1279        createWayStyle(0xAACBAF, 0xAACBAF, 
true, 
false, 
Qt::SolidPattern, MarbleDirs::path(
"bitmaps/osmcarto/patterns/grave_yard_generic.png"));
 
 1281    m_defaultStyle[GeoDataPlacemark::NaturalWood] =
 
 1282        createWayStyle(0x8DC46C, 0x8DC46C, 
true, 
false, 
Qt::SolidPattern, MarbleDirs::path(
"bitmaps/osmcarto/patterns/forest.png"));
 
 1283    m_defaultStyle[GeoDataPlacemark::NaturalBeach] =
 
 1284        createWayStyle(0xFFF1BA, 0xFFF1BA, 
true, 
false, 
Qt::SolidPattern, MarbleDirs::path(
"bitmaps/osmcarto/patterns/beach.png"));
 
 1285    m_defaultStyle[GeoDataPlacemark::NaturalWetland] =
 
 1286        createWayStyle(0xDDECEC, 0xDDECEC, 
true, 
false, 
Qt::SolidPattern, MarbleDirs::path(
"bitmaps/osmcarto/patterns/wetland.png"));
 
 1287    m_defaultStyle[GeoDataPlacemark::NaturalGlacier] =
 
 1288        createWayStyle(0xDDECEC, 0xDDECEC, 
true, 
false, 
Qt::SolidPattern, MarbleDirs::path(
"bitmaps/osmcarto/patterns/glacier.png"));
 
 1289    m_defaultStyle[GeoDataPlacemark::NaturalIceShelf] =
 
 1290        createWayStyle(0x8ebebe, 0x8ebebe, 
true, 
false, 
Qt::SolidPattern, MarbleDirs::path(
"bitmaps/osmcarto/patterns/glacier.png"));
 
 1291    m_defaultStyle[GeoDataPlacemark::NaturalScrub] =
 
 1292        createWayStyle(0xB5E3B5, 0xB5E3B5, 
true, 
false, 
Qt::SolidPattern, MarbleDirs::path(
"bitmaps/osmcarto/patterns/scrub.png"));
 
 1293    m_defaultStyle[GeoDataPlacemark::NaturalCliff] =
 
 1295    m_defaultStyle[GeoDataPlacemark::NaturalCave] = createOsmPOIStyle(osmFont, 
"amenities/cave", amenityColor);
 
 1296    m_defaultStyle[GeoDataPlacemark::NaturalHeath] = createWayStyle(0xd6d99f, 
QColor(0xd6d99f).darker(150), 
true, 
false);
 
 1298    m_defaultStyle[GeoDataPlacemark::LeisureGolfCourse] = createOsmPOIAreaStyle(osmFont, 
"leisure/golf", 0x39ac39, 0xb5e3b5, 
QColor(
Qt::transparent));
 
 1299    m_defaultStyle[GeoDataPlacemark::LeisureMinigolfCourse] =
 
 1300        createOsmPOIAreaStyle(osmFont, 
"leisure/miniature_golf", 0x39ac39, 0xb5e3b5, 
QColor(
Qt::transparent));
 
 1301    m_defaultStyle[GeoDataPlacemark::LeisureMarina] = createOsmPOIStyle(osmFont, 
QString(), 
QColor(0x95abd5), 
QColor(0xaec8d1), 
QColor(0x95abd5).darker(150));
 
 1302    m_defaultStyle[GeoDataPlacemark::LeisurePark] = createWayStyle(
QColor(0xc8facc), 
QColor(0xc8facc).darker(150), 
true, 
true);
 
 1303    m_defaultStyle[GeoDataPlacemark::LeisurePlayground] = createOsmPOIAreaStyle(osmFont, 
"amenity/playground.16", amenityColor, 0xCCFFF1, 0xBDFFED);
 
 1304    m_defaultStyle[GeoDataPlacemark::LeisurePitch] = createWayStyle(0x8ad3af, 
QColor(0x8ad3af).darker(150), 
true, 
true);
 
 1305    m_defaultStyle[GeoDataPlacemark::LeisureSportsCentre] = createWayStyle(0x33cc99, 
QColor(0x33cc99).darker(150), 
true, 
true);
 
 1306    m_defaultStyle[GeoDataPlacemark::LeisureStadium] = createWayStyle(0x33cc99, 
QColor(0x33cc99).darker(150), 
true, 
true);
 
 1307    m_defaultStyle[GeoDataPlacemark::LeisureTrack] = createWayStyle(0x74dcba, 
QColor(0x74dcba).darker(150), 
true, 
true);
 
 1308    m_defaultStyle[GeoDataPlacemark::LeisureSwimmingPool] = createWayStyle(waterColor, waterColor.darker(150), 
true, 
true);
 
 1310    m_defaultStyle[GeoDataPlacemark::LanduseAllotments] =
 
 1311        createWayStyle(0xE4C6AA, 0xE4C6AA, 
true, 
false, 
Qt::SolidPattern, MarbleDirs::path(
"bitmaps/osmcarto/patterns/allotments.png"));
 
 1312    m_defaultStyle[GeoDataPlacemark::LanduseBasin] = createWayStyle(
QColor(0xB5, 0xD0, 0xD0, 0x80), 
QColor(0xB5, 0xD0, 0xD0));
 
 1313    m_defaultStyle[GeoDataPlacemark::LanduseCemetery] =
 
 1314        createWayStyle(0xAACBAF, 0xAACBAF, 
true, 
false, 
Qt::SolidPattern, MarbleDirs::path(
"bitmaps/osmcarto/patterns/grave_yard_generic.png"));
 
 1315    m_defaultStyle[GeoDataPlacemark::LanduseCommercial] = createWayStyle(0xF2DAD9, 0xD1B2B0, 
true, 
true);
 
 1316    m_defaultStyle[GeoDataPlacemark::LanduseConstruction] = createWayStyle(0xb6b592, 0xb6b592, 
true, 
false);
 
 1317    m_defaultStyle[GeoDataPlacemark::LanduseFarmland] = createWayStyle(0xEDDDC9, 0xC8B69E, 
true, 
true);
 
 1318    m_defaultStyle[GeoDataPlacemark::LanduseFarmyard] = createWayStyle(0xEFD6B5, 0xD1B48C, 
true, 
true);
 
 1319    m_defaultStyle[GeoDataPlacemark::LanduseGarages] = createWayStyle(0xE0DDCD, 0xE0DDCD, 
true, 
false);
 
 1320    m_defaultStyle[GeoDataPlacemark::LanduseGrass] = createWayStyle(0xA8C8A5, 0xA8C8A5, 
true, 
false);
 
 1321    m_defaultStyle[GeoDataPlacemark::LanduseIndustrial] = createWayStyle(0xDED0D5, 0xDED0D5, 
true, 
false);
 
 1322    m_defaultStyle[GeoDataPlacemark::LanduseLandfill] = createWayStyle(0xb6b592, 0xb6b592, 
true, 
false);
 
 1323    m_defaultStyle[GeoDataPlacemark::LanduseMeadow] = createWayStyle(0xcdebb0, 0xcdebb0, 
true, 
false);
 
 1324    m_defaultStyle[GeoDataPlacemark::LanduseMilitary] =
 
 1325        createWayStyle(0xF3D8D2, 0xF3D8D2, 
true, 
true, 
Qt::BDiagPattern, MarbleDirs::path(
"bitmaps/osmcarto/patterns/military_red_hatch.png"));
 
 1326    m_defaultStyle[GeoDataPlacemark::LanduseQuarry] =
 
 1327        createWayStyle(0xC4C2C2, 0xC4C2C2, 
true, 
false, 
Qt::SolidPattern, MarbleDirs::path(
"bitmaps/osmcarto/patterns/quarry.png"));
 
 1328    m_defaultStyle[GeoDataPlacemark::LanduseRailway] = createWayStyle(0xDED0D5, 0xDED0D5, 
true, 
false);
 
 1329    m_defaultStyle[GeoDataPlacemark::LanduseReservoir] = createWayStyle(waterColor, waterColor, 
true, 
false);
 
 1330    m_defaultStyle[GeoDataPlacemark::LanduseResidential] = createWayStyle(0xDCDCDC, 0xDCDCDC, 
true, 
false);
 
 1331    m_defaultStyle[GeoDataPlacemark::LanduseRetail] = createWayStyle(0xFFD6D1, 0xD99C95, 
true, 
true);
 
 1332    m_defaultStyle[GeoDataPlacemark::LanduseOrchard] =
 
 1333        createWayStyle(0xAEDFA3, 0xAEDFA3, 
true, 
false, 
Qt::SolidPattern, MarbleDirs::path(
"bitmaps/osmcarto/patterns/orchard.png"));
 
 1334    m_defaultStyle[GeoDataPlacemark::LanduseVineyard] =
 
 1335        createWayStyle(0xAEDFA3, 0xAEDFA3, 
true, 
false, 
Qt::SolidPattern, MarbleDirs::path(
"bitmaps/osmcarto/patterns/vineyard.png"));
 
 1337    m_defaultStyle[GeoDataPlacemark::MilitaryDangerArea] =
 
 1338        createWayStyle(0xFFC0CB, 0xFFC0CB, 
true, 
false, 
Qt::SolidPattern, MarbleDirs::path(
"bitmaps/osmcarto/patterns/danger.png"));
 
 1340    m_defaultStyle[GeoDataPlacemark::RailwayRail] = createStyle(2.0,
 
 1353    m_defaultStyle[GeoDataPlacemark::RailwayNarrowGauge] = createStyle(2.0,
 
 1367    m_defaultStyle[GeoDataPlacemark::RailwayTram] = createStyle(2.0,
 
 1380    m_defaultStyle[GeoDataPlacemark::RailwayLightRail] = createStyle(2.0,
 
 1393    m_defaultStyle[GeoDataPlacemark::RailwayAbandoned] = createStyle(2.0,
 
 1406    m_defaultStyle[GeoDataPlacemark::RailwaySubway] = createStyle(2.0,
 
 1419    m_defaultStyle[GeoDataPlacemark::RailwayPreserved] = createStyle(2.0,
 
 1432    m_defaultStyle[GeoDataPlacemark::RailwayMiniature] = createStyle(2.0,
 
 1445    m_defaultStyle[GeoDataPlacemark::RailwayConstruction] = createStyle(2.0,
 
 1458    m_defaultStyle[GeoDataPlacemark::RailwayMonorail] = createStyle(2.0,
 
 1471    m_defaultStyle[GeoDataPlacemark::RailwayFunicular] = createStyle(2.0,
 
 1485    m_defaultStyle[GeoDataPlacemark::Landmass] = createWayStyle(0xF1EEE8, 0xF1EEE8, 
true, 
false);
 
 1486    m_defaultStyle[GeoDataPlacemark::UrbanArea] = createWayStyle(0xE6E3DD, 0xE6E3DD, 
true, 
false);
 
 1487    m_defaultStyle[GeoDataPlacemark::InternationalDateLine] =
 
 1488        createStyle(1.0, 0.0, 
Qt::black, 
Qt::black, 
false, 
true, 
Qt::SolidPattern, 
Qt::SolidLine, 
Qt::FlatCap, 
false, 
QList<qreal>(), osmFont);
 
 1489    m_defaultStyle[GeoDataPlacemark::Bathymetry] = createWayStyle(0xa5c9c9, 0xa5c9c9, 
true, 
false);
 
 1491    m_defaultStyle[GeoDataPlacemark::AerialwayStation] = createOsmPOIStyle(osmFont, 
"individual/railway_station", transportationColor);
 
 1492    m_defaultStyle[GeoDataPlacemark::AerialwayStation]->iconStyle().setScale(0.33f);
 
 1493    m_defaultStyle[GeoDataPlacemark::AerialwayPylon] = createOsmPOIStyle(osmFont, 
"individual/pylon", 
QColor(0xdddddd));
 
 1494    m_defaultStyle[GeoDataPlacemark::AerialwayPylon]->iconStyle().setScale(0.33f);
 
 1495    m_defaultStyle[GeoDataPlacemark::AerialwayCableCar] =
 
 1496        createIconWayStyle(0xbbbbbb, osmFont, transportationColor, 1.0, QStringLiteral(
"svg/thenounproject/transportation-583813-cable-car.svg"));
 
 1497    m_defaultStyle[GeoDataPlacemark::AerialwayGondola] =
 
 1498        createIconWayStyle(0xbbbbbb, osmFont, transportationColor, 1.0, QStringLiteral(
"svg/thenounproject/transportation-21636-gondola.svg"));
 
 1499    m_defaultStyle[GeoDataPlacemark::AerialwayChairLift] =
 
 1500        createIconWayStyle(0xbbbbbb, osmFont, transportationColor, 1.0, QStringLiteral(
"svg/thenounproject/transportation-231-chair-lift.svg"));
 
 1501    m_defaultStyle[GeoDataPlacemark::AerialwayMixedLift] = createIconWayStyle(0xbbbbbb, osmFont, transportationColor);
 
 1502    m_defaultStyle[GeoDataPlacemark::AerialwayDragLift] =
 
 1503        createIconWayStyle(0xbbbbbb, osmFont, transportationColor, 1.0, QStringLiteral(
"svg/thenounproject/transportation-8803-platter-lift.svg"));
 
 1504    m_defaultStyle[GeoDataPlacemark::AerialwayTBar] =
 
 1505        createIconWayStyle(0xbbbbbb, osmFont, transportationColor, 1.0, QStringLiteral(
"svg/thenounproject/transportation-8803-platter-lift.svg"));
 
 1506    m_defaultStyle[GeoDataPlacemark::AerialwayJBar] =
 
 1507        createIconWayStyle(0xbbbbbb, osmFont, transportationColor, 1.0, QStringLiteral(
"svg/thenounproject/transportation-8803-platter-lift.svg"));
 
 1508    m_defaultStyle[GeoDataPlacemark::AerialwayPlatter] =
 
 1509        createIconWayStyle(0xbbbbbb, osmFont, transportationColor, 1.0, QStringLiteral(
"svg/thenounproject/transportation-8803-platter-lift.svg"));
 
 1510    m_defaultStyle[GeoDataPlacemark::AerialwayRopeTow] = createIconWayStyle(0xbbbbbb, osmFont, transportationColor);
 
 1511    m_defaultStyle[GeoDataPlacemark::AerialwayMagicCarpet] = createIconWayStyle(0xbbbbbb, osmFont, transportationColor);
 
 1512    m_defaultStyle[GeoDataPlacemark::AerialwayZipLine] = createIconWayStyle(0xbbbbbb, osmFont, transportationColor);
 
 1513    m_defaultStyle[GeoDataPlacemark::AerialwayGoods] = createIconWayStyle(0xbbbbbb, osmFont, transportationColor);
 
 1515    m_defaultStyle[GeoDataPlacemark::PisteDownhill] = createStyle(9,
 
 1528    m_defaultStyle[GeoDataPlacemark::PisteNordic] = createStyle(3,
 
 1541                                                                MarbleDirs::path(
"bitmaps/osmcarto/patterns/ice.png"));
 
 1542    m_defaultStyle[GeoDataPlacemark::PisteSkitour] = m_defaultStyle[GeoDataPlacemark::PisteNordic];
 
 1543    m_defaultStyle[GeoDataPlacemark::PisteSled] = m_defaultStyle[GeoDataPlacemark::PisteNordic];
 
 1544    m_defaultStyle[GeoDataPlacemark::PisteHike] = m_defaultStyle[GeoDataPlacemark::PisteNordic];
 
 1545    m_defaultStyle[GeoDataPlacemark::PisteSleigh] = m_defaultStyle[GeoDataPlacemark::PisteNordic];
 
 1546    m_defaultStyle[GeoDataPlacemark::PisteIceSkate] = m_defaultStyle[GeoDataPlacemark::PisteNordic];
 
 1547    m_defaultStyle[GeoDataPlacemark::PisteSnowPark] = m_defaultStyle[GeoDataPlacemark::PisteNordic];
 
 1548    m_defaultStyle[GeoDataPlacemark::PistePlayground] = m_defaultStyle[GeoDataPlacemark::PisteNordic];
 
 1549    m_defaultStyle[GeoDataPlacemark::PisteSkiJump] =
 
 1550        createIconWayStyle(0xbbbbbb, osmFont, transportationColor, 1.0, QStringLiteral(
"svg/thenounproject/sports-245-ski-jump.svg"));
 
 1552    m_defaultStyle[GeoDataPlacemark::AdminLevel1] =
 
 1553        createStyle(0.0, 0.0, 0xDF9CCF, 0xDF9CCF, 
false, 
true, 
Qt::SolidPattern, 
Qt::CustomDashLine, 
Qt::FlatCap, 
false, 
QList<qreal>() << 0.3 << 0.3, osmFont);
 
 1554    m_defaultStyle[GeoDataPlacemark::AdminLevel2] =
 
 1555        createStyle(2.0, 0.0, 0xDF9CCF, 0xDF9CCF, 
false, 
true, 
Qt::SolidPattern, 
Qt::SolidLine, 
Qt::FlatCap, 
false, 
QList<qreal>() << 0.3 << 0.3, osmFont);
 
 1556    m_defaultStyle[GeoDataPlacemark::AdminLevel3] =
 
 1557        createStyle(1.8, 0.0, 0xDF9CCF, 0xDF9CCF, 
false, 
true, 
Qt::SolidPattern, 
Qt::DashLine, 
Qt::FlatCap, 
false, 
QList<qreal>() << 0.3 << 0.3, osmFont);
 
 1558    m_defaultStyle[GeoDataPlacemark::AdminLevel4] =
 
 1559        createStyle(1.5, 0.0, 0xDF9CCF, 0xDF9CCF, 
false, 
true, 
Qt::SolidPattern, 
Qt::DotLine, 
Qt::FlatCap, 
false, 
QList<qreal>() << 0.3 << 0.3, osmFont);
 
 1560    m_defaultStyle[GeoDataPlacemark::AdminLevel5] = createStyle(1.25,
 
 1572    m_defaultStyle[GeoDataPlacemark::AdminLevel6] =
 
 1573        createStyle(1, 0.0, 0xDF9CCF, 0xDF9CCF, 
false, 
true, 
Qt::SolidPattern, 
Qt::DashDotLine, 
Qt::FlatCap, 
false, 
QList<qreal>() << 0.3 << 0.3, osmFont);
 
 1574    m_defaultStyle[GeoDataPlacemark::AdminLevel7] =
 
 1575        createStyle(1, 0.0, 0xDF9CCF, 0xDF9CCF, 
false, 
true, 
Qt::SolidPattern, 
Qt::DashLine, 
Qt::FlatCap, 
false, 
QList<qreal>() << 0.3 << 0.3, osmFont);
 
 1576    m_defaultStyle[GeoDataPlacemark::AdminLevel8] =
 
 1577        createStyle(1, 0.0, 0xDF9CCF, 0xDF9CCF, 
false, 
true, 
Qt::SolidPattern, 
Qt::DashLine, 
Qt::FlatCap, 
false, 
QList<qreal>() << 0.3 << 0.3, osmFont);
 
 1578    m_defaultStyle[GeoDataPlacemark::AdminLevel9] =
 
 1579        createStyle(1.5, 0.0, 0xDF9CCF, 0xDF9CCF, 
false, 
true, 
Qt::SolidPattern, 
Qt::DotLine, 
Qt::FlatCap, 
false, 
QList<qreal>() << 0.3 << 0.3, osmFont);
 
 1580    m_defaultStyle[GeoDataPlacemark::AdminLevel10] =
 
 1581        createStyle(1.5, 0.0, 0xDF9CCF, 0xDF9CCF, 
false, 
true, 
Qt::SolidPattern, 
Qt::DotLine, 
Qt::FlatCap, 
false, 
QList<qreal>() << 0.3 << 0.3, osmFont);
 
 1582    m_defaultStyle[GeoDataPlacemark::AdminLevel11] =
 
 1583        createStyle(1.5, 0.0, 0xDF9CCF, 0xDF9CCF, 
false, 
true, 
Qt::SolidPattern, 
Qt::DotLine, 
Qt::FlatCap, 
false, 
QList<qreal>() << 0.3 << 0.3, osmFont);
 
 1585    m_defaultStyle[GeoDataPlacemark::BoundaryMaritime] =
 
 1586        createStyle(2.0, 0.0, 0x88b3bf, 0x88b3bf, 
false, 
true, 
Qt::SolidPattern, 
Qt::SolidLine, 
Qt::FlatCap, 
false, 
QList<qreal>(), osmFont);
 
 1588    m_defaultStyle[GeoDataPlacemark::Satellite] =
 
 1589        GeoDataStyle::Ptr(
new GeoDataStyle(MarbleDirs::path(
"bitmaps/satellite.png"), 
QFont(defaultFamily, defaultSize, 50, 
false), defaultLabelColor));
 
 1594    tmp = m_defaultStyle[GeoDataPlacemark::Continent]->labelStyle().font();
 
 1598    m_defaultStyle[GeoDataPlacemark::Continent]->labelStyle().setFont(tmp);
 
 1601    tmp = m_defaultStyle[GeoDataPlacemark::Mare]->labelStyle().font();
 
 1605    m_defaultStyle[GeoDataPlacemark::Mare]->labelStyle().setFont(tmp);
 
 1609    tmp = m_defaultStyle[GeoDataPlacemark::SmallNationCapital]->labelStyle().font();
 
 1611    m_defaultStyle[GeoDataPlacemark::SmallNationCapital]->labelStyle().setFont(tmp);
 
 1613    tmp = m_defaultStyle[GeoDataPlacemark::MediumNationCapital]->labelStyle().font();
 
 1615    m_defaultStyle[GeoDataPlacemark::MediumNationCapital]->labelStyle().setFont(tmp);
 
 1617    tmp = m_defaultStyle[GeoDataPlacemark::BigNationCapital]->labelStyle().font();
 
 1619    m_defaultStyle[GeoDataPlacemark::BigNationCapital]->labelStyle().setFont(tmp);
 
 1621    tmp = m_defaultStyle[GeoDataPlacemark::LargeNationCapital]->labelStyle().font();
 
 1623    m_defaultStyle[GeoDataPlacemark::LargeNationCapital]->labelStyle().setFont(tmp);
 
 1626    m_defaultStyle[GeoDataPlacemark::Building] =
 
 1627        createStyle(1, 0, buildingColor, buildingColor.darker(), 
true, 
true, 
Qt::SolidPattern, 
Qt::SolidLine, 
Qt::RoundCap, 
false, 
QList<qreal>(), osmFont);
 
 1628    for (
int i = 0; i < GeoDataPlacemark::LastIndex; ++i) {
 
 1629        if (m_defaultStyle[i] && !m_defaultStyle[i]->iconStyle().iconPath().isEmpty()) {
 
 1630            auto const category = GeoDataPlacemark::GeoDataVisualCategory(i);
 
 1631            m_buildingStyles[
category] = GeoDataStyle::Ptr(
new GeoDataStyle(*m_defaultStyle[GeoDataPlacemark::Building]));
 
 1632            m_buildingStyles[
category]->iconStyle() = m_defaultStyle[i]->iconStyle();
 
 1633            m_buildingStyles[
category]->labelStyle() = m_defaultStyle[i]->labelStyle();
 
 1638QColor StyleBuilder::Private::effectColor(
const QColor &color)
 
 1641    switch (s_styleEffect) {
 
 1642    case InvertedEffect:
 
 1643        return {255 - color.
red(), 255 - color.
green(), 255 - color.
blue()};
 
 1644    case GrayscaleEffect:
 
 1645        gray = qMin(255, 
static_cast<int>(7 * qGray(color.
darker(800).
rgb())));
 
 1648        gray = qMin(255, 
static_cast<int>(7 * qGray(color.
darker(800).
rgb())));
 
 1649        return {
gray, 0, 0};
 
 1657QString StyleBuilder::Private::createPaintLayerItem(
const QString &itemType, GeoDataPlacemark::GeoDataVisualCategory visualCategory, 
const QString &subType)
 
 1667void StyleBuilder::Private::initializeOsmVisualCategories()
 
 1670    if (!s_visualCategories.isEmpty()) {
 
 1674    s_visualCategories[OsmTag(
"admin_level", 
"1")] = GeoDataPlacemark::AdminLevel1;
 
 1675    s_visualCategories[OsmTag(
"admin_level", 
"2")] = GeoDataPlacemark::AdminLevel2;
 
 1676    s_visualCategories[OsmTag(
"admin_level", 
"3")] = GeoDataPlacemark::AdminLevel3;
 
 1677    s_visualCategories[OsmTag(
"admin_level", 
"4")] = GeoDataPlacemark::AdminLevel4;
 
 1678    s_visualCategories[OsmTag(
"admin_level", 
"5")] = GeoDataPlacemark::AdminLevel5;
 
 1679    s_visualCategories[OsmTag(
"admin_level", 
"6")] = GeoDataPlacemark::AdminLevel6;
 
 1680    s_visualCategories[OsmTag(
"admin_level", 
"7")] = GeoDataPlacemark::AdminLevel7;
 
 1681    s_visualCategories[OsmTag(
"admin_level", 
"8")] = GeoDataPlacemark::AdminLevel8;
 
 1682    s_visualCategories[OsmTag(
"admin_level", 
"9")] = GeoDataPlacemark::AdminLevel9;
 
 1683    s_visualCategories[OsmTag(
"admin_level", 
"10")] = GeoDataPlacemark::AdminLevel10;
 
 1684    s_visualCategories[OsmTag(
"admin_level", 
"11")] = GeoDataPlacemark::AdminLevel11;
 
 1686    s_visualCategories[OsmTag(
"boundary", 
"maritime")] = GeoDataPlacemark::BoundaryMaritime;
 
 1688    s_visualCategories[OsmTag(
"amenity", 
"restaurant")] = GeoDataPlacemark::FoodRestaurant;
 
 1689    s_visualCategories[OsmTag(
"amenity", 
"fast_food")] = GeoDataPlacemark::FoodFastFood;
 
 1690    s_visualCategories[OsmTag(
"amenity", 
"pub")] = GeoDataPlacemark::FoodPub;
 
 1691    s_visualCategories[OsmTag(
"amenity", 
"bar")] = GeoDataPlacemark::FoodBar;
 
 1692    s_visualCategories[OsmTag(
"amenity", 
"cafe")] = GeoDataPlacemark::FoodCafe;
 
 1693    s_visualCategories[OsmTag(
"amenity", 
"biergarten")] = GeoDataPlacemark::FoodBiergarten;
 
 1695    s_visualCategories[OsmTag(
"amenity", 
"college")] = GeoDataPlacemark::EducationCollege;
 
 1696    s_visualCategories[OsmTag(
"amenity", 
"school")] = GeoDataPlacemark::EducationSchool;
 
 1697    s_visualCategories[OsmTag(
"amenity", 
"university")] = GeoDataPlacemark::EducationUniversity;
 
 1699    s_visualCategories[OsmTag(
"amenity", 
"childcare")] = GeoDataPlacemark::AmenityKindergarten;
 
 1700    s_visualCategories[OsmTag(
"amenity", 
"kindergarten")] = GeoDataPlacemark::AmenityKindergarten;
 
 1701    s_visualCategories[OsmTag(
"amenity", 
"library")] = GeoDataPlacemark::AmenityLibrary;
 
 1703    s_visualCategories[OsmTag(
"amenity", 
"bus_station")] = GeoDataPlacemark::TransportBusStation;
 
 1704    s_visualCategories[OsmTag(
"amenity", 
"car_sharing")] = GeoDataPlacemark::TransportCarShare;
 
 1705    s_visualCategories[OsmTag(
"amenity", 
"fuel")] = GeoDataPlacemark::TransportFuel;
 
 1706    s_visualCategories[OsmTag(
"amenity", 
"parking")] = GeoDataPlacemark::TransportParking;
 
 1707    s_visualCategories[OsmTag(
"amenity", 
"parking_space")] = GeoDataPlacemark::TransportParkingSpace;
 
 1709    s_visualCategories[OsmTag(
"amenity", 
"atm")] = GeoDataPlacemark::MoneyAtm;
 
 1710    s_visualCategories[OsmTag(
"amenity", 
"bank")] = GeoDataPlacemark::MoneyBank;
 
 1712    s_visualCategories[OsmTag(
"historic", 
"archaeological_site")] = GeoDataPlacemark::HistoricArchaeologicalSite;
 
 1713    s_visualCategories[OsmTag(
"historic", 
"castle")] = GeoDataPlacemark::HistoricCastle;
 
 1714    s_visualCategories[OsmTag(
"historic", 
"fort")] = GeoDataPlacemark::HistoricCastle;
 
 1715    s_visualCategories[OsmTag(
"historic", 
"memorial")] = GeoDataPlacemark::HistoricMemorial;
 
 1716    s_visualCategories[OsmTag(
"historic", 
"monument")] = GeoDataPlacemark::HistoricMonument;
 
 1717    s_visualCategories[OsmTag(
"historic", 
"ruins")] = GeoDataPlacemark::HistoricRuins;
 
 1719    s_visualCategories[OsmTag(
"amenity", 
"bench")] = GeoDataPlacemark::AmenityBench;
 
 1720    s_visualCategories[OsmTag(
"amenity", 
"car_wash")] = GeoDataPlacemark::AmenityCarWash;
 
 1721    s_visualCategories[OsmTag(
"amenity", 
"charging_station")] = GeoDataPlacemark::AmenityChargingStation;
 
 1722    s_visualCategories[OsmTag(
"amenity", 
"cinema")] = GeoDataPlacemark::AmenityCinema;
 
 1723    s_visualCategories[OsmTag(
"amenity", 
"community_centre")] = GeoDataPlacemark::AmenityCommunityCentre;
 
 1724    s_visualCategories[OsmTag(
"amenity", 
"courthouse")] = GeoDataPlacemark::AmenityCourtHouse;
 
 1725    s_visualCategories[OsmTag(
"amenity", 
"drinking_water")] = GeoDataPlacemark::AmenityDrinkingWater;
 
 1726    s_visualCategories[OsmTag(
"amenity", 
"embassy")] = GeoDataPlacemark::AmenityEmbassy;
 
 1727    s_visualCategories[OsmTag(
"amenity", 
"fire_station")] = GeoDataPlacemark::AmenityFireStation;
 
 1728    s_visualCategories[OsmTag(
"amenity", 
"fountain")] = GeoDataPlacemark::AmenityFountain;
 
 1729    s_visualCategories[OsmTag(
"amenity", 
"graveyard")] = GeoDataPlacemark::AmenityGraveyard;
 
 1730    s_visualCategories[OsmTag(
"amenity", 
"hunting_stand")] = GeoDataPlacemark::AmenityHuntingStand;
 
 1731    s_visualCategories[OsmTag(
"amenity", 
"nightclub")] = GeoDataPlacemark::AmenityNightClub;
 
 1732    s_visualCategories[OsmTag(
"amenity", 
"police")] = GeoDataPlacemark::AmenityPolice;
 
 1733    s_visualCategories[OsmTag(
"amenity", 
"post_box")] = GeoDataPlacemark::AmenityPostBox;
 
 1734    s_visualCategories[OsmTag(
"amenity", 
"post_office")] = GeoDataPlacemark::AmenityPostOffice;
 
 1735    s_visualCategories[OsmTag(
"amenity", 
"prison")] = GeoDataPlacemark::AmenityPrison;
 
 1736    s_visualCategories[OsmTag(
"amenity", 
"recycling")] = GeoDataPlacemark::AmenityRecycling;
 
 1737    s_visualCategories[OsmTag(
"amenity", 
"shelter")] = GeoDataPlacemark::AmenityShelter;
 
 1738    s_visualCategories[OsmTag(
"amenity", 
"social_facility")] = GeoDataPlacemark::AmenitySocialFacility;
 
 1739    s_visualCategories[OsmTag(
"amenity", 
"telephone")] = GeoDataPlacemark::AmenityTelephone;
 
 1740    s_visualCategories[OsmTag(
"amenity", 
"theatre")] = GeoDataPlacemark::AmenityTheatre;
 
 1741    s_visualCategories[OsmTag(
"amenity", 
"toilets")] = GeoDataPlacemark::AmenityToilets;
 
 1742    s_visualCategories[OsmTag(
"amenity", 
"townhall")] = GeoDataPlacemark::AmenityTownHall;
 
 1743    s_visualCategories[OsmTag(
"amenity", 
"waste_basket")] = GeoDataPlacemark::AmenityWasteBasket;
 
 1744    s_visualCategories[OsmTag(
"emergency", 
"phone")] = GeoDataPlacemark::AmenityEmergencyPhone;
 
 1745    s_visualCategories[OsmTag(
"amenity", 
"mountain_rescue")] = GeoDataPlacemark::AmenityMountainRescue;
 
 1746    s_visualCategories[OsmTag(
"amenity", 
"dentist")] = GeoDataPlacemark::HealthDentist;
 
 1747    s_visualCategories[OsmTag(
"amenity", 
"doctors")] = GeoDataPlacemark::HealthDoctors;
 
 1748    s_visualCategories[OsmTag(
"amenity", 
"hospital")] = GeoDataPlacemark::HealthHospital;
 
 1749    s_visualCategories[OsmTag(
"amenity", 
"pharmacy")] = GeoDataPlacemark::HealthPharmacy;
 
 1750    s_visualCategories[OsmTag(
"amenity", 
"veterinary")] = GeoDataPlacemark::HealthVeterinary;
 
 1752    s_visualCategories[OsmTag(
"amenity", 
"place_of_worship")] = GeoDataPlacemark::ReligionPlaceOfWorship;
 
 1754    s_visualCategories[OsmTag(
"tourism", 
"information")] = GeoDataPlacemark::TourismInformation;
 
 1756    s_visualCategories[OsmTag(
"natural", 
"cave_entrance")] = GeoDataPlacemark::NaturalCave;
 
 1757    s_visualCategories[OsmTag(
"natural", 
"peak")] = GeoDataPlacemark::NaturalPeak;
 
 1758    s_visualCategories[OsmTag(
"natural", 
"tree")] = GeoDataPlacemark::NaturalTree;
 
 1759    s_visualCategories[OsmTag(
"natural", 
"volcano")] = GeoDataPlacemark::NaturalVolcano;
 
 1761    s_visualCategories[OsmTag(
"shop", 
"alcohol")] = GeoDataPlacemark::ShopAlcohol;
 
 1762    s_visualCategories[OsmTag(
"shop", 
"art")] = GeoDataPlacemark::ShopArt;
 
 1763    s_visualCategories[OsmTag(
"shop", 
"bag")] = GeoDataPlacemark::ShopBag;
 
 1764    s_visualCategories[OsmTag(
"shop", 
"bakery")] = GeoDataPlacemark::ShopBakery;
 
 1765    s_visualCategories[OsmTag(
"shop", 
"beauty")] = GeoDataPlacemark::ShopBeauty;
 
 1766    s_visualCategories[OsmTag(
"shop", 
"beverages")] = GeoDataPlacemark::ShopBeverages;
 
 1767    s_visualCategories[OsmTag(
"shop", 
"bicycle")] = GeoDataPlacemark::ShopBicycle;
 
 1768    s_visualCategories[OsmTag(
"shop", 
"books")] = GeoDataPlacemark::ShopBook;
 
 1769    s_visualCategories[OsmTag(
"shop", 
"butcher")] = GeoDataPlacemark::ShopButcher;
 
 1770    s_visualCategories[OsmTag(
"shop", 
"car")] = GeoDataPlacemark::ShopCar;
 
 1771    s_visualCategories[OsmTag(
"shop", 
"car_parts")] = GeoDataPlacemark::ShopCarParts;
 
 1772    s_visualCategories[OsmTag(
"shop", 
"car_repair")] = GeoDataPlacemark::ShopCarRepair;
 
 1773    s_visualCategories[OsmTag(
"shop", 
"chemist")] = GeoDataPlacemark::ShopChemist;
 
 1774    s_visualCategories[OsmTag(
"shop", 
"clothes")] = GeoDataPlacemark::ShopClothes;
 
 1775    s_visualCategories[OsmTag(
"shop", 
"confectionery")] = GeoDataPlacemark::ShopConfectionery;
 
 1776    s_visualCategories[OsmTag(
"shop", 
"convenience")] = GeoDataPlacemark::ShopConvenience;
 
 1777    s_visualCategories[OsmTag(
"shop", 
"copy")] = GeoDataPlacemark::ShopCopy;
 
 1778    s_visualCategories[OsmTag(
"shop", 
"cosmetics")] = GeoDataPlacemark::ShopCosmetics;
 
 1779    s_visualCategories[OsmTag(
"shop", 
"deli")] = GeoDataPlacemark::ShopDeli;
 
 1780    s_visualCategories[OsmTag(
"shop", 
"department_store")] = GeoDataPlacemark::ShopDepartmentStore;
 
 1781    s_visualCategories[OsmTag(
"shop", 
"doityourself")] = GeoDataPlacemark::ShopDoitYourself;
 
 1782    s_visualCategories[OsmTag(
"shop", 
"electronics")] = GeoDataPlacemark::ShopElectronics;
 
 1783    s_visualCategories[OsmTag(
"shop", 
"fashion")] = GeoDataPlacemark::ShopFashion;
 
 1784    s_visualCategories[OsmTag(
"shop", 
"florist")] = GeoDataPlacemark::ShopFlorist;
 
 1785    s_visualCategories[OsmTag(
"shop", 
"furniture")] = GeoDataPlacemark::ShopFurniture;
 
 1786    s_visualCategories[OsmTag(
"shop", 
"gift")] = GeoDataPlacemark::ShopGift;
 
 1787    s_visualCategories[OsmTag(
"shop", 
"greengrocer")] = GeoDataPlacemark::ShopGreengrocer;
 
 1788    s_visualCategories[OsmTag(
"shop", 
"hairdresser")] = GeoDataPlacemark::ShopHairdresser;
 
 1789    s_visualCategories[OsmTag(
"shop", 
"hardware")] = GeoDataPlacemark::ShopHardware;
 
 1790    s_visualCategories[OsmTag(
"shop", 
"hifi")] = GeoDataPlacemark::ShopHifi;
 
 1791    s_visualCategories[OsmTag(
"shop", 
"jewelry")] = GeoDataPlacemark::ShopJewelry;
 
 1792    s_visualCategories[OsmTag(
"shop", 
"kiosk")] = GeoDataPlacemark::ShopKiosk;
 
 1793    s_visualCategories[OsmTag(
"shop", 
"laundry")] = GeoDataPlacemark::ShopLaundry;
 
 1794    s_visualCategories[OsmTag(
"shop", 
"mobile_phone")] = GeoDataPlacemark::ShopMobilePhone;
 
 1795    s_visualCategories[OsmTag(
"shop", 
"motorcycle")] = GeoDataPlacemark::ShopMotorcycle;
 
 1796    s_visualCategories[OsmTag(
"shop", 
"musical_instrument")] = GeoDataPlacemark::ShopMusicalInstrument;
 
 1797    s_visualCategories[OsmTag(
"shop", 
"optician")] = GeoDataPlacemark::ShopOptician;
 
 1798    s_visualCategories[OsmTag(
"shop", 
"outdoor")] = GeoDataPlacemark::ShopOutdoor;
 
 1799    s_visualCategories[OsmTag(
"shop", 
"perfumery")] = GeoDataPlacemark::ShopPerfumery;
 
 1800    s_visualCategories[OsmTag(
"shop", 
"pet")] = GeoDataPlacemark::ShopPet;
 
 1801    s_visualCategories[OsmTag(
"shop", 
"photo")] = GeoDataPlacemark::ShopPhoto;
 
 1802    s_visualCategories[OsmTag(
"shop", 
"seafood")] = GeoDataPlacemark::ShopSeafood;
 
 1803    s_visualCategories[OsmTag(
"shop", 
"shoes")] = GeoDataPlacemark::ShopShoes;
 
 1804    s_visualCategories[OsmTag(
"shop", 
"sports")] = GeoDataPlacemark::ShopSports;
 
 1805    s_visualCategories[OsmTag(
"shop", 
"stationery")] = GeoDataPlacemark::ShopStationery;
 
 1806    s_visualCategories[OsmTag(
"shop", 
"supermarket")] = GeoDataPlacemark::ShopSupermarket;
 
 1807    s_visualCategories[OsmTag(
"shop", 
"tea")] = GeoDataPlacemark::ShopTea;
 
 1808    s_visualCategories[OsmTag(
"shop", 
"computer")] = GeoDataPlacemark::ShopComputer;
 
 1809    s_visualCategories[OsmTag(
"shop", 
"garden_centre")] = GeoDataPlacemark::ShopGardenCentre;
 
 1810    s_visualCategories[OsmTag(
"shop", 
"tobacco")] = GeoDataPlacemark::ShopTobacco;
 
 1811    s_visualCategories[OsmTag(
"shop", 
"toys")] = GeoDataPlacemark::ShopToys;
 
 1812    s_visualCategories[OsmTag(
"shop", 
"travel_agency")] = GeoDataPlacemark::ShopTravelAgency;
 
 1813    s_visualCategories[OsmTag(
"shop", 
"variety_store")] = GeoDataPlacemark::ShopVarietyStore;
 
 1816    for (
const QString &value : shopValues()) {
 
 1817        s_visualCategories[OsmTag(
"shop", value)] = GeoDataPlacemark::Shop;
 
 1820    s_visualCategories[OsmTag(
"man_made", 
"bridge")] = GeoDataPlacemark::ManmadeBridge;
 
 1821    s_visualCategories[OsmTag(
"man_made", 
"lighthouse")] = GeoDataPlacemark::ManmadeLighthouse;
 
 1822    s_visualCategories[OsmTag(
"man_made", 
"pier")] = GeoDataPlacemark::ManmadePier;
 
 1823    s_visualCategories[OsmTag(
"man_made", 
"water_tower")] = GeoDataPlacemark::ManmadeWaterTower;
 
 1824    s_visualCategories[OsmTag(
"man_made", 
"windmill")] = GeoDataPlacemark::ManmadeWindMill;
 
 1825    s_visualCategories[OsmTag(
"man_made", 
"communications_tower")] = GeoDataPlacemark::ManmadeCommunicationsTower;
 
 1826    s_visualCategories[OsmTag(
"tower:type", 
"communication")] = GeoDataPlacemark::ManmadeCommunicationsTower;
 
 1828    s_visualCategories[OsmTag(
"religion", 
"")] = GeoDataPlacemark::ReligionPlaceOfWorship;
 
 1829    s_visualCategories[OsmTag(
"religion", 
"bahai")] = GeoDataPlacemark::ReligionBahai;
 
 1830    s_visualCategories[OsmTag(
"religion", 
"buddhist")] = GeoDataPlacemark::ReligionBuddhist;
 
 1831    s_visualCategories[OsmTag(
"religion", 
"christian")] = GeoDataPlacemark::ReligionChristian;
 
 1832    s_visualCategories[OsmTag(
"religion", 
"hindu")] = GeoDataPlacemark::ReligionHindu;
 
 1833    s_visualCategories[OsmTag(
"religion", 
"jain")] = GeoDataPlacemark::ReligionJain;
 
 1834    s_visualCategories[OsmTag(
"religion", 
"jewish")] = GeoDataPlacemark::ReligionJewish;
 
 1835    s_visualCategories[OsmTag(
"religion", 
"muslim")] = GeoDataPlacemark::ReligionMuslim;
 
 1836    s_visualCategories[OsmTag(
"religion", 
"shinto")] = GeoDataPlacemark::ReligionShinto;
 
 1837    s_visualCategories[OsmTag(
"religion", 
"sikh")] = GeoDataPlacemark::ReligionSikh;
 
 1838    s_visualCategories[OsmTag(
"religion", 
"taoist")] = GeoDataPlacemark::ReligionTaoist;
 
 1840    s_visualCategories[OsmTag(
"tourism", 
"camp_site")] = GeoDataPlacemark::AccomodationCamping;
 
 1841    s_visualCategories[OsmTag(
"tourism", 
"guest_house")] = GeoDataPlacemark::AccomodationGuestHouse;
 
 1842    s_visualCategories[OsmTag(
"tourism", 
"hostel")] = GeoDataPlacemark::AccomodationHostel;
 
 1843    s_visualCategories[OsmTag(
"tourism", 
"hotel")] = GeoDataPlacemark::AccomodationHotel;
 
 1844    s_visualCategories[OsmTag(
"tourism", 
"motel")] = GeoDataPlacemark::AccomodationMotel;
 
 1846    s_visualCategories[OsmTag(
"tourism", 
"alpine_hut")] = GeoDataPlacemark::TourismAlpineHut;
 
 1847    s_visualCategories[OsmTag(
"tourism", 
"artwork")] = GeoDataPlacemark::TourismArtwork;
 
 1848    s_visualCategories[OsmTag(
"tourism", 
"attraction")] = GeoDataPlacemark::TourismAttraction;
 
 1849    s_visualCategories[OsmTag(
"tourism", 
"museum")] = GeoDataPlacemark::TourismMuseum;
 
 1850    s_visualCategories[OsmTag(
"tourism", 
"theme_park")] = GeoDataPlacemark::TourismThemePark;
 
 1851    s_visualCategories[OsmTag(
"tourism", 
"viewpoint")] = GeoDataPlacemark::TourismViewPoint;
 
 1852    s_visualCategories[OsmTag(
"tourism", 
"wilderness_hut")] = GeoDataPlacemark::TourismWildernessHut;
 
 1853    s_visualCategories[OsmTag(
"tourism", 
"zoo")] = GeoDataPlacemark::TourismZoo;
 
 1855    s_visualCategories[OsmTag(
"barrier", 
"city_wall")] = GeoDataPlacemark::BarrierCityWall;
 
 1856    s_visualCategories[OsmTag(
"barrier", 
"gate")] = GeoDataPlacemark::BarrierGate;
 
 1857    s_visualCategories[OsmTag(
"barrier", 
"lift_gate")] = GeoDataPlacemark::BarrierLiftGate;
 
 1858    s_visualCategories[OsmTag(
"barrier", 
"wall")] = GeoDataPlacemark::BarrierWall;
 
 1860    s_visualCategories[OsmTag(
"highway", 
"traffic_signals")] = GeoDataPlacemark::HighwayTrafficSignals;
 
 1861    s_visualCategories[OsmTag(
"highway", 
"elevator")] = GeoDataPlacemark::HighwayElevator;
 
 1863    s_visualCategories[OsmTag(
"highway", 
"cycleway")] = GeoDataPlacemark::HighwayCycleway;
 
 1864    s_visualCategories[OsmTag(
"highway", 
"footway")] = GeoDataPlacemark::HighwayFootway;
 
 1865    s_visualCategories[OsmTag(
"highway", 
"living_street")] = GeoDataPlacemark::HighwayLivingStreet;
 
 1866    s_visualCategories[OsmTag(
"highway", 
"motorway")] = GeoDataPlacemark::HighwayMotorway;
 
 1867    s_visualCategories[OsmTag(
"highway", 
"motorway_link")] = GeoDataPlacemark::HighwayMotorwayLink;
 
 1868    s_visualCategories[OsmTag(
"highway", 
"path")] = GeoDataPlacemark::HighwayPath;
 
 1869    s_visualCategories[OsmTag(
"highway", 
"pedestrian")] = GeoDataPlacemark::HighwayPedestrian;
 
 1870    s_visualCategories[OsmTag(
"highway", 
"primary")] = GeoDataPlacemark::HighwayPrimary;
 
 1871    s_visualCategories[OsmTag(
"highway", 
"primary_link")] = GeoDataPlacemark::HighwayPrimaryLink;
 
 1872    s_visualCategories[OsmTag(
"highway", 
"raceway")] = GeoDataPlacemark::HighwayRaceway;
 
 1873    s_visualCategories[OsmTag(
"highway", 
"residential")] = GeoDataPlacemark::HighwayResidential;
 
 1874    s_visualCategories[OsmTag(
"highway", 
"road")] = GeoDataPlacemark::HighwayRoad;
 
 1875    s_visualCategories[OsmTag(
"highway", 
"secondary")] = GeoDataPlacemark::HighwaySecondary;
 
 1876    s_visualCategories[OsmTag(
"highway", 
"secondary_link")] = GeoDataPlacemark::HighwaySecondaryLink;
 
 1877    s_visualCategories[OsmTag(
"highway", 
"service")] = GeoDataPlacemark::HighwayService;
 
 1878    s_visualCategories[OsmTag(
"highway", 
"steps")] = GeoDataPlacemark::HighwaySteps;
 
 1879    s_visualCategories[OsmTag(
"highway", 
"tertiary")] = GeoDataPlacemark::HighwayTertiary;
 
 1880    s_visualCategories[OsmTag(
"highway", 
"tertiary_link")] = GeoDataPlacemark::HighwayTertiaryLink;
 
 1881    s_visualCategories[OsmTag(
"highway", 
"track")] = GeoDataPlacemark::HighwayTrack;
 
 1882    s_visualCategories[OsmTag(
"highway", 
"trunk")] = GeoDataPlacemark::HighwayTrunk;
 
 1883    s_visualCategories[OsmTag(
"highway", 
"trunk_link")] = GeoDataPlacemark::HighwayTrunkLink;
 
 1884    s_visualCategories[OsmTag(
"highway", 
"unclassified")] = GeoDataPlacemark::HighwayUnclassified;
 
 1885    s_visualCategories[OsmTag(
"highway", 
"unknown")] = GeoDataPlacemark::HighwayUnknown;
 
 1886    s_visualCategories[OsmTag(
"highway", 
"corridor")] = GeoDataPlacemark::HighwayCorridor;
 
 1888    s_visualCategories[OsmTag(
"natural", 
"bay")] = GeoDataPlacemark::NaturalWater;
 
 1889    s_visualCategories[OsmTag(
"natural", 
"coastline")] = GeoDataPlacemark::NaturalWater;
 
 1890    s_visualCategories[OsmTag(
"natural", 
"reef")] = GeoDataPlacemark::NaturalReef;
 
 1891    s_visualCategories[OsmTag(
"natural", 
"water")] = GeoDataPlacemark::NaturalWater;
 
 1893    s_visualCategories[OsmTag(
"waterway", 
"canal")] = GeoDataPlacemark::WaterwayCanal;
 
 1894    s_visualCategories[OsmTag(
"waterway", 
"ditch")] = GeoDataPlacemark::WaterwayDitch;
 
 1895    s_visualCategories[OsmTag(
"waterway", 
"drain")] = GeoDataPlacemark::WaterwayDrain;
 
 1896    s_visualCategories[OsmTag(
"waterway", 
"river")] = GeoDataPlacemark::WaterwayRiver;
 
 1897    s_visualCategories[OsmTag(
"waterway", 
"riverbank")] = GeoDataPlacemark::NaturalWater;
 
 1898    s_visualCategories[OsmTag(
"waterway", 
"weir")] = GeoDataPlacemark::WaterwayWeir;
 
 1899    s_visualCategories[OsmTag(
"waterway", 
"stream")] = GeoDataPlacemark::WaterwayStream;
 
 1901    s_visualCategories[OsmTag(
"natural", 
"beach")] = GeoDataPlacemark::NaturalBeach;
 
 1902    s_visualCategories[OsmTag(
"natural", 
"cliff")] = GeoDataPlacemark::NaturalCliff;
 
 1903    s_visualCategories[OsmTag(
"natural", 
"glacier")] = GeoDataPlacemark::NaturalGlacier;
 
 1904    s_visualCategories[OsmTag(
"glacier:type", 
"shelf")] = GeoDataPlacemark::NaturalIceShelf;
 
 1905    s_visualCategories[OsmTag(
"natural", 
"scrub")] = GeoDataPlacemark::NaturalScrub;
 
 1906    s_visualCategories[OsmTag(
"natural", 
"wetland")] = GeoDataPlacemark::NaturalWetland;
 
 1907    s_visualCategories[OsmTag(
"natural", 
"wood")] = GeoDataPlacemark::NaturalWood;
 
 1909    s_visualCategories[OsmTag(
"military", 
"danger_area")] = GeoDataPlacemark::MilitaryDangerArea;
 
 1911    s_visualCategories[OsmTag(
"landuse", 
"allotments")] = GeoDataPlacemark::LanduseAllotments;
 
 1912    s_visualCategories[OsmTag(
"landuse", 
"basin")] = GeoDataPlacemark::LanduseBasin;
 
 1913    s_visualCategories[OsmTag(
"landuse", 
"brownfield")] = GeoDataPlacemark::LanduseConstruction;
 
 1914    s_visualCategories[OsmTag(
"landuse", 
"cemetery")] = GeoDataPlacemark::LanduseCemetery;
 
 1915    s_visualCategories[OsmTag(
"landuse", 
"commercial")] = GeoDataPlacemark::LanduseCommercial;
 
 1916    s_visualCategories[OsmTag(
"landuse", 
"construction")] = GeoDataPlacemark::LanduseConstruction;
 
 1917    s_visualCategories[OsmTag(
"landuse", 
"farm")] = GeoDataPlacemark::LanduseFarmland;
 
 1918    s_visualCategories[OsmTag(
"landuse", 
"farmland")] = GeoDataPlacemark::LanduseFarmland;
 
 1919    s_visualCategories[OsmTag(
"landuse", 
"farmyard")] = GeoDataPlacemark::LanduseFarmland;
 
 1920    s_visualCategories[OsmTag(
"landuse", 
"forest")] = GeoDataPlacemark::NaturalWood;
 
 1921    s_visualCategories[OsmTag(
"landuse", 
"garages")] = GeoDataPlacemark::LanduseGarages;
 
 1922    s_visualCategories[OsmTag(
"landuse", 
"grass")] = GeoDataPlacemark::LanduseGrass;
 
 1923    s_visualCategories[OsmTag(
"landuse", 
"greenfield")] = GeoDataPlacemark::LanduseConstruction;
 
 1924    s_visualCategories[OsmTag(
"landuse", 
"greenhouse_horticulture")] = GeoDataPlacemark::LanduseFarmland;
 
 1925    s_visualCategories[OsmTag(
"landuse", 
"industrial")] = GeoDataPlacemark::LanduseIndustrial;
 
 1926    s_visualCategories[OsmTag(
"landuse", 
"landfill")] = GeoDataPlacemark::LanduseLandfill;
 
 1927    s_visualCategories[OsmTag(
"landuse", 
"meadow")] = GeoDataPlacemark::LanduseMeadow;
 
 1928    s_visualCategories[OsmTag(
"landuse", 
"military")] = GeoDataPlacemark::LanduseMilitary;
 
 1929    s_visualCategories[OsmTag(
"landuse", 
"orchard")] = GeoDataPlacemark::LanduseFarmland;
 
 1930    s_visualCategories[OsmTag(
"landuse", 
"orchard")] = GeoDataPlacemark::LanduseOrchard;
 
 1931    s_visualCategories[OsmTag(
"landuse", 
"quarry")] = GeoDataPlacemark::LanduseQuarry;
 
 1932    s_visualCategories[OsmTag(
"landuse", 
"railway")] = GeoDataPlacemark::LanduseRailway;
 
 1933    s_visualCategories[OsmTag(
"landuse", 
"recreation_ground")] = GeoDataPlacemark::LeisurePark;
 
 1934    s_visualCategories[OsmTag(
"landuse", 
"reservoir")] = GeoDataPlacemark::LanduseReservoir;
 
 1935    s_visualCategories[OsmTag(
"landuse", 
"residential")] = GeoDataPlacemark::LanduseResidential;
 
 1936    s_visualCategories[OsmTag(
"landuse", 
"retail")] = GeoDataPlacemark::LanduseRetail;
 
 1937    s_visualCategories[OsmTag(
"landuse", 
"village_green")] = GeoDataPlacemark::LanduseGrass;
 
 1938    s_visualCategories[OsmTag(
"landuse", 
"vineyard")] = GeoDataPlacemark::LanduseVineyard;
 
 1940    s_visualCategories[OsmTag(
"leisure", 
"common")] = GeoDataPlacemark::LanduseGrass;
 
 1941    s_visualCategories[OsmTag(
"leisure", 
"garden")] = GeoDataPlacemark::LanduseGrass;
 
 1943    s_visualCategories[OsmTag(
"leisure", 
"golf_course")] = GeoDataPlacemark::LeisureGolfCourse;
 
 1944    s_visualCategories[OsmTag(
"leisure", 
"marina")] = GeoDataPlacemark::LeisureMarina;
 
 1945    s_visualCategories[OsmTag(
"leisure", 
"miniature_golf")] = GeoDataPlacemark::LeisureMinigolfCourse;
 
 1946    s_visualCategories[OsmTag(
"leisure", 
"park")] = GeoDataPlacemark::LeisurePark;
 
 1947    s_visualCategories[OsmTag(
"leisure", 
"pitch")] = GeoDataPlacemark::LeisurePitch;
 
 1948    s_visualCategories[OsmTag(
"leisure", 
"playground")] = GeoDataPlacemark::LeisurePlayground;
 
 1949    s_visualCategories[OsmTag(
"leisure", 
"sports_centre")] = GeoDataPlacemark::LeisureSportsCentre;
 
 1950    s_visualCategories[OsmTag(
"leisure", 
"stadium")] = GeoDataPlacemark::LeisureStadium;
 
 1951    s_visualCategories[OsmTag(
"leisure", 
"swimming_pool")] = GeoDataPlacemark::LeisureSwimmingPool;
 
 1952    s_visualCategories[OsmTag(
"leisure", 
"track")] = GeoDataPlacemark::LeisureTrack;
 
 1953    s_visualCategories[OsmTag(
"leisure", 
"water_park")] = GeoDataPlacemark::LeisureWaterPark;
 
 1955    s_visualCategories[OsmTag(
"railway", 
"abandoned")] = GeoDataPlacemark::RailwayAbandoned;
 
 1956    s_visualCategories[OsmTag(
"railway", 
"construction")] = GeoDataPlacemark::RailwayConstruction;
 
 1957    s_visualCategories[OsmTag(
"railway", 
"disused")] = GeoDataPlacemark::RailwayAbandoned;
 
 1958    s_visualCategories[OsmTag(
"railway", 
"funicular")] = GeoDataPlacemark::RailwayFunicular;
 
 1959    s_visualCategories[OsmTag(
"railway", 
"halt")] = GeoDataPlacemark::TransportTrainStation;
 
 1960    s_visualCategories[OsmTag(
"railway", 
"light_rail")] = GeoDataPlacemark::RailwayLightRail;
 
 1961    s_visualCategories[OsmTag(
"railway", 
"miniature")] = GeoDataPlacemark::RailwayMiniature;
 
 1962    s_visualCategories[OsmTag(
"railway", 
"monorail")] = GeoDataPlacemark::RailwayMonorail;
 
 1963    s_visualCategories[OsmTag(
"railway", 
"narrow_gauge")] = GeoDataPlacemark::RailwayNarrowGauge;
 
 1964    s_visualCategories[OsmTag(
"railway", 
"platform")] = GeoDataPlacemark::TransportPlatform;
 
 1965    s_visualCategories[OsmTag(
"railway", 
"preserved")] = GeoDataPlacemark::RailwayPreserved;
 
 1966    s_visualCategories[OsmTag(
"railway", 
"rail")] = GeoDataPlacemark::RailwayRail;
 
 1967    s_visualCategories[OsmTag(
"railway", 
"razed")] = GeoDataPlacemark::RailwayAbandoned;
 
 1968    s_visualCategories[OsmTag(
"railway", 
"station")] = GeoDataPlacemark::TransportTrainStation;
 
 1969    s_visualCategories[OsmTag(
"public_transport", 
"station")] = GeoDataPlacemark::TransportTrainStation;
 
 1970    s_visualCategories[OsmTag(
"railway", 
"subway")] = GeoDataPlacemark::RailwaySubway;
 
 1971    s_visualCategories[OsmTag(
"railway", 
"tram")] = GeoDataPlacemark::RailwayTram;
 
 1973    s_visualCategories[OsmTag(
"power", 
"tower")] = GeoDataPlacemark::PowerTower;
 
 1975    s_visualCategories[OsmTag(
"aeroway", 
"aerodrome")] = GeoDataPlacemark::TransportAerodrome;
 
 1976    s_visualCategories[OsmTag(
"aeroway", 
"apron")] = GeoDataPlacemark::TransportAirportApron;
 
 1977    s_visualCategories[OsmTag(
"aeroway", 
"gate")] = GeoDataPlacemark::TransportAirportGate;
 
 1978    s_visualCategories[OsmTag(
"aeroway", 
"helipad")] = GeoDataPlacemark::TransportHelipad;
 
 1979    s_visualCategories[OsmTag(
"aeroway", 
"runway")] = GeoDataPlacemark::TransportAirportRunway;
 
 1980    s_visualCategories[OsmTag(
"aeroway", 
"taxiway")] = GeoDataPlacemark::TransportAirportTaxiway;
 
 1981    s_visualCategories[OsmTag(
"aeroway", 
"terminal")] = GeoDataPlacemark::TransportAirportTerminal;
 
 1983    s_visualCategories[OsmTag(
"piste:type", 
"downhill")] = GeoDataPlacemark::PisteDownhill;
 
 1984    s_visualCategories[OsmTag(
"piste:type", 
"nordic")] = GeoDataPlacemark::PisteNordic;
 
 1985    s_visualCategories[OsmTag(
"piste:type", 
"skitour")] = GeoDataPlacemark::PisteSkitour;
 
 1986    s_visualCategories[OsmTag(
"piste:type", 
"sled")] = GeoDataPlacemark::PisteSled;
 
 1987    s_visualCategories[OsmTag(
"piste:type", 
"hike")] = GeoDataPlacemark::PisteHike;
 
 1988    s_visualCategories[OsmTag(
"piste:type", 
"sleigh")] = GeoDataPlacemark::PisteSleigh;
 
 1989    s_visualCategories[OsmTag(
"piste:type", 
"ice_skate")] = GeoDataPlacemark::PisteIceSkate;
 
 1990    s_visualCategories[OsmTag(
"piste:type", 
"snow_park")] = GeoDataPlacemark::PisteSnowPark;
 
 1991    s_visualCategories[OsmTag(
"piste:type", 
"playground")] = GeoDataPlacemark::PistePlayground;
 
 1992    s_visualCategories[OsmTag(
"piste:type", 
"ski_jump")] = GeoDataPlacemark::PisteSkiJump;
 
 1994    s_visualCategories[OsmTag(
"amenity", 
"bicycle_parking")] = GeoDataPlacemark::TransportBicycleParking;
 
 1995    s_visualCategories[OsmTag(
"amenity", 
"bicycle_rental")] = GeoDataPlacemark::TransportRentalBicycle;
 
 1996    s_visualCategories[OsmTag(
"rental", 
"bicycle")] = GeoDataPlacemark::TransportRentalBicycle;
 
 1997    s_visualCategories[OsmTag(
"amenity", 
"car_rental")] = GeoDataPlacemark::TransportRentalCar;
 
 1998    s_visualCategories[OsmTag(
"rental", 
"car")] = GeoDataPlacemark::TransportRentalCar;
 
 1999    s_visualCategories[OsmTag(
"amenity", 
"ski_rental")] = GeoDataPlacemark::TransportRentalSki;
 
 2000    s_visualCategories[OsmTag(
"rental", 
"ski")] = GeoDataPlacemark::TransportRentalSki;
 
 2001    s_visualCategories[OsmTag(
"amenity", 
"motorcycle_parking")] = GeoDataPlacemark::TransportMotorcycleParking;
 
 2002    s_visualCategories[OsmTag(
"amenity", 
"taxi")] = GeoDataPlacemark::TransportTaxiRank;
 
 2003    s_visualCategories[OsmTag(
"highway", 
"bus_stop")] = GeoDataPlacemark::TransportBusStop;
 
 2004    s_visualCategories[OsmTag(
"highway", 
"speed_camera")] = GeoDataPlacemark::TransportSpeedCamera;
 
 2005    s_visualCategories[OsmTag(
"public_transport", 
"platform")] = GeoDataPlacemark::TransportPlatform;
 
 2006    s_visualCategories[OsmTag(
"railway", 
"subway_entrance")] = GeoDataPlacemark::TransportSubwayEntrance;
 
 2007    s_visualCategories[OsmTag(
"railway", 
"tram_stop")] = GeoDataPlacemark::TransportTramStop;
 
 2009    s_visualCategories[OsmTag(
"place", 
"city")] = GeoDataPlacemark::PlaceCity;
 
 2010    s_visualCategories[OsmTag(
"place", 
"hamlet")] = GeoDataPlacemark::PlaceHamlet;
 
 2011    s_visualCategories[OsmTag(
"place", 
"locality")] = GeoDataPlacemark::PlaceLocality;
 
 2012    s_visualCategories[OsmTag(
"place", 
"suburb")] = GeoDataPlacemark::PlaceSuburb;
 
 2013    s_visualCategories[OsmTag(
"place", 
"town")] = GeoDataPlacemark::PlaceTown;
 
 2014    s_visualCategories[OsmTag(
"place", 
"village")] = GeoDataPlacemark::PlaceVillage;
 
 2016    s_visualCategories[OsmTag(
"aerialway", 
"station")] = GeoDataPlacemark::AerialwayStation;
 
 2017    s_visualCategories[OsmTag(
"aerialway", 
"pylon")] = GeoDataPlacemark::AerialwayPylon;
 
 2018    s_visualCategories[OsmTag(
"aerialway", 
"cable_car")] = GeoDataPlacemark::AerialwayCableCar;
 
 2019    s_visualCategories[OsmTag(
"aerialway", 
"gondola")] = GeoDataPlacemark::AerialwayGondola;
 
 2020    s_visualCategories[OsmTag(
"aerialway", 
"chair_lift")] = GeoDataPlacemark::AerialwayChairLift;
 
 2021    s_visualCategories[OsmTag(
"aerialway", 
"mixed_lift")] = GeoDataPlacemark::AerialwayMixedLift;
 
 2022    s_visualCategories[OsmTag(
"aerialway", 
"drag_lift")] = GeoDataPlacemark::AerialwayDragLift;
 
 2023    s_visualCategories[OsmTag(
"aerialway", 
"t-bar")] = GeoDataPlacemark::AerialwayTBar;
 
 2024    s_visualCategories[OsmTag(
"aerialway", 
"j-bar")] = GeoDataPlacemark::AerialwayJBar;
 
 2025    s_visualCategories[OsmTag(
"aerialway", 
"platter")] = GeoDataPlacemark::AerialwayPlatter;
 
 2026    s_visualCategories[OsmTag(
"aerialway", 
"rope_tow")] = GeoDataPlacemark::AerialwayRopeTow;
 
 2027    s_visualCategories[OsmTag(
"aerialway", 
"magic_carpet")] = GeoDataPlacemark::AerialwayMagicCarpet;
 
 2028    s_visualCategories[OsmTag(
"aerialway", 
"zip_line")] = GeoDataPlacemark::AerialwayZipLine;
 
 2029    s_visualCategories[OsmTag(
"aerialway", 
"goods")] = GeoDataPlacemark::AerialwayGoods;
 
 2031    s_visualCategories[OsmTag(
"indoor", 
"door")] = GeoDataPlacemark::IndoorDoor;
 
 2032    s_visualCategories[OsmTag(
"indoor", 
"wall")] = GeoDataPlacemark::IndoorWall;
 
 2033    s_visualCategories[OsmTag(
"indoor", 
"room")] = GeoDataPlacemark::IndoorRoom;
 
 2036    s_visualCategories[OsmTag(
"marble_land", 
"landmass")] = GeoDataPlacemark::Landmass;
 
 2037    s_visualCategories[OsmTag(
"settlement", 
"yes")] = GeoDataPlacemark::UrbanArea;
 
 2038    s_visualCategories[OsmTag(
"marble_line", 
"date")] = GeoDataPlacemark::InternationalDateLine;
 
 2039    s_visualCategories[OsmTag(
"marble:feature", 
"bathymetry")] = GeoDataPlacemark::Bathymetry;
 
 2042    for (
const auto &tag : buildingTags()) {
 
 2043        s_visualCategories[tag] = GeoDataPlacemark::Building;
 
 2047void StyleBuilder::Private::initializeMinimumZoomLevels()
 
 2049    if (s_defaultMinZoomLevelsInitialized) {
 
 2053    s_defaultMinZoomLevelsInitialized = 
true;
 
 2054    for (
int i = 0; i < GeoDataPlacemark::LastIndex; i++) {
 
 2055        s_defaultMinZoomLevels[i] = -1;
 
 2058    s_defaultMinZoomLevels[GeoDataPlacemark::AdminLevel10] = 8;
 
 2059    s_defaultMinZoomLevels[GeoDataPlacemark::AdminLevel11] = 8;
 
 2060    s_defaultMinZoomLevels[GeoDataPlacemark::AdminLevel1] = 0;
 
 2061    s_defaultMinZoomLevels[GeoDataPlacemark::AdminLevel2] = 1;
 
 2062    s_defaultMinZoomLevels[GeoDataPlacemark::AdminLevel3] = 1;
 
 2063    s_defaultMinZoomLevels[GeoDataPlacemark::AdminLevel4] = 2;
 
 2064    s_defaultMinZoomLevels[GeoDataPlacemark::AdminLevel5] = 4;
 
 2065    s_defaultMinZoomLevels[GeoDataPlacemark::AdminLevel6] = 5;
 
 2066    s_defaultMinZoomLevels[GeoDataPlacemark::AdminLevel7] = 5;
 
 2067    s_defaultMinZoomLevels[GeoDataPlacemark::AdminLevel8] = 7;
 
 2068    s_defaultMinZoomLevels[GeoDataPlacemark::AdminLevel9] = 7;
 
 2070    s_defaultMinZoomLevels[GeoDataPlacemark::HistoricArchaeologicalSite] = 16;
 
 2071    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityBench] = 19;
 
 2072    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityFountain] = 17;
 
 2073    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityGraveyard] = 16;
 
 2074    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityTelephone] = 17;
 
 2075    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityKindergarten] = 16;
 
 2076    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityLibrary] = 16;
 
 2077    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityWasteBasket] = 19;
 
 2078    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityToilets] = 17;
 
 2079    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityTownHall] = 15;
 
 2080    s_defaultMinZoomLevels[GeoDataPlacemark::LeisureWaterPark] = 15;
 
 2081    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityDrinkingWater] = 17;
 
 2082    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityEmbassy] = 15;
 
 2083    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityEmergencyPhone] = 17;
 
 2084    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityMountainRescue] = 16;
 
 2085    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityCommunityCentre] = 17;
 
 2086    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityFountain] = 17;
 
 2087    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityNightClub] = 16;
 
 2088    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityCourtHouse] = 16;
 
 2089    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityFireStation] = 16;
 
 2090    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityHuntingStand] = 17;
 
 2091    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityPolice] = 16;
 
 2092    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityPostBox] = 17;
 
 2093    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityPostOffice] = 17;
 
 2094    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityPrison] = 17;
 
 2095    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityRecycling] = 17;
 
 2096    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityShelter] = 17;
 
 2097    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityChargingStation] = 17;
 
 2098    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityCarWash] = 17;
 
 2099    s_defaultMinZoomLevels[GeoDataPlacemark::AmenitySocialFacility] = 17;
 
 2101    s_defaultMinZoomLevels[GeoDataPlacemark::BarrierCityWall] = 15;
 
 2102    s_defaultMinZoomLevels[GeoDataPlacemark::BarrierGate] = 17;
 
 2103    s_defaultMinZoomLevels[GeoDataPlacemark::BarrierLiftGate] = 17;
 
 2104    s_defaultMinZoomLevels[GeoDataPlacemark::BarrierWall] = 17;
 
 2106    s_defaultMinZoomLevels[GeoDataPlacemark::Bathymetry] = 1;
 
 2108    s_defaultMinZoomLevels[GeoDataPlacemark::BoundaryMaritime] = 1;
 
 2110    s_defaultMinZoomLevels[GeoDataPlacemark::Building] = 17;
 
 2112    s_defaultMinZoomLevels[GeoDataPlacemark::Default] = 1;
 
 2114    s_defaultMinZoomLevels[GeoDataPlacemark::EducationCollege] = 15;
 
 2115    s_defaultMinZoomLevels[GeoDataPlacemark::EducationSchool] = 15;
 
 2116    s_defaultMinZoomLevels[GeoDataPlacemark::EducationUniversity] = 15;
 
 2118    s_defaultMinZoomLevels[GeoDataPlacemark::FoodBar] = 16;
 
 2119    s_defaultMinZoomLevels[GeoDataPlacemark::FoodBiergarten] = 16;
 
 2120    s_defaultMinZoomLevels[GeoDataPlacemark::FoodCafe] = 16;
 
 2121    s_defaultMinZoomLevels[GeoDataPlacemark::FoodFastFood] = 16;
 
 2122    s_defaultMinZoomLevels[GeoDataPlacemark::FoodPub] = 16;
 
 2123    s_defaultMinZoomLevels[GeoDataPlacemark::FoodRestaurant] = 16;
 
 2125    s_defaultMinZoomLevels[GeoDataPlacemark::HealthHospital] = 15;
 
 2126    s_defaultMinZoomLevels[GeoDataPlacemark::HealthPharmacy] = 17;
 
 2127    s_defaultMinZoomLevels[GeoDataPlacemark::HealthDentist] = 17;
 
 2128    s_defaultMinZoomLevels[GeoDataPlacemark::HealthDoctors] = 17;
 
 2129    s_defaultMinZoomLevels[GeoDataPlacemark::HealthVeterinary] = 17;
 
 2131    s_defaultMinZoomLevels[GeoDataPlacemark::HistoricMemorial] = 17;
 
 2133    s_defaultMinZoomLevels[GeoDataPlacemark::HighwayCycleway] = 16;
 
 2134    s_defaultMinZoomLevels[GeoDataPlacemark::HighwayFootway] = 17;
 
 2135    s_defaultMinZoomLevels[GeoDataPlacemark::HighwayLivingStreet] = 15;
 
 2136    s_defaultMinZoomLevels[GeoDataPlacemark::HighwayMotorwayLink] = 10;
 
 2137    s_defaultMinZoomLevels[GeoDataPlacemark::HighwayMotorway] = 6;
 
 2138    s_defaultMinZoomLevels[GeoDataPlacemark::HighwayPath] = 13;
 
 2139    s_defaultMinZoomLevels[GeoDataPlacemark::HighwayPedestrian] = 13;
 
 2140    s_defaultMinZoomLevels[GeoDataPlacemark::HighwayPrimaryLink] = 10;
 
 2141    s_defaultMinZoomLevels[GeoDataPlacemark::HighwayPrimary] = 8;
 
 2142    s_defaultMinZoomLevels[GeoDataPlacemark::HighwayRaceway] = 12;
 
 2143    s_defaultMinZoomLevels[GeoDataPlacemark::HighwayResidential] = 14;
 
 2144    s_defaultMinZoomLevels[GeoDataPlacemark::HighwayRoad] = 13;
 
 2145    s_defaultMinZoomLevels[GeoDataPlacemark::HighwaySecondaryLink] = 10;
 
 2146    s_defaultMinZoomLevels[GeoDataPlacemark::HighwaySecondary] = 9;
 
 2147    s_defaultMinZoomLevels[GeoDataPlacemark::HighwayService] = 15;
 
 2148    s_defaultMinZoomLevels[GeoDataPlacemark::HighwaySteps] = 15;
 
 2149    s_defaultMinZoomLevels[GeoDataPlacemark::HighwayTertiaryLink] = 10;
 
 2150    s_defaultMinZoomLevels[GeoDataPlacemark::HighwayTertiary] = 10;
 
 2151    s_defaultMinZoomLevels[GeoDataPlacemark::HighwayTrack] = 15;
 
 2152    s_defaultMinZoomLevels[GeoDataPlacemark::HighwayTrunkLink] = 10;
 
 2153    s_defaultMinZoomLevels[GeoDataPlacemark::HighwayTrunk] = 7;
 
 2154    s_defaultMinZoomLevels[GeoDataPlacemark::HighwayUnknown] = 16;
 
 2155    s_defaultMinZoomLevels[GeoDataPlacemark::HighwayUnclassified] = 16;
 
 2156    s_defaultMinZoomLevels[GeoDataPlacemark::HighwayTrafficSignals] = 17;
 
 2157    s_defaultMinZoomLevels[GeoDataPlacemark::HighwayCorridor] = 18;
 
 2158    s_defaultMinZoomLevels[GeoDataPlacemark::HighwayElevator] = 17;
 
 2160    s_defaultMinZoomLevels[GeoDataPlacemark::AccomodationCamping] = 16;
 
 2161    s_defaultMinZoomLevels[GeoDataPlacemark::AccomodationHostel] = 16;
 
 2162    s_defaultMinZoomLevels[GeoDataPlacemark::AccomodationHotel] = 16;
 
 2163    s_defaultMinZoomLevels[GeoDataPlacemark::AccomodationMotel] = 16;
 
 2164    s_defaultMinZoomLevels[GeoDataPlacemark::AccomodationYouthHostel] = 16;
 
 2165    s_defaultMinZoomLevels[GeoDataPlacemark::AccomodationGuestHouse] = 16;
 
 2167    s_defaultMinZoomLevels[GeoDataPlacemark::InternationalDateLine] = 1;
 
 2169    s_defaultMinZoomLevels[GeoDataPlacemark::Landmass] = 0;
 
 2171    s_defaultMinZoomLevels[GeoDataPlacemark::LanduseAllotments] = 11;
 
 2172    s_defaultMinZoomLevels[GeoDataPlacemark::LanduseBasin] = 11;
 
 2173    s_defaultMinZoomLevels[GeoDataPlacemark::LanduseCemetery] = 11;
 
 2174    s_defaultMinZoomLevels[GeoDataPlacemark::LanduseCommercial] = 13;
 
 2175    s_defaultMinZoomLevels[GeoDataPlacemark::LanduseConstruction] = 11;
 
 2176    s_defaultMinZoomLevels[GeoDataPlacemark::LanduseFarmland] = 13;
 
 2177    s_defaultMinZoomLevels[GeoDataPlacemark::LanduseFarmyard] = 13;
 
 2178    s_defaultMinZoomLevels[GeoDataPlacemark::LanduseGarages] = 11;
 
 2179    s_defaultMinZoomLevels[GeoDataPlacemark::LanduseGrass] = 13;
 
 2180    s_defaultMinZoomLevels[GeoDataPlacemark::LanduseIndustrial] = 13;
 
 2181    s_defaultMinZoomLevels[GeoDataPlacemark::LanduseLandfill] = 11;
 
 2182    s_defaultMinZoomLevels[GeoDataPlacemark::LanduseMeadow] = 13;
 
 2183    s_defaultMinZoomLevels[GeoDataPlacemark::LanduseMilitary] = 11;
 
 2184    s_defaultMinZoomLevels[GeoDataPlacemark::LanduseOrchard] = 14;
 
 2185    s_defaultMinZoomLevels[GeoDataPlacemark::LanduseQuarry] = 11;
 
 2186    s_defaultMinZoomLevels[GeoDataPlacemark::LanduseRailway] = 11;
 
 2187    s_defaultMinZoomLevels[GeoDataPlacemark::LanduseReservoir] = 11;
 
 2188    s_defaultMinZoomLevels[GeoDataPlacemark::LanduseResidential] = 11;
 
 2189    s_defaultMinZoomLevels[GeoDataPlacemark::LanduseRetail] = 13;
 
 2190    s_defaultMinZoomLevels[GeoDataPlacemark::LanduseVineyard] = 14;
 
 2192    s_defaultMinZoomLevels[GeoDataPlacemark::LeisureGolfCourse] = 15;
 
 2193    s_defaultMinZoomLevels[GeoDataPlacemark::LeisureMarina] = 13;
 
 2194    s_defaultMinZoomLevels[GeoDataPlacemark::LeisurePark] = 11;
 
 2195    s_defaultMinZoomLevels[GeoDataPlacemark::LeisurePlayground] = 17;
 
 2196    s_defaultMinZoomLevels[GeoDataPlacemark::LeisurePitch] = 15;
 
 2197    s_defaultMinZoomLevels[GeoDataPlacemark::LeisureStadium] = 13;
 
 2198    s_defaultMinZoomLevels[GeoDataPlacemark::LeisureSwimmingPool] = 17;
 
 2199    s_defaultMinZoomLevels[GeoDataPlacemark::LeisureSportsCentre] = 15;
 
 2200    s_defaultMinZoomLevels[GeoDataPlacemark::LeisureTrack] = 16;
 
 2201    s_defaultMinZoomLevels[GeoDataPlacemark::LeisureMinigolfCourse] = 16;
 
 2203    s_defaultMinZoomLevels[GeoDataPlacemark::ManmadeBridge] = 15;
 
 2204    s_defaultMinZoomLevels[GeoDataPlacemark::ManmadeLighthouse] = 15;
 
 2205    s_defaultMinZoomLevels[GeoDataPlacemark::ManmadePier] = 15;
 
 2206    s_defaultMinZoomLevels[GeoDataPlacemark::ManmadeWaterTower] = 15;
 
 2207    s_defaultMinZoomLevels[GeoDataPlacemark::ManmadeWindMill] = 15;
 
 2208    s_defaultMinZoomLevels[GeoDataPlacemark::ManmadeCommunicationsTower] = 15;
 
 2210    s_defaultMinZoomLevels[GeoDataPlacemark::MilitaryDangerArea] = 11;
 
 2212    s_defaultMinZoomLevels[GeoDataPlacemark::MoneyAtm] = 16;
 
 2213    s_defaultMinZoomLevels[GeoDataPlacemark::MoneyBank] = 16;
 
 2215    s_defaultMinZoomLevels[GeoDataPlacemark::NaturalBeach] = 13;
 
 2216    s_defaultMinZoomLevels[GeoDataPlacemark::NaturalCliff] = 15;
 
 2217    s_defaultMinZoomLevels[GeoDataPlacemark::NaturalGlacier] = 3;
 
 2218    s_defaultMinZoomLevels[GeoDataPlacemark::NaturalHeath] = 13;
 
 2219    s_defaultMinZoomLevels[GeoDataPlacemark::NaturalIceShelf] = 3;
 
 2220    s_defaultMinZoomLevels[GeoDataPlacemark::NaturalVolcano] = 13;
 
 2221    s_defaultMinZoomLevels[GeoDataPlacemark::NaturalPeak] = 11;
 
 2222    s_defaultMinZoomLevels[GeoDataPlacemark::NaturalReef] = 3;
 
 2223    s_defaultMinZoomLevels[GeoDataPlacemark::NaturalScrub] = 13;
 
 2224    s_defaultMinZoomLevels[GeoDataPlacemark::NaturalTree] = 17;
 
 2225    s_defaultMinZoomLevels[GeoDataPlacemark::NaturalCave] = 16;
 
 2226    s_defaultMinZoomLevels[GeoDataPlacemark::NaturalWater] = 3;
 
 2227    s_defaultMinZoomLevels[GeoDataPlacemark::NaturalWetland] = 10;
 
 2228    s_defaultMinZoomLevels[GeoDataPlacemark::NaturalWood] = 8;
 
 2230    s_defaultMinZoomLevels[GeoDataPlacemark::PlaceCityNationalCapital] = 9;
 
 2231    s_defaultMinZoomLevels[GeoDataPlacemark::PlaceCityCapital] = 9;
 
 2232    s_defaultMinZoomLevels[GeoDataPlacemark::PlaceCity] = 9;
 
 2233    s_defaultMinZoomLevels[GeoDataPlacemark::PlaceHamlet] = 15;
 
 2234    s_defaultMinZoomLevels[GeoDataPlacemark::PlaceLocality] = 15;
 
 2235    s_defaultMinZoomLevels[GeoDataPlacemark::PlaceSuburb] = 13;
 
 2236    s_defaultMinZoomLevels[GeoDataPlacemark::PlaceTownNationalCapital] = 11;
 
 2237    s_defaultMinZoomLevels[GeoDataPlacemark::PlaceTownCapital] = 11;
 
 2238    s_defaultMinZoomLevels[GeoDataPlacemark::PlaceTown] = 11;
 
 2239    s_defaultMinZoomLevels[GeoDataPlacemark::PlaceVillageNationalCapital] = 13;
 
 2240    s_defaultMinZoomLevels[GeoDataPlacemark::PlaceVillageCapital] = 13;
 
 2241    s_defaultMinZoomLevels[GeoDataPlacemark::PlaceVillage] = 13;
 
 2243    s_defaultMinZoomLevels[GeoDataPlacemark::PowerTower] = 18;
 
 2245    s_defaultMinZoomLevels[GeoDataPlacemark::RailwayAbandoned] = 10;
 
 2246    s_defaultMinZoomLevels[GeoDataPlacemark::RailwayConstruction] = 10;
 
 2247    s_defaultMinZoomLevels[GeoDataPlacemark::RailwayFunicular] = 13;
 
 2248    s_defaultMinZoomLevels[GeoDataPlacemark::RailwayLightRail] = 12;
 
 2249    s_defaultMinZoomLevels[GeoDataPlacemark::RailwayMiniature] = 16;
 
 2250    s_defaultMinZoomLevels[GeoDataPlacemark::RailwayMonorail] = 12;
 
 2251    s_defaultMinZoomLevels[GeoDataPlacemark::RailwayNarrowGauge] = 6;
 
 2252    s_defaultMinZoomLevels[GeoDataPlacemark::RailwayPreserved] = 13;
 
 2253    s_defaultMinZoomLevels[GeoDataPlacemark::RailwayRail] = 6;
 
 2254    s_defaultMinZoomLevels[GeoDataPlacemark::RailwaySubway] = 13;
 
 2255    s_defaultMinZoomLevels[GeoDataPlacemark::RailwayTram] = 14;
 
 2257    s_defaultMinZoomLevels[GeoDataPlacemark::Satellite] = 0;
 
 2259    for (
int shop = GeoDataPlacemark::ShopBeverages; shop <= GeoDataPlacemark::Shop; ++shop) {
 
 2260        s_defaultMinZoomLevels[shop] = 17;
 
 2262    s_defaultMinZoomLevels[GeoDataPlacemark::ShopSupermarket] = 16;
 
 2263    s_defaultMinZoomLevels[GeoDataPlacemark::ShopDepartmentStore] = 16;
 
 2264    s_defaultMinZoomLevels[GeoDataPlacemark::ShopDoitYourself] = 16;
 
 2266    s_defaultMinZoomLevels[GeoDataPlacemark::TourismAlpineHut] = 13;
 
 2267    s_defaultMinZoomLevels[GeoDataPlacemark::TourismWildernessHut] = 13;
 
 2268    s_defaultMinZoomLevels[GeoDataPlacemark::TourismAttraction] = 17;
 
 2269    s_defaultMinZoomLevels[GeoDataPlacemark::TourismArtwork] = 17;
 
 2270    s_defaultMinZoomLevels[GeoDataPlacemark::HistoricCastle] = 15;
 
 2271    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityCinema] = 16;
 
 2272    s_defaultMinZoomLevels[GeoDataPlacemark::TourismMuseum] = 16;
 
 2273    s_defaultMinZoomLevels[GeoDataPlacemark::HistoricRuins] = 16;
 
 2274    s_defaultMinZoomLevels[GeoDataPlacemark::AmenityTheatre] = 16;
 
 2275    s_defaultMinZoomLevels[GeoDataPlacemark::TourismThemePark] = 15;
 
 2276    s_defaultMinZoomLevels[GeoDataPlacemark::TourismViewPoint] = 15;
 
 2277    s_defaultMinZoomLevels[GeoDataPlacemark::TourismZoo] = 15;
 
 2278    s_defaultMinZoomLevels[GeoDataPlacemark::HistoricMonument] = 16;
 
 2279    s_defaultMinZoomLevels[GeoDataPlacemark::TourismInformation] = 17;
 
 2280    s_defaultMinZoomLevels[GeoDataPlacemark::TransportAerodrome] = 9;
 
 2281    s_defaultMinZoomLevels[GeoDataPlacemark::TransportAirportApron] = 15;
 
 2282    s_defaultMinZoomLevels[GeoDataPlacemark::TransportAirportRunway] = 15;
 
 2283    s_defaultMinZoomLevels[GeoDataPlacemark::TransportAirportTaxiway] = 15;
 
 2284    s_defaultMinZoomLevels[GeoDataPlacemark::TransportBusStation] = 15;
 
 2285    s_defaultMinZoomLevels[GeoDataPlacemark::TransportCarShare] = 16;
 
 2286    s_defaultMinZoomLevels[GeoDataPlacemark::TransportFuel] = 16;
 
 2287    s_defaultMinZoomLevels[GeoDataPlacemark::TransportHelipad] = 16;
 
 2288    s_defaultMinZoomLevels[GeoDataPlacemark::TransportAirportTerminal] = 17;
 
 2289    s_defaultMinZoomLevels[GeoDataPlacemark::TransportAirportGate] = 17;
 
 2290    s_defaultMinZoomLevels[GeoDataPlacemark::TransportPlatform] = 16;
 
 2291    s_defaultMinZoomLevels[GeoDataPlacemark::TransportSpeedCamera] = 16;
 
 2292    s_defaultMinZoomLevels[GeoDataPlacemark::TransportRentalCar] = 16;
 
 2293    s_defaultMinZoomLevels[GeoDataPlacemark::TransportRentalBicycle] = 17;
 
 2294    s_defaultMinZoomLevels[GeoDataPlacemark::TransportRentalSki] = 17;
 
 2295    s_defaultMinZoomLevels[GeoDataPlacemark::TransportTaxiRank] = 16;
 
 2296    s_defaultMinZoomLevels[GeoDataPlacemark::TransportParking] = 16;
 
 2297    s_defaultMinZoomLevels[GeoDataPlacemark::TransportBusStop] = 16;
 
 2298    s_defaultMinZoomLevels[GeoDataPlacemark::TransportTrainStation] = 13;
 
 2299    s_defaultMinZoomLevels[GeoDataPlacemark::TransportTramStop] = 15;
 
 2300    s_defaultMinZoomLevels[GeoDataPlacemark::TransportParkingSpace] = 17;
 
 2301    s_defaultMinZoomLevels[GeoDataPlacemark::TransportBicycleParking] = 17;
 
 2302    s_defaultMinZoomLevels[GeoDataPlacemark::TransportMotorcycleParking] = 17;
 
 2303    s_defaultMinZoomLevels[GeoDataPlacemark::TransportSubwayEntrance] = 17;
 
 2305    for (
int religion = GeoDataPlacemark::ReligionPlaceOfWorship; religion <= GeoDataPlacemark::ReligionTaoist; ++religion) {
 
 2306        s_defaultMinZoomLevels[religion] = 17;
 
 2309    s_defaultMinZoomLevels[GeoDataPlacemark::UrbanArea] = 3;
 
 2311    s_defaultMinZoomLevels[GeoDataPlacemark::WaterwayCanal] = 15;
 
 2312    s_defaultMinZoomLevels[GeoDataPlacemark::WaterwayDitch] = 17;
 
 2313    s_defaultMinZoomLevels[GeoDataPlacemark::WaterwayDrain] = 17;
 
 2314    s_defaultMinZoomLevels[GeoDataPlacemark::WaterwayStream] = 15;
 
 2315    s_defaultMinZoomLevels[GeoDataPlacemark::WaterwayRiver] = 3;
 
 2316    s_defaultMinZoomLevels[GeoDataPlacemark::WaterwayWeir] = 17;
 
 2318    s_defaultMinZoomLevels[GeoDataPlacemark::CrossingIsland] = 18;
 
 2319    s_defaultMinZoomLevels[GeoDataPlacemark::CrossingRailway] = 18;
 
 2320    s_defaultMinZoomLevels[GeoDataPlacemark::CrossingSignals] = 18;
 
 2321    s_defaultMinZoomLevels[GeoDataPlacemark::CrossingZebra] = 18;
 
 2323    s_defaultMinZoomLevels[GeoDataPlacemark::PisteDownhill] = 15;
 
 2324    s_defaultMinZoomLevels[GeoDataPlacemark::PisteNordic] = 15;
 
 2325    s_defaultMinZoomLevels[GeoDataPlacemark::PisteSkitour] = 15;
 
 2326    s_defaultMinZoomLevels[GeoDataPlacemark::PisteSled] = 15;
 
 2327    s_defaultMinZoomLevels[GeoDataPlacemark::PisteHike] = 15;
 
 2328    s_defaultMinZoomLevels[GeoDataPlacemark::PisteSleigh] = 15;
 
 2329    s_defaultMinZoomLevels[GeoDataPlacemark::PisteIceSkate] = 15;
 
 2330    s_defaultMinZoomLevels[GeoDataPlacemark::PisteSnowPark] = 15;
 
 2331    s_defaultMinZoomLevels[GeoDataPlacemark::PistePlayground] = 15;
 
 2332    s_defaultMinZoomLevels[GeoDataPlacemark::PisteSkiJump] = 15;
 
 2334    s_defaultMinZoomLevels[GeoDataPlacemark::AerialwayStation] = 15;
 
 2335    s_defaultMinZoomLevels[GeoDataPlacemark::AerialwayPylon] = 16;
 
 2336    s_defaultMinZoomLevels[GeoDataPlacemark::AerialwayCableCar] = 15;
 
 2337    s_defaultMinZoomLevels[GeoDataPlacemark::AerialwayGondola] = 15;
 
 2338    s_defaultMinZoomLevels[GeoDataPlacemark::AerialwayChairLift] = 15;
 
 2339    s_defaultMinZoomLevels[GeoDataPlacemark::AerialwayMixedLift] = 15;
 
 2340    s_defaultMinZoomLevels[GeoDataPlacemark::AerialwayDragLift] = 15;
 
 2341    s_defaultMinZoomLevels[GeoDataPlacemark::AerialwayTBar] = 15;
 
 2342    s_defaultMinZoomLevels[GeoDataPlacemark::AerialwayJBar] = 15;
 
 2343    s_defaultMinZoomLevels[GeoDataPlacemark::AerialwayPlatter] = 15;
 
 2344    s_defaultMinZoomLevels[GeoDataPlacemark::AerialwayRopeTow] = 15;
 
 2345    s_defaultMinZoomLevels[GeoDataPlacemark::AerialwayMagicCarpet] = 15;
 
 2346    s_defaultMinZoomLevels[GeoDataPlacemark::AerialwayZipLine] = 15;
 
 2347    s_defaultMinZoomLevels[GeoDataPlacemark::AerialwayGoods] = 15;
 
 2349    s_defaultMinZoomLevels[GeoDataPlacemark::IndoorDoor] = 17;
 
 2350    s_defaultMinZoomLevels[GeoDataPlacemark::IndoorWall] = 17;
 
 2351    s_defaultMinZoomLevels[GeoDataPlacemark::IndoorRoom] = 17;
 
 2353    for (
int i = GeoDataPlacemark::PlaceCity; i < GeoDataPlacemark::LastIndex; i++) {
 
 2354        if (s_defaultMinZoomLevels[i] < 0) {
 
 2355            qDebug() << 
"Missing default min zoom level for GeoDataPlacemark::GeoDataVisualCategory " << i;
 
 2356            Q_ASSERT(
false && 
"StyleBuilder::Private::initializeMinimumZoomLevels is incomplete");
 
 2357            s_defaultMinZoomLevels[i] = 15;
 
 2362StyleBuilder::StyleBuilder()
 
 2368StyleBuilder::~StyleBuilder()
 
 2373QFont StyleBuilder::defaultFont()
 const 
 2375    return d->m_defaultFont;
 
 2378void StyleBuilder::setDefaultFont(
const QFont &font)
 
 2380    d->m_defaultFont = font;
 
 2384QColor StyleBuilder::defaultLabelColor()
 const 
 2386    return d->m_defaultLabelColor;
 
 2389void StyleBuilder::setDefaultLabelColor(
const QColor &color)
 
 2391    d->m_defaultLabelColor = color;
 
 2395GeoDataStyle::ConstPtr StyleBuilder::createStyle(
const StyleParameters ¶meters)
 const 
 2397    const GeoDataPlacemark *
const placemark = parameters.placemark;
 
 2400        Q_ASSERT(
false && 
"Must not pass a null placemark to StyleBuilder::createStyle");
 
 2401        return GeoDataStyle::Ptr();
 
 2404    if (placemark->customStyle()) {
 
 2405        return placemark->customStyle();
 
 2408    if (parameters.relation) {
 
 2409        auto style = d->createRelationStyle(parameters);
 
 2415    return d->createPlacemarkStyle(parameters);
 
 2418GeoDataStyle::ConstPtr StyleBuilder::Private::presetStyle(GeoDataPlacemark::GeoDataVisualCategory visualCategory)
 const 
 2420    if (!m_defaultStyleInitialized) {
 
 2421        const_cast<StyleBuilder::Private *
>(
this)->initializeDefaultStyles(); 
 
 2424    if (m_defaultStyle[visualCategory]) {
 
 2425        return m_defaultStyle[visualCategory];
 
 2427        return m_defaultStyle[GeoDataPlacemark::Default];
 
 2435    if (paintLayerOrder.
isEmpty()) {
 
 2436        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::Landmass);
 
 2437        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::UrbanArea);
 
 2438        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LanduseResidential);
 
 2439        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LanduseAllotments);
 
 2440        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LanduseBasin);
 
 2441        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LanduseCemetery);
 
 2442        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LanduseCommercial);
 
 2443        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LanduseConstruction);
 
 2444        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LanduseFarmland);
 
 2445        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LanduseFarmyard);
 
 2446        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LanduseGarages);
 
 2447        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LanduseIndustrial);
 
 2448        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LanduseLandfill);
 
 2449        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LanduseMeadow);
 
 2450        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LanduseMilitary);
 
 2451        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LanduseQuarry);
 
 2452        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LanduseRailway);
 
 2453        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LanduseReservoir);
 
 2454        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LanduseRetail);
 
 2455        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LanduseOrchard);
 
 2456        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LanduseVineyard);
 
 2458        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::Bathymetry);
 
 2459        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LeisureGolfCourse);
 
 2460        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LeisureMinigolfCourse);
 
 2461        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::NaturalBeach);
 
 2462        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::NaturalWetland);
 
 2463        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::NaturalGlacier);
 
 2464        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::NaturalIceShelf);
 
 2465        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::NaturalVolcano);
 
 2466        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::NaturalCliff);
 
 2467        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::NaturalPeak);
 
 2468        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::MilitaryDangerArea);
 
 2469        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LeisurePark);
 
 2470        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LeisurePitch);
 
 2471        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LeisureSportsCentre);
 
 2472        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LeisureStadium);
 
 2473        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::NaturalWood);
 
 2474        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LanduseGrass);
 
 2475        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::HighwayPedestrian);
 
 2476        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LeisurePlayground);
 
 2477        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::NaturalScrub);
 
 2478        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LeisureTrack);
 
 2479        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::TransportParking);
 
 2480        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::TransportParkingSpace);
 
 2481        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::ManmadeBridge);
 
 2482        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::BarrierCityWall);
 
 2484        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::AmenityGraveyard);
 
 2486        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::AmenityKindergarten);
 
 2487        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::EducationCollege);
 
 2488        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::EducationSchool);
 
 2489        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::EducationUniversity);
 
 2490        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::HealthHospital);
 
 2491        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LeisureSwimmingPool);
 
 2493        paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::Landmass);
 
 2495        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::NaturalWater);
 
 2496        for (
int i = GeoDataPlacemark::WaterwayCanal; i <= GeoDataPlacemark::WaterwayStream; ++i) {
 
 2497            paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::GeoDataVisualCategory(i), 
"outline");
 
 2498            paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::GeoDataVisualCategory(i), 
"inline");
 
 2499            paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::GeoDataVisualCategory(i), 
"label");
 
 2502        paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::NaturalReef, 
"outline");
 
 2503        paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::NaturalReef, 
"inline");
 
 2504        paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::NaturalReef, 
"label");
 
 2505        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::LeisureMarina);
 
 2506        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::ManmadePier);
 
 2507        paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::ManmadePier, 
"outline");
 
 2508        paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::ManmadePier, 
"inline");
 
 2509        paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::ManmadePier, 
"label");
 
 2511        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::TransportAirportApron);
 
 2513        for (
int i = GeoDataPlacemark::HighwaySteps; i <= GeoDataPlacemark::HighwayMotorway; i++) {
 
 2514            paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::GeoDataVisualCategory(i), 
"outline");
 
 2516        for (
int i = GeoDataPlacemark::HighwaySteps; i <= GeoDataPlacemark::HighwayMotorway; i++) {
 
 2517            paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::GeoDataVisualCategory(i), 
"inline");
 
 2519        for (
int i = GeoDataPlacemark::RailwayRail; i <= GeoDataPlacemark::RailwayFunicular; i++) {
 
 2520            paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::GeoDataVisualCategory(i), 
"outline");
 
 2522        for (
int i = GeoDataPlacemark::RailwayRail; i <= GeoDataPlacemark::RailwayFunicular; i++) {
 
 2523            paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::GeoDataVisualCategory(i), 
"inline");
 
 2526        for (
int i = GeoDataPlacemark::HighwaySteps; i <= GeoDataPlacemark::HighwayMotorway; i++) {
 
 2527            paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::GeoDataVisualCategory(i), 
"label");
 
 2529        for (
int i = GeoDataPlacemark::RailwayRail; i <= GeoDataPlacemark::RailwayFunicular; i++) {
 
 2530            paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::GeoDataVisualCategory(i), 
"label");
 
 2533        paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::TransportPlatform);
 
 2534        paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::TransportPlatform, 
"outline");
 
 2535        paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::TransportPlatform, 
"inline");
 
 2536        paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::TransportPlatform, 
"label");
 
 2538        for (
int i = GeoDataPlacemark::PisteDownhill; i <= GeoDataPlacemark::PisteSkiJump; ++i) {
 
 2539            paintLayerOrder << Private::createPaintLayerItem(
"Polygon", GeoDataPlacemark::GeoDataVisualCategory(i));
 
 2540            paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::GeoDataVisualCategory(i), 
"outline");
 
 2541            paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::GeoDataVisualCategory(i), 
"inline");
 
 2542            paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::GeoDataVisualCategory(i), 
"label");
 
 2544        for (
int i = GeoDataPlacemark::AerialwayCableCar; i <= GeoDataPlacemark::AerialwayGoods; ++i) {
 
 2545            paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::GeoDataVisualCategory(i), 
"outline");
 
 2546            paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::GeoDataVisualCategory(i), 
"inline");
 
 2547            paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::GeoDataVisualCategory(i), 
"label");
 
 2550        for (
int i = GeoDataPlacemark::AdminLevel1; i <= GeoDataPlacemark::AdminLevel11; i++) {
 
 2551            paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::GeoDataVisualCategory(i), 
"outline");
 
 2553        for (
int i = GeoDataPlacemark::AdminLevel1; i <= GeoDataPlacemark::AdminLevel11; i++) {
 
 2554            paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::GeoDataVisualCategory(i), 
"inline");
 
 2556        for (
int i = GeoDataPlacemark::AdminLevel1; i <= GeoDataPlacemark::AdminLevel11; i++) {
 
 2557            paintLayerOrder << Private::createPaintLayerItem(
"LineString", GeoDataPlacemark::GeoDataVisualCategory(i), 
"label");
 
 2560        paintLayerOrder << QStringLiteral(
"Polygon/Building/frame");
 
 2561        paintLayerOrder << QStringLiteral(
"Polygon/Building/roof");
 
 2563        paintLayerOrder << QStringLiteral(
"Photo");
 
 2569    return paintLayerOrder;
 
 2572void StyleBuilder::reset()
 
 2574    d->m_defaultStyleInitialized = 
false;
 
 2577int StyleBuilder::minimumZoomLevel(
const GeoDataPlacemark &placemark)
 const 
 2579    Q_ASSERT(Private::s_defaultMinZoomLevelsInitialized);
 
 2580    return Private::s_defaultMinZoomLevels[placemark.visualCategory()];
 
 2583int StyleBuilder::minimumZoomLevel(
const GeoDataPlacemark::GeoDataVisualCategory &visualCategory)
 
 2585    Private::initializeMinimumZoomLevels();
 
 2586    return Private::s_defaultMinZoomLevels[visualCategory];
 
 2589qint64 StyleBuilder::popularity(
const GeoDataPlacemark *placemark)
 
 2591    qint64 
const defaultValue = 100;
 
 2592    int const offset = 10;
 
 2593    if (StyleBuilder::Private::s_popularities.isEmpty()) {
 
 2595        popularities << GeoDataPlacemark::PlaceCityNationalCapital;
 
 2596        popularities << GeoDataPlacemark::PlaceTownNationalCapital;
 
 2597        popularities << GeoDataPlacemark::PlaceCityCapital;
 
 2598        popularities << GeoDataPlacemark::PlaceTownCapital;
 
 2599        popularities << GeoDataPlacemark::PlaceCity;
 
 2600        popularities << GeoDataPlacemark::PlaceTown;
 
 2601        popularities << GeoDataPlacemark::PlaceSuburb;
 
 2602        popularities << GeoDataPlacemark::PlaceVillageNationalCapital;
 
 2603        popularities << GeoDataPlacemark::PlaceVillageCapital;
 
 2604        popularities << GeoDataPlacemark::PlaceVillage;
 
 2605        popularities << GeoDataPlacemark::PlaceHamlet;
 
 2606        popularities << GeoDataPlacemark::PlaceLocality;
 
 2608        popularities << GeoDataPlacemark::AmenityEmergencyPhone;
 
 2609        popularities << GeoDataPlacemark::AmenityMountainRescue;
 
 2610        popularities << GeoDataPlacemark::HealthHospital;
 
 2611        popularities << GeoDataPlacemark::AmenityToilets;
 
 2612        popularities << GeoDataPlacemark::MoneyAtm;
 
 2613        popularities << GeoDataPlacemark::TransportSpeedCamera;
 
 2615        popularities << GeoDataPlacemark::NaturalPeak;
 
 2616        popularities << GeoDataPlacemark::NaturalVolcano;
 
 2618        popularities << GeoDataPlacemark::AccomodationHotel;
 
 2619        popularities << GeoDataPlacemark::AccomodationMotel;
 
 2620        popularities << GeoDataPlacemark::AccomodationGuestHouse;
 
 2621        popularities << GeoDataPlacemark::AccomodationYouthHostel;
 
 2622        popularities << GeoDataPlacemark::AccomodationHostel;
 
 2623        popularities << GeoDataPlacemark::AccomodationCamping;
 
 2625        popularities << GeoDataPlacemark::HealthDentist;
 
 2626        popularities << GeoDataPlacemark::HealthDoctors;
 
 2627        popularities << GeoDataPlacemark::HealthPharmacy;
 
 2628        popularities << GeoDataPlacemark::HealthVeterinary;
 
 2630        popularities << GeoDataPlacemark::AmenityLibrary;
 
 2631        popularities << GeoDataPlacemark::EducationCollege;
 
 2632        popularities << GeoDataPlacemark::EducationSchool;
 
 2633        popularities << GeoDataPlacemark::EducationUniversity;
 
 2635        popularities << GeoDataPlacemark::FoodBar;
 
 2636        popularities << GeoDataPlacemark::FoodBiergarten;
 
 2637        popularities << GeoDataPlacemark::FoodCafe;
 
 2638        popularities << GeoDataPlacemark::FoodFastFood;
 
 2639        popularities << GeoDataPlacemark::FoodPub;
 
 2640        popularities << GeoDataPlacemark::FoodRestaurant;
 
 2642        popularities << GeoDataPlacemark::MoneyBank;
 
 2644        popularities << GeoDataPlacemark::HistoricArchaeologicalSite;
 
 2645        popularities << GeoDataPlacemark::AmenityCarWash;
 
 2646        popularities << GeoDataPlacemark::AmenityEmbassy;
 
 2647        popularities << GeoDataPlacemark::LeisureWaterPark;
 
 2648        popularities << GeoDataPlacemark::AmenityCommunityCentre;
 
 2649        popularities << GeoDataPlacemark::AmenityFountain;
 
 2650        popularities << GeoDataPlacemark::AmenityNightClub;
 
 2651        popularities << GeoDataPlacemark::AmenityCourtHouse;
 
 2652        popularities << GeoDataPlacemark::AmenityFireStation;
 
 2653        popularities << GeoDataPlacemark::AmenityShelter;
 
 2654        popularities << GeoDataPlacemark::AmenityHuntingStand;
 
 2655        popularities << GeoDataPlacemark::AmenityPolice;
 
 2656        popularities << GeoDataPlacemark::AmenityPostBox;
 
 2657        popularities << GeoDataPlacemark::AmenityPostOffice;
 
 2658        popularities << GeoDataPlacemark::AmenityPrison;
 
 2659        popularities << GeoDataPlacemark::AmenityRecycling;
 
 2660        popularities << GeoDataPlacemark::AmenitySocialFacility;
 
 2661        popularities << GeoDataPlacemark::AmenityTelephone;
 
 2662        popularities << GeoDataPlacemark::AmenityTownHall;
 
 2663        popularities << GeoDataPlacemark::AmenityDrinkingWater;
 
 2664        popularities << GeoDataPlacemark::AmenityGraveyard;
 
 2666        popularities << GeoDataPlacemark::ManmadeBridge;
 
 2667        popularities << GeoDataPlacemark::ManmadeLighthouse;
 
 2668        popularities << GeoDataPlacemark::ManmadePier;
 
 2669        popularities << GeoDataPlacemark::ManmadeWaterTower;
 
 2670        popularities << GeoDataPlacemark::ManmadeWindMill;
 
 2671        popularities << GeoDataPlacemark::ManmadeCommunicationsTower;
 
 2673        popularities << GeoDataPlacemark::TourismAttraction;
 
 2674        popularities << GeoDataPlacemark::TourismArtwork;
 
 2675        popularities << GeoDataPlacemark::HistoricCastle;
 
 2676        popularities << GeoDataPlacemark::AmenityCinema;
 
 2677        popularities << GeoDataPlacemark::TourismInformation;
 
 2678        popularities << GeoDataPlacemark::HistoricMonument;
 
 2679        popularities << GeoDataPlacemark::TourismMuseum;
 
 2680        popularities << GeoDataPlacemark::HistoricRuins;
 
 2681        popularities << GeoDataPlacemark::AmenityTheatre;
 
 2682        popularities << GeoDataPlacemark::TourismThemePark;
 
 2683        popularities << GeoDataPlacemark::TourismViewPoint;
 
 2684        popularities << GeoDataPlacemark::TourismZoo;
 
 2685        popularities << GeoDataPlacemark::TourismAlpineHut;
 
 2686        popularities << GeoDataPlacemark::TourismWildernessHut;
 
 2688        popularities << GeoDataPlacemark::HistoricMemorial;
 
 2690        popularities << GeoDataPlacemark::TransportAerodrome;
 
 2691        popularities << GeoDataPlacemark::TransportHelipad;
 
 2692        popularities << GeoDataPlacemark::TransportAirportTerminal;
 
 2693        popularities << GeoDataPlacemark::TransportBusStation;
 
 2694        popularities << GeoDataPlacemark::TransportBusStop;
 
 2695        popularities << GeoDataPlacemark::TransportCarShare;
 
 2696        popularities << GeoDataPlacemark::TransportFuel;
 
 2697        popularities << GeoDataPlacemark::TransportParking;
 
 2698        popularities << GeoDataPlacemark::TransportParkingSpace;
 
 2699        popularities << GeoDataPlacemark::TransportPlatform;
 
 2700        popularities << GeoDataPlacemark::TransportRentalBicycle;
 
 2701        popularities << GeoDataPlacemark::TransportRentalCar;
 
 2702        popularities << GeoDataPlacemark::TransportRentalSki;
 
 2703        popularities << GeoDataPlacemark::TransportTaxiRank;
 
 2704        popularities << GeoDataPlacemark::TransportTrainStation;
 
 2705        popularities << GeoDataPlacemark::TransportTramStop;
 
 2706        popularities << GeoDataPlacemark::TransportBicycleParking;
 
 2707        popularities << GeoDataPlacemark::TransportMotorcycleParking;
 
 2708        popularities << GeoDataPlacemark::TransportSubwayEntrance;
 
 2709        popularities << GeoDataPlacemark::AerialwayStation;
 
 2711        popularities << GeoDataPlacemark::ShopBeverages;
 
 2712        popularities << GeoDataPlacemark::ShopHifi;
 
 2713        popularities << GeoDataPlacemark::ShopSupermarket;
 
 2714        popularities << GeoDataPlacemark::ShopAlcohol;
 
 2715        popularities << GeoDataPlacemark::ShopBakery;
 
 2716        popularities << GeoDataPlacemark::ShopButcher;
 
 2717        popularities << GeoDataPlacemark::ShopConfectionery;
 
 2718        popularities << GeoDataPlacemark::ShopConvenience;
 
 2719        popularities << GeoDataPlacemark::ShopGreengrocer;
 
 2720        popularities << GeoDataPlacemark::ShopSeafood;
 
 2721        popularities << GeoDataPlacemark::ShopDepartmentStore;
 
 2722        popularities << GeoDataPlacemark::ShopKiosk;
 
 2723        popularities << GeoDataPlacemark::ShopBag;
 
 2724        popularities << GeoDataPlacemark::ShopClothes;
 
 2725        popularities << GeoDataPlacemark::ShopFashion;
 
 2726        popularities << GeoDataPlacemark::ShopJewelry;
 
 2727        popularities << GeoDataPlacemark::ShopShoes;
 
 2728        popularities << GeoDataPlacemark::ShopVarietyStore;
 
 2729        popularities << GeoDataPlacemark::ShopBeauty;
 
 2730        popularities << GeoDataPlacemark::ShopChemist;
 
 2731        popularities << GeoDataPlacemark::ShopCosmetics;
 
 2732        popularities << GeoDataPlacemark::ShopHairdresser;
 
 2733        popularities << GeoDataPlacemark::ShopOptician;
 
 2734        popularities << GeoDataPlacemark::ShopPerfumery;
 
 2735        popularities << GeoDataPlacemark::ShopDoitYourself;
 
 2736        popularities << GeoDataPlacemark::ShopFlorist;
 
 2737        popularities << GeoDataPlacemark::ShopHardware;
 
 2738        popularities << GeoDataPlacemark::ShopFurniture;
 
 2739        popularities << GeoDataPlacemark::ShopElectronics;
 
 2740        popularities << GeoDataPlacemark::ShopMobilePhone;
 
 2741        popularities << GeoDataPlacemark::ShopBicycle;
 
 2742        popularities << GeoDataPlacemark::ShopCar;
 
 2743        popularities << GeoDataPlacemark::ShopCarRepair;
 
 2744        popularities << GeoDataPlacemark::ShopCarParts;
 
 2745        popularities << GeoDataPlacemark::ShopMotorcycle;
 
 2746        popularities << GeoDataPlacemark::ShopOutdoor;
 
 2747        popularities << GeoDataPlacemark::ShopSports;
 
 2748        popularities << GeoDataPlacemark::ShopCopy;
 
 2749        popularities << GeoDataPlacemark::ShopArt;
 
 2750        popularities << GeoDataPlacemark::ShopMusicalInstrument;
 
 2751        popularities << GeoDataPlacemark::ShopPhoto;
 
 2752        popularities << GeoDataPlacemark::ShopBook;
 
 2753        popularities << GeoDataPlacemark::ShopGift;
 
 2754        popularities << GeoDataPlacemark::ShopStationery;
 
 2755        popularities << GeoDataPlacemark::ShopLaundry;
 
 2756        popularities << GeoDataPlacemark::ShopPet;
 
 2757        popularities << GeoDataPlacemark::ShopToys;
 
 2758        popularities << GeoDataPlacemark::ShopTravelAgency;
 
 2759        popularities << GeoDataPlacemark::ShopDeli;
 
 2760        popularities << GeoDataPlacemark::ShopTobacco;
 
 2761        popularities << GeoDataPlacemark::ShopTea;
 
 2762        popularities << GeoDataPlacemark::ShopComputer;
 
 2763        popularities << GeoDataPlacemark::ShopGardenCentre;
 
 2764        popularities << GeoDataPlacemark::Shop;
 
 2766        popularities << GeoDataPlacemark::LeisureGolfCourse;
 
 2767        popularities << GeoDataPlacemark::LeisureMinigolfCourse;
 
 2768        popularities << GeoDataPlacemark::LeisurePark;
 
 2769        popularities << GeoDataPlacemark::LeisurePlayground;
 
 2770        popularities << GeoDataPlacemark::LeisurePitch;
 
 2771        popularities << GeoDataPlacemark::LeisureSportsCentre;
 
 2772        popularities << GeoDataPlacemark::LeisureStadium;
 
 2773        popularities << GeoDataPlacemark::LeisureTrack;
 
 2774        popularities << GeoDataPlacemark::LeisureSwimmingPool;
 
 2776        popularities << GeoDataPlacemark::CrossingIsland;
 
 2777        popularities << GeoDataPlacemark::CrossingRailway;
 
 2778        popularities << GeoDataPlacemark::CrossingSignals;
 
 2779        popularities << GeoDataPlacemark::CrossingZebra;
 
 2780        popularities << GeoDataPlacemark::HighwayTrafficSignals;
 
 2781        popularities << GeoDataPlacemark::HighwayElevator;
 
 2783        popularities << GeoDataPlacemark::BarrierGate;
 
 2784        popularities << GeoDataPlacemark::BarrierLiftGate;
 
 2785        popularities << GeoDataPlacemark::AmenityBench;
 
 2786        popularities << GeoDataPlacemark::NaturalTree;
 
 2787        popularities << GeoDataPlacemark::NaturalCave;
 
 2788        popularities << GeoDataPlacemark::AmenityWasteBasket;
 
 2789        popularities << GeoDataPlacemark::AerialwayPylon;
 
 2790        popularities << GeoDataPlacemark::PowerTower;
 
 2792        int value = defaultValue + offset * popularities.
size();
 
 2793        for (
auto popularity : std::as_const(popularities)) {
 
 2794            StyleBuilder::Private::s_popularities[popularity] = value;
 
 2799    bool const isPrivate = placemark->osmData().containsTag(QStringLiteral(
"access"), QStringLiteral(
"private"));
 
 2800    int const base = defaultValue + (isPrivate ? 0 : offset * StyleBuilder::Private::s_popularities.
size());
 
 2801    return base + StyleBuilder::Private::s_popularities.
value(placemark->visualCategory(), defaultValue);
 
 2804int StyleBuilder::maximumZoomLevel()
 const 
 2806    return d->m_maximumZoomLevel;
 
 2809QString StyleBuilder::visualCategoryName(GeoDataPlacemark::GeoDataVisualCategory category)
 
 2813    if (visualCategoryNames.
isEmpty()) {
 
 2814        visualCategoryNames[GeoDataPlacemark::None] = 
"None";
 
 2815        visualCategoryNames[GeoDataPlacemark::Default] = 
"Default";
 
 2816        visualCategoryNames[GeoDataPlacemark::Unknown] = 
"Unknown";
 
 2817        visualCategoryNames[GeoDataPlacemark::SmallCity] = 
"SmallCity";
 
 2818        visualCategoryNames[GeoDataPlacemark::SmallCountyCapital] = 
"SmallCountyCapital";
 
 2819        visualCategoryNames[GeoDataPlacemark::SmallStateCapital] = 
"SmallStateCapital";
 
 2820        visualCategoryNames[GeoDataPlacemark::SmallNationCapital] = 
"SmallNationCapital";
 
 2821        visualCategoryNames[GeoDataPlacemark::MediumCity] = 
"MediumCity";
 
 2822        visualCategoryNames[GeoDataPlacemark::MediumCountyCapital] = 
"MediumCountyCapital";
 
 2823        visualCategoryNames[GeoDataPlacemark::MediumStateCapital] = 
"MediumStateCapital";
 
 2824        visualCategoryNames[GeoDataPlacemark::MediumNationCapital] = 
"MediumNationCapital";
 
 2825        visualCategoryNames[GeoDataPlacemark::BigCity] = 
"BigCity";
 
 2826        visualCategoryNames[GeoDataPlacemark::BigCountyCapital] = 
"BigCountyCapital";
 
 2827        visualCategoryNames[GeoDataPlacemark::BigStateCapital] = 
"BigStateCapital";
 
 2828        visualCategoryNames[GeoDataPlacemark::BigNationCapital] = 
"BigNationCapital";
 
 2829        visualCategoryNames[GeoDataPlacemark::LargeCity] = 
"LargeCity";
 
 2830        visualCategoryNames[GeoDataPlacemark::LargeCountyCapital] = 
"LargeCountyCapital";
 
 2831        visualCategoryNames[GeoDataPlacemark::LargeStateCapital] = 
"LargeStateCapital";
 
 2832        visualCategoryNames[GeoDataPlacemark::LargeNationCapital] = 
"LargeNationCapital";
 
 2833        visualCategoryNames[GeoDataPlacemark::Nation] = 
"Nation";
 
 2834        visualCategoryNames[GeoDataPlacemark::PlaceCity] = 
"PlaceCity";
 
 2835        visualCategoryNames[GeoDataPlacemark::PlaceCityCapital] = 
"PlaceCityCapital";
 
 2836        visualCategoryNames[GeoDataPlacemark::PlaceCityNationalCapital] = 
"PlaceCityNationalCapital";
 
 2837        visualCategoryNames[GeoDataPlacemark::PlaceSuburb] = 
"PlaceSuburb";
 
 2838        visualCategoryNames[GeoDataPlacemark::PlaceHamlet] = 
"PlaceHamlet";
 
 2839        visualCategoryNames[GeoDataPlacemark::PlaceLocality] = 
"PlaceLocality";
 
 2840        visualCategoryNames[GeoDataPlacemark::PlaceTown] = 
"PlaceTown";
 
 2841        visualCategoryNames[GeoDataPlacemark::PlaceTownCapital] = 
"PlaceTownCapital";
 
 2842        visualCategoryNames[GeoDataPlacemark::PlaceTownNationalCapital] = 
"PlaceTownNationalCapital";
 
 2843        visualCategoryNames[GeoDataPlacemark::PlaceVillage] = 
"PlaceVillage";
 
 2844        visualCategoryNames[GeoDataPlacemark::PlaceVillageCapital] = 
"PlaceVillageCapital";
 
 2845        visualCategoryNames[GeoDataPlacemark::PlaceVillageNationalCapital] = 
"PlaceVillageNationalCapital";
 
 2846        visualCategoryNames[GeoDataPlacemark::Mountain] = 
"Mountain";
 
 2847        visualCategoryNames[GeoDataPlacemark::Volcano] = 
"Volcano";
 
 2848        visualCategoryNames[GeoDataPlacemark::Mons] = 
"Mons";
 
 2849        visualCategoryNames[GeoDataPlacemark::Valley] = 
"Valley";
 
 2850        visualCategoryNames[GeoDataPlacemark::Continent] = 
"Continent";
 
 2851        visualCategoryNames[GeoDataPlacemark::Ocean] = 
"Ocean";
 
 2852        visualCategoryNames[GeoDataPlacemark::OtherTerrain] = 
"OtherTerrain";
 
 2853        visualCategoryNames[GeoDataPlacemark::Crater] = 
"Crater";
 
 2854        visualCategoryNames[GeoDataPlacemark::Mare] = 
"Mare";
 
 2855        visualCategoryNames[GeoDataPlacemark::GeographicPole] = 
"GeographicPole";
 
 2856        visualCategoryNames[GeoDataPlacemark::MagneticPole] = 
"MagneticPole";
 
 2857        visualCategoryNames[GeoDataPlacemark::ShipWreck] = 
"ShipWreck";
 
 2858        visualCategoryNames[GeoDataPlacemark::AirPort] = 
"AirPort";
 
 2859        visualCategoryNames[GeoDataPlacemark::Observatory] = 
"Observatory";
 
 2860        visualCategoryNames[GeoDataPlacemark::MilitaryDangerArea] = 
"MilitaryDangerArea";
 
 2861        visualCategoryNames[GeoDataPlacemark::OsmSite] = 
"OsmSite";
 
 2862        visualCategoryNames[GeoDataPlacemark::Coordinate] = 
"Coordinate";
 
 2863        visualCategoryNames[GeoDataPlacemark::MannedLandingSite] = 
"MannedLandingSite";
 
 2864        visualCategoryNames[GeoDataPlacemark::RoboticRover] = 
"RoboticRover";
 
 2865        visualCategoryNames[GeoDataPlacemark::UnmannedSoftLandingSite] = 
"UnmannedSoftLandingSite";
 
 2866        visualCategoryNames[GeoDataPlacemark::UnmannedHardLandingSite] = 
"UnmannedHardLandingSite";
 
 2867        visualCategoryNames[GeoDataPlacemark::Bookmark] = 
"Bookmark";
 
 2868        visualCategoryNames[GeoDataPlacemark::NaturalWater] = 
"NaturalWater";
 
 2869        visualCategoryNames[GeoDataPlacemark::NaturalReef] = 
"NaturalReef";
 
 2870        visualCategoryNames[GeoDataPlacemark::NaturalWood] = 
"NaturalWood";
 
 2871        visualCategoryNames[GeoDataPlacemark::NaturalBeach] = 
"NaturalBeach";
 
 2872        visualCategoryNames[GeoDataPlacemark::NaturalWetland] = 
"NaturalWetland";
 
 2873        visualCategoryNames[GeoDataPlacemark::NaturalGlacier] = 
"NaturalGlacier";
 
 2874        visualCategoryNames[GeoDataPlacemark::NaturalIceShelf] = 
"NaturalIceShelf";
 
 2875        visualCategoryNames[GeoDataPlacemark::NaturalScrub] = 
"NaturalScrub";
 
 2876        visualCategoryNames[GeoDataPlacemark::NaturalCliff] = 
"NaturalCliff";
 
 2877        visualCategoryNames[GeoDataPlacemark::NaturalHeath] = 
"NaturalHeath";
 
 2878        visualCategoryNames[GeoDataPlacemark::HighwayTrafficSignals] = 
"HighwayTrafficSignals";
 
 2879        visualCategoryNames[GeoDataPlacemark::HighwaySteps] = 
"HighwaySteps";
 
 2880        visualCategoryNames[GeoDataPlacemark::HighwayUnknown] = 
"HighwayUnknown";
 
 2881        visualCategoryNames[GeoDataPlacemark::HighwayPath] = 
"HighwayPath";
 
 2882        visualCategoryNames[GeoDataPlacemark::HighwayFootway] = 
"HighwayFootway";
 
 2883        visualCategoryNames[GeoDataPlacemark::HighwayTrack] = 
"HighwayTrack";
 
 2884        visualCategoryNames[GeoDataPlacemark::HighwayPedestrian] = 
"HighwayPedestrian";
 
 2885        visualCategoryNames[GeoDataPlacemark::HighwayCycleway] = 
"HighwayCycleway";
 
 2886        visualCategoryNames[GeoDataPlacemark::HighwayService] = 
"HighwayService";
 
 2887        visualCategoryNames[GeoDataPlacemark::HighwayRoad] = 
"HighwayRoad";
 
 2888        visualCategoryNames[GeoDataPlacemark::HighwayResidential] = 
"HighwayResidential";
 
 2889        visualCategoryNames[GeoDataPlacemark::HighwayLivingStreet] = 
"HighwayLivingStreet";
 
 2890        visualCategoryNames[GeoDataPlacemark::HighwayUnclassified] = 
"HighwayUnclassified";
 
 2891        visualCategoryNames[GeoDataPlacemark::HighwayTertiaryLink] = 
"HighwayTertiaryLink";
 
 2892        visualCategoryNames[GeoDataPlacemark::HighwayTertiary] = 
"HighwayTertiary";
 
 2893        visualCategoryNames[GeoDataPlacemark::HighwaySecondaryLink] = 
"HighwaySecondaryLink";
 
 2894        visualCategoryNames[GeoDataPlacemark::HighwaySecondary] = 
"HighwaySecondary";
 
 2895        visualCategoryNames[GeoDataPlacemark::HighwayPrimaryLink] = 
"HighwayPrimaryLink";
 
 2896        visualCategoryNames[GeoDataPlacemark::HighwayPrimary] = 
"HighwayPrimary";
 
 2897        visualCategoryNames[GeoDataPlacemark::HighwayRaceway] = 
"HighwayRaceway";
 
 2898        visualCategoryNames[GeoDataPlacemark::HighwayTrunkLink] = 
"HighwayTrunkLink";
 
 2899        visualCategoryNames[GeoDataPlacemark::HighwayTrunk] = 
"HighwayTrunk";
 
 2900        visualCategoryNames[GeoDataPlacemark::HighwayMotorwayLink] = 
"HighwayMotorwayLink";
 
 2901        visualCategoryNames[GeoDataPlacemark::HighwayMotorway] = 
"HighwayMotorway";
 
 2902        visualCategoryNames[GeoDataPlacemark::HighwayCorridor] = 
"HighwayCorridor";
 
 2903        visualCategoryNames[GeoDataPlacemark::HighwayElevator] = 
"HighwayElevator";
 
 2904        visualCategoryNames[GeoDataPlacemark::Building] = 
"Building";
 
 2905        visualCategoryNames[GeoDataPlacemark::AccomodationCamping] = 
"AccomodationCamping";
 
 2906        visualCategoryNames[GeoDataPlacemark::AccomodationHostel] = 
"AccomodationHostel";
 
 2907        visualCategoryNames[GeoDataPlacemark::AccomodationHotel] = 
"AccomodationHotel";
 
 2908        visualCategoryNames[GeoDataPlacemark::AccomodationMotel] = 
"AccomodationMotel";
 
 2909        visualCategoryNames[GeoDataPlacemark::AccomodationYouthHostel] = 
"AccomodationYouthHostel";
 
 2910        visualCategoryNames[GeoDataPlacemark::AccomodationGuestHouse] = 
"AccomodationGuestHouse";
 
 2911        visualCategoryNames[GeoDataPlacemark::AmenityLibrary] = 
"AmenityLibrary";
 
 2912        visualCategoryNames[GeoDataPlacemark::AmenityKindergarten] = 
"AmenityKindergarten";
 
 2913        visualCategoryNames[GeoDataPlacemark::EducationCollege] = 
"EducationCollege";
 
 2914        visualCategoryNames[GeoDataPlacemark::EducationSchool] = 
"EducationSchool";
 
 2915        visualCategoryNames[GeoDataPlacemark::EducationUniversity] = 
"EducationUniversity";
 
 2916        visualCategoryNames[GeoDataPlacemark::FoodBar] = 
"FoodBar";
 
 2917        visualCategoryNames[GeoDataPlacemark::FoodBiergarten] = 
"FoodBiergarten";
 
 2918        visualCategoryNames[GeoDataPlacemark::FoodCafe] = 
"FoodCafe";
 
 2919        visualCategoryNames[GeoDataPlacemark::FoodFastFood] = 
"FoodFastFood";
 
 2920        visualCategoryNames[GeoDataPlacemark::FoodPub] = 
"FoodPub";
 
 2921        visualCategoryNames[GeoDataPlacemark::FoodRestaurant] = 
"FoodRestaurant";
 
 2922        visualCategoryNames[GeoDataPlacemark::HealthDentist] = 
"HealthDentist";
 
 2923        visualCategoryNames[GeoDataPlacemark::HealthDoctors] = 
"HealthDoctors";
 
 2924        visualCategoryNames[GeoDataPlacemark::HealthHospital] = 
"HealthHospital";
 
 2925        visualCategoryNames[GeoDataPlacemark::HealthPharmacy] = 
"HealthPharmacy";
 
 2926        visualCategoryNames[GeoDataPlacemark::HealthVeterinary] = 
"HealthVeterinary";
 
 2927        visualCategoryNames[GeoDataPlacemark::MoneyAtm] = 
"MoneyAtm";
 
 2928        visualCategoryNames[GeoDataPlacemark::MoneyBank] = 
"MoneyBank";
 
 2929        visualCategoryNames[GeoDataPlacemark::AmenityEmbassy] = 
"AmenityEmbassy";
 
 2930        visualCategoryNames[GeoDataPlacemark::AmenityEmergencyPhone] = 
"AmenityEmergencyPhone";
 
 2931        visualCategoryNames[GeoDataPlacemark::AmenityMountainRescue] = 
"AmenityMountainRescue";
 
 2932        visualCategoryNames[GeoDataPlacemark::LeisureWaterPark] = 
"LeisureWaterPark";
 
 2933        visualCategoryNames[GeoDataPlacemark::AmenityCommunityCentre] = 
"AmenityCommunityCentre";
 
 2934        visualCategoryNames[GeoDataPlacemark::AmenityFountain] = 
"AmenityFountain";
 
 2935        visualCategoryNames[GeoDataPlacemark::AmenityNightClub] = 
"AmenityNightClub";
 
 2936        visualCategoryNames[GeoDataPlacemark::AmenityBench] = 
"AmenityBench";
 
 2937        visualCategoryNames[GeoDataPlacemark::AmenityCourtHouse] = 
"AmenityCourtHouse";
 
 2938        visualCategoryNames[GeoDataPlacemark::AmenityFireStation] = 
"AmenityFireStation";
 
 2939        visualCategoryNames[GeoDataPlacemark::AmenityHuntingStand] = 
"AmenityHuntingStand";
 
 2940        visualCategoryNames[GeoDataPlacemark::AmenityPolice] = 
"AmenityPolice";
 
 2941        visualCategoryNames[GeoDataPlacemark::AmenityPostBox] = 
"AmenityPostBox";
 
 2942        visualCategoryNames[GeoDataPlacemark::AmenityPostOffice] = 
"AmenityPostOffice";
 
 2943        visualCategoryNames[GeoDataPlacemark::AmenityPrison] = 
"AmenityPrison";
 
 2944        visualCategoryNames[GeoDataPlacemark::AmenityRecycling] = 
"AmenityRecycling";
 
 2945        visualCategoryNames[GeoDataPlacemark::AmenityShelter] = 
"AmenityShelter";
 
 2946        visualCategoryNames[GeoDataPlacemark::AmenityTelephone] = 
"AmenityTelephone";
 
 2947        visualCategoryNames[GeoDataPlacemark::AmenityToilets] = 
"AmenityToilets";
 
 2948        visualCategoryNames[GeoDataPlacemark::AmenityTownHall] = 
"AmenityTownHall";
 
 2949        visualCategoryNames[GeoDataPlacemark::AmenityWasteBasket] = 
"AmenityWasteBasket";
 
 2950        visualCategoryNames[GeoDataPlacemark::AmenityDrinkingWater] = 
"AmenityDrinkingWater";
 
 2951        visualCategoryNames[GeoDataPlacemark::AmenityGraveyard] = 
"AmenityGraveyard";
 
 2952        visualCategoryNames[GeoDataPlacemark::AmenityChargingStation] = 
"ChargingStation";
 
 2953        visualCategoryNames[GeoDataPlacemark::AmenityCarWash] = 
"CarWash";
 
 2954        visualCategoryNames[GeoDataPlacemark::AmenitySocialFacility] = 
"SocialFacility";
 
 2955        visualCategoryNames[GeoDataPlacemark::BarrierCityWall] = 
"BarrierCityWall";
 
 2956        visualCategoryNames[GeoDataPlacemark::BarrierGate] = 
"BarrierGate";
 
 2957        visualCategoryNames[GeoDataPlacemark::BarrierLiftGate] = 
"BarrierLiftGate";
 
 2958        visualCategoryNames[GeoDataPlacemark::BarrierWall] = 
"BarrierWall";
 
 2959        visualCategoryNames[GeoDataPlacemark::NaturalVolcano] = 
"NaturalVolcano";
 
 2960        visualCategoryNames[GeoDataPlacemark::NaturalPeak] = 
"NaturalPeak";
 
 2961        visualCategoryNames[GeoDataPlacemark::NaturalTree] = 
"NaturalTree";
 
 2962        visualCategoryNames[GeoDataPlacemark::NaturalCave] = 
"NaturalCave";
 
 2963        visualCategoryNames[GeoDataPlacemark::ShopBeverages] = 
"ShopBeverages";
 
 2964        visualCategoryNames[GeoDataPlacemark::ShopHifi] = 
"ShopHifi";
 
 2965        visualCategoryNames[GeoDataPlacemark::ShopSupermarket] = 
"ShopSupermarket";
 
 2966        visualCategoryNames[GeoDataPlacemark::ShopAlcohol] = 
"ShopAlcohol";
 
 2967        visualCategoryNames[GeoDataPlacemark::ShopBakery] = 
"ShopBakery";
 
 2968        visualCategoryNames[GeoDataPlacemark::ShopButcher] = 
"ShopButcher";
 
 2969        visualCategoryNames[GeoDataPlacemark::ShopConfectionery] = 
"ShopConfectionery";
 
 2970        visualCategoryNames[GeoDataPlacemark::ShopConvenience] = 
"ShopConvenience";
 
 2971        visualCategoryNames[GeoDataPlacemark::ShopGreengrocer] = 
"ShopGreengrocer";
 
 2972        visualCategoryNames[GeoDataPlacemark::ShopSeafood] = 
"ShopSeafood";
 
 2973        visualCategoryNames[GeoDataPlacemark::ShopDepartmentStore] = 
"ShopDepartmentStore";
 
 2974        visualCategoryNames[GeoDataPlacemark::ShopKiosk] = 
"ShopKiosk";
 
 2975        visualCategoryNames[GeoDataPlacemark::ShopBag] = 
"ShopBag";
 
 2976        visualCategoryNames[GeoDataPlacemark::ShopClothes] = 
"ShopClothes";
 
 2977        visualCategoryNames[GeoDataPlacemark::ShopFashion] = 
"ShopFashion";
 
 2978        visualCategoryNames[GeoDataPlacemark::ShopJewelry] = 
"ShopJewelry";
 
 2979        visualCategoryNames[GeoDataPlacemark::ShopShoes] = 
"ShopShoes";
 
 2980        visualCategoryNames[GeoDataPlacemark::ShopVarietyStore] = 
"ShopVarietyStore";
 
 2981        visualCategoryNames[GeoDataPlacemark::ShopBeauty] = 
"ShopBeauty";
 
 2982        visualCategoryNames[GeoDataPlacemark::ShopChemist] = 
"ShopChemist";
 
 2983        visualCategoryNames[GeoDataPlacemark::ShopCosmetics] = 
"ShopCosmetics";
 
 2984        visualCategoryNames[GeoDataPlacemark::ShopHairdresser] = 
"ShopHairdresser";
 
 2985        visualCategoryNames[GeoDataPlacemark::ShopOptician] = 
"ShopOptician";
 
 2986        visualCategoryNames[GeoDataPlacemark::ShopPerfumery] = 
"ShopPerfumery";
 
 2987        visualCategoryNames[GeoDataPlacemark::ShopDoitYourself] = 
"ShopDoitYourself";
 
 2988        visualCategoryNames[GeoDataPlacemark::ShopFlorist] = 
"ShopFlorist";
 
 2989        visualCategoryNames[GeoDataPlacemark::ShopHardware] = 
"ShopHardware";
 
 2990        visualCategoryNames[GeoDataPlacemark::ShopFurniture] = 
"ShopFurniture";
 
 2991        visualCategoryNames[GeoDataPlacemark::ShopElectronics] = 
"ShopElectronics";
 
 2992        visualCategoryNames[GeoDataPlacemark::ShopMobilePhone] = 
"ShopMobilePhone";
 
 2993        visualCategoryNames[GeoDataPlacemark::ShopBicycle] = 
"ShopBicycle";
 
 2994        visualCategoryNames[GeoDataPlacemark::ShopCar] = 
"ShopCar";
 
 2995        visualCategoryNames[GeoDataPlacemark::ShopCarRepair] = 
"ShopCarRepair";
 
 2996        visualCategoryNames[GeoDataPlacemark::ShopCarParts] = 
"ShopCarParts";
 
 2997        visualCategoryNames[GeoDataPlacemark::ShopMotorcycle] = 
"ShopMotorcycle";
 
 2998        visualCategoryNames[GeoDataPlacemark::ShopOutdoor] = 
"ShopOutdoor";
 
 2999        visualCategoryNames[GeoDataPlacemark::ShopSports] = 
"ShopSports";
 
 3000        visualCategoryNames[GeoDataPlacemark::ShopCopy] = 
"ShopCopy";
 
 3001        visualCategoryNames[GeoDataPlacemark::ShopArt] = 
"ShopArt";
 
 3002        visualCategoryNames[GeoDataPlacemark::ShopMusicalInstrument] = 
"ShopMusicalInstrument";
 
 3003        visualCategoryNames[GeoDataPlacemark::ShopPhoto] = 
"ShopPhoto";
 
 3004        visualCategoryNames[GeoDataPlacemark::ShopBook] = 
"ShopBook";
 
 3005        visualCategoryNames[GeoDataPlacemark::ShopGift] = 
"ShopGift";
 
 3006        visualCategoryNames[GeoDataPlacemark::ShopStationery] = 
"ShopStationery";
 
 3007        visualCategoryNames[GeoDataPlacemark::ShopLaundry] = 
"ShopLaundry";
 
 3008        visualCategoryNames[GeoDataPlacemark::ShopPet] = 
"ShopPet";
 
 3009        visualCategoryNames[GeoDataPlacemark::ShopToys] = 
"ShopToys";
 
 3010        visualCategoryNames[GeoDataPlacemark::ShopTravelAgency] = 
"ShopTravelAgency";
 
 3011        visualCategoryNames[GeoDataPlacemark::ShopDeli] = 
"ShopDeli";
 
 3012        visualCategoryNames[GeoDataPlacemark::ShopTobacco] = 
"ShopTobacco";
 
 3013        visualCategoryNames[GeoDataPlacemark::ShopTea] = 
"ShopTea";
 
 3014        visualCategoryNames[GeoDataPlacemark::ShopComputer] = 
"ShopComputer";
 
 3015        visualCategoryNames[GeoDataPlacemark::ShopGardenCentre] = 
"ShopGardenCentre";
 
 3016        visualCategoryNames[GeoDataPlacemark::Shop] = 
"Shop";
 
 3017        visualCategoryNames[GeoDataPlacemark::ManmadeBridge] = 
"ManmadeBridge";
 
 3018        visualCategoryNames[GeoDataPlacemark::ManmadeLighthouse] = 
"ManmadeLighthouse";
 
 3019        visualCategoryNames[GeoDataPlacemark::ManmadePier] = 
"ManmadePier";
 
 3020        visualCategoryNames[GeoDataPlacemark::ManmadeWaterTower] = 
"ManmadeWaterTower";
 
 3021        visualCategoryNames[GeoDataPlacemark::ManmadeWindMill] = 
"ManmadeWindMill";
 
 3022        visualCategoryNames[GeoDataPlacemark::ManmadeCommunicationsTower] = 
"ManmadeCommunicationsTower";
 
 3023        visualCategoryNames[GeoDataPlacemark::TourismAttraction] = 
"TouristAttraction";
 
 3024        visualCategoryNames[GeoDataPlacemark::TourismArtwork] = 
"TouristArtwork";
 
 3025        visualCategoryNames[GeoDataPlacemark::HistoricArchaeologicalSite] = 
"HistoricArchaeologicalSite";
 
 3026        visualCategoryNames[GeoDataPlacemark::HistoricCastle] = 
"HistoricCastle";
 
 3027        visualCategoryNames[GeoDataPlacemark::HistoricMemorial] = 
"HistoricMemorial";
 
 3028        visualCategoryNames[GeoDataPlacemark::HistoricMonument] = 
"HistoricMonument";
 
 3029        visualCategoryNames[GeoDataPlacemark::AmenityCinema] = 
"TouristCinema";
 
 3030        visualCategoryNames[GeoDataPlacemark::TourismInformation] = 
"TouristInformation";
 
 3031        visualCategoryNames[GeoDataPlacemark::TourismMuseum] = 
"TouristMuseum";
 
 3032        visualCategoryNames[GeoDataPlacemark::HistoricRuins] = 
"TouristRuin";
 
 3033        visualCategoryNames[GeoDataPlacemark::AmenityTheatre] = 
"TouristTheatre";
 
 3034        visualCategoryNames[GeoDataPlacemark::TourismThemePark] = 
"TouristThemePark";
 
 3035        visualCategoryNames[GeoDataPlacemark::TourismViewPoint] = 
"TouristViewPoint";
 
 3036        visualCategoryNames[GeoDataPlacemark::TourismZoo] = 
"TouristZoo";
 
 3037        visualCategoryNames[GeoDataPlacemark::TourismAlpineHut] = 
"TouristAlpineHut";
 
 3038        visualCategoryNames[GeoDataPlacemark::TourismWildernessHut] = 
"TouristWildernessHut";
 
 3039        visualCategoryNames[GeoDataPlacemark::TransportAerodrome] = 
"TransportAerodrome";
 
 3040        visualCategoryNames[GeoDataPlacemark::TransportHelipad] = 
"TransportHelipad";
 
 3041        visualCategoryNames[GeoDataPlacemark::TransportAirportTerminal] = 
"TransportAirportTerminal";
 
 3042        visualCategoryNames[GeoDataPlacemark::TransportAirportGate] = 
"TransportAirportGate";
 
 3043        visualCategoryNames[GeoDataPlacemark::TransportAirportRunway] = 
"TransportAirportRunway";
 
 3044        visualCategoryNames[GeoDataPlacemark::TransportAirportTaxiway] = 
"TransportAirportTaxiway";
 
 3045        visualCategoryNames[GeoDataPlacemark::TransportAirportApron] = 
"TransportAirportApron";
 
 3046        visualCategoryNames[GeoDataPlacemark::TransportBusStation] = 
"TransportBusStation";
 
 3047        visualCategoryNames[GeoDataPlacemark::TransportBusStop] = 
"TransportBusStop";
 
 3048        visualCategoryNames[GeoDataPlacemark::TransportCarShare] = 
"TransportCarShare";
 
 3049        visualCategoryNames[GeoDataPlacemark::TransportFuel] = 
"TransportFuel";
 
 3050        visualCategoryNames[GeoDataPlacemark::TransportParking] = 
"TransportParking";
 
 3051        visualCategoryNames[GeoDataPlacemark::TransportParkingSpace] = 
"TransportParkingSpace";
 
 3052        visualCategoryNames[GeoDataPlacemark::TransportPlatform] = 
"TransportPlatform";
 
 3053        visualCategoryNames[GeoDataPlacemark::TransportRentalBicycle] = 
"TransportRentalBicycle";
 
 3054        visualCategoryNames[GeoDataPlacemark::TransportRentalCar] = 
"TransportRentalCar";
 
 3055        visualCategoryNames[GeoDataPlacemark::TransportRentalSki] = 
"TransportRentalSki";
 
 3056        visualCategoryNames[GeoDataPlacemark::TransportTaxiRank] = 
"TransportTaxiRank";
 
 3057        visualCategoryNames[GeoDataPlacemark::TransportTrainStation] = 
"TransportTrainStation";
 
 3058        visualCategoryNames[GeoDataPlacemark::TransportTramStop] = 
"TransportTramStop";
 
 3059        visualCategoryNames[GeoDataPlacemark::TransportSpeedCamera] = 
"TransportSpeedCamera";
 
 3060        visualCategoryNames[GeoDataPlacemark::TransportBicycleParking] = 
"TransportBicycleParking";
 
 3061        visualCategoryNames[GeoDataPlacemark::TransportMotorcycleParking] = 
"TransportMotorcycleParking";
 
 3062        visualCategoryNames[GeoDataPlacemark::TransportSubwayEntrance] = 
"TransportSubwayEntrance";
 
 3063        visualCategoryNames[GeoDataPlacemark::ReligionPlaceOfWorship] = 
"ReligionPlaceOfWorship";
 
 3064        visualCategoryNames[GeoDataPlacemark::ReligionBahai] = 
"ReligionBahai";
 
 3065        visualCategoryNames[GeoDataPlacemark::ReligionBuddhist] = 
"ReligionBuddhist";
 
 3066        visualCategoryNames[GeoDataPlacemark::ReligionChristian] = 
"ReligionChristian";
 
 3067        visualCategoryNames[GeoDataPlacemark::ReligionMuslim] = 
"ReligionMuslim";
 
 3068        visualCategoryNames[GeoDataPlacemark::ReligionHindu] = 
"ReligionHindu";
 
 3069        visualCategoryNames[GeoDataPlacemark::ReligionJain] = 
"ReligionJain";
 
 3070        visualCategoryNames[GeoDataPlacemark::ReligionJewish] = 
"ReligionJewish";
 
 3071        visualCategoryNames[GeoDataPlacemark::ReligionShinto] = 
"ReligionShinto";
 
 3072        visualCategoryNames[GeoDataPlacemark::ReligionSikh] = 
"ReligionSikh";
 
 3073        visualCategoryNames[GeoDataPlacemark::ReligionTaoist] = 
"ReligionTaoist";
 
 3074        visualCategoryNames[GeoDataPlacemark::LeisureGolfCourse] = 
"LeisureGolfCourse";
 
 3075        visualCategoryNames[GeoDataPlacemark::LeisureMarina] = 
"LeisureMarina";
 
 3076        visualCategoryNames[GeoDataPlacemark::LeisurePark] = 
"LeisurePark";
 
 3077        visualCategoryNames[GeoDataPlacemark::LeisurePlayground] = 
"LeisurePlayground";
 
 3078        visualCategoryNames[GeoDataPlacemark::LeisurePitch] = 
"LeisurePitch";
 
 3079        visualCategoryNames[GeoDataPlacemark::LeisureSportsCentre] = 
"LeisureSportsCentre";
 
 3080        visualCategoryNames[GeoDataPlacemark::LeisureStadium] = 
"LeisureStadium";
 
 3081        visualCategoryNames[GeoDataPlacemark::LeisureTrack] = 
"LeisureTrack";
 
 3082        visualCategoryNames[GeoDataPlacemark::LeisureSwimmingPool] = 
"LeisureSwimmingPool";
 
 3083        visualCategoryNames[GeoDataPlacemark::LeisureMinigolfCourse] = 
"LeisureMinigolfCourse";
 
 3084        visualCategoryNames[GeoDataPlacemark::LanduseAllotments] = 
"LanduseAllotments";
 
 3085        visualCategoryNames[GeoDataPlacemark::LanduseBasin] = 
"LanduseBasin";
 
 3086        visualCategoryNames[GeoDataPlacemark::LanduseCemetery] = 
"LanduseCemetery";
 
 3087        visualCategoryNames[GeoDataPlacemark::LanduseCommercial] = 
"LanduseCommercial";
 
 3088        visualCategoryNames[GeoDataPlacemark::LanduseConstruction] = 
"LanduseConstruction";
 
 3089        visualCategoryNames[GeoDataPlacemark::LanduseFarmland] = 
"LanduseFarmland";
 
 3090        visualCategoryNames[GeoDataPlacemark::LanduseFarmyard] = 
"LanduseFarmyard";
 
 3091        visualCategoryNames[GeoDataPlacemark::LanduseGarages] = 
"LanduseGarages";
 
 3092        visualCategoryNames[GeoDataPlacemark::LanduseGrass] = 
"LanduseGrass";
 
 3093        visualCategoryNames[GeoDataPlacemark::LanduseIndustrial] = 
"LanduseIndustrial";
 
 3094        visualCategoryNames[GeoDataPlacemark::LanduseLandfill] = 
"LanduseLandfill";
 
 3095        visualCategoryNames[GeoDataPlacemark::LanduseMeadow] = 
"LanduseMeadow";
 
 3096        visualCategoryNames[GeoDataPlacemark::LanduseMilitary] = 
"LanduseMilitary";
 
 3097        visualCategoryNames[GeoDataPlacemark::LanduseQuarry] = 
"LanduseQuarry";
 
 3098        visualCategoryNames[GeoDataPlacemark::LanduseRailway] = 
"LanduseRailway";
 
 3099        visualCategoryNames[GeoDataPlacemark::LanduseReservoir] = 
"LanduseReservoir";
 
 3100        visualCategoryNames[GeoDataPlacemark::LanduseResidential] = 
"LanduseResidential";
 
 3101        visualCategoryNames[GeoDataPlacemark::LanduseRetail] = 
"LanduseRetail";
 
 3102        visualCategoryNames[GeoDataPlacemark::LanduseOrchard] = 
"LanduseOrchard";
 
 3103        visualCategoryNames[GeoDataPlacemark::LanduseVineyard] = 
"LanduseVineyard";
 
 3104        visualCategoryNames[GeoDataPlacemark::RailwayRail] = 
"RailwayRail";
 
 3105        visualCategoryNames[GeoDataPlacemark::RailwayNarrowGauge] = 
"RailwayNarrowGauge";
 
 3106        visualCategoryNames[GeoDataPlacemark::RailwayTram] = 
"RailwayTram";
 
 3107        visualCategoryNames[GeoDataPlacemark::RailwayLightRail] = 
"RailwayLightRail";
 
 3108        visualCategoryNames[GeoDataPlacemark::RailwayAbandoned] = 
"RailwayAbandoned";
 
 3109        visualCategoryNames[GeoDataPlacemark::RailwaySubway] = 
"RailwaySubway";
 
 3110        visualCategoryNames[GeoDataPlacemark::RailwayPreserved] = 
"RailwayPreserved";
 
 3111        visualCategoryNames[GeoDataPlacemark::RailwayMiniature] = 
"RailwayMiniature";
 
 3112        visualCategoryNames[GeoDataPlacemark::RailwayConstruction] = 
"RailwayConstruction";
 
 3113        visualCategoryNames[GeoDataPlacemark::RailwayMonorail] = 
"RailwayMonorail";
 
 3114        visualCategoryNames[GeoDataPlacemark::RailwayFunicular] = 
"RailwayFunicular";
 
 3115        visualCategoryNames[GeoDataPlacemark::PowerTower] = 
"PowerTower";
 
 3116        visualCategoryNames[GeoDataPlacemark::AerialwayStation] = 
"AerialwayStation";
 
 3117        visualCategoryNames[GeoDataPlacemark::AerialwayPylon] = 
"AerialwayPylon";
 
 3118        visualCategoryNames[GeoDataPlacemark::AerialwayCableCar] = 
"AerialwayCableCar";
 
 3119        visualCategoryNames[GeoDataPlacemark::AerialwayGondola] = 
"AerialwayGondola";
 
 3120        visualCategoryNames[GeoDataPlacemark::AerialwayChairLift] = 
"AerialwayChairLift";
 
 3121        visualCategoryNames[GeoDataPlacemark::AerialwayMixedLift] = 
"AerialwayMixedLift";
 
 3122        visualCategoryNames[GeoDataPlacemark::AerialwayDragLift] = 
"AerialwayDragLift";
 
 3123        visualCategoryNames[GeoDataPlacemark::AerialwayTBar] = 
"AerialwayTBar";
 
 3124        visualCategoryNames[GeoDataPlacemark::AerialwayJBar] = 
"AerialwayJBar";
 
 3125        visualCategoryNames[GeoDataPlacemark::AerialwayPlatter] = 
"AerialwayPlatter";
 
 3126        visualCategoryNames[GeoDataPlacemark::AerialwayRopeTow] = 
"AerialwayRopeTow";
 
 3127        visualCategoryNames[GeoDataPlacemark::AerialwayMagicCarpet] = 
"AerialwayMagicCarpet";
 
 3128        visualCategoryNames[GeoDataPlacemark::AerialwayZipLine] = 
"AerialwayZipLine";
 
 3129        visualCategoryNames[GeoDataPlacemark::AerialwayGoods] = 
"AerialwayGoods";
 
 3130        visualCategoryNames[GeoDataPlacemark::PisteDownhill] = 
"PisteDownhill";
 
 3131        visualCategoryNames[GeoDataPlacemark::PisteNordic] = 
"PisteNordic";
 
 3132        visualCategoryNames[GeoDataPlacemark::PisteSkitour] = 
"PisteSkitour";
 
 3133        visualCategoryNames[GeoDataPlacemark::PisteSled] = 
"PisteSled";
 
 3134        visualCategoryNames[GeoDataPlacemark::PisteHike] = 
"PisteHike";
 
 3135        visualCategoryNames[GeoDataPlacemark::PisteSleigh] = 
"PisteSleigh";
 
 3136        visualCategoryNames[GeoDataPlacemark::PisteIceSkate] = 
"PisteIceSkate";
 
 3137        visualCategoryNames[GeoDataPlacemark::PisteSnowPark] = 
"PisteSnowPark";
 
 3138        visualCategoryNames[GeoDataPlacemark::PistePlayground] = 
"PistePlayground";
 
 3139        visualCategoryNames[GeoDataPlacemark::PisteSkiJump] = 
"PisteSkiJump";
 
 3140        visualCategoryNames[GeoDataPlacemark::Satellite] = 
"Satellite";
 
 3141        visualCategoryNames[GeoDataPlacemark::Landmass] = 
"Landmass";
 
 3142        visualCategoryNames[GeoDataPlacemark::UrbanArea] = 
"UrbanArea";
 
 3143        visualCategoryNames[GeoDataPlacemark::InternationalDateLine] = 
"InternationalDateLine";
 
 3144        visualCategoryNames[GeoDataPlacemark::Bathymetry] = 
"Bathymetry";
 
 3145        visualCategoryNames[GeoDataPlacemark::AdminLevel1] = 
"AdminLevel1";
 
 3146        visualCategoryNames[GeoDataPlacemark::AdminLevel2] = 
"AdminLevel2";
 
 3147        visualCategoryNames[GeoDataPlacemark::AdminLevel3] = 
"AdminLevel3";
 
 3148        visualCategoryNames[GeoDataPlacemark::AdminLevel4] = 
"AdminLevel4";
 
 3149        visualCategoryNames[GeoDataPlacemark::AdminLevel5] = 
"AdminLevel5";
 
 3150        visualCategoryNames[GeoDataPlacemark::AdminLevel6] = 
"AdminLevel6";
 
 3151        visualCategoryNames[GeoDataPlacemark::AdminLevel7] = 
"AdminLevel7";
 
 3152        visualCategoryNames[GeoDataPlacemark::AdminLevel8] = 
"AdminLevel8";
 
 3153        visualCategoryNames[GeoDataPlacemark::AdminLevel9] = 
"AdminLevel9";
 
 3154        visualCategoryNames[GeoDataPlacemark::AdminLevel10] = 
"AdminLevel10";
 
 3155        visualCategoryNames[GeoDataPlacemark::AdminLevel11] = 
"AdminLevel11";
 
 3156        visualCategoryNames[GeoDataPlacemark::BoundaryMaritime] = 
"BoundaryMaritime";
 
 3157        visualCategoryNames[GeoDataPlacemark::WaterwayCanal] = 
"WaterwayCanal";
 
 3158        visualCategoryNames[GeoDataPlacemark::WaterwayDitch] = 
"WaterwayDitch";
 
 3159        visualCategoryNames[GeoDataPlacemark::WaterwayDrain] = 
"WaterwayDrain";
 
 3160        visualCategoryNames[GeoDataPlacemark::WaterwayStream] = 
"WaterwayStream";
 
 3161        visualCategoryNames[GeoDataPlacemark::WaterwayRiver] = 
"WaterwayRiver";
 
 3162        visualCategoryNames[GeoDataPlacemark::WaterwayWeir] = 
"WaterwayWeir";
 
 3163        visualCategoryNames[GeoDataPlacemark::CrossingIsland] = 
"CrossingIsland";
 
 3164        visualCategoryNames[GeoDataPlacemark::CrossingRailway] = 
"CrossingRailway";
 
 3165        visualCategoryNames[GeoDataPlacemark::CrossingSignals] = 
"CrossingSignals";
 
 3166        visualCategoryNames[GeoDataPlacemark::CrossingZebra] = 
"CrossingZebra";
 
 3167        visualCategoryNames[GeoDataPlacemark::IndoorDoor] = 
"IndoorDoor";
 
 3168        visualCategoryNames[GeoDataPlacemark::IndoorWall] = 
"IndoorWall";
 
 3169        visualCategoryNames[GeoDataPlacemark::IndoorRoom] = 
"IndoorRoom";
 
 3170        visualCategoryNames[GeoDataPlacemark::LastIndex] = 
"LastIndex";
 
 3173    Q_ASSERT(visualCategoryNames.
contains(category));
 
 3174    return visualCategoryNames[
category];
 
 3179    return Private::effectColor(color);
 
 3182StyleEffect StyleBuilder::styleEffect()
 
 3184    return Private::s_styleEffect;
 
 3187void StyleBuilder::setStyleEffect(StyleEffect effect)
 
 3189    Private::s_styleEffect = effect;
 
 3194    Private::initializeOsmVisualCategories();
 
 3195    return Private::s_visualCategories;
 
 3225                                                           << 
"bathroom_furnishing" 
 3229                                                           << 
"garden_furniture" 
 3241                                                           << 
"interior_decoration" 
 3269                                                           << 
"funeral_directors" 
 3278    return osmShopValues;
 
 3283    static const QString building = QStringLiteral(
"building");
 
 3286        << OsmTag(building, 
"yes") << OsmTag(building, 
"house") << OsmTag(building, 
"residential") << OsmTag(building, 
"garage")
 
 3287        << OsmTag(building, 
"apartments") << OsmTag(building, 
"hut") << OsmTag(building, 
"industrial") << OsmTag(building, 
"detached")
 
 3288        << OsmTag(building, 
"roof") << OsmTag(building, 
"garages") << OsmTag(building, 
"commercial") << OsmTag(building, 
"terrace") << OsmTag(building, 
"shed")
 
 3289        << OsmTag(building, 
"school") << OsmTag(building, 
"retail") << OsmTag(building, 
"farm_auxiliary") << OsmTag(building, 
"church")
 
 3290        << OsmTag(building, 
"cathedral") << OsmTag(building, 
"greenhouse") << OsmTag(building, 
"barn") << OsmTag(building, 
"service")
 
 3291        << OsmTag(building, 
"manufacture") << OsmTag(building, 
"construction") << OsmTag(building, 
"cabin") << OsmTag(building, 
"farm")
 
 3292        << OsmTag(building, 
"warehouse") << OsmTag(building, 
"House") << OsmTag(building, 
"office") << OsmTag(building, 
"civic")
 
 3293        << OsmTag(building, 
"Residential") << OsmTag(building, 
"hangar") << OsmTag(building, 
"public") << OsmTag(building, 
"university")
 
 3294        << OsmTag(building, 
"hospital") << OsmTag(building, 
"chapel") << OsmTag(building, 
"hotel") << OsmTag(building, 
"train_station")
 
 3295        << OsmTag(building, 
"dormitory") << OsmTag(building, 
"kindergarten") << OsmTag(building, 
"stable") << OsmTag(building, 
"storage_tank")
 
 3296        << OsmTag(building, 
"shop") << OsmTag(building, 
"college") << OsmTag(building, 
"supermarket") << OsmTag(building, 
"factory")
 
 3297        << OsmTag(building, 
"bungalow") << OsmTag(building, 
"tower") << OsmTag(building, 
"silo") << OsmTag(building, 
"storage") << OsmTag(building, 
"station")
 
 3298        << OsmTag(building, 
"education") << OsmTag(building, 
"carport") << OsmTag(building, 
"houseboat") << OsmTag(building, 
"castle")
 
 3299        << OsmTag(building, 
"social_facility") << OsmTag(building, 
"water_tower") << OsmTag(building, 
"container") << OsmTag(building, 
"exhibition_hall")
 
 3300        << OsmTag(building, 
"monastery") << OsmTag(building, 
"bunker") << OsmTag(building, 
"shelter") << OsmTag(
"building:part", 
"yes")
 
 3301        << OsmTag(
"building:part", 
"antenna");
 
 3303    return osmBuildingTags;
 
 3306GeoDataPlacemark::GeoDataVisualCategory StyleBuilder::determineVisualCategory(
const OsmPlacemarkData &osmData)
 
 3308    QString const yes(QStringLiteral(
"yes"));
 
 3309    if (osmData.containsTagKey(QStringLiteral(
"area:highway")) || 
 
 3310        osmData.containsTag(QStringLiteral(
"boundary"), QStringLiteral(
"protected_area")) || 
 
 3311        osmData.containsTag(QStringLiteral(
"boundary"), QStringLiteral(
"postal_code"))
 
 3312        || osmData.containsTag(QStringLiteral(
"boundary"), QStringLiteral(
"aerial_views")) || 
 
 3313        osmData.containsTagKey(QStringLiteral(
"closed:highway")) || osmData.containsTagKey(QStringLiteral(
"abandoned:highway"))
 
 3314        || osmData.containsTagKey(QStringLiteral(
"abandoned:natural")) || osmData.containsTagKey(QStringLiteral(
"abandoned:building"))
 
 3315        || osmData.containsTagKey(QStringLiteral(
"abandoned:leisure")) || osmData.containsTagKey(QStringLiteral(
"disused:highway"))
 
 3316        || osmData.containsTag(QStringLiteral(
"highway"), QStringLiteral(
"razed")) || osmData.containsTag(QStringLiteral(
"piste:abandoned"), yes)) {
 
 3317        return GeoDataPlacemark::None;
 
 3320    if (osmData.containsTag(QStringLiteral(
"building"), yes)) {
 
 3321        return GeoDataPlacemark::Building;
 
 3324    if (osmData.containsTag(QStringLiteral(
"historic"), QStringLiteral(
"castle"))
 
 3325        && osmData.containsTag(QStringLiteral(
"castle_type"), QStringLiteral(
"kremlin"))) {
 
 3326        return GeoDataPlacemark::None;
 
 3329    if (osmData.containsTag(QStringLiteral(
"natural"), QStringLiteral(
"glacier"))
 
 3330        && osmData.containsTag(QStringLiteral(
"glacier:type"), QStringLiteral(
"shelf"))) {
 
 3331        return GeoDataPlacemark::NaturalIceShelf;
 
 3334    if (osmData.containsTag(QStringLiteral(
"highway"), QStringLiteral(
"crossing"))) {
 
 3335        QStringList const crossings = osmData.tagValue(QStringLiteral(
"crossing")).split(
';');
 
 3336        QString const crossingRef = osmData.tagValue(QStringLiteral(
"crossing_ref"));
 
 3337        if (crossingRef == QStringLiteral(
"zebra") || crossingRef == QStringLiteral(
"tiger") || crossings.
contains(QStringLiteral(
"zebra"))
 
 3338            || crossings.
contains(QStringLiteral(
"tiger"))) {
 
 3339            return GeoDataPlacemark::CrossingZebra;
 
 3340        } 
else if (crossingRef == QStringLiteral(
"toucan") || crossingRef == QStringLiteral(
"pelican") || crossings.
contains(QStringLiteral(
"traffic_signals"))
 
 3341                   || crossings.
contains(QStringLiteral(
"toucan")) || crossings.
contains(QStringLiteral(
"pelican"))) {
 
 3342            return GeoDataPlacemark::CrossingSignals;
 
 3343        } 
else if (crossings.
contains(QStringLiteral(
"island"))) {
 
 3344            return GeoDataPlacemark::CrossingIsland;
 
 3347    if (osmData.containsTag(QStringLiteral(
"railway"), QStringLiteral(
"crossing"))
 
 3348        || osmData.containsTag(QStringLiteral(
"railway"), QStringLiteral(
"level_crossing"))) {
 
 3349        return GeoDataPlacemark::CrossingRailway;
 
 3352    Private::initializeOsmVisualCategories();
 
 3354    auto const pisteType = osmData.tagValue(QStringLiteral(
"piste:type"));
 
 3355    if (!pisteType.isEmpty()) {
 
 3356        auto const tag = OsmTag(QStringLiteral(
"piste:type"), pisteType);
 
 3357        auto category = Private::s_visualCategories.value(tag, GeoDataPlacemark::None);
 
 3358        if (category != GeoDataPlacemark::None) {
 
 3363    QString const capital(QStringLiteral(
"capital"));
 
 3364    QString const admin_level(QStringLiteral(
"admin_level"));
 
 3367    QString const national_level(QStringLiteral(
"2"));
 
 3369    for (
auto iter = osmData.tagsBegin(), end = osmData.tagsEnd(); iter != end; ++iter) {
 
 3370        const auto tag = OsmTag(iter.key(), iter.value());
 
 3371        GeoDataPlacemark::GeoDataVisualCategory 
category = Private::s_visualCategories.value(tag, GeoDataPlacemark::None);
 
 3372        if (category != GeoDataPlacemark::None) {
 
 3373            if (category == GeoDataPlacemark::PlaceCity && osmData.containsTag(admin_level, national_level)) {
 
 3374                category = GeoDataPlacemark::PlaceCityNationalCapital;
 
 3375            } 
else if (category == GeoDataPlacemark::PlaceCity && osmData.containsTag(capital, yes)) {
 
 3376                category = GeoDataPlacemark::PlaceCityCapital;
 
 3377            } 
else if (category == GeoDataPlacemark::PlaceTown && osmData.containsTag(admin_level, national_level)) {
 
 3378                category = GeoDataPlacemark::PlaceTownNationalCapital;
 
 3379            } 
else if (category == GeoDataPlacemark::PlaceTown && osmData.containsTag(capital, yes)) {
 
 3380                category = GeoDataPlacemark::PlaceTownCapital;
 
 3381            } 
else if (category == GeoDataPlacemark::PlaceVillage && osmData.containsTag(admin_level, national_level)) {
 
 3382                category = GeoDataPlacemark::PlaceVillageNationalCapital;
 
 3383            } 
else if (category == GeoDataPlacemark::PlaceVillage && osmData.containsTag(capital, yes)) {
 
 3384                category = GeoDataPlacemark::PlaceVillageCapital;
 
 3388        if (category != GeoDataPlacemark::None) {
 
 3393    return GeoDataPlacemark::None;
 
 3396StyleParameters::StyleParameters(
const GeoDataPlacemark *placemark_, 
int tileLevel_)
 
 3397    : placemark(placemark_)
 
 3398    , tileLevel(tileLevel_)
 
A 3d point representation.
 
GeoDataVisualCategory
A categorization of a placemark as defined by ...FIXME.
 
KGUIADDONS_EXPORT qreal hue(const QColor &)
 
qreal pixelSize(qreal scale)
 
QString path(const QString &relativePath)
 
KREPORT_EXPORT QPageSize::PageSizeId defaultSize()
 
Category category(StandardShortcut id)
 
KI18NLOCALEDATA_EXPORT KCountry country(const char *ianaId)
 
Binds a QML item to a specific geodetic location in screen coordinates.
 
QColor darker(int factor) const const
 
void getHsvF(float *h, float *s, float *v, float *a) const const
 
bool isValidColorName(QAnyStringView name)
 
void setHsvF(float h, float s, float v, float a)
 
void setBold(bool enable)
 
void setCapitalization(Capitalization caps)
 
void setLetterSpacing(SpacingType type, qreal spacing)
 
void setPointSize(int pointSize)
 
void setUnderline(bool enable)
 
QList< QScreen * > screens()
 
bool contains(const Key &key) const const
 
bool isEmpty() const const
 
qsizetype size() const const
 
T value(const Key &key) const const
 
const_iterator constBegin() const const
 
const_iterator constEnd() const const
 
bool isEmpty() const const
 
qsizetype size() const const
 
Country country() const const
 
qsizetype size() const const
 
QString arg(Args &&... args) const const
 
bool isEmpty() const const
 
QString & remove(QChar ch, Qt::CaseSensitivity cs)
 
float toFloat(bool *ok) const const
 
bool contains(QLatin1StringView str, Qt::CaseSensitivity cs) const const