diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2017-05-11 10:29:37 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2017-05-12 11:26:27 -0700 |
commit | 095dc7b16793ed502b3429e0e4c2db7f1207094e (patch) | |
tree | 929856d13dcec05a610b497cc2256b44725ba184 /src/mbgl/renderer/render_source.cpp | |
parent | afead4e749794e6d0f6b9cb9bd7897face64104a (diff) | |
download | qtlocation-mapboxgl-095dc7b16793ed502b3429e0e4c2db7f1207094e.tar.gz |
[core] Replace createRender{Source,Layer} with Render{Source,Layer}::create
* Eliminates the need for EnableImmutableFromThis
* Eliminates the dependency of {Source,Layer}::Impl on corresponding Render class (circular dependency)
Diffstat (limited to 'src/mbgl/renderer/render_source.cpp')
-rw-r--r-- | src/mbgl/renderer/render_source.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/mbgl/renderer/render_source.cpp b/src/mbgl/renderer/render_source.cpp index 9eca54795a..4b411aa703 100644 --- a/src/mbgl/renderer/render_source.cpp +++ b/src/mbgl/renderer/render_source.cpp @@ -1,9 +1,35 @@ #include <mbgl/renderer/render_source.hpp> #include <mbgl/renderer/render_source_observer.hpp> +#include <mbgl/renderer/sources/render_geojson_source.hpp> +#include <mbgl/renderer/sources/render_raster_source.hpp> +#include <mbgl/renderer/sources/render_vector_source.hpp> +#include <mbgl/annotation/render_annotation_source.hpp> #include <mbgl/tile/tile.hpp> namespace mbgl { +using namespace style; + +std::unique_ptr<RenderSource> RenderSource::create(Immutable<Source::Impl> impl) { + switch (impl->type) { + case SourceType::Vector: + return std::make_unique<RenderVectorSource>(staticImmutableCast<VectorSource::Impl>(impl)); + case SourceType::Raster: + return std::make_unique<RenderRasterSource>(staticImmutableCast<RasterSource::Impl>(impl)); + case SourceType::GeoJSON: + return std::make_unique<RenderGeoJSONSource>(staticImmutableCast<GeoJSONSource::Impl>(impl)); + case SourceType::Video: + assert(false); + return nullptr; + case SourceType::Annotations: + return std::make_unique<RenderAnnotationSource>(staticImmutableCast<AnnotationSource::Impl>(impl)); + } + + // Not reachable, but placate GCC. + assert(false); + return nullptr; +} + static RenderSourceObserver nullObserver; RenderSource::RenderSource(Immutable<style::Source::Impl> impl) |