// Loads quadKey. void loadQuadKey(const char* styleFile, const utymap::QuadKey& quadKey, OnMeshBuilt* meshCallback, OnElementLoaded* elementCallback, OnError* errorCallback) { try { auto& eleProvider = quadKey.levelOfDetail <= SrtmElevationLodStart ? flatEleProvider_ : (utymap::heightmap::ElevationProvider&) srtmEleProvider_; // TODO: preloading is not thread safe: extract separate API function eleProvider.preload(utymap::utils::GeoUtils::quadKeyToBoundingBox(quadKey)); utymap::mapcss::StyleProvider& styleProvider = *getStyleProvider(styleFile); QuadKeyElementVisitor elementVisitor(stringTable_, styleProvider, quadKey.levelOfDetail, elementCallback); quadKeyBuilder_.build(quadKey, styleProvider, eleProvider, [&meshCallback](const utymap::meshing::Mesh& mesh) { meshCallback(mesh.name.data(), mesh.vertices.data(), mesh.vertices.size(), mesh.triangles.data(), mesh.triangles.size(), mesh.colors.data(), mesh.colors.size()); }, [&elementVisitor](const utymap::entities::Element& element) { element.accept(elementVisitor); }); } catch (std::exception& ex) { errorCallback(ex.what()); } }
// Adds data to in-memory store. void addToInMemoryStore(const char* styleFile, const char* path, const utymap::BoundingBox& bbox, const utymap::LodRange& range, OnError* errorCallback) { try { geoStore_.add(InMemoryStorageKey, path, bbox, range, *getStyleProvider(styleFile).get()); } catch (std::exception& ex) { errorCallback(ex.what()); } }
// Adds element to in-memory store. void addInMemoryStore(const char* styleFile, const utymap::entities::Element& element, const utymap::LodRange& range, OnError* errorCallback) { try { geoStore_.add(InMemoryStorageKey, element, range, *getStyleProvider(styleFile).get()); } catch (std::exception& ex) { errorCallback(ex.what()); } }
// Adds data to persistent store. void addToPersistentStore(const char* styleFile, const char* path, const utymap::LodRange& range, OnError* errorCallback) { try { geoStore_.add(PersistentStorageKey, path, range, *getStyleProvider(styleFile).get()); } catch (std::exception& ex) { errorCallback(ex.what()); } }
// Adds data to in-memory store. void addToInMemoryStore(const char* styleFile, const char* path, const utymap::QuadKey& quadKey, OnError* errorCallback) { try { geoStore_.add(InMemoryStorageKey, path, quadKey, *getStyleProvider(styleFile).get()); } catch (std::exception& ex) { errorCallback(ex.what()); } }
// Adds data to store. void addToStore(const char* key, const char* styleFile, const char* path, const utymap::QuadKey& quadKey, OnError* errorCallback) { safeExecute([&]() { geoStore_.add(key, path, quadKey, *getStyleProvider(styleFile).get()); }, errorCallback); }
// Adds element to in-memory store. void addToStore(const char* key, const char* styleFile, const utymap::entities::Element& element, const utymap::LodRange& range, OnError* errorCallback) { safeExecute([&]() { geoStore_.add(key, element, range, *getStyleProvider(styleFile).get()); }, errorCallback); }
// Adds data to store. void addToStore(const char* key, const char* styleFile, const char* path, const utymap::BoundingBox& bbox, const utymap::LodRange& range, OnError* errorCallback) { safeExecute([&]() { geoStore_.add(key, path, bbox, range, *getStyleProvider(styleFile).get()); }, errorCallback); }
std::shared_ptr<utymap::builders::BuilderContext> createBuilderContext( const utymap::QuadKey &quadKey, const std::string &stylesheet, std::function<void(const utymap::math::Mesh &)> meshCallback = nullptr, std::function<void(const utymap::entities::Element &)> elementCallback = nullptr) { return std::make_shared<utymap::builders::BuilderContext>( quadKey, *getStyleProvider(stylesheet), *getStringTable(), *getMeshPool(), *getElevationProvider(), meshCallback, elementCallback, cancelToken); }
// Loads quadKey. void loadQuadKey(const char* styleFile, const utymap::QuadKey& quadKey, OnMeshBuilt* meshCallback, OnElementLoaded* elementCallback, OnError* errorCallback) { safeExecute([&]() { auto styleProvider = getStyleProvider(styleFile); ExportElementVisitor elementVisitor(stringTable_, *styleProvider, quadKey.levelOfDetail, elementCallback); quadKeyBuilder_.build(quadKey, *styleProvider, getElevationProvider(quadKey), [&meshCallback](const utymap::meshing::Mesh& mesh) { // NOTE do not notify if mesh is empty. if (!mesh.vertices.empty()) { meshCallback(mesh.name.data(), mesh.vertices.data(), static_cast<int>(mesh.vertices.size()), mesh.triangles.data(), static_cast<int>(mesh.triangles.size()), mesh.colors.data(), static_cast<int>(mesh.colors.size())); } }, [&elementVisitor](const utymap::entities::Element& element) { element.accept(elementVisitor); }); }, errorCallback); }
std::shared_ptr<utymap::mapcss::StyleProvider> getStyleProvider(const std::string &stylesheetStr) { auto stylesheet = utymap::mapcss::MapCssParser().parse(stylesheetStr); return getStyleProvider(stylesheet); }
// Register stylesheet. void registerStylesheet(const char* path) { getStyleProvider(path); }