1 #include <mbgl/tile/raster_dem_tile_worker.hpp>
2 #include <mbgl/tile/raster_dem_tile.hpp>
3 #include <mbgl/renderer/buckets/hillshade_bucket.hpp>
4 #include <mbgl/actor/actor.hpp>
5 #include <mbgl/util/premultiply.hpp>
6
7 namespace mbgl {
8
RasterDEMTileWorker(ActorRef<RasterDEMTileWorker>,ActorRef<RasterDEMTile> parent_)9 RasterDEMTileWorker::RasterDEMTileWorker(ActorRef<RasterDEMTileWorker>, ActorRef<RasterDEMTile> parent_)
10 : parent(std::move(parent_)) {
11 }
12
parse(std::shared_ptr<const std::string> data,uint64_t correlationID,Tileset::DEMEncoding encoding)13 void RasterDEMTileWorker::parse(std::shared_ptr<const std::string> data, uint64_t correlationID, Tileset::DEMEncoding encoding) {
14 if (!data) {
15 parent.invoke(&RasterDEMTile::onParsed, nullptr, correlationID); // No data; empty tile.
16 return;
17 }
18
19 try {
20 auto bucket = std::make_unique<HillshadeBucket>(decodeImage(*data), encoding);
21 parent.invoke(&RasterDEMTile::onParsed, std::move(bucket), correlationID);
22 } catch (...) {
23 parent.invoke(&RasterDEMTile::onError, std::current_exception(), correlationID);
24 }
25 }
26
27 } // namespace mbgl
28