ILineTopology.hpp
1 #pragma once
2 
3 #include <opals/IModuleBase.hpp>
4 #include <opals/Path.hpp>
5 #include <opals/Vector.hpp>
6 #include <opals/TopologyProcessingMethod.hpp>
7 
8 #if defined(_MSC_VER) && !defined(OPALS_NO_AUTOLINK)
9  #if defined _DEBUG && !defined OPALS_NO_DEBUG
10  #pragma comment(lib, "opalsLineTopology_d.lib")
11  #else
12  #pragma comment(lib, "opalsLineTopology.lib")
13  #endif
14 #endif
15 
16 namespace opals
17 {
18 
19  namespace opts
20  {
21  /// Options of \ref ModuleLineTopology
22  namespace LineTopology
23  {
24  /// Options of \ref ModuleLineTopology
25  using Options =
26  IGroup< Names::_, false,
37  IGroup< Names::merge, false,
45  >,
46  IGroup< Names::wf, false,
52  >,
53  IGroup< Names::clean, false,
55  >
56  >;
57  }
58  }
59 
60  /// Provides different line merging and topology correction tools for cleaning line networks derived via automatic edge detection.
61  /** TODO:
62  More details on opalsLineTopology with much more words,
63  possibly on several lines. */
64  /// \see \ref ModuleLineTopology
65  class OPALS_API ILineTopology : virtual public IModuleBase
66  {
67 
68  public:
69  static ILineTopology* New();
70  static ILineTopology* New( IControlObject &controlObject );
71  static ILineTopology* New( const IModuleBase &parent );
72  static ILineTopology* New( const IModuleBase &parent, IControlObject &controlObject );
73 
74  virtual ~ILineTopology() {}
75 
76  /// \name Access to module-specific options.
77  ///@{
79  virtual Options& opts() = 0;
80  virtual const Options& opts() const = 0;
81  ///@}
82 
83  };
84 
85 }
IGroup< Names::_, false, ILeaf< Names::inFile, false, Path >, ILeaf< Names::outFile, false, Path >, ILeaf< Names::method, false, TopologyProcessingMethod >, ILeaf< Names::minLength, false, double >, ILeaf< Names::maxTol, false, double >, ILeaf< Names::lineVertexDist, false, double >, ILeaf< Names::snapRadius, false, double >, ILeaf< Names::maxAngleDev, false, Vector< float > >, ILeaf< Names::avgDist, false, double >, ILeaf< Names::debugOutFile, false, Path >, IGroup< Names::merge, false, ILeaf< Names::minWeight, false, double >, ILeaf< Names::relWeightLead, false, double >, ILeaf< Names::maxIter, false, unsigned >, ILeaf< Names::revertDist, false, double >, ILeaf< Names::revertInterval, false, double >, ILeaf< Names::searchGeneration, false, unsigned >, ILeaf< Names::preventIntersection, false, bool > >, IGroup< Names::wf, false, ILeaf< Names::dist, false, double >, ILeaf< Names::angle, false, Vector< float > >, ILeaf< Names::revertDist, false, double >, ILeaf< Names::straightness, false, double >, ILeaf< Names::perpDist, false, double > >, IGroup< Names::clean, false, ILeaf< Names::intersectSnapDist, false, double > > > Options
Options of Module LineTopology.
Definition: ILineTopology.hpp:56
Provides different line merging and topology correction tools for cleaning line networks derived via ...
Definition: ILineTopology.hpp:65
@ wf
Parameter group 'wf' containing weight factor options (opalsLineTopology)
Leaf that holds a read-only value.
Definition: IOption.hpp:63
@ clean
Parameter group 'clean' (opalsLineTopology)
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
@ merge
Parameter group 'merge' (opalsLineTopology)
A group of options.
Definition: IOption.hpp:108