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  static IBox* New(const IGeometry& obj);
18 
19  IBox* clone() const override = 0;
20 protected:
21  virtual ~IBox() {}
22 
23 public:
24  virtual double zmin() const = 0;
25  virtual double zmax() const = 0;
26 
27  virtual void zmin(double) = 0;
28  virtual void zmax(double) = 0;
29 
30  virtual void zrange(double zmin, double zmax) = 0;
31 
32  virtual void expand(double) = 0;
33 };
34 
35 typedef Handle<IBox> BoxHandle;
36 
37 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
Base class of all geometry objects.
Definition: IGeometry.hpp:26
Smart pointer class using reference counting with support for DM objects (see ObjectBase)
Definition: Handle.hpp:75