IBox.hpp
1 #ifndef DM_IBOX_HPP_INCLUDED
2 #define DM_IBOX_HPP_INCLUDED
3 
4 #ifdef _MSC_VER
5  #pragma once
6 #endif
7 
8 #include "DM/config.hpp"
9 #include "DM/Handle.hpp"
10 #include "DM/IWindow.hpp"
11 #include "DM/AutoLink.hpp" //enable autolink
12 
13 DM_NAMESPACE_BEGIN
14 
15 /// \brief Geometry object describing a 3d box
16 class DM_API IBox : public IWindow
17 {
18 public:
19  static IBox* New();
20  static IBox* New(double xmin, double ymin, double xmax, double ymax);
21  static IBox* New(double xmin, double ymin, double zmin, double xmax, double ymax, double zmax);
22 
23 protected:
24  virtual ~IBox() {}
25 
26 public:
27  virtual double zmin() const = 0;
28  virtual double zmax() const = 0;
29 
30  virtual void zmin(double) = 0;
31  virtual void zmax(double) = 0;
32 
33  virtual void zrange(double zmin, double zmax) = 0;
34 
35  virtual void expand(double) = 0;
36 };
37 
38 typedef Handle<IBox> BoxHandle;
39 
40 DM_NAMESPACE_END
41 
42 #endif //DM_IBOX_HPP_INCLUDED