IBounds.hpp
1 #ifndef OPALS_IBOUNDS_HPP_INCLUDED
2 #define OPALS_IBOUNDS_HPP_INCLUDED
3 
4 #include <opals/String.hpp>
5 #include <opals/Path.hpp>
6 #include <opals/IModuleBase.hpp>
7 #include <opals/BoundaryType.hpp>
8 #include <opals/RasterType.hpp>
9 
10 #if !defined(OPALS_EXPORTS) && !defined(OPALS_MODULE_EXPORTS)
11  #if defined _DEBUG && !defined OPALS_NO_DEBUG
12  #pragma comment(lib, "opalsBounds_d.lib")
13  #else
14  #pragma comment(lib, "opalsBounds.lib")
15  #endif
16 #endif
17 
18 namespace opals {
19 
20  namespace opts
21  {
22  namespace Bounds
23  {
24  /// Options of \ref ModuleBounds
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::oFormat, false, opals::String >, Cons<
29  ILeaf< Names::boundsType, false, opals::BoundaryType::Type >, Cons<
30  ILeaf< Names::alphaRadius, false, double >, Cons<
31  ILeaf< Names::hollowingThresh, false, unsigned >, Cons<
32  ILeaf< Names::rasterType, false, opals::RasterType::Type >
33  > > > > > > > > Options;
34  }
35  }
36 
37  /// Derives and stores the 2D boundary polygon of a region covered by the point data of an ODM or the valid pixels of a raster.
38  /** Module Bounds derives the 2D boundary polygon either as a bounding window, minimum bounding rectangle, convex hull or
39  alpha shape. In the latter case, more than one polygon may be extracted if the dataset is divided into specific regions.
40  Please note, that only outer boundaries are derived but no holes. */
41  /// \see \ref ModuleBounds
42  /// \author wk
43  /// \date 14.01.2009
44  class OPALS_API IBounds : virtual public IModuleBase
45  {
46 
47  public:
48  static IBounds* New();
49  static IBounds* New( IControlObject &controlObject );
50  static IBounds* New( const IModuleBase &parent );
51  static IBounds* New( const IModuleBase &parent, IControlObject &controlObject );
52 
53  virtual ~IBounds() {}
54 
55  /// \name Access to module-specific options.
56  ///@{
58  virtual Options& opts() = 0;
59  virtual const Options& opts() const = 0;
60  ///}@
61 
62  };
63 
64 };
65 
66 #endif