diff options
Diffstat (limited to 'src/mbgl/style')
-rw-r--r-- | src/mbgl/style/source.cpp | 6 | ||||
-rw-r--r-- | src/mbgl/style/sources/raster_dem_source.cpp | 7 | ||||
-rw-r--r-- | src/mbgl/style/sources/raster_source.cpp | 17 | ||||
-rw-r--r-- | src/mbgl/style/sources/vector_source.cpp | 17 |
4 files changed, 33 insertions, 14 deletions
diff --git a/src/mbgl/style/source.cpp b/src/mbgl/style/source.cpp index db195867c0..6ffaae0305 100644 --- a/src/mbgl/style/source.cpp +++ b/src/mbgl/style/source.cpp @@ -125,12 +125,10 @@ void Source::serializeTileSet(Value& value, const mbgl::Tileset& tileset) const } } -void Source::serializeUrlOrTileSet(Value& value, const mbgl::variant<std::string, mbgl::Tileset>* urlOrTileSet) const { +void Source::serializeUrlOrTileSet(Value& value, const mbgl::variant<std::string, mbgl::Tileset>& urlOrTileSet) const { assert(value.getObject()); - if (!urlOrTileSet) return; - - urlOrTileSet->match( + urlOrTileSet.match( [&](const std::string& url) { value.getObject()->insert({"url", url}); }, diff --git a/src/mbgl/style/sources/raster_dem_source.cpp b/src/mbgl/style/sources/raster_dem_source.cpp index a7efc2ba69..2535772f85 100644 --- a/src/mbgl/style/sources/raster_dem_source.cpp +++ b/src/mbgl/style/sources/raster_dem_source.cpp @@ -29,10 +29,9 @@ static std::string tilesetDEMEncodingToString(mbgl::Tileset::DEMEncoding encodin Value RasterDEMSource::serialize() const { auto value = RasterSource::serialize(); - getURLOrTileset()->match([](const std::string&) {}, - [&](const mbgl::Tileset& tileset) { - value.getObject()->insert({"encoding", tilesetDEMEncodingToString(tileset.encoding)}); - }); + if (auto* tileset = getTileset()) { + value.getObject()->insert({"encoding", tilesetDEMEncodingToString(tileset->encoding)}); + } return value; } diff --git a/src/mbgl/style/sources/raster_source.cpp b/src/mbgl/style/sources/raster_source.cpp index 75c5acf24e..8ee442a200 100644 --- a/src/mbgl/style/sources/raster_source.cpp +++ b/src/mbgl/style/sources/raster_source.cpp @@ -25,8 +25,11 @@ const RasterSource::Impl& RasterSource::impl() const { return static_cast<const Impl&>(*baseImpl); } -const variant<std::string, Tileset>* RasterSource::getURLOrTileset() const { - return &urlOrTileset; +const Tileset* RasterSource::getTileset() const { + if (urlOrTileset.is<Tileset>()) { + return &urlOrTileset.get<Tileset>(); + } + return nullptr; } optional<std::string> RasterSource::getURL() const { @@ -37,6 +40,14 @@ optional<std::string> RasterSource::getURL() const { return urlOrTileset.get<std::string>(); } +optional<Resource> RasterSource::getResource() const { + if (urlOrTileset.is<std::string>()) { + return Resource::source(urlOrTileset.get<std::string>()); + } + + return nullopt; +} + void RasterSource::loadDescription(FileSource& fileSource) { if (urlOrTileset.is<Tileset>()) { baseImpl = createMutable(urlOrTileset.get<Tileset>()); @@ -94,7 +105,7 @@ Mutable<Source::Impl> RasterSource::createMutable(Tileset tileset) const noexcep Value RasterSource::serialize() const { auto value = Source::serialize(); - serializeUrlOrTileSet(value, getURLOrTileset()); + serializeUrlOrTileSet(value, urlOrTileset); return value; } diff --git a/src/mbgl/style/sources/vector_source.cpp b/src/mbgl/style/sources/vector_source.cpp index c08be53e6f..39f6fde76c 100644 --- a/src/mbgl/style/sources/vector_source.cpp +++ b/src/mbgl/style/sources/vector_source.cpp @@ -30,8 +30,11 @@ const VectorSource::Impl& VectorSource::impl() const { return static_cast<const Impl&>(*baseImpl); } -const variant<std::string, Tileset>* VectorSource::getURLOrTileset() const { - return &urlOrTileset; +const Tileset* VectorSource::getTileset() const { + if (urlOrTileset.is<Tileset>()) { + return &urlOrTileset.get<Tileset>(); + } + return nullptr; } optional<std::string> VectorSource::getURL() const { @@ -42,6 +45,14 @@ optional<std::string> VectorSource::getURL() const { return urlOrTileset.get<std::string>(); } +optional<Resource> VectorSource::getResource() const { + if (urlOrTileset.is<std::string>()) { + return Resource::source(urlOrTileset.get<std::string>()); + } + + return nullopt; +} + void VectorSource::loadDescription(FileSource& fileSource) { if (urlOrTileset.is<Tileset>()) { baseImpl = makeMutable<Impl>(impl(), urlOrTileset.get<Tileset>()); @@ -100,7 +111,7 @@ Mutable<Source::Impl> VectorSource::createMutable() const noexcept { Value VectorSource::serialize() const { auto result = Source::serialize(); - serializeUrlOrTileSet(result, getURLOrTileset()); + serializeUrlOrTileSet(result, urlOrTileset); return result; } |