IContouring.hpp
1 #ifndef OPALS_ICONTOURING_HPP_INCLUDED
2 #define OPALS_ICONTOURING_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, "opalsContouring_d.lib")
9  #else
10  #pragma comment(lib, "opalsContouring.lib")
11  #endif
12 #endif
13 
14 #include <opals/String.hpp>
15 #include <opals/Path.hpp>
16 #include <opals/Vector.hpp>
17 
18 namespace opals {
19 
20  namespace opts
21  {
22  namespace Contouring
23  {
24  /// Options of \ref ModuleContouring
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::contours, true, opals::Vector<opals::String> >, Cons<
29  ILeaf< Names::minArea, false, double >, Cons<
30  ILeaf< Names::compressCollinear, false, bool >
31  > > > > > > Options;
32  }
33  }
34 
35  /// Derives the contour of foreground objects of a raster model and exports the results as a polygon shape file.
36  /** TODO:
37  More details on opalsContouring */
38  /// \see \ref ModuleContouring
39  class OPALS_API IContouring : virtual public IModuleBase
40  {
41 
42  public:
43  static IContouring* New();
44  static IContouring* New( IControlObject &controlObject );
45  static IContouring* New( const IModuleBase &parent );
46  static IContouring* New( const IModuleBase &parent, IControlObject &controlObject );
47 
48  virtual ~IContouring() {}
49 
50  /// \name Access to module-specific options.
51  ///@{
53  virtual Options& opts() = 0;
54  virtual const Options& opts() const = 0;
55  ///}@
56 
57  };
58 
59 };
60 
61 #endif