ISimplify.hpp
1 #pragma once
2 
3 #include <opals/IModuleBase.hpp>
4 #include <opals/DivisionMode.hpp>
5 #include <opals/String.hpp>
6 #include <opals/Path.hpp>
7 
8 #if defined(_MSC_VER) && !defined(OPALS_NO_AUTOLINK)
9  #if defined _DEBUG && !defined OPALS_NO_DEBUG
10  #pragma comment(lib, "opalsSimplify_d.lib")
11  #else
12  #pragma comment(lib, "opalsSimplify.lib")
13  #endif
14 #endif
15 
16 namespace opals {
17 
18  namespace opts
19  {
20  /// Options of \ref ModuleSimplify
21  namespace Simplify
22  {
23  /// Options of \ref ModuleSimplify
24  using Options =
25  IGroup< Names::_, false,
34  >;
35  }
36  }
37 
38  /// Analyses a regular or hybrid grid model and generates an approximating TIN surface based on a coarse-to-fine approach.
39  /** opalsSimplify performs surface simplification of regular
40  grid datasets, possibly containing structure information (e.g.
41  breaklines, spot heights, ...). A mesh refinement approach is
42  applied starting with an initial TIN surface approximation (coarse
43  grid and structure info). Subsequently, the approximating TIN is
44  refined by iteratively inserting additional grid posts. such that
45  a certain user defined maximum height difference between the original
46  grid surface and the approximating TIN is met. */
47  /// \see \ref ModuleSimplify
48  class OPALS_API ISimplify : virtual public IModuleBase
49  {
50 
51  public:
52  static ISimplify* New();
53  static ISimplify* New( IControlObject &controlObject );
54  static ISimplify* New( const IModuleBase &parent );
55  static ISimplify* New( const IModuleBase &parent, IControlObject &controlObject );
56 
57  virtual ~ISimplify() {}
58 
59  /// \name Access to module-specific options.
60  ///@{
62  virtual Options& opts() = 0;
63  virtual const Options& opts() const = 0;
64  ///@}
65 
66  };
67 
68 };
IGroup< Names::_, false, ILeaf< Names::inFile, false, Path >, ILeaf< Names::outFile, false, Path >, ILeaf< Names::oFormat, false, String >, ILeaf< Names::maxTol, false, double >, ILeaf< Names::maxDist, false, double >, ILeaf< Names::division, false, DivisionMode >, ILeaf< Names::lineVertexDist, false, double >, ILeaf< Names::lineBufferDist, false, double > > Options
Options of Module Simplify.
Definition: ISimplify.hpp:34
Leaf that holds a read-only value.
Definition: IOption.hpp:63
Analyses a regular or hybrid grid model and generates an approximating TIN surface based on a coarse-...
Definition: ISimplify.hpp:48
Contains the public interface of OPALS.
Definition: AbsValueOrQuantile.hpp:8
Abstract base class of all opals modules.
Definition: IModuleBase.hpp:13
Interface for retrieving status and progress information from a module run.
Definition: c++_api/inc/opals/IControlObject.hpp:30
A group of options.
Definition: IOption.hpp:108