IBox.hpp
1 #pragma once
2 
3 #include "DM/config.hpp"
4 #include "DM/Handle.hpp"
5 #include "DM/IWindow.hpp"
6 #include "DM/AutoLink.hpp" //enable autolink
7 
8 DM_NAMESPACE_BEGIN
9 
10 /// \brief Geometry object describing a 3d box
11 class DM_API IBox : public IWindow
12 {
13 public:
14  static IBox* New();
15  static IBox* New(double xmin, double ymin, double xmax, double ymax);
16  static IBox* New(double xmin, double ymin, double zmin, double xmax, double ymax, double zmax);
17 
18  IBox* clone() const override = 0;
19 protected:
20  virtual ~IBox() {}
21 
22 public:
23  virtual double zmin() const = 0;
24  virtual double zmax() const = 0;
25 
26  virtual void zmin(double) = 0;
27  virtual void zmax(double) = 0;
28 
29  virtual void zrange(double zmin, double zmax) = 0;
30 
31  virtual void expand(double) = 0;
32 };
33 
34 typedef Handle<IBox> BoxHandle;
35 
36 DM_NAMESPACE_END
2d window object
Definition: IWindow.hpp:11
Geometry object describing a 3d box.
Definition: IBox.hpp:11
IWindow * clone() const override=0
get an object copy
Smart pointer class using reference counting with support for DM objects (see ObjectBase)
Definition: Handle.hpp:75