Helios++
Helios software for LiDAR simulations
FMSWriteFacade.h
1 #pragma once
2 
3 #include <filems/write/core/VectorialMeasurementWriter.h>
4 #include <filems/write/core/TrajectoryWriter.h>
5 #include <filems/write/core/VectorialFullWaveformWriter.h>
6 #include <scanner/detector/FullWaveform.h>
7 
8 #include <glm/glm.hpp>
9 
10 #include <vector>
11 #include <string>
12 #include <memory>
13 #include <list>
14 
15 namespace helios { namespace filems {
16 
17 class FMSFacadeFactory;
18 
19 using std::vector;
20 using std::string;
21 using std::shared_ptr;
22 using std::list;
23 
30 friend class FMSFacadeFactory;
31 protected:
32  // *** ATTRIBUTES *** //
33  // ******************** //
38  shared_ptr<VectorialMeasurementWriter> mw = nullptr;
43  shared_ptr<TrajectoryWriter> tw = nullptr;
48  shared_ptr<VectorialFullWaveformWriter> fww = nullptr;
52  string rootDir = "./";
53 
54 public:
55  // *** CONSTRUCTION / DESTRUCTION *** //
56  // ************************************ //
60  FMSWriteFacade() = default;
61  virtual ~FMSWriteFacade() = default;
62 
63  // *** FACADE WRITE METHODS *** //
64  // ****************************** //
69  virtual void disconnect();
78  void configure(
79  string const &prefix,
80  bool const computeWaveform,
81  bool const lastLegInStrip
82  );
87  inline string getRootDir() const {return rootDir;}
93  inline void setRootDir(string const &rootDir) {this->rootDir = rootDir;}
94 
95  // *** FACADE MEASUREMENT WRITE METHODS *** //
96  // ****************************************** //
102  inline shared_ptr<VectorialMeasurementWriter> getMeasurementWriter() const
103  {return this->mw;}
109  inline void setMeasurementWriter(shared_ptr<VectorialMeasurementWriter> mw)
110  {this->mw = mw;}
118  string const &callerName="FMSWriteFacade::validateMeasurementWriter",
119  string const &errorMsg="could not access MeasurementWriter"
120  ) const;
124  void writeMeasurements(vector<Measurement> const &measurements);
131  vector<Measurement> const &measurements
132  ) const{mw->writeMeasurementsUnsafe(measurements);}
136  void clearPointcloudFile();
149  std::string path,
150  const bool lastLegInStrip
151  );
155  bool isMeasurementWriterLasOutput() const;
159  void setMeasurementWriterLasOutput(bool const lasOutput);
163  bool isMeasurementWriterLas10() const;
167  void setMeasurementWriterLas10(bool const las10);
171  bool isMeasurementWriterZipOutput() const;
175  void setMeasurementWriterZipOutput(bool const zipOutput);
179  double getMeasurementWriterLasScale() const;
183  void setMeasurementWriterLasScale(double const lasScale);
184 
185 
186  // *** FACADE TRAJECTORY WRITE METHODS *** //
187  // ***************************************** //
193  inline shared_ptr<TrajectoryWriter> getTrajectoryWriter() const
194  {return this->tw;}
200  inline void setTrajectoryWriter(shared_ptr<TrajectoryWriter> tw)
201  {this->tw = tw;}
209  string const &callerName="FMSWriteFacade::validateTrajectoryWriter",
210  string const &errorMsg="could not accesss TrajectoryWriter"
211  ) const;
215  void writeTrajectory(Trajectory const &t);
221  inline void writeTrajectoryUnsafe(Trajectory const &t) const
222  {tw->writeTrajectoryUnsafe(t);}
226  void finishTrajectoryWriter();
234  void setTrajectoryWriterOutputPath(string const &path);
238  bool isTrajectoryWriterZipOutput() const;
242  void setTrajectoryWriterZipOutput(bool const zipOutput);
243 
244 
245  // *** FACADE FULL WAVEFORM WRITE METHODS *** //
246  // ******************************************** //
252  inline shared_ptr<VectorialFullWaveformWriter> getFullWaveformWriter()
253  const {return this->fww;}
260  shared_ptr<VectorialFullWaveformWriter> fww
261  ) {this->fww = fww;}
269  string const &callerName="FMSWriteFacade::validateFullWaveformWriter",
270  string const &errorMsg="could not accesss FullWaveformWriter"
271  ) const;
275  void writeFullWaveforms(
276  vector<FullWaveform> const &fullWaveforms
277  );
284  vector<FullWaveform> const &fullWaveforms
285  ) const{fww->writeFullWaveformsUnsafe(fullWaveforms);}
293  bool isFullWaveformWriterZipOutput() const;
297  void setFullWaveformWriterZipOutput(bool const zipOutput);
298 };
299 
300  }}
Class representing a concrete trajectory definition.
Definition: Trajectory.h:10
Factory to build FMS facades.
Definition: FMSFacadeFactory.h:17
The facade for FMS writing.
Definition: FMSWriteFacade.h:29
void clearPointcloudFile()
Definition: FMSWriteFacade.cpp:62
shared_ptr< TrajectoryWriter > getTrajectoryWriter() const
Obtain the trajectory writer of the write facade.
Definition: FMSWriteFacade.h:193
void writeFullWaveformsUnsafe(vector< FullWaveform > const &fullWaveforms) const
Write the full waveform without validations (it is faster than its non unsafe counterpart)
Definition: FMSWriteFacade.h:283
void setMeasurementWriterLas10(bool const las10)
Definition: FMSWriteFacade.cpp:134
void setMeasurementWriterLasOutput(bool const lasOutput)
Definition: FMSWriteFacade.cpp:114
void validateTrajectoryWriter(string const &callerName="FMSWriteFacade::validateTrajectoryWriter", string const &errorMsg="could not accesss TrajectoryWriter") const
Validate the trajectory writer of the facade is valid to support write methods. If it is not valid,...
Definition: FMSWriteFacade.cpp:187
virtual void disconnect()
Disconnect all components from the write facade.
Definition: FMSWriteFacade.cpp:17
fs::path getTrajectoryWriterOutputPath()
Definition: FMSWriteFacade.cpp:218
bool isMeasurementWriterLas10() const
Definition: FMSWriteFacade.cpp:124
void configure(string const &prefix, bool const computeWaveform, bool const lastLegInStrip)
Configure the output path for all writers in the facade.
Definition: FMSWriteFacade.cpp:20
void setTrajectoryWriter(shared_ptr< TrajectoryWriter > tw)
Set the trajectory writer of the write facade.
Definition: FMSWriteFacade.h:200
string getRootDir() const
Obtain the root directory of the write facade.
Definition: FMSWriteFacade.h:87
void writeTrajectoryUnsafe(Trajectory const &t) const
Write the trajectory without validations (it is faster than its non unsafe counterpart)
Definition: FMSWriteFacade.h:221
void setFullWaveformWriter(shared_ptr< VectorialFullWaveformWriter > fww)
Set the full waveform writer of the write facade.
Definition: FMSWriteFacade.h:259
void writeMeasurements(vector< Measurement > const &measurements)
Definition: FMSWriteFacade.cpp:50
void finishTrajectoryWriter()
Definition: FMSWriteFacade.cpp:208
shared_ptr< VectorialFullWaveformWriter > getFullWaveformWriter() const
Obtain the full waveform writer of the write facade.
Definition: FMSWriteFacade.h:252
shared_ptr< VectorialMeasurementWriter > mw
The vectorial writer for measurements.
Definition: FMSWriteFacade.h:38
bool isMeasurementWriterLasOutput() const
Definition: FMSWriteFacade.cpp:104
void writeFullWaveforms(vector< FullWaveform > const &fullWaveforms)
Definition: FMSWriteFacade.cpp:271
void setFullWaveformWriterZipOutput(bool const zipOutput)
Definition: FMSWriteFacade.cpp:303
void setRootDir(string const &rootDir)
Set the root directory of the write facade.
Definition: FMSWriteFacade.h:93
void writeMeasurementsUnsafe(vector< Measurement > const &measurements) const
Write the vector of measurements without validations (it is faster than its non unsafe counterpart)
Definition: FMSWriteFacade.h:130
void setTrajectoryWriterZipOutput(bool const zipOutput)
Definition: FMSWriteFacade.cpp:248
void validateMeasurementWriter(string const &callerName="FMSWriteFacade::validateMeasurementWriter", string const &errorMsg="could not access MeasurementWriter") const
Validate the measurement writer of the facade is valid to support write methods. If it is not valid,...
Definition: FMSWriteFacade.cpp:38
shared_ptr< VectorialFullWaveformWriter > fww
The writer for full waveform.
Definition: FMSWriteFacade.h:48
bool isMeasurementWriterZipOutput() const
Definition: FMSWriteFacade.cpp:144
bool isFullWaveformWriterZipOutput() const
Definition: FMSWriteFacade.cpp:293
bool isTrajectoryWriterZipOutput() const
Definition: FMSWriteFacade.cpp:238
FMSWriteFacade()=default
Default constructor for FMS write facade.
shared_ptr< TrajectoryWriter > tw
The writer for trajectories.
Definition: FMSWriteFacade.h:43
void setMeasurementWriterLasScale(double const lasScale)
Definition: FMSWriteFacade.cpp:174
void writeTrajectory(Trajectory const &t)
Definition: FMSWriteFacade.cpp:198
void validateFullWaveformWriter(string const &callerName="FMSWriteFacade::validateFullWaveformWriter", string const &errorMsg="could not accesss FullWaveformWriter") const
Validate the full waveform writer of the facade is valid to support write methods....
Definition: FMSWriteFacade.cpp:260
void finishMeasurementWriter()
Definition: FMSWriteFacade.cpp:72
shared_ptr< VectorialMeasurementWriter > getMeasurementWriter() const
Obtain the measurement writer of the write facade.
Definition: FMSWriteFacade.h:102
double getMeasurementWriterLasScale() const
Definition: FMSWriteFacade.cpp:164
void setMeasurementWriterZipOutput(bool const zipOutput)
Definition: FMSWriteFacade.cpp:154
fs::path getMeasurementWriterOutputPath()
Definition: FMSWriteFacade.cpp:82
void finishFullWaveformWriter()
Definition: FMSWriteFacade.cpp:283
string rootDir
The root directory for output files.
Definition: FMSWriteFacade.h:52
void setTrajectoryWriterOutputPath(string const &path)
Definition: FMSWriteFacade.cpp:228
void setMeasurementWriterOutputPath(std::string path, const bool lastLegInStrip)
Definition: FMSWriteFacade.cpp:91
void setMeasurementWriter(shared_ptr< VectorialMeasurementWriter > mw)
Set the measurement writer of the write facade.
Definition: FMSWriteFacade.h:109