IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
BaseImageTile3dCollSplit.h
1 // BaseImageTile3dCollSplit.h:
3 // ---------------------------
4 //
15 
16 #ifndef __IPSDKIMAGEPROCESSING_BASEIMAGETILE3DCOLLSPLIT_H__
17 #define __IPSDKIMAGEPROCESSING_BASEIMAGETILE3DCOLLSPLIT_H__
18 
19 // suppression warnings
20 // warning C4251: 'ipsdk::imaproc::BaseImageTile3dCollSplit<InputDataType>::_tile3dCoordsColl' : class 'std::vector<ipsdk::imaproc::BaseImageTile3dCollSplit<InputDataType>::Tile3dCoords,std::allocator<ipsdk::imaproc::BaseImageTile3dCollSplit<InputDataType>::Tile3dCoords>>' needs to have dll-interface to be used by clients of class 'ipsdk::imaproc::BaseImageTile3dCollSplit<InputDataType>'
21 #pragma warning (push)
22 #pragma warning (disable : 4251)
23 
24 #include <IPSDKImageProcessing/DataSplit/TileColl/BaseImageTileCollSplit.h>
25 
26 namespace ipsdk {
27 namespace imaproc {
28 
31 
32 template <typename OutputTileType>
33 class IPSDKIMAGEPROCESSING_API BaseImageTile3dCollSplit : public BaseImageTileCollSplit<typename OutputTileType::ImageType>
34 {
35 // predefined public types
36 public:
38  typedef typename OutputTileType::ImageType InputImageType;
39 
40 public:
44  virtual ~BaseImageTile3dCollSplit() = 0;
46 
47 // methods
48 public:
50  inline eImageTileCollSplitType getImageTileCollSplitType() const;
51 
52 protected:
68  void initBase(const boost::shared_ptr<InputImageType>& pImage,
69  const Tile3dCoordsColl& tile3dCoordsColl,
70  const ipUInt64 nbMinEltsPerSplit,
71  const ipUInt64 nbMaxEltsPerSplit);
72 
73 protected:
75  typedef boost::shared_ptr<OutputTileType> Tile3dPtr;
76 
78  typedef std::vector<Tile3dPtr> Tile3dColl;
79 
81  virtual Tile3dPtr extractTile3d(const Tile3dCoords& curTile3dCoords) = 0;
82 
83 
87  virtual BoolResult processAttribute(processor::BaseProcessor& processor,
88  const Tile3dColl& tile3dColl) = 0;
89 
90 private:
96  BoolResult processAttribute(processor::BaseProcessor& processor,
97  const ipUInt64 elementsStartIndex,
98  const ipUInt64 nbElements,
99  const core::BaseRequestOrigin& requestOrigin);
100 
101 // attributes
102 protected:
105 };
106 
109 
110 template <typename InputDataType>
113 {
115 }
116 
119 
120 } // end of namespace imaproc
121 } // end of namespace ipsdk
122 
123 #pragma warning (pop)
124 
125 #endif // __IPSDKIMAGEPROCESSING_BASEIMAGETILE3DCOLLSPLIT_H__
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
Base class for image tile 2d collection split operations for data dispatch.
Definition: BaseImageTile3dCollSplit.h:33
uint64_t ipUInt64
Base types definition.
Definition: BaseTypes.h:55
structure used to store tile 3d coordinates
Definition: ImageTileCollSplitTypes.h:65
std::vector< Tile3dCoords > Tile3dCoordsColl
collection of tile 3d coordinates
Definition: ImageTileCollSplitTypes.h:87
boost::shared_ptr< OutputTileType > Tile3dPtr
shared pointer to tile
Definition: BaseImageTile3dCollSplit.h:75
Base class for processor class.
Definition: BaseProcessor.h:43
eImageTileCollSplitType
Enumerate describing image tile collection split type.
Definition: ImageTileCollSplitTypes.h:34
#define IPSDKIMAGEPROCESSING_API
Import/Export macro for library IPSDKImageProcessing.
Definition: IPSDKImageProcessingExports.h:25
OutputTileType::ImageType InputImageType
input image type associated to operation
Definition: BaseImageTile3dCollSplit.h:38
Base class for request origin description.
Definition: BaseRequestOrigin.h:28
eImageTileCollSplitType getImageTileCollSplitType() const
retrieve image tile collection split type
Definition: BaseImageTile3dCollSplit.h:112
std::vector< Tile3dPtr > Tile3dColl
tile 3d collection created by splitting operation
Definition: BaseImageTile3dCollSplit.h:78
Split operation generating collections of image 3d tiles.
Definition: ImageTileCollSplitTypes.h:38
Base class for image tile collection split operations for data dispatch.
Definition: BaseImageTileCollSplit.h:36
Tile3dCoordsColl _tile3dCoordsColl
collection of tile coordinates associated to split
Definition: BaseImageTile3dCollSplit.h:104