ISamplingMatrix.hpp
1 #pragma once
2 
3 #include "DM/config.hpp"
4 #include "DM/IPoint.hpp"
5 #include "DM/ISamplingStrategy.hpp"
6 #include "DM/IWindow.hpp"
7 #include "DM/IPointIndexLeaf.hpp"
8 #include "DM/IPointSet.hpp"
9 
10 #include <vector>
11 
12 DM_NAMESPACE_BEGIN
13 
14 typedef std::vector< std::pair<int, int> > SelectionMatrix;
15 
16 
17 /// \brief base interface for all sampling matrices classes
19 protected:
20  virtual ~ISamplingMatrix() {}
21 
22 public:
23  virtual void accumulate(const PointHandle &pt, double value) = 0;
24  virtual std::size_t count(int indX, int indY) const = 0;
25 
26  virtual void searchPoint(const IPoint &refPt, IPointSet &result) = 0;
27  virtual void searchPoint(const IPoint &refPt, const IFilter &filter, IPointSet &result) = 0;
28  virtual void searchPoint(const IPoint &refPt, const SelectionMatrix &sel, IPointSet &result) = 0;
29  virtual void searchPoint(const IPoint &refPt, const SelectionMatrix &sel, const IFilter &filter, IPointSet &result) = 0;
30 };
31 
33 
34 
35 /// \brief base interface for single point extracting sampling matrices classes
36 class ISamplingMatrixSingle : public virtual ISamplingMatrix {
37 public:
38  static ISamplingMatrixSingle* New(const ISamplingStrategy& sampling, const IWindow &limit);
39 
40 protected:
41  virtual ~ISamplingMatrixSingle() {}
42 
43 public:
44  virtual const PointHandle& extract(int indX, int indY) const = 0;
45 };
46 
48 
49 
50 /// \brief base interface for multi point extracting sampling matrices classes
51 class ISamplingMatrixMultiple : public virtual ISamplingMatrix {
52 public:
53  static ISamplingMatrixMultiple* New(const ISamplingStrategy& sampling, const IWindow &limit);
54 
55 protected:
56  virtual ~ISamplingMatrixMultiple() {}
57 
58 public:
59  virtual const std::vector<PointHandle>& extract(int indX, int indY) const = 0;
60 };
61 
63 
64 
65 DM_NAMESPACE_END
base interface for multi point extracting sampling matrices classes
Definition: ISamplingMatrix.hpp:51
2d window object
Definition: IWindow.hpp:11
base interface for single point extracting sampling matrices classes
Definition: ISamplingMatrix.hpp:36
Base class of all geometry objects.
Definition: ISamplingStrategy.hpp:13
object representing a spatial leaf within a point index
Definition: IPointIndexLeaf.hpp:30
base interface for all sampling matrices classes
Definition: ISamplingMatrix.hpp:18
Definition: IFilter.hpp:21
@ count
always last element
Smart pointer class using reference counting with support for DM objects (see ObjectBase)
Definition: Handle.hpp:75
a set of 3d point object
Definition: IPointSet.hpp:16
3d point object
Definition: IPoint.hpp:14