コード例 #1
0
OsmAnd::GeoInfoPresenter::MapObject::MapObject(
    const std::shared_ptr<const GeoInfoDocument>& geoInfoDocument_,
    const std::shared_ptr<const GeoInfoDocument::ExtraData>& extraData /*= nullptr*/)
    : geoInfoDocument(geoInfoDocument_)
{
    const auto mapping = std::make_shared<AttributeMapping>();
    attributeMapping = mapping;
    
    if (extraData)
    {
        auto lastUsedRuleId = 0;

        const auto values = extraData->getValues();
        for (const auto valueEntry : rangeOf(constOf(values)))
        {
            const auto& tag = valueEntry.key();
            auto value = valueEntry.value().toString();

            if (tag == QLatin1String("color"))
                value = Utilities::resolveColorFromPalette(value, false);

            uint32_t attributeId;
            if (!mapping->encodeTagValue(tag, value, &attributeId))
            {
                attributeId = ++lastUsedRuleId;
                mapping->registerMapping(attributeId, tag, value);
            }

            additionalAttributeIds.append(attributeId);
        }
    }

    mapping->verifyRequiredMappingRegistered();

    additionalAttributeIds.append(geoInfoDocument->locationMarks.isEmpty()
        ? mapping->waypointsNotPresentAttributeId
        : mapping->waypointsPresentAttributeId);

    additionalAttributeIds.append(geoInfoDocument->tracks.isEmpty()
        ? mapping->trackpointsNotPresentAttributeId
        : mapping->trackpointsPresentAttributeId);

    additionalAttributeIds.append(geoInfoDocument->routes.isEmpty()
        ? mapping->routepointsNotPresentAttributeId
        : mapping->routepointsPresentAttributeId);
}
コード例 #2
0
void OsmAnd::GeoInfoPresenter::MapObject::AttributeMapping::registerRequiredMapping(uint32_t& lastUsedEntryId)
{
    if (waypointAttributeId == std::numeric_limits<uint32_t>::max())
    {
        registerMapping(++lastUsedEntryId,
            QLatin1String("osmand"), QLatin1String("file_waypoint"));
    }

    if (trackpointAttributeId == std::numeric_limits<uint32_t>::max())
    {
        registerMapping(++lastUsedEntryId,
            QLatin1String("osmand"), QLatin1String("file_trackpoint"));
    }

    if (routepointAttributeId == std::numeric_limits<uint32_t>::max())
    {
        registerMapping(++lastUsedEntryId,
            QLatin1String("osmand"), QLatin1String("file_routepoint"));
    }

    if (tracklineAttributeId == std::numeric_limits<uint32_t>::max())
    {
        registerMapping(++lastUsedEntryId,
            QLatin1String("osmand"), QLatin1String("file_trackline"));
    }

    if (routelineAttributeId == std::numeric_limits<uint32_t>::max())
    {
        registerMapping(++lastUsedEntryId,
            QLatin1String("osmand"), QLatin1String("file_routeline"));
    }

    if (routelineAttributeId == std::numeric_limits<uint32_t>::max())
    {
        registerMapping(++lastUsedEntryId,
            QLatin1String("osmand"), QLatin1String("file_routeline"));
    }

    if (waypointsPresentAttributeId == std::numeric_limits<uint32_t>::max())
    {
        registerMapping(++lastUsedEntryId,
            QLatin1String("file_has_waypoints"), QLatin1String("true"));
    }

    if (waypointsNotPresentAttributeId == std::numeric_limits<uint32_t>::max())
    {
        registerMapping(++lastUsedEntryId,
            QLatin1String("file_has_waypoints"), QLatin1String("false"));
    }

    if (trackpointsPresentAttributeId == std::numeric_limits<uint32_t>::max())
    {
        registerMapping(++lastUsedEntryId,
            QLatin1String("file_has_trackpoints"), QLatin1String("true"));
    }

    if (trackpointsNotPresentAttributeId == std::numeric_limits<uint32_t>::max())
    {
        registerMapping(++lastUsedEntryId,
            QLatin1String("file_has_trackpoints"), QLatin1String("false"));
    }

    if (routepointsPresentAttributeId == std::numeric_limits<uint32_t>::max())
    {
        registerMapping(++lastUsedEntryId,
            QLatin1String("file_has_routepoints"), QLatin1String("true"));
    }

    if (routepointsNotPresentAttributeId == std::numeric_limits<uint32_t>::max())
    {
        registerMapping(++lastUsedEntryId,
            QLatin1String("file_has_routepoints"), QLatin1String("false"));
    }
}