#pragma once #include "drape_frontend/custom_features_context.hpp" #include "drape_frontend/map_shape.hpp" #include "drape_frontend/tile_utils.hpp" #include "drape_frontend/threads_commutator.hpp" #include "drape_frontend/traffic_generator.hpp" #include "drape/constants.hpp" #include "drape/pointers.hpp" namespace dp { class TextureManager; } // namespace dp namespace df { class Message; class MetalineManager; class EngineContext { public: EngineContext(TileKey tileKey, ref_ptr commutator, ref_ptr texMng, ref_ptr metalineMng, CustomFeaturesContextWeakPtr customFeaturesContext, bool is3dBuildingsEnabled, bool isTrafficEnabled, int displacementMode); TileKey const & GetTileKey() const { return m_tileKey; } bool Is3dBuildingsEnabled() const { return m_3dBuildingsEnabled; } bool IsTrafficEnabled() const { return m_trafficEnabled; } int GetDisplacementMode() const { return m_displacementMode; } CustomFeaturesContextWeakPtr GetCustomFeaturesContext() const { return m_customFeaturesContext; } ref_ptr GetTextureManager() const; ref_ptr GetMetalineManager() const; void BeginReadTile(); void Flush(TMapShapes && shapes); void FlushOverlays(TMapShapes && shapes); void FlushTrafficGeometry(TrafficSegmentsGeometry && geometry); void EndReadTile(); private: void PostMessage(drape_ptr && message); TileKey m_tileKey; ref_ptr m_commutator; ref_ptr m_texMng; ref_ptr m_metalineMng; CustomFeaturesContextWeakPtr m_customFeaturesContext; bool m_3dBuildingsEnabled; bool m_trafficEnabled; int m_displacementMode; }; } // namespace df