IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
BaseImageTile3d.h
1 // BaseImageTile3d.h:
3 // ------------------
4 //
14 
15 #ifndef __IPSDKIMAGE_BASEIMAGETILE3D_H__
16 #define __IPSDKIMAGE_BASEIMAGETILE3D_H__
17 
18 // suppression warnings
19 // warning C4251: 'ipsdk::image::BaseImageTile3d::_bufferType' : class 'ipsdk::image::eImageBufferType' needs to have dll-interface to be used by clients of class 'ipsdk::image::BaseImageTile3d'
20 #pragma warning (push)
21 #pragma warning (disable : 4251)
22 
23 #include <IPSDKImage/Fragment/Tile/BaseImageTile.h>
25 
26 namespace ipsdk {
27 namespace image {
28 
31 
33 {
34  // declare serial class
36 
37 // predefined public types
38 public:
40  static const eImageTileType::domain g_imageTileType = eImageTileType::eITT_3d;
41 
42 public:
46  virtual ~BaseImageTile3d() = 0;
48 
49 // methods
50 public:
52  eImageTileType getImageTileType() const;
53 
57  ipUInt64 getImageSizeX() const;
58  ipUInt64 getImageSizeY() const;
59  ipUInt64 getImageSizeZ() const;
61 
65  ipInt64 getTileStartOffsetX() const;
66  ipInt64 getTileStartOffsetY() const;
67  ipInt64 getTileStartOffsetZ() const;
69 
73  ipUInt64 getTileSizeX() const;
74  ipUInt64 getTileSizeY() const;
75  ipUInt64 getTileSizeZ() const;
77 
82  ipUInt64 getTileEndOffsetX() const;
83  ipUInt64 getTileEndOffsetY() const;
84  ipUInt64 getTileEndOffsetZ() const;
86 
89  const eImageBufferType& getBufferType() const;
90 
93  const ipUInt64 getFullTileSize() const;
94 
97  const ipUInt64 getPlanTileSize() const;
98 
101  const ipUInt64 getTileNbPlans() const;
102 
103  //--------------------
106  //--------------------
107 
110  ipUInt64 getCPlanIdx() const;
111 
114  ipUInt64 getTPlanIdx() const;
116 
122  const FragHybridBuffer& getBuffer(const ipUInt64 zPlanIdx) const;
123 
131  template <typename T>
132  const T* getBuffer(const ipUInt64 zPlanIdx, const ipUInt64 rowIdx) const
133  {
134  return static_cast<const T*>(accessBuffer(zPlanIdx, rowIdx));
135  }
136 
137 protected:
139  void initBase(const ipUInt64 cPlanIdx,
140  const ipUInt64 tPlanIdx,
141  const ipInt64 tileStartOffsetX,
142  const ipInt64 tileStartOffsetY,
143  const ipInt64 tileStartOffsetZ,
144  const ipUInt64 tileSizeX,
145  const ipUInt64 tileSizeY,
146  const ipUInt64 tileSizeZ,
147  const PlanStorageColl1d& volumeColl,
148  const DataIdentifierConstPtr& pImageIdentifier,
149  const DataItemMapConstPtr& pImageHeader);
150 
152  bool isBufferInitDerived() const;
153 
155  BoolResult initBufferDerived();
156 
158  void clearBufferDerived();
159 
161  eDataAccessMode retrieveAccessMode() const;
162 
163  //-----------------------------------
166  //-----------------------------------
167 
170  BoolResult readDataDerived() const;
171 
174  BoolResult writeDataDerived();
176 
182  FragHybridBuffer& accessBuffer(const ipUInt64 zPlanIdx) const;
183 
191  const void* accessBuffer(const ipUInt64 zPlanIdx,
192  const ipUInt64 rowIdx) const;
193  void* accessBuffer(const ipUInt64 zPlanIdx,
194  const ipUInt64 rowIdx);
196 
198  void clearDerived();
199 
202  void retrieveIntersection(tile::ImageTileInfo3d& imageTileInfo3d) const;
203 
205  typedef std::vector<ImageTile2dPtr> ImageTile2dColl;
206 
209  const ImageTile2dColl& accessImageTile2dColl() const;
210 
213  virtual void createSubTile(const ipUInt64 zPlanIdx,
214  const ipUInt64 cPlanIdx,
215  const ipUInt64 tPlanIdx,
216  const tile::ImageTileInfo3d& imageTileInfo3d,
217  const PlanStoragePtr& pPlanStorage,
218  const DataIdentifierConstPtr& pImageIdentifier,
219  const DataItemMapConstPtr& pImageHeader,
220  ImageTile2dPtr& pImageTile2d) const = 0;
221 
224  virtual void createSubTile(const ipUInt64 zPlanIdx,
225  const ipUInt64 cPlanIdx,
226  const ipUInt64 tPlanIdx,
227  const tile::ImageTileInfo3d& imageTileInfo3d,
228  const eImageBufferType& imageBufferType,
229  const DataIdentifierConstPtr& pImageIdentifier,
230  const DataItemMapConstPtr& pImageHeader,
231  ImageTile2dPtr& pImageTile2d) const = 0;
232 
233 // attributes
234 private:
237  ipUInt64 _cPlanIdx;
238  ipUInt64 _tPlanIdx;
240 
243  ipUInt64 _imageSizeX;
244  ipUInt64 _imageSizeY;
245  ipUInt64 _imageSizeZ;
247 
250  ipInt64 _tileStartOffsetX;
251  ipInt64 _tileStartOffsetY;
252  ipInt64 _tileStartOffsetZ;
254 
257  ipUInt64 _tileSizeX;
258  ipUInt64 _tileSizeY;
259  ipUInt64 _tileSizeZ;
261 
263  eImageBufferType _bufferType;
264 
266  PlanStorageColl1d _volumeColl;
267 
269  ImageTile2dColl _imageTile2dColl;
270 };
271 
274 
275 inline eImageTileType
277 {
278  return g_imageTileType;
279 }
280 
281 inline const FragHybridBuffer&
283 {
284  return accessBuffer(zPlanIdx);
285 }
286 
289 
290 } // end of namespace image
291 } // end of namespace ipsdk
292 
293 #pragma warning (pop)
294 
295 #endif // __IPSDKIMAGE_BASEIMAGETILE3D_H__
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
eImageTileType getImageTileType() const
retrieve image tile type
Definition: BaseImageTile3d.h:276
boost::shared_ptr< BaseImageTile2d > ImageTile2dPtr
Definition: ImageTileTypes.h:146
eDataAccessMode
Enumerate describing access mode for an image fragment data.
Definition: ImageFragmentTypes.h:45
std::vector< ImageTile2dPtr > ImageTile2dColl
collection of image 2d sub tiles
Definition: BaseImageTile3d.h:205
uint64_t ipUInt64
Base types definition.
Definition: BaseTypes.h:55
eImageTileType
Enumerate describing image tile type.
Definition: ImageTileTypes.h:41
#define IPSDK_DECLARE_ABSTRACT_SERIAL_WITHOUT_COPY(libraryName, className)
macro enabling serialization on abstract class
Definition: SerializationHdrMacro.h:97
Predefined types for buffer manipulations.
FragHybridBuffer & accessBuffer(const ipUInt64 zPlanIdx) const
access to tile full buffer
Class allowing to encapsulate an hybrid form of fragment buffer.
Definition: FragHybridBuffer.h:53
Definition: ImageTileTypes.h:117
const T * getBuffer(const ipUInt64 zPlanIdx, const ipUInt64 rowIdx) const
retrieve tile row buffer for a given plan and row index
Definition: BaseImageTile3d.h:132
static const eImageTileType::domain g_imageTileType
image tile type
Definition: BaseImageTile3d.h:40
boost::shared_ptr< const DataItemMap > DataItemMapConstPtr
shared pointer to const DataItemMap
Definition: DataItemTypes.h:170
Base class for 3d image tiles.
Definition: BaseImageTile3d.h:32
#define IPSDKIMAGE_API
Import/Export macro for library IPSDKImage.
Definition: IPSDKImageExports.h:27
boost::shared_ptr< BasePlanStorage > PlanStoragePtr
shared pointer to image plan storage
Definition: PlanStorageTypes.h:55
boost::shared_ptr< const DataIdentifier > DataIdentifierConstPtr
shared pointer to const data identifier
Definition: DataIdentifierTypes.h:31
std::vector< PlanStoragePtr > PlanStorageColl1d
Definition: ImageTypes.h:184
Base class for image tile.
Definition: BaseImageTile.h:27
const FragHybridBuffer & getBuffer(const ipUInt64 zPlanIdx) const
retrieve tile full buffer
Definition: BaseImageTile3d.h:282
int64_t ipInt64
Base types definition.
Definition: BaseTypes.h:54
image 3d tile
Definition: ImageTileTypes.h:45
eImageBufferType
types associated to image buffers
Definition: ImageTypes.h:78