IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
BaseImageYStrip2d.h
1 // BaseImageYStrip2d.h:
3 // --------------------
4 //
14 
15 #ifndef __IPSDKIMAGE_BASEIMAGEYSTRIP2D_H__
16 #define __IPSDKIMAGE_BASEIMAGEYSTRIP2D_H__
17 
18 // suppression warnings
19 // warning C4251: 'ipsdk::image::BaseImageYStrip2d::_stripParsingDirection' : class 'ipsdk::image::eStripParsingDirection' needs to have dll-interface to be used by clients of class 'ipsdk::image::BaseImageYStrip2d'
20 #pragma warning (push)
21 #pragma warning (disable : 4251)
22 
23 #include <IPSDKImage/Fragment/Strip/BaseImageStrip.h>
24 #include <IPSDKBaseData/Buffer/HybridBuffer.h>
25 
26 namespace ipsdk {
27 namespace image {
28 
29 class BaseImageYStripColor2d;
30 class BaseImageYStripSeq2d;
31 class BaseImageYStrip2dWithKernel;
32 class BaseImageZStrip3d;
33 
36 
38 {
39  // declare serial class
41 
42  // friend class for protected members access
43  friend class BaseImageYStripColor2d;
44  friend class BaseImageYStripSeq2d;
45  friend class BaseImageYStrip2dWithKernel;
46  friend class BaseImageZStrip3d;
47 
48 // predefined public types
49 public:
51  static const eImageStripType::domain g_imageStripType = eImageStripType::eIST_Y2d;
52 
53 public:
57  virtual ~BaseImageYStrip2d() = 0;
59 
60 // methods
61 public:
63  eImageStripType getImageStripType() const;
64 
65  //------------------------------------
68  //------------------------------------
69 
72  const eStripParsingDirection& getStripParsingDirection() const;
73 
76  const eStripParsingDirection& getLineParsingDirection() const;
77 
80  ipUInt64 getSizeX() const;
81 
84  ipUInt64 getStripStartOffsetY() const;
85 
88  ipUInt64 getStripSizeY() const;
89 
92  ipUInt64 getImageSizeY() const;
93 
96  bool isValidY(ipUInt64 y) const;
97 
100  const eImageBufferType& getBufferType() const;
101 
104  const ipUInt64 getFullStripSize() const;
105 
108  const ipUInt64 getPlanStripSize() const;
109 
112  const ipUInt64 getStripNbPlans() const;
114 
115  //--------------------
118  //--------------------
119 
122  ipUInt64 getZPlanIdx() const;
123 
126  ipUInt64 getCPlanIdx() const;
127 
130  ipUInt64 getTPlanIdx() const;
132 
136  const HybridBuffer& getBuffer() const;
137 
139  virtual ipBool fromDisk() const;
140 
141 protected:
143  void initBase(const ipUInt64 zPlanIdx,
144  const ipUInt64 cPlanIdx,
145  const ipUInt64 tPlanIdx,
146  const ipUInt64 stripStartOffsetY,
147  const ipUInt64 stripSizeY,
148  const eStripAllocationType& stripAllocationType,
149  const eStripParsingDirection& stripParsingDirection,
150  const PlanStoragePtr& pPlanStorage,
151  const DataIdentifierConstPtr& pImageIdentifier,
152  const DataItemMapConstPtr& pImageHeader);
153 
155  bool isBufferInitDerived() const;
156 
158  BoolResult initBufferDerived();
159 
161  void clearBufferDerived();
162 
164  eDataAccessMode retrieveAccessMode() const;
165 
166  //-----------------------------------
169  //-----------------------------------
170 
171  //-----------------------------------
174  //-----------------------------------
175 
178  BoolResult readDataDerived() const;
179 
182  BoolResult writeDataDerived();
184 
189  const HybridBuffer& accessBuffer() const;
190  HybridBuffer& accessBuffer();
192 
194  void clearDerived();
195 
196 
197 // attributes
198 private:
200  eStripParsingDirection _stripParsingDirection;
201 
204  eStripParsingDirection _lineParsingDirection;
205 
208  ipUInt64 _zPlanIdx;
209  ipUInt64 _cPlanIdx;
210  ipUInt64 _tPlanIdx;
212 
214  ipUInt64 _sizeX;
215 
217  ipUInt64 _stripStartOffsetY;
218 
220  ipUInt64 _stripSizeY;
221 
223  ipUInt64 _imageSizeY;
224 
226  eImageBufferType _bufferType;
227 
229  PlanStoragePtr _pPlanStorage;
230 
232  mutable HybridBuffer _buffer;
233 };
234 
237 
238 inline eImageStripType
240 {
241  return g_imageStripType;
242 }
243 
244 inline const HybridBuffer&
246 {
247  return accessBuffer();
248 }
249 
252 
253 } // end of namespace image
254 } // end of namespace ipsdk
255 
256 #pragma warning (pop)
257 
258 #endif // __IPSDKIMAGE_BASEIMAGEYSTRIP2D_H__
Base class for image 2d strip with splitting along Y axis associated to a kernel. ...
Definition: BaseImageYStrip2dWithKernel.h:33
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
const HybridBuffer & accessBuffer() const
access to strip full buffer
eDataAccessMode
Enumerate describing access mode for an image fragment data.
Definition: ImageFragmentTypes.h:45
uint64_t ipUInt64
Base types definition.
Definition: BaseTypes.h:55
#define IPSDK_DECLARE_ABSTRACT_SERIAL_WITHOUT_COPY(libraryName, className)
macro enabling serialization on abstract class
Definition: SerializationHdrMacro.h:97
eImageStripType getImageStripType() const
retrieve image strip type
Definition: BaseImageYStrip2d.h:239
eStripAllocationType
Enumerate describing image strip allocation policy.
Definition: ImageStripTypes.h:88
const HybridBuffer & getBuffer() const
retrieve strip full buffer
Definition: BaseImageYStrip2d.h:245
static const eImageStripType::domain g_imageStripType
image strip type
Definition: BaseImageYStrip2d.h:51
Base class for color image 2d strip with splitting along Y axis.
Definition: BaseImageYStripColor2d.h:33
image 2d strip with splitting along Y axis
Definition: ImageStripTypes.h:46
Base class for image strip fragments.
Definition: BaseImageStrip.h:34
Base class for image 3d strip with splitting along Z axis.
Definition: BaseImageZStrip3d.h:34
boost::shared_ptr< const DataItemMap > DataItemMapConstPtr
shared pointer to const DataItemMap
Definition: DataItemTypes.h:170
#define IPSDKIMAGE_API
Import/Export macro for library IPSDKImage.
Definition: IPSDKImageExports.h:27
bool ipBool
Base types definition.
Definition: BaseTypes.h:47
boost::shared_ptr< BasePlanStorage > PlanStoragePtr
shared pointer to image plan storage
Definition: PlanStorageTypes.h:55
eStripParsingDirection
Enumerate describing strip parsing direction.
Definition: ImageStripTypes.h:72
Base class for sequence image 2d strip with splitting along Y axis.
Definition: BaseImageYStripSeq2d.h:32
boost::shared_ptr< const DataIdentifier > DataIdentifierConstPtr
shared pointer to const data identifier
Definition: DataIdentifierTypes.h:31
Class allowing to encapsulate an hybrid form of buffer.
Definition: HybridBuffer.h:52
Base class for image 2d strip with splitting along Y axis.
Definition: BaseImageYStrip2d.h:37
eImageStripType
Enumerate describing image strip type.
Definition: ImageStripTypes.h:42
eImageBufferType
types associated to image buffers
Definition: ImageTypes.h:78