IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
BaseUserImageAccessor.h
1 // BaseUserImageAccessor.h:
3 // ------------------------
4 //
14 
15 #ifndef __IPSDKIMAGE_BASEUSERIMAGEACCESSOR_H__
16 #define __IPSDKIMAGE_BASEUSERIMAGEACCESSOR_H__
17 
18 // suppression warning
19 // warning C4251: 'ipsdk::image::BaseUserImageAccessor::_imageName' : class 'std::basic_string<_Elem,_Traits,_Ax>' needs to have dll-interface to be used by clients of class 'ipsdk::image::BaseUserImageAccessor'
20 #pragma warning (push)
21 #pragma warning (disable : 4251)
22 
23 #include <IPSDKImage/Accessor/BaseImageAccessor.h>
24 
25 namespace ipsdk {
26 namespace image {
27 
30 
32 {
33  // declare serial class
35 
36 public:
40  virtual ~BaseUserImageAccessor() = 0;
42 
43 // methods
44 public:
47  const std::string& getImageName() const;
48 
55  const void* getDataPtr(const ipUInt64 zPlanIdx,
56  const ipUInt64 cPlanIdx,
57  const ipUInt64 tPlanIdx) const;
58  const void* getDataPtr(const PlanIndex& planIdx) const;
59  void* getDataPtr(const ipUInt64 zPlanIdx,
60  const ipUInt64 cPlanIdx,
61  const ipUInt64 tPlanIdx);
62  void* getDataPtr(const PlanIndex& planIdx);
64 
65 protected:
68  std::string getImageInfoStr() const;
69 
74  void initBase(const std::string& imageName,
75  const eImageAccessMode& accessMode,
77  const GeometricCalibrationConstPtr& pGeometricCalibration);
78 
83  virtual const void* getDataPtrDerived(const ipUInt64 zPlanIdx,
84  const ipUInt64 cPlanIdx,
85  const ipUInt64 tPlanIdx) const;
86  virtual void* getDataPtrDerived(const ipUInt64 zPlanIdx,
87  const ipUInt64 cPlanIdx,
88  const ipUInt64 tPlanIdx);
89 
101  virtual BoolResult readRawData(const ipUInt64 zPlanIdx,
102  const ipUInt64 cPlanIdx,
103  const ipUInt64 tPlanIdx,
104  const ipUInt64 pixelsStartOffset,
105  const ipUInt64 nbPixels,
106  void* pData) const;
107 
119  virtual BoolResult writeRawData(const ipUInt64 zPlanIdx,
120  const ipUInt64 cPlanIdx,
121  const ipUInt64 tPlanIdx,
122  const ipUInt64 pixelsStartOffset,
123  const ipUInt64 nbPixels,
124  const void* pData);
125 
126 // attributes
127 private:
129  std::string _imageName;
130 };
131 
134 
135 } // end of namespace image
136 } // end of namespace ipsdk
137 
138 #pragma warning (pop)
139 
140 #endif // __IPSDKIMAGE_BASEUSERIMAGEACCESSOR_H__
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
uint64_t ipUInt64
Base types definition.
Definition: BaseTypes.h:55
boost::shared_ptr< const ipsdk::GeometricCalibration > GeometricCalibrationConstPtr
shared pointer to const ipsdk::GeometricCalibration
Definition: GeometricCalibrationTypes.h:31
#define IPSDK_DECLARE_ABSTRACT_SERIAL_WITHOUT_COPY(libraryName, className)
macro enabling serialization on abstract class
Definition: SerializationHdrMacro.h:97
Base class for image geometry.
Definition: BaseImageGeometry.h:38
Base class for user image accessors.
Definition: BaseUserImageAccessor.h:31
IPSDKIMAGE_API ImageGeometryPtr geometry(const eImageBufferType &imageBufferType, const ipUInt64 sizeX, const ipUInt64 sizeY, const VolumeGeometry &volumeGeometry, const ColorGeometry &colorGeometry, const TemporalGeometry &temporalGeometry)
create an image geometry
Base class for image accessors.
Definition: BaseImageAccessor.h:34
#define IPSDKIMAGE_API
Import/Export macro for library IPSDKImage.
Definition: IPSDKImageExports.h:27
Class used to store image plan index.
Definition: PlanIndex.h:26
eImageAccessMode
Image access mode.
Definition: ImageTypes.h:110