#pragma once #include "events.hpp" #include "../indexer/drawing_rule_def.hpp" #include "../indexer/feature.hpp" #include "../indexer/data_header.hpp" #include "../indexer/feature_data.hpp" #include "../geometry/rect2d.hpp" #include "../graphics/glyph_cache.hpp" class ScreenBase; class redraw_operation_cancelled {}; namespace fwork { class FeatureProcessor { m2::RectD m_rect; set m_coasts; ScreenBase const & m_convertor; shared_ptr m_paintEvent; int m_zoom; bool m_hasNonCoast; bool m_hasAnyFeature; graphics::GlyphCache * m_glyphCache; inline Drawer * GetDrawer() const { return m_paintEvent->drawer(); } void PreProcessKeys(vector & keys) const; public: FeatureProcessor(m2::RectD const & r, ScreenBase const & convertor, shared_ptr const & paintEvent, int scaleLevel); bool operator() (FeatureType const & f); bool IsEmptyDrawing() const; }; }