IPolylineFactory.hpp
1 #pragma once
2 
3 #include "DM/config.hpp"
4 #include "DM/Handle.hpp"
5 #include "DM/IPolyline.hpp"
6 #include "DM/AutoLink.hpp" //enable autolink
7 
8 DM_NAMESPACE_BEGIN
9 
10 
11 /// \brief factory interface for creating polyline objects
12 /** Polyline may consists of multiple independent lines. Although line part may be closed, the objects
13  does not represent the enclosed area. The object remains a linear object. For describing areas use
14  polygons.
15 */
16 class DM_API IPolylineFactory : public ObjectBase
17 {
18 public:
19 
20  /// \brief functor class to only add certain parts to the polyline factory
21  class IPartFunctor : public ObjectBase {
22  protected:
23  virtual ~IPartFunctor() {}
24 
25  public:
26  virtual bool operator()(const IPolyline::IPart &part) const = 0;
27  };
28 
29  static IPolylineFactory* New();
30 
31 protected:
32  virtual ~IPolylineFactory() {}
33 
34 public:
35  virtual void clear() = 0;
36  virtual void reservePoint(unsigned size) = 0; ///< reserve memory for points
37 
38  virtual IPolylineFactory& addPoint(const IPoint &pt) = 0;
39  virtual IPolylineFactory& addPoint(PointHandle pt) = 0;
40  virtual IPolylineFactory& addPoint(double x, double y) = 0;
41  virtual IPolylineFactory& addPoint(double x, double y, double z) = 0;
42 
43  virtual IPolylineFactory& insertPoint(unsigned idx, const IPoint &pt) = 0;
44  virtual IPolylineFactory& insertPoint(unsigned idx, PointHandle pt) = 0;
45  virtual IPolylineFactory& insertPoint(unsigned idx, double x, double y) = 0;
46  virtual IPolylineFactory& insertPoint(unsigned idx, double x, double y, double z) = 0;
47 
48  virtual IPolylineFactory& addPolyline(const IPolyline &line, bool mergeConnectedParts = false) = 0;
49 
50  ///< allows adding only certain parts of an existing polyline object into the factory
51  virtual IPolylineFactory& addPolyline(const IPolyline &line, const IPartFunctor &partFunc) = 0;
52  ///< add a part of another polyline object into the factory
53  virtual IPolylineFactory& addPolyline(const IPolyline::IPart &part) = 0;
54 
55  virtual IPolylineFactory& closePart() = 0;
56 
57  virtual IPolylineFactory& addPart() = 0;
58 
59  virtual PolylineHandle getPolyline(bool clear = true) = 0;
60 };
61 
62 typedef Handle<IPolylineFactory> PolylineFactoryHandle;
63 
64 DM_NAMESPACE_END
functor class to only add certain parts to the polyline factory
Definition: IPolylineFactory.hpp:21
Definition: IPolyline.hpp:14
Definition: IPolyline.hpp:21
factory interface for creating polyline objects
Definition: IPolylineFactory.hpp:16
Smart pointer class using reference counting with support for DM objects (see ObjectBase)
Definition: Handle.hpp:75
Definition: M/c++_api/inc/DM/ObjectBase.hpp:8
3d point object
Definition: IPoint.hpp:14