All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
StencilAreaController.h
1 // Copyright (c) 2015 eeGeo. All rights reserved.
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include "StencilAreaModel.h"
7 #include "StencilAreaView.h"
8 #include "StencilAreaRenderer.h"
9 #include "StencilAreaViewFactory.h"
10 #include "DataEntityController.h"
11 #include "StencilAreaPaletteModel.h"
12 
13 #include <map>
14 
15 namespace Eegeo
16 {
17  namespace Data
18  {
19  namespace StencilArea
20  {
22  {
23  typedef TStencilAreaId TId;
24  typedef StencilAreaModel TModel;
25  typedef StencilAreaView TView;
28  };
29 
31  {
32  public:
33  StencilAreaController(StencilAreaViewFactory& viewFactory, StencilAreaRenderer& renderableFilter);
34 
36 
37  void Add(StencilAreaModel& model);
38 
39  void Remove(StencilAreaModel& model);
40 
41  bool TryRemoveById(const TStencilAreaId& id, StencilAreaModel*& out_removedItem);
42 
43  private:
44  void RemovePalette(const StencilAreaPaletteModel& model);
45 
46  void AddPalette(const StencilAreaPaletteModel& model);
47 
48  void Clear();
49 
50  bool HasPalette(const StencilAreaPaletteModel& model) const;
51 
52  bool ShouldRemovePalette(const StencilAreaPaletteModel& model) const;
53 
54  typedef std::map<const TStencilPaletteId, Rendering::Renderables::WorldMeshRenderable*> TStencilPalettesToQuads;
55  typedef std::map<const TStencilPaletteId, int> TStencilPaletteModelCounts;
56 
58 
59  TStencilPalettesToQuads m_paletteQuads;
60  TStencilPaletteModelCounts m_paletteMemberCounts;
61  };
62  }
63  }
64 }