#pragma once #include #include #include #include "../file_source.hpp" #include "../geometry/lat_lng_bounds.hpp" #include "../map/camera_position.hpp" #include #include "../jni/generic_global_ref_deleter.hpp" #include namespace mbgl { namespace android { class SnapshotterRendererFrontend; class MapSnapshotter { public: static constexpr auto Name() { return "com/mapbox/mapboxsdk/snapshotter/MapSnapshotter"; }; static jni::Class javaClass; static void registerNative(jni::JNIEnv&); MapSnapshotter(jni::JNIEnv&, jni::Object, jni::Object, jni::jfloat pixelRatio, jni::jint width, jni::jint height, jni::String styleURL, jni::String styleJSON, jni::Object region, jni::Object position, jni::jboolean showLogo, jni::String programCacheDir); ~MapSnapshotter(); void setStyleUrl(JNIEnv&, jni::String styleURL); void setStyleJson(JNIEnv&, jni::String styleJSON); void setSize(JNIEnv&, jni::jint width, jni::jint height); void setCameraPosition(JNIEnv&, jni::Object position); void setRegion(JNIEnv&, jni::Object region); void start(JNIEnv&); void cancel(JNIEnv&); private: MBGL_STORE_THREAD(tid); JavaVM *vm = nullptr; GenericUniqueWeakObject javaPeer; float pixelRatio; bool showLogo; std::shared_ptr threadPool; std::unique_ptr> snapshotCallback; std::unique_ptr snapshotter; FileSource *jFileSource; void activateFilesource(JNIEnv&); void deactivateFilesource(JNIEnv&); bool activatedFilesource = false; }; } // namespace android } // namespace mbgl