All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
RouteBuilder.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include "Routes.h"
7 #include "Space.h"
8 #include "VectorMath.h"
9 #include "RouteVertexClassification.h"
10 #include <vector>
11 #include <string>
12 
13 namespace Eegeo
14 {
15  namespace Routes
16  {
18  {
19  std::vector<RouteVertex> m_verts;
20  bool m_started;
21  bool m_newSection;
22  Eegeo::v4 m_color;
23  float m_halfWidth;
24  float m_speed;
25  RouteVertexClassification m_classification;
26  double m_distanceFromStartInMetres;
27  std::string m_indoorMapId;
28  int m_indoorMapFloorId;
29 
30 
31  bool IsNewSection() const;
32 
33  RouteBuilder& ChangeSection();
34 
35  RouteBuilder& ChangeSectionIndoorMap();
36 
37  public:
38  RouteBuilder();
39 
40  RouteBuilder& Start(const Eegeo::v4& color, float halfWidth, float speed, RouteVertexClassification classification);
41 
42  RouteBuilder& ChangeClassification(RouteVertexClassification classification);
43 
44  RouteBuilder& ChangeColor(const Eegeo::v4& color);
45 
46  RouteBuilder& ChangeHalfWidth(float halfWidth);
47 
48  RouteBuilder& ChangeSpeed(float speed);
49 
50  RouteBuilder& ChangeIndoorMap(const std::string& indoorMapId);
51 
52  RouteBuilder& ChangeIndoorMapFloor(int indoorMapFloorId);
53 
54  RouteBuilder& AddPoint(const Space::LatLong& location);
55 
56  RouteBuilder& AddPoint(double latitudeDegrees, double longitudeDegrees);
57 
59  RouteBuilder& AddPoint(double latitudeDegrees, double longitudeDegrees, double altitude);
60 
62  RouteBuilder& AddPoint(const Space::LatLongAltitude& location);
63 
64  std::vector<RouteVertex> FinishRoute();
65  };
66  }
67 }