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, const SelectionMatrix &sel, IPointSet &result) = 0;
27  virtual void searchPoint(const IPoint &refPt, const SelectionMatrix &sel, const IFilter &filter, IPointSet &result) = 0;
28 };
29 
31 
32 
33 /// \brief base interface for single point extracting sampling matrices classes
34 class ISamplingMatrixSingle : public virtual ISamplingMatrix {
35 public:
36  static ISamplingMatrixSingle* New(const ISamplingStrategy& sampling, const IWindow &limit);
37 
38 protected:
39  virtual ~ISamplingMatrixSingle() {}
40 
41 public:
42  virtual const PointHandle& extract(int indX, int indY) const = 0;
43 };
44 
46 
47 
48 /// \brief base interface for multi point extracting sampling matrices classes
49 class ISamplingMatrixMultiple : public virtual ISamplingMatrix {
50 public:
51  static ISamplingMatrixMultiple* New(const ISamplingStrategy& sampling, const IWindow &limit);
52 
53 protected:
54  virtual ~ISamplingMatrixMultiple() {}
55 
56 public:
57  virtual const std::vector<PointHandle>& extract(int indX, int indY) const = 0;
58 };
59 
61 
62 
63 DM_NAMESPACE_END
base interface for multi point extracting sampling matrices classes
Definition: ISamplingMatrix.hpp:49
2d window object
Definition: IWindow.hpp:11
base interface for single point extracting sampling matrices classes
Definition: ISamplingMatrix.hpp:34
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