IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
BasePreviousImageYStrip2dSplit.h
1 // BasePreviousImageYStrip2dSplit.h:
3 // ---------------------------------
4 //
20 
21 #ifndef __IPSDKIMAGEPROCESSING_BASEPREVIOUSIMAGEYSTRIP2DSPLIT_H__
22 #define __IPSDKIMAGEPROCESSING_BASEPREVIOUSIMAGEYSTRIP2DSPLIT_H__
23 
24 // suppression warnings
25 // warning C4251: 'ipsdk::imaproc::BasePreviousImageYStrip2dSplit<InputDataType,OutputDataType>::_stripParsingDirection' : class 'ipsdk::image::eStripParsingDirection' needs to have dll-interface to be used by clients of class 'ipsdk::imaproc::BasePreviousImageYStrip2dSplit<InputDataType,OutputDataType>'
26 #pragma warning (push)
27 #pragma warning (disable : 4251)
28 
29 #include <IPSDKImageProcessing/DataSplit/Strip/BaseImageStripSplit.h>
30 #include <boost/thread/mutex.hpp>
31 #include <map>
32 
33 namespace ipsdk {
34 namespace imaproc {
35 
38 
39 template <typename InputDataType, typename OutputDataType>
41 {
42 // predefined public types
43 public:
45  typedef OutputDataType OutputType;
46 
48  typedef boost::shared_ptr<OutputDataType> OutputStorageType;
49 
51  typedef std::map<ipUInt64, OutputStorageType> OutputStorageMap;
52 
53 public:
57  virtual ~BasePreviousImageYStrip2dSplit() = 0;
59 
60 // methods
61 public:
64  {
66  }
67 
72  const image::eStripParsingDirection& getStripParsingDirection() const;
73 
74 protected:
77  virtual BoolResult processAttribute(processor::BaseProcessor& processor,
78  const boost::shared_ptr<OutputDataType>& pImageYStrip2d) = 0;
79 
83  BoolResult extractStrip(const ipUInt64 stripStartingOffsetY,
84  const image::BaseImage& image,
85  OutputStorageType& pStrip);
86 
90  BoolResult storeStrip(const ipUInt64 stripStartingOffsetY,
91  const image::BaseImage& image);
92 
98  void initBase(const boost::shared_ptr<InputDataType>& pImage,
99  const image::eStripParsingDirection& stripParsingDirection);
100 
101 private:
105  BoolResult processAttribute(processor::BaseProcessor& processor,
106  const ipUInt64 elementsStartIndex,
107  const ipUInt64 nbElements,
108  const core::BaseRequestOrigin& requestOrigin);
109 
110 // attributes
111 private:
113  image::eStripParsingDirection _stripParsingDirection;
114 
116  OutputStorageMap _stripsMap;
117 
119  boost::mutex _mutex;
120 };
121 
124 
125 } // end of namespace imaproc
126 } // end of namespace ipsdk
127 
128 #pragma warning (pop)
129 
130 #endif // __IPSDKIMAGEPROCESSING_BASEPREVIOUSIMAGEYSTRIP2DSPLIT_H__
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
uint64_t ipUInt64
Base types definition.
Definition: BaseTypes.h:55
OutputDataType OutputType
output data type for split operation
Definition: BasePreviousImageYStrip2dSplit.h:45
eImageStripSplitType getImageStripSplitType() const
retrieve image strip split operation type
Definition: BasePreviousImageYStrip2dSplit.h:63
std::map< ipUInt64, OutputStorageType > OutputStorageMap
collection storages indexed by starting offset
Definition: BasePreviousImageYStrip2dSplit.h:51
Base class for processor class.
Definition: BaseProcessor.h:43
#define IPSDKIMAGEPROCESSING_API
Import/Export macro for library IPSDKImageProcessing.
Definition: IPSDKImageProcessingExports.h:25
Base class for request origin description.
Definition: BaseRequestOrigin.h:28
Split operation allowing to generate y strips 2d just before first currently processed element...
Definition: ImageStripSplitTypes.h:59
eStripParsingDirection
Enumerate describing strip parsing direction.
Definition: ImageStripTypes.h:72
Base class for split operation allowing to generate y strips 2d :
Definition: BasePreviousImageYStrip2dSplit.h:40
eImageStripSplitType
Enumerate describing image strip split type.
Definition: ImageStripSplitTypes.h:33
Base class for images data type.
Definition: BaseImage.h:43
Base class for image strip split operations for data dispatch.
Definition: BaseImageStripSplit.h:35
boost::shared_ptr< OutputDataType > OutputStorageType
output storage type associated to split operation
Definition: BasePreviousImageYStrip2dSplit.h:48