#pragma once #include "storage/storage_defines.hpp" #include "indexer/feature.hpp" #include "geometry/rect2d.hpp" #include #include namespace df { class MapDataProvider { public: template using TReadCallback = std::function; using TReadFeaturesFn = std::function const &, std::vector const &)>; using TReadIDsFn = std::function const &, m2::RectD const &, int)>; using TIsCountryLoadedFn = std::function; using TIsCountryLoadedByNameFn = std::function; using TUpdateCurrentCountryFn = std::function; using TFilterFeatureFn = std::function; MapDataProvider(TReadIDsFn && idsReader, TReadFeaturesFn && featureReader, TFilterFeatureFn && filterFeatureFn, TIsCountryLoadedByNameFn && isCountryLoadedByNameFn, TUpdateCurrentCountryFn && updateCurrentCountryFn); void ReadFeaturesID(TReadCallback const & fn, m2::RectD const & r, int scale) const; void ReadFeatures(TReadCallback const & fn, std::vector const & ids) const; TFilterFeatureFn const & GetFilter() const; TUpdateCurrentCountryFn const & UpdateCurrentCountryFn() const; TIsCountryLoadedByNameFn m_isCountryLoadedByName; private: TReadFeaturesFn m_featureReader; TReadIDsFn m_idsReader; TFilterFeatureFn m_filterFeature; TUpdateCurrentCountryFn m_updateCurrentCountry; }; } // namespace df