diff options
Diffstat (limited to 'src/mbgl/tile/raster_tile_worker.cpp')
-rw-r--r-- | src/mbgl/tile/raster_tile_worker.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/mbgl/tile/raster_tile_worker.cpp b/src/mbgl/tile/raster_tile_worker.cpp new file mode 100644 index 0000000000..838737d5b8 --- /dev/null +++ b/src/mbgl/tile/raster_tile_worker.cpp @@ -0,0 +1,27 @@ +#include <mbgl/tile/raster_tile_worker.hpp> +#include <mbgl/tile/raster_tile.hpp> +#include <mbgl/renderer/raster_bucket.cpp> +#include <mbgl/actor/actor.hpp> + +namespace mbgl { + +RasterTileWorker::RasterTileWorker(ActorRef<RasterTileWorker>, ActorRef<RasterTile> parent_) + : parent(std::move(parent_)) { +} + +void RasterTileWorker::parse(std::shared_ptr<const std::string> data) { + if (!data) { + parent.invoke(&RasterTile::onParsed, nullptr); // No data; empty tile. + return; + } + + try { + auto bucket = std::make_unique<RasterBucket>(); + bucket->setImage(decodeImage(*data)); + parent.invoke(&RasterTile::onParsed, std::move(bucket)); + } catch (...) { + parent.invoke(&RasterTile::setError, std::current_exception()); + } +} + +} // namespace mbgl |