IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
BaseImageTile2dCollSplit.h
1 // BaseImageTile2dCollSplit.h:
3 // ---------------------------
4 //
15 
16 #ifndef __IPSDKIMAGEPROCESSING_BASEIMAGETILE2DCOLLSPLIT_H__
17 #define __IPSDKIMAGEPROCESSING_BASEIMAGETILE2DCOLLSPLIT_H__
18 
19 // suppression warnings
20 // warning C4251: 'ipsdk::imaproc::BaseImageTile2dCollSplit<InputDataType>::_tile2dCoordsColl' : class 'std::vector<ipsdk::imaproc::BaseImageTile2dCollSplit<InputDataType>::Tile2dCoords,std::allocator<ipsdk::imaproc::BaseImageTile2dCollSplit<InputDataType>::Tile2dCoords>>' needs to have dll-interface to be used by clients of class 'ipsdk::imaproc::BaseImageTile2dCollSplit<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 BaseImageTile2dCollSplit : public BaseImageTileCollSplit<typename OutputTileType::ImageType>
34 {
35 // predefined public types
36 public:
38  typedef typename OutputTileType::ImageType InputImageType;
39 
40 public:
44  virtual ~BaseImageTile2dCollSplit() = 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 Tile2dCoordsColl& tile2dCoordsColl,
70  const ipUInt64 nbMinEltsPerSplit,
71  const ipUInt64 nbMaxEltsPerSplit);
72 
73 protected:
75  typedef boost::shared_ptr<OutputTileType> Tile2dPtr;
76 
78  typedef std::vector<Tile2dPtr> Tile2dColl;
79 
81  virtual Tile2dPtr extractTile2d(const Tile2dCoords& curTile2dCoords) = 0;
82 
86  virtual BoolResult processAttribute(processor::BaseProcessor& processor,
87  const Tile2dColl& tile2dColl) = 0;
88 
89 private:
95  BoolResult processAttribute(processor::BaseProcessor& processor,
96  const ipUInt64 elementsStartIndex,
97  const ipUInt64 nbElements,
98  const core::BaseRequestOrigin& requestOrigin);
99 
100 // attributes
101 protected:
104 };
105 
108 
109 template <typename InputDataType>
112 {
114 }
115 
118 
119 } // end of namespace imaproc
120 } // end of namespace ipsdk
121 
122 #pragma warning (pop)
123 
124 #endif // __IPSDKIMAGEPROCESSING_BASEIMAGETILE2DCOLLSPLIT_H__
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
boost::shared_ptr< OutputTileType > Tile2dPtr
shared pointer to tile
Definition: BaseImageTile2dCollSplit.h:75
uint64_t ipUInt64
Base types definition.
Definition: BaseTypes.h:55
Base class for processor class.
Definition: BaseProcessor.h:43
std::vector< Tile2dPtr > Tile2dColl
tile 2d collection created by splitting operation
Definition: BaseImageTile2dCollSplit.h:78
eImageTileCollSplitType
Enumerate describing image tile collection split type.
Definition: ImageTileCollSplitTypes.h:34
std::vector< Tile2dCoords > Tile2dCoordsColl
collection of tile 2d coordinates
Definition: ImageTileCollSplitTypes.h:62
#define IPSDKIMAGEPROCESSING_API
Import/Export macro for library IPSDKImageProcessing.
Definition: IPSDKImageProcessingExports.h:25
Tile2dCoordsColl _tile2dCoordsColl
collection of tile coordinates associated to split
Definition: BaseImageTile2dCollSplit.h:103
Base class for request origin description.
Definition: BaseRequestOrigin.h:28
OutputTileType::ImageType InputImageType
input image type associated to operation
Definition: BaseImageTile2dCollSplit.h:38
Split operation generating collections of image 2d tiles.
Definition: ImageTileCollSplitTypes.h:36
eImageTileCollSplitType getImageTileCollSplitType() const
retrieve image tile collection split type
Definition: BaseImageTile2dCollSplit.h:111
Base class for image tile 2d collection split operations for data dispatch.
Definition: BaseImageTile2dCollSplit.h:33
structure used to store tile 2d coordinates
Definition: ImageTileCollSplitTypes.h:46
Base class for image tile collection split operations for data dispatch.
Definition: BaseImageTileCollSplit.h:36