c++_api/inc/opals/IImport.hpp
1 #ifndef OPALS_IIMPORT_HPP_INCLUDED
2 #define OPALS_IIMPORT_HPP_INCLUDED
3 
4 #include <opals/IModuleBase.hpp>
5 
6 #if !defined(OPALS_EXPORTS) && !defined(OPALS_MODULE_EXPORTS)
7  #if defined _DEBUG && !defined OPALS_NO_DEBUG
8  #pragma comment(lib, "opalsImport_d.lib")
9  #else
10  #pragma comment(lib, "opalsImport.lib")
11  #endif
12 #endif
13 
14 #include <opals/String.hpp>
15 #include <opals/Path.hpp>
16 #include <opals/Vector.hpp>
17 #include <opals/TrafPars3dAffine.hpp>
18 #include <opals/BeamInfo.hpp>
19 #include <opals/MergePolygonMode.hpp>
20 
21 namespace opals {
22 
23  namespace opts
24  {
25  namespace Import
26  {
27  /// Options of \ref ModuleImport
28  typedef IGroup< Names::_, false, Cons<
29  ILeaf< Names::inFile, false, opals::Vector<opals::Path> >, Cons<
30  ILeaf< Names::iFormat, false, opals::Vector<opals::String> >, Cons<
31  ILeaf< Names::trjFile, false, opals::Vector<opals::Path> >, Cons<
32  ILeaf< Names::tFormat, false, opals::Vector<opals::String> >, Cons<
33  ILeaf< Names::outFile, false, opals::Path >, Cons<
34  ILeaf< Names::filter, false, opals::String >, Cons<
35  ILeaf< Names::trafo, false, opals::TrafPars3dAffine >, Cons<
36  ILeaf< Names::storeOrder, false, bool >, Cons<
37  ILeaf< Names::tilePointCount, false, int >, Cons<
38  ILeaf< Names::tileSize, false, double >, Cons<
39  ILeaf< Names::storeBeamInfo, false, opals::Vector<opals::BeamInfo::Type> >, Cons<
40  ILeaf< Names::mergePolygon, false, opals::MergePolygonMode::Type >
41  > > > > > > > > > > > > > Options;
42  }
43  }
44 
45  /// Loads vector and raster data into an ODM for subsequent use in modules dealing with point cloud and line related data.
46  /** Module Import tries to preserve the full information of imported file formats.
47  Therefore, the ODM contains an additional administration level, storing header and layer information for each file.
48  Hence, it is possible to reproduce the original files from an ODM file (even in case of a multiple file import).
49  Currently, Module Import supports 6 different vector file formats. Additionally, any of the supported raster formats may be imported. However, please notice that this is a rather rare use case: raster data imported into an ODM will be treated like any other data in an ODM i.e. the topological information defined implicitly by rasters is lost. */
50  /// \see \ref ModuleImport
51  class OPALS_API IImport : virtual public IModuleBase
52  {
53 
54  public:
55  static IImport* New();
56  static IImport* New( IControlObject &controlObject );
57  static IImport* New( const IModuleBase &parent );
58  static IImport* New( const IModuleBase &parent, IControlObject &controlObject );
59 
60  virtual ~IImport() {}
61 
62  /// \name Access to module-specific options.
63  ///@{
65  virtual Options& opts() = 0;
66  virtual const Options& opts() const = 0;
67  ///}@
68 
69  };
70 
71 };
72 
73 #endif