#pragma once #include "drape_frontend/custom_features_context.hpp" #include "drape_frontend/engine_context.hpp" #include "drape_frontend/tile_key.hpp" #include "indexer/feature_decl.hpp" #include "base/exception.hpp" #include "base/macros.hpp" #include #include #include class FeatureType; namespace df { class MapDataProvider; class Stylist; class TileInfo { public: DECLARE_EXCEPTION(ReadCanceledException, RootException); TileInfo(drape_ptr && engineContext); void ReadFeatures(MapDataProvider const & model); void Cancel(); bool IsCancelled() const; m2::RectD GetGlobalRect() const; TileKey const & GetTileKey() const { return m_context->GetTileKey(); } bool operator <(TileInfo const & other) const { return GetTileKey() < other.GetTileKey(); } private: void ReadFeatureIndex(MapDataProvider const & model); void InitStylist(int8_t deviceLang, FeatureType const & f, Stylist & s); void CheckCanceled() const; bool DoNeedReadIndex() const; int GetZoomLevel() const; private: drape_ptr m_context; std::vector m_featureInfo; std::atomic m_isCanceled; std::set m_mwms; DISALLOW_COPY_AND_MOVE(TileInfo); }; } // namespace df