libosmscout  1.1.1
RouteDescriptionBuilder.h
Go to the documentation of this file.
1 #ifndef OSMSCOUT_CLIENT_QT_ROUTEDESCRIPTIONBUILDER_H
2 #define OSMSCOUT_CLIENT_QT_ROUTEDESCRIPTIONBUILDER_H
3 
4 /*
5  OSMScout - a Qt backend for libosmscout and libosmscout-map
6  Copyright (C) 2010 Tim Teulings
7  Copyright (C) 2017 Lukas Karas
8 
9  This library is free software; you can redistribute it and/or
10  modify it under the terms of the GNU Lesser General Public
11  License as published by the Free Software Foundation; either
12  version 2.1 of the License, or (at your option) any later version.
13 
14  This library is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17  Lesser General Public License for more details.
18 
19  You should have received a copy of the GNU Lesser General Public
20  License along with this library; if not, write to the Free Software
21  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22  */
23 
27 #include <osmscout/Way.h>
28 
29 #include <osmscout/RouteStep.h>
30 #include <osmscout/QtRouteData.h>
31 
33 
34 #include <QObject>
35 #include <QString>
36 #include <memory>
37 
38 namespace osmscout {
39 
44  Q_OBJECT
45 
46 public:
48  {
49  private:
50  QList<RouteStep> &routeSteps;
51  Distance stopAfter;
52 
54  bool skipInformative;
55 
57  QStringList streetNames;
58 
59  GeoCoord coord;
60  Distance distance;
61  Distance distancePrevious;
62  Duration time;
63  Duration timePrevious;
64 
65  public:
66  Callback(QList<RouteStep> &routeSteps,
67  const Distance &stopAfter = Distance::Lowest(),
68  bool skipInformative=false);
69 
70  ~Callback() override;
71 
72  void OnStart(const RouteDescription::StartDescriptionRef& startDescription,
73  const RouteDescription::TypeNameDescriptionRef& typeNameDescription,
74  const RouteDescription::NameDescriptionRef& nameDescription) override;
75 
76  void OnTargetReached(const RouteDescription::TargetDescriptionRef& targetDescription) override;
77 
78  void OnTurn(const RouteDescription::TurnDescriptionRef& turnDescription,
79  const RouteDescription::CrossingWaysDescriptionRef& crossingWaysDescription,
80  const RouteDescription::DirectionDescriptionRef& directionDescription,
81  const RouteDescription::TypeNameDescriptionRef& typeNameDescription,
82  const RouteDescription::NameDescriptionRef& nameDescription) override;
83 
84  void OnRoundaboutEnter(const RouteDescription::RoundaboutEnterDescriptionRef& roundaboutEnterDescription,
85  const RouteDescription::CrossingWaysDescriptionRef& crossingWaysDescription) override;
86 
87  void OnRoundaboutLeave(const RouteDescription::RoundaboutLeaveDescriptionRef& roundaboutLeaveDescription,
88  const RouteDescription::NameDescriptionRef& nameDescription) override;
89 
90  void OnMotorwayEnter(const RouteDescription::MotorwayEnterDescriptionRef& motorwayEnterDescription,
91  const RouteDescription::CrossingWaysDescriptionRef& crossingWaysDescription) override;
92 
93  void OnMotorwayChange(const RouteDescription::MotorwayChangeDescriptionRef& motorwayChangeDescription,
94  const RouteDescription::MotorwayJunctionDescriptionRef& motorwayJunctionDescription,
95  const RouteDescription::DestinationDescriptionRef& crossingDestinationDescription) override;
96 
97  void OnMotorwayLeave(const RouteDescription::MotorwayLeaveDescriptionRef& motorwayLeaveDescription,
98  const RouteDescription::MotorwayJunctionDescriptionRef& motorwayJunctionDescription,
99  const RouteDescription::DirectionDescriptionRef& directionDescription,
100  const RouteDescription::NameDescriptionRef& nameDescription) override;
101 
102  void OnPathNameChange(const RouteDescription::NameChangedDescriptionRef& nameChangedDescription) override;
103 
104  void PushStreetName(const RouteDescription::NameDescriptionRef& nameDescription);
105 
106  void BeforeNode(const RouteDescription::Node& node) override;
107 
108  bool Continue() const override;
109 
110  RouteStep MkStep(const QString &name);
111  };
112 public:
114 
115  ~RouteDescriptionBuilder() override;
116 
117  void GenerateRouteSteps(const osmscout::RouteDescription &routeDescription,
118  QList<RouteStep> &routeSteps) const;
119 
120  std::list<RouteStep> GenerateRouteInstructions(const RouteDescription::NodeIterator &first,
121  const RouteDescription::NodeIterator &last) const;
122 
123  RouteStep GenerateNextRouteInstruction(const RouteDescription::NodeIterator &previous,
124  const RouteDescription::NodeIterator &last,
125  const GeoCoord &coord) const;
126 
127 };
128 
129 }
130 
131 #endif //OSMSCOUT_CLIENT_QT_ROUTEDESCRIPTIONBUILDER_H
Definition: RouteDescriptionBuilder.h:47
std::shared_ptr< MotorwayChangeDescription > MotorwayChangeDescriptionRef
Definition: RouteDescription.h:429
#define OSMSCOUT_CLIENT_QT_API
Definition: ClientQtImportExport.h:45
std::shared_ptr< DestinationDescription > DestinationDescriptionRef
Definition: RouteDescription.h:492
Definition: RouteDescription.h:667
Definition: RouteDescription.h:53
std::shared_ptr< RoundaboutLeaveDescription > RoundaboutLeaveDescriptionRef
Definition: RouteDescription.h:378
std::shared_ptr< StartDescription > StartDescriptionRef
Definition: RouteDescription.h:127
std::shared_ptr< MotorwayEnterDescription > MotorwayEnterDescriptionRef
Definition: RouteDescription.h:400
std::shared_ptr< MotorwayLeaveDescription > MotorwayLeaveDescriptionRef
Definition: RouteDescription.h:451
std::shared_ptr< RoundaboutEnterDescription > RoundaboutEnterDescriptionRef
Definition: RouteDescription.h:350
std::shared_ptr< NameChangedDescription > NameChangedDescriptionRef
Definition: RouteDescription.h:204
std::shared_ptr< NameDescription > NameDescriptionRef
Definition: RouteDescription.h:175
Definition: Area.h:38
std::shared_ptr< TargetDescription > TargetDescriptionRef
Definition: RouteDescription.h:146
std::shared_ptr< DirectionDescription > DirectionDescriptionRef
Definition: RouteDescription.h:316
Definition: RouteStep.h:42
std::shared_ptr< CrossingWaysDescription > CrossingWaysDescriptionRef
Definition: RouteDescription.h:253
std::shared_ptr< MotorwayJunctionDescription > MotorwayJunctionDescriptionRef
Definition: RouteDescription.h:473
std::list< RouteDescription::Node >::const_iterator NodeIterator
Definition: RouteDescription.h:779
std::shared_ptr< TypeNameDescription > TypeNameDescriptionRef
Definition: RouteDescription.h:537
Definition: RouteDescriptionPostprocessor.h:53
std::shared_ptr< TurnDescription > TurnDescriptionRef
Definition: RouteDescription.h:328
Timestamp::duration Duration
Definition: Time.h:29
Definition: RouteDescriptionBuilder.h:43