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