IKernelGrid.hpp
1 #pragma once
2 
3 #include "DM/config.hpp"
4 #include "DM/IPoint.hpp"
5 #include "DM/IPolyline.hpp"
6 #include "DM/IBox.hpp"
7 #include "DM/IPointIndexLeaf.hpp"
8 #include "DM/ObjectBase.hpp"
9 #include "DM/IPointSet.hpp"
10 
11 #include "DM/Processor/AutoLink.hpp"
12 #include "DM/Processor/IKernelBase.hpp"
13 
14 DM_NAMESPACE_BEGIN
15 
16 
17 /// \brief kernel for handling point object
18 class DM_PS_API IKernelGrid : public IKernelBase
19 {
20 public:
21  virtual ~IKernelGrid() {}
22 
23  /// tells the processor how many band the kernel provides
24  virtual unsigned bandCount() = 0;
25 
26  /// tells the processor to iterate in row or column major order within the cu
27  virtual bool rowMajor() = 0;
28 
29  /// function is called, when the computing unit (cu) changes
30  virtual void cuChanged(unsigned cuIdx, unsigned cuIdxX, unsigned cuIdxY, const IWindow &cuLimit, PointIndexLeafHandle &localTree) = 0;
31 
32  /// process a grid point based and write band results to the bandBuffer
33  virtual bool process(unsigned rasterIdxX, unsigned rasterIdxY, const IPoint &pt, const IPointSet &neighbors, double *bandBuffer) = 0;
34 
35  /// once a cu is fully computed this function is called
36  virtual void cuStoreRaster(unsigned cuIdx, unsigned cuIdxX, unsigned cuIdxY,
37  unsigned rasterIdxX, unsigned rasterIdxY, IRasterDouble **cuRaster) = 0;
38 
39 };
41 
42 
43 DM_NAMESPACE_END
2d window object
Definition: IWindow.hpp:11
The kernel processor concept is used for manipulating geometry objects within an ODM in an efficient ...
Definition: IKernelBase.hpp:16
Definition: IRaster.hpp:10
kernel for handling point object
Definition: IKernelGrid.hpp:18
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