ISnellius.hpp
1 #ifndef OPALS_ISNELLIUS_HPP_INCLUDED
2 #define OPALS_ISNELLIUS_HPP_INCLUDED
3 
4 #include <opals/IModuleBase.hpp>
5 #include <opals/NormalsMetaInfo.hpp>
6 
7 #if !defined(OPALS_EXPORTS) && !defined(OPALS_MODULE_EXPORTS)
8  #if defined _DEBUG && !defined OPALS_NO_DEBUG
9  #pragma comment(lib, "opalsSnellius_d.lib")
10  #else
11  #pragma comment(lib, "opalsSnellius.lib")
12  #endif
13 #endif
14 
15 #include <opals/Path.hpp>
16 #include <opals/Vector.hpp>
17 
18 namespace opals {
19 
20  namespace opts
21  {
22  namespace Snellius
23  {
24  /// Options of \ref ModuleSnellius
25  typedef IGroup< Names::_, false, Cons<
26  ILeaf< Names::inFile, false, opals::Path >, Cons<
27  ILeaf< Names::outFile, false, opals::Path >, Cons<
28  ILeaf< Names::refModel, false, opals::Path >, Cons<
29  ILeaf< Names::refractiveIndex, false, double >, Cons<
30  ILeaf< Names::oriFile, false, opals::Path >, Cons<
31  ILeaf< Names::oriFormat, false, opals::String >, Cons<
32  ILeaf< Names::filter, false, opals::String >, Cons<
33  ILeaf< Names::storeMetaInfo, false, opals::NormalsMetaInfo::Type >
34  > > > > > > > > > Options;
35  }
36  }
37 
38  /// Performs range and refraction corrections of raw laser bathymetry measurements according to Snell's law.
39  /** TODO:
40  More details on opalsSnellius with much more words,
41  possibly on several lines. */
42  /// \see \ref ModuleSnellius
43  class OPALS_API ISnellius : virtual public IModuleBase
44  {
45 
46  public:
47  static ISnellius* New();
48  static ISnellius* New( IControlObject &controlObject );
49  static ISnellius* New( const IModuleBase &parent );
50  static ISnellius* New( const IModuleBase &parent, IControlObject &controlObject );
51 
52  virtual ~ISnellius() {}
53 
54  /// \name Access to module-specific options.
55  ///@{
57  virtual Options& opts() = 0;
58  virtual const Options& opts() const = 0;
59  ///}@
60 
61  };
62 
63 };
64 
65 #endif