All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
InteriorsHighlightRepository.h
1 // Copyright eeGeo Ltd (2012-2017), All Rights Reserved
2 
3 #pragma once
4 
5 #include "VectorMath.h"
6 
7 #include "Interiors.h"
8 #include "CallbackCollection.h"
9 #include "IInteriorsHighlightRepository.h"
10 #include "InteriorsHighlightKey.h"
11 
12 #include <string>
13 #include <vector>
14 #include <map>
15 
16 namespace Eegeo
17 {
18  namespace Resources
19  {
20  namespace Interiors
21  {
22  namespace Highlights
23  {
25  {
26  public:
27  virtual bool TryGetHighlightFor(const InteriorsHighlightKey& entityKey, InteriorHighlightStyle& out_highlightStyle) const;
28 
29  virtual void AssignHighlightFor(const InteriorsHighlightKey& entityKey, const InteriorHighlightStyle& highlightStyle);
30  virtual void RemoveHighlightFor(const InteriorsHighlightKey& entityKey);
31 
32  virtual void AssignHighlightsFor(const std::vector<InteriorsHighlightKey>& entityKeys, const InteriorHighlightStyle& highlightStyle);
33  virtual void RemoveHighlightsFor(const std::vector<InteriorsHighlightKey>& entityKeys);
34 
35  virtual std::vector<InteriorsHighlightKey> GetAllHighlightKeys() const;
36 
37  virtual void RegisterOnColorChangedCallback(HighlightChangedCallback& highlightChangedCallback);
38  virtual void UnregisterOnColorChangedCallback(HighlightChangedCallback& highlightChangedCallback);
39  private:
40 
41  static v4 ClearColor;
42 
43  std::map<InteriorsHighlightKey, InteriorHighlightStyle> m_highlightMap;
44 
46 
47  void DoAssignHighlightFor(const InteriorsHighlightKey& entityKey, const InteriorHighlightStyle& highlightStyle);
48  bool DoRemoveHighlightFor(const InteriorsHighlightKey& entityKey);
49  };
50  }
51  }
52  }
53 }