IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
BaseImage.h
1 // BaseImage.h:
3 // ------------
4 //
14 
15 #ifndef __IPSDKIMAGE_BASEIMAGE_H__
16 #define __IPSDKIMAGE_BASEIMAGE_H__
17 
18 // suppression warnings
19 // warning C4251: 'ipsdk::image::BaseImage::_pIdentifier' : class 'boost::shared_ptr<T>' needs to have dll-interface to be used by clients of class 'ipsdk::image::BaseImage'
20 #pragma warning (push)
21 #pragma warning (disable : 4251)
22 
29 #include <IPSDKUtil/Tools/ProcessingResult.h>
30 #include <IPSDKSerialization/Engine/BaseObjectWithSkeleton.h>
31 #include <boost/enable_shared_from_this.hpp>
32 
33 namespace ipsdk {
34 namespace image {
35 
36 struct SubImageExtractor;
37 struct ImageStripExtractor;
38 struct ImageTileExtractor;
39 
42 
44  public boost::enable_shared_from_this<BaseImage>
45 {
46  // declare serial class
48 
49  // friend class for protected members access
50  friend struct SubImageExtractor;
51  friend struct ImageStripExtractor;
52  friend struct ImageTileExtractor;
53 
54 protected:
56  BaseImage();
57 
58 public:
60  virtual ~BaseImage() = 0;
61 
62 // methods
63 public:
65  virtual eImageBaseType getImageBaseType() const = 0;
66 
68  virtual ipBool isGpuImage() const = 0;
69 
71  virtual ipBool isDiskImage() const = 0;
72 
74  bool isInit() const;
75 
78  virtual BoolResult init(const BaseImageGeometry& geometry) = 0;
79 
80  //------------------------
83  //------------------------
84 
87  const DataIdentifier& getIdentifier() const;
88 
91  const DataIdentifierConstPtr getIdentifierPtr() const;
92 
95  const Guid& getGuid() const;
96 
99  const std::string& getName() const;
101 
102  //--------------------
105  //--------------------
106 
109  bool existsHeaderKey(const std::string& key) const;
110 
113  ItemNames getHeaderKeys() const;
114 
119  const BaseDataItem& getHeaderItem(const std::string& key) const;
120 
125  DataItemConstPtr getHeaderItemPtr(const std::string& key) const;
126 
131  DataItemMapConstPtr getHeaderPtr() const;
133 
134  //-------------------------
137  //-------------------------
138 
141  bool hasGeometricCalibration() const;
142 
146  const GeometricCalibration& getGeometricCalibration() const;
147 
152  const GeometricCalibrationConstPtr& getGeometricCalibrationConstPtr() const;
153 
156  void setGeometricCalibration(const GeometricCalibrationConstPtr& pGeometricCalibration);
158 
161  void setScaleGeometricCalibration(const ipReal32 scale,
162  const std::string& unitStr = "");
163  void setScaleGeometricCalibration(const ipReal32 xScale,
164  const ipReal32 yScale,
165  const std::string& unitStr = "");
166  void setScaleGeometricCalibration(const ipReal32 xScale,
167  const ipReal32 yScale,
168  const ipReal32 zScale,
169  const std::string& unitStr = "");
171 
174  void setOrigin(const ipReal32 xOrigin, const ipReal32 yOrigin);
175  void setOrigin(const ipReal32 xOrigin, const ipReal32 yOrigin, const ipReal32 zOrigin);
177 
178  //----------------------
181  //----------------------
182 
185  const BaseImageGeometry& getGeometry() const;
186 
189  ImageGeometryConstPtr getGeometryPtr() const;
190 
193  ipUInt64 getSizeX() const;
194 
197  ipUInt64 getSizeY() const;
198 
201  const VolumeGeometry& getVolumeGeometry() const;
202 
205  const eVolumeGeometryType& getVolumeGeometryType() const;
206 
209  ipUInt64 getSizeZ() const;
210 
213  const ColorGeometry& getColorGeometry() const;
214 
217  const eColorGeometryType& getColorGeometryType() const;
218 
221  ipUInt64 getSizeC() const;
222 
225  const TemporalGeometry& getTemporalGeometry() const;
226 
229  const eTemporalGeometryType& getTemporalGeometryType() const;
230 
233  ipUInt64 getSizeT() const;
234 
237  ipUInt64 getNbTotPlans() const;
238 
241  bool isValidPlanIdx(const ipUInt64 zPlanIdx,
242  const ipUInt64 cPlanIdx,
243  const ipUInt64 tPlanIdx) const;
244 
247  bool isValidPlanIdx(const PlanIndex& planIdx) const;
248 
253  const eImageBufferType& getBufferType() const;
254 
257  const eImageBufferType& getBufferType(const ipUInt64 tPlanIdx) const;
259 
262  virtual eImageAccessMode getAccessMode() const = 0;
263 
268  virtual bool hasRemoteStorage() const;
269 
273  bool hasBinary8BitsStorage() const;
274 
278  bool hasByPlanDataAccess() const;
279 
283  PlanStorageConstPtr getPlanStorage(const PlanIndex& planIndex) const;
284  PlanStoragePtr getPlanStorage(const PlanIndex& planIndex);
285 
288  const PlanStorageColl3d& getPlanStorageColl() const;
289 
292  std::string getUserPropertiesStr() const;
293 
296  void setUserPropertiesStr(const std::string& newStrUserProperties);
297 
300  std::string getChannelName(const ipUInt64 c) const;
301 
302 
305  void setChannelName(const std::string& strName, const ipUInt64 c);
306 
309  bool minIsBlack() const;
310 
311 
312 
313  //----------------------
316  //----------------------
317 
319  void toGPU(CudaImagePtr pCudaImg) const;
320 
322  CudaImagePtr toGPU() const;
323 
326  ipBool containSameData(const BaseImage& otherImage) const;
327 
336  void setVolumeGeometryType(const eVolumeGeometryType& vType);
337  void setColorGeometryType(const eColorGeometryType& cType);
338  void setTemporalGeometryType(const eTemporalGeometryType& tType);
339  void setBufferType(const eImageBufferType& type);
341 
343  void clear();
345 
346 protected:
351  BoolResult initBase(const DataIdentifierConstPtr& pIdentifier,
352  const DataItemMapConstPtr& pHeader,
353  const ImageGeometryPtr& pGeometry,
354  const PlanStorageColl3d& imagePlans);
355 
360  void resizeBase(const ImageGeometryPtr& pGeometry,
361  const PlanStorageColl3d& imagePlans);
362 
364  virtual void clearDerived() {};
365 
368  const PlanStorageColl3d& accessImagePlans() const;
369  PlanStorageColl3d& accessImagePlans();
371 
376  bool checkForRemoteStorage() const;
377 
378 // attributes
379 private:
381  DataIdentifierConstPtr _pIdentifier;
382 
384  DataItemMapConstPtr _pHeader;
385 
387  ImageGeometryPtr _pGeometry;
388 
390  GeometricCalibrationConstPtr _pGeometricCalibration;
391 
393  PlanStorageColl3d _imagePlans;
394 
399  std::string _userPropertiesStr;
400 
402  bool _bInit;
403 };
404 
407 
408 inline bool
410 {
411  return _bInit;
412 }
413 
416 
417 } // end of namespace image
418 } // end of namespace ipsdk
419 
420 #pragma warning (pop)
421 
422 #endif // __IPSDKIMAGE_BASEIMAGE_H__
Predefined types for geometry component management.
eImageBaseType
Enumerate describing image base type.
Definition: ImageTypes.h:46
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
boost::shared_ptr< const BaseDataItem > DataItemConstPtr
shared pointer to const DataItem
Definition: DataItemTypes.h:149
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
eColorGeometryType
Color geometry type.
Definition: GeometryComponentTypes.h:45
Structure used to extract image tiles from an image.
Definition: ImageTileExtractor.h:33
Base class for image geometry.
Definition: BaseImageGeometry.h:38
boost::shared_ptr< const BaseImageGeometry > ImageGeometryConstPtr
shared pointer to const image geometry
Definition: ImageGeometryTypes.h:59
bool isInit() const
retrieve object initialisation flag
Definition: BaseImage.h:409
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
eTemporalGeometryType
Temporal geometry type.
Definition: GeometryComponentTypes.h:76
Class encapsulating an auto initialized uuid.
Definition: Guid.h:27
Definition of import/export macro for library.
boost::shared_ptr< const BasePlanStorage > PlanStorageConstPtr
shared pointer to const image plan storage
Definition: PlanStorageTypes.h:58
Predefined types for image geometry management.
Structure used to extract image strips from an image.
Definition: ImageStripExtractor.h:31
boost::shared_ptr< const DataItemMap > DataItemMapConstPtr
shared pointer to const DataItemMap
Definition: DataItemTypes.h:170
std::vector< PlanStorageColl2d > PlanStorageColl3d
Definition: ImageTypes.h:196
std::set< std::string > ItemNames
collection of names or ids for items
Definition: DataItemTypes.h:143
#define IPSDKIMAGE_API
Import/Export macro for library IPSDKImage.
Definition: IPSDKImageExports.h:27
eVolumeGeometryType
Volume geometry type.
Definition: GeometryComponentTypes.h:32
Class used to store image plan index.
Definition: PlanIndex.h:26
Predefined base collection types for library.
bool ipBool
Base types definition.
Definition: BaseTypes.h:47
Base class for serialization object with three serialization modes :
Definition: BaseObjectWithSkeleton.h:33
Class encapsulating volume geometryThis class allows to define geometry volume size and type (2d or 3...
Definition: VolumeGeometry.h:34
Definition: SubImageExtractor.h:30
boost::shared_ptr< BasePlanStorage > PlanStoragePtr
shared pointer to image plan storage
Definition: PlanStorageTypes.h:55
boost::shared_ptr< CudaImage > CudaImagePtr
Definition: ImageTypes.h:175
Class encapsulating color geometryThis class allows to define geometry color size and type (grey...
Definition: ColorGeometry.h:35
Class used to uniquely identify a data object.
Definition: DataIdentifier.h:31
boost::shared_ptr< const DataIdentifier > DataIdentifierConstPtr
shared pointer to const data identifier
Definition: DataIdentifierTypes.h:31
Class allowing to encapsulate an image geometric calibration.
Definition: GeometricCalibration.h:33
Base class for images data type.
Definition: BaseImage.h:43
Predefined types for data items.
Class encapsulating temporal geometryThis class allows to define geometry temporal size and type (sin...
Definition: TemporalGeometry.h:35
boost::shared_ptr< BaseImageGeometry > ImageGeometryPtr
shared pointer to image geometry
Definition: ImageGeometryTypes.h:55
Predefined type for image management.
Base class for data items.
Definition: BaseDataItem.h:27
virtual void clearDerived()
clear data in derived class
Definition: BaseImage.h:364
eImageAccessMode
Image access mode.
Definition: ImageTypes.h:110
float ipReal32
Base types definition.
Definition: BaseTypes.h:56
eImageBufferType
types associated to image buffers
Definition: ImageTypes.h:78