IView.hpp
1 #ifndef OPALS_IVIEW_HPP_INCLUDED
2 #define OPALS_IVIEW_HPP_INCLUDED
3 
4 #if !defined(OPALS_EXPORTS) && !defined(OPALS_MODULE_EXPORTS)
5  #if defined _DEBUG && !defined OPALS_NO_DEBUG
6  #pragma comment(lib, "opalsView_d.lib")
7  #else
8  #pragma comment(lib, "opalsView.lib")
9  #endif
10 #endif
11 
12 #include <opals/IModuleBase.hpp>
13 #include <opals/Path.hpp>
14 #include <opals/Vector.hpp>
15 
16 namespace opals
17 {
18 
19  namespace opts
20  {
21  namespace View
22  {
23  /// Options of \ref ModuleView
24  typedef IGroup< Names::_, false, Cons<
25  ILeaf< Names::inFile, false, opals::Vector<opals::Path> >, Cons<
26  ILeaf< Names::filter, false, opals::String >
27  > > > Options;
28  }
29  }
30 
31  /// Provides an interactive 3d viewer for points (including arbitrary attributes) and lines.
32  /** TODO:
33  More details on opalsView with much more words,
34  possibly on several lines. */
35  /// \see \ref ModuleView
36  class OPALS_API IView : virtual public IModuleBase
37  {
38 
39  public:
40  static IView* New();
41  static IView* New( IControlObject &controlObject );
42  static IView* New( const IModuleBase &parent );
43  static IView* New( const IModuleBase &parent, IControlObject &controlObject );
44 
45  virtual ~IView() {}
46 
47  /// \name Access to module-specific options.
48  ///@{
50  virtual Options& opts() = 0;
51  virtual const Options& opts() const = 0;
52  ///}@
53 
54  };
55 
56 }
57 
58 #endif