Welcome to mirror list, hosted at ThFree Co, Russian Federation.

feature_vec_model.hpp « map - github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: c3e397563d3766406ae82158563d1acc86a7a95f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#pragma once

#include "editor/editable_data_source.hpp"

#include "indexer/data_header.hpp"
#include "indexer/mwm_set.hpp"

#include "geometry/rect2d.hpp"
#include "geometry/point2d.hpp"

#include "coding/reader.hpp"
#include "coding/buffer_reader.hpp"

#include "base/macros.hpp"

namespace model
{
//#define USE_BUFFER_READER

class FeaturesFetcher : public MwmSet::Observer
  {
  public:
#ifdef USE_BUFFER_READER
    typedef BufferReader ReaderT;
#else
    typedef ModelReaderPtr ReaderT;
#endif

    typedef function<void(platform::LocalCountryFile const &)> TMapDeregisteredCallback;

  private:
    m2::RectD m_rect;

    EditableDataSource m_dataSource;

    TMapDeregisteredCallback m_onMapDeregistered;

  public:
    FeaturesFetcher();

    virtual ~FeaturesFetcher();

    void InitClassificator();

    inline void SetOnMapDeregisteredCallback(TMapDeregisteredCallback const & callback)
    {
      m_onMapDeregistered = callback;
    }

    /// Registers a new map.
    pair<MwmSet::MwmId, MwmSet::RegResult> RegisterMap(
        platform::LocalCountryFile const & localFile);

    /// Deregisters a map denoted by file from internal records.
    bool DeregisterMap(platform::CountryFile const & countryFile);

    void Clear();

    void ClearCaches();

    inline bool IsLoaded(string const & countryFileName) const
    {
      return m_dataSource.IsLoaded(platform::CountryFile(countryFileName));
    }

    // MwmSet::Observer overrides:
    void OnMapUpdated(platform::LocalCountryFile const & newFile,
                      platform::LocalCountryFile const & oldFile) override;
    void OnMapDeregistered(platform::LocalCountryFile const & localFile) override;

    //bool IsLoaded(m2::PointD const & pt) const;

    /// @name Features enumeration.
    //@{
    void ForEachFeature(m2::RectD const & rect, std::function<void(FeatureType &)> const & fn,
                        int scale) const
    {
      m_dataSource.ForEachInRect(fn, rect, scale);
    }

    void ForEachFeatureID(m2::RectD const & rect, std::function<void(FeatureID const &)> const & fn,
                          int scale) const
    {
      m_dataSource.ForEachFeatureIDInRect(fn, rect, scale);
    }

    template <class ToDo>
    void ReadFeatures(ToDo & toDo, vector<FeatureID> const & features) const
    {
      m_dataSource.ReadFeatures(toDo, features);
    }
    //@}

    DataSourceBase const & GetDataSource() const { return m_dataSource; }
    DataSourceBase & GetDataSource() { return m_dataSource; }
    m2::RectD GetWorldRect() const;
  };
}