All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
StencilAreaModel.h
1 // Copyright (c) 2015 eeGeo. All rights reserved.
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include "LatLongAltitude.h"
7 #include "Colors.h"
8 #include "StencilMapLayerMask.h"
9 #include "StencilAreaPaletteModel.h"
10 #include <string>
11 #include <vector>
12 
13 namespace Eegeo
14 {
15  namespace Data
16  {
17  namespace StencilArea
18  {
19  typedef std::string TStencilAreaId;
20 
22  {
23  public:
25  {
26  public:
28  const TStencilAreaId& id,
29  const StencilAreaPaletteModel& palette,
30  const std::vector<Space::LatLongAltitude>& exteriorRingVertices,
31  const Eegeo::Rendering::StencilMapLayerMask::Type stencilMapLayerType,
32  const float heightInMetres)
33  : m_id(id)
34  , m_palette(palette)
35  , m_exteriorRingVertices(exteriorRingVertices)
36  , m_stencilMapLayerType(stencilMapLayerType)
37  , m_altitudeOffset(0.0f)
38  , m_height(heightInMetres)
39  , m_finished(false)
40  {
41  }
42 
43  StencilAreaBuilder(const TStencilAreaId& id,
44  const StencilAreaPaletteModel& palette,
45  const Space::LatLongAltitude& cylinderCentre,
46  float radiusInMetres,
47  const Eegeo::Rendering::StencilMapLayerMask::Type stencilMapLayerType,
48  const float heightInMetres);
49 
50  StencilAreaBuilder& AltitudeOffset(float altitudeOffset);
51  StencilAreaModel* Build();
52 
53  const StencilAreaPaletteModel& GetPaletteModel() const { return m_palette; }
54 
55  private:
56  const std::string m_id;
57  const StencilAreaPaletteModel& m_palette;
58  std::vector<Space::LatLongAltitude> m_exteriorRingVertices;
59  const Eegeo::Rendering::StencilMapLayerMask::Type m_stencilMapLayerType;
60  float m_altitudeOffset;
61  float m_height;
62  bool m_finished;
63  };
64 
65  const TStencilAreaId& GetId() const { return m_id; }
66  const dv3& GetEcefCellCenter() const { return m_ecefCellCenter; }
67 
68  const Eegeo::Rendering::StencilMapLayerMask::Type GetStencilMapLayerMask() const { return m_stencilMapLayerType; }
69 
70  const std::vector<dv3>& GetEcefTriangleVertices() const { return m_ecefTriangleVerts; }
71  const std::vector<dv3>& GetExteriorEcefVertices() const { return m_exteriorEcefVerts; }
72  const std::vector<Eegeo::Space::LatLongAltitude>& GetExteriorLatLongVertices() const { return m_exteriorRingVertices; }
73 
74  const float GetHeight() const { return m_height; }
75  const StencilAreaPaletteModel& GetPaletteModel() const { return m_palette; }
76  private:
77  StencilAreaModel(const StencilAreaPaletteModel& palette) : m_palette(palette) { };
78 
79  float m_height;
80  TStencilAreaId m_id;
81  const StencilAreaPaletteModel& m_palette;
82  std::vector<Eegeo::Space::LatLongAltitude> m_exteriorRingVertices;
83  std::vector<dv3> m_ecefTriangleVerts;
84  std::vector<dv3> m_exteriorEcefVerts;
85  Eegeo::Rendering::StencilMapLayerMask::Type m_stencilMapLayerType;
86  dv3 m_ecefCellCenter;
87  };
88  }
89  }
90 }