All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
IPointOnMap.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Positioning.h"
6 #include "Types.h"
7 #include "VectorMathDecl.h"
8 #include "Space.h"
9 #include "PositioningTypes.h"
10 #include "Interiors.h"
11 #include "IEvent.h"
12 #include "IPositioningViewComponent.h"
13 #include "InteriorId.h"
14 
15 #include <string>
16 
17 namespace Eegeo
18 {
19  namespace Positioning
20  {
22  {
23  public:
24  typedef int IdType;
25 
27 
28  const static int InvalidId = -1;
29 
30  virtual ~IPointOnMap() {}
31 
32  // accessors
33 
34  virtual IdType GetId() const = 0;
35 
36  virtual ChangedEvent& Changed() = 0;
37 
38  virtual bool IsIndoor() const = 0;
39 
40  virtual Resources::Interiors::InteriorId GetIndoorMapId() const = 0;
41 
42  virtual int GetIndoorMapFloorId() const = 0;
43 
44  virtual ElevationMode::Type GetElevationMode() const = 0;
45 
46  virtual double GetElevation() const = 0;
47 
48  virtual Space::LatLong GetCoordinate() const = 0;
49 
50  // query derived state
51 
52  virtual Space::LatLongAltitude GetDerivedCoordinate() const = 0;
53 
54  // For static-earth model, altitude above sea level of this point - may rely on other resources streaming in eg indoor map, terrain.
55  // Define 'static-earth model' as map with neutral/identity transform - i.e no environemnt flattening, no indoor map 'concertina' expand.
56  virtual double GetDerivedAltitude() const = 0;
57 
58  // Altitude that is affected by environemnt flattening scale. Typically the same as GetDerivedAltitude(), but for indoor maps is the
59  // altitude of the indoor map base plane, rather than the altitude of a point on a floor.
60  virtual double GetDerivedCollapsibleAltitude() const = 0;
61 
62  virtual int GetDerivedIndoorMapFloorIndex() const = 0;
63 
64  // mutate state
65 
66  virtual void SetCoordinate(double latitudeDegrees, double longitudeDegrees) = 0;
67 
68  virtual void SetElevation(double elevation) = 0;
69 
70  virtual void SetElevationMode(ElevationMode::Type elevationMode) = 0;
71 
72  virtual void SetIndoorMapId(const Resources::Interiors::InteriorId& indoorMapId) = 0;
73 
74  virtual void SetIndoorMapFloorId(int indoorMapFloorId) = 0;
75 
76 
77  };
78  }
79 }