IShade.hpp
1 #ifndef OPALS_ISHADE_HPP_INCLUDED
2 #define OPALS_ISHADE_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, "opalsShade_d.lib")
9  #else
10  #pragma comment(lib, "opalsShade.lib")
11  #endif
12 #endif
13 
14 #include <opals/ShadingMethod.hpp>
15 #include <opals/ResamplingMethod.hpp>
16 #include <opals/GridFeature.hpp>
17 #include <opals/GridLimit.hpp>
18 #include <opals/String.hpp>
19 #include <opals/Path.hpp>
20 #include <opals/Array.hpp>
21 #include <opals/Vector.hpp>
22 
24 
25 namespace opals {
26 
27  namespace opts
28  {
29  namespace Shade
30  {
31  /// Options of \ref ModuleShade
32  typedef IGroup< Names::_, false, Cons<
33  ILeaf< Names::inFile, false, opals::Vector<opals::Path> >, Cons<
34  ILeaf< Names::feature, false, opals::Vector<opals::GridFeature::Type> >, Cons<
35  ILeaf< Names::outFile, false, opals::Path >, Cons<
36  ILeaf< Names::oFormat, false, opals::String >, Cons<
37  ILeaf< Names::pixelSize, false, float >, Cons<
38  ILeaf< Names::limit, false, opals::GridLimit >, Cons<
39  ILeaf< Names::shading, false, opals::ShadingMethod::Type >, Cons<
40  ILeaf< Names::sunPosition, false, ArrayD2 >
41  > > > > > > > > > Options;
42  }
43  }
44 
45  /// Derives shaded relief raster maps (geo-coded hill shading) of DEM grids.
46  /** Hill shading is a method to visualize a surface grid model by illuminating it using a light source shining from a certain direction.
47  Artificial shadows are calculated depending on the slope (steepness) and exposition of the surface w.r.t the direction of the light source.
48  Depending on the artificial shadow length, grey values (0=shaded..255=exposed) are assigned to each cell of the output raster. */
49  /// \see \ref ModuleShade
50  class OPALS_API IShade : virtual public IModuleBase
51  {
52 
53  public:
54  static IShade* New();
55  static IShade* New( IControlObject &controlObject );
56  static IShade* New( const IModuleBase &parent );
57  static IShade* New( const IModuleBase &parent, IControlObject &controlObject );
58 
59  virtual ~IShade() {}
60 
61  /// \name Access to module-specific options.
62  ///@{
64  virtual Options& opts() = 0;
65  virtual const Options& opts() const = 0;
66  ///}@
67 
68  };
69 
70 };
71 
72 #endif