All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
LabelAnchorFilterModel.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "ILabelAnchorFilter.h"
6 #include "Types.h"
7 
8 #include <unordered_map>
9 #include <vector>
10 
11 namespace Eegeo
12 {
13  namespace Labels
14  {
16  {
17  public:
19 
21 
22  void SetFilter(LabelLayer::IdType labelLayerId, const ILabelAnchorFilter* pFilter);
23 
24  const ILabelAnchorFilter* GetFilter(LabelLayer::IdType labelLayerId) const;
25 
26  void RegisterChangedCallback(CallbackType& callback);
27 
28  void UnregisterChangedCallback(CallbackType& callback);
29 
30  private:
31 
32  void NotifyChanged() const;
33 
34  typedef std::unordered_map<LabelLayer::IdType, const ILabelAnchorFilter*> LayerIdToFilter;
35  typedef std::vector<CallbackType*> CallbackVector;
36 
37  LayerIdToFilter m_layerIdToFilter;
38 
39  CallbackVector m_callbacks;
40  };
41  }
42 }