diff options
Diffstat (limited to 'src/mbgl/sprite/sprite_loader_worker.cpp')
-rw-r--r-- | src/mbgl/sprite/sprite_loader_worker.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/mbgl/sprite/sprite_loader_worker.cpp b/src/mbgl/sprite/sprite_loader_worker.cpp new file mode 100644 index 0000000000..4bded33d53 --- /dev/null +++ b/src/mbgl/sprite/sprite_loader_worker.cpp @@ -0,0 +1,29 @@ +#include <mbgl/sprite/sprite_loader_worker.hpp> +#include <mbgl/sprite/sprite_loader.hpp> +#include <mbgl/sprite/sprite_parser.hpp> + +namespace mbgl { + +SpriteLoaderWorker::SpriteLoaderWorker(ActorRef<SpriteLoaderWorker>, ActorRef<SpriteLoader> parent_) + : parent(std::move(parent_)) { +} + +void SpriteLoaderWorker::parse(std::shared_ptr<const std::string> image, + std::shared_ptr<const std::string> json) { + try { + if (!image) { + // This shouldn't happen, since we always invoke it with a non-empty pointer. + throw std::runtime_error("missing sprite image"); + } + if (!json) { + // This shouldn't happen, since we always invoke it with a non-empty pointer. + throw std::runtime_error("missing sprite metadata"); + } + + parent.invoke(&SpriteLoader::onParsed, parseSprite(*image, *json)); + } catch (...) { + parent.invoke(&SpriteLoader::onError, std::current_exception()); + } +} + +} // namespace mbgl |