Helios++
Helios software for LiDAR simulations
HeliosWriter.h
1 #ifndef _HELIOS_FILEMS_HELIOS_WRITER_H_
2 #define _HELIOS_FILEMS_HELIOS_WRITER_H_
3 
4 #include <filems/write/comps/SyncFileWriter.h>
5 
6 #include <boost/filesystem.hpp>
7 
8 #include <string>
9 #include <memory>
10 
11 namespace fs=boost::filesystem;
12 
13 namespace helios{ namespace filems{
14 
15 using std::string;
16 using std::shared_ptr;
17 
24 template <typename ... WriteArgs>
26 protected:
27  // *** ATTRIBUTES *** //
28  // ******************** //
33  shared_ptr<SyncFileWriter<WriteArgs ...>> sfw = nullptr;
34 
40  bool lasOutput = false;
45  bool las10 = false;
50  bool zipOutput = false;
56  double lasScale = 0.0001;
57 
58 public:
59  // *** CONSTRUCTION / DESTRUCTION *** //
60  // ************************************ //
64  HeliosWriter() = default;
65  virtual ~HeliosWriter() = default;
66 
67  // *** HELIOS WRITER METHODS *** //
68  // ******************************* //
73  virtual void finish();
74 
75  // *** GETTERs and SETTERs *** //
76  // ***************************** //
82  virtual bool hasWriter() const {return sfw != nullptr;}
88  virtual fs::path getOutputFilePath() const
89  {return fs::path(getOutputPath());}
93  virtual string getOutputPath() const {return sfw->getPath();}
94 
99  inline bool isLasOutput() const {return lasOutput;}
104  inline void setLasOutput(bool const lasOutput)
105  {this->lasOutput = lasOutput;}
110  inline bool isLas10() const {return las10;}
115  inline void setLas10(bool const las10) {this->las10 = las10;}
120  inline bool isZipOutput() const {return zipOutput;}
125  inline void setZipOutput(bool const zipOutput)
126  {this->zipOutput = zipOutput;}
131  inline double getLasScale() const {return lasScale;}
136  inline void setLasScale(double const lasScale)
137  {this->lasScale = lasScale;}
138 };
139 
140 #include <filems/write/core/HeliosWriter.tpp>
141 
142 }}
143 
144 #endif
Alberto M. Esmoris Pena.
Definition: HeliosWriter.h:25
bool isZipOutput() const
Get the zip output flag.
Definition: HeliosWriter.h:120
void setLas10(bool const las10)
Set the LAS output flag.
Definition: HeliosWriter.h:115
virtual string getOutputPath() const
Definition: HeliosWriter.h:93
virtual bool hasWriter() const
Check whether the HeliosWriter has a non null writer (true) or not (false)
Definition: HeliosWriter.h:82
shared_ptr< SyncFileWriter< WriteArgs ... > > sfw
Synchronous file writer.
Definition: HeliosWriter.h:33
void setLasOutput(bool const lasOutput)
Set the LAS output flag.
Definition: HeliosWriter.h:104
HeliosWriter()=default
Default constructor for HELIOS++ writer.
bool isLasOutput() const
Get the LAS output flag.
Definition: HeliosWriter.h:99
virtual void finish()
Finish the sync file writer.
virtual fs::path getOutputFilePath() const
Get the path to the output file.
Definition: HeliosWriter.h:88
void setZipOutput(bool const zipOutput)
Set the zip output flag.
Definition: HeliosWriter.h:125
void setLasScale(double const lasScale)
Set the LAS scale of the measurement writer.
Definition: HeliosWriter.h:136
bool lasOutput
Flag specifying if detector output must be written in LAS format (true) or not (false)
Definition: HeliosWriter.h:40
bool las10
Flag specifying if detect output must be writing in LAS 1.0 (LAS 1.4 is written by default)
Definition: HeliosWriter.h:45
double lasScale
Scale factor specification to be used when LAS output format specified.
Definition: HeliosWriter.h:56
bool zipOutput
Flag specifying if detector output must be zipped (true) or not (false)
Definition: HeliosWriter.h:50
double getLasScale() const
Obtain the LAS scale of the measurement writer.
Definition: HeliosWriter.h:131
bool isLas10() const
Get the LAS 10 specification flag.
Definition: HeliosWriter.h:110
Abstract class defining common behavior for all synchronous file writers.
Definition: SyncFileWriter.h:18