IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
TypedDuplicateImageInitializer.h
1 // TypedDuplicateImageInitializer.h:
3 // ---------------------------------
4 //
17 
18 #ifndef __IPSDKIMAGEPROCESSING_TYPEDDUPLICATEIMAGEINITIALIZER_H__
19 #define __IPSDKIMAGEPROCESSING_TYPEDDUPLICATEIMAGEINITIALIZER_H__
20 
21 // suppression warnings
22 //
23 #pragma warning (push)
24 #pragma warning (disable : 4251)
25 
27 #include <IPSDKImageProcessing/OutputInitializer/Image/BaseImageUnaryInitializer.h>
29 #include <IPSDKImageProcessing/Attribute/IPEnum/ImageBufferTypeAttributeTypes.h>
30 #include <IPSDKImage/Geometry/Component/VolumeGeometry.h>
31 #include <IPSDKImage/Geometry/Component/ColorGeometry.h>
32 #include <IPSDKImage/Geometry/Component/TemporalGeometry.h>
33 #include <boost/optional.hpp>
34 
35 namespace ipsdk {
36 namespace imaproc {
37 
40 
41 template <typename InputAttributeType, typename OutputAttributeType>
42 class IPSDKIMAGEPROCESSING_API TypedDuplicateImageInitializer : public BaseImageUnaryInitializer<InputAttributeType, OutputAttributeType>
43 {
44 // predefined public type
45 public:
47  static const eImageInitializerType::domain g_imageInitializerType = eImageInitializerType::eIIT_TypedDuplicate;
48 
49 public:
55 
56 // methods
57 public:
60  {
61  return g_imageInitializerType;
62  }
63 
73  void init(const boost::weak_ptr<OutputAttributeType>& pOutputAttribute,
74  const boost::weak_ptr<const InputAttributeType>& pInputAttribute,
75  const IBTAttributeConstWeakPtr& pIBTAttribute,
76  const boost::optional<ipUInt64>& sizeX = boost::optional<ipUInt64>(),
77  const boost::optional<ipUInt64>& sizeY = boost::optional<ipUInt64>(),
78  const image::VolumeGeometry& volumeGeometry = image::VolumeGeometry(),
79  const image::ColorGeometry& colorGeometry = image::ColorGeometry(),
80  const image::TemporalGeometry& temporalGeometry = image::TemporalGeometry());
81 
93  void init(const boost::weak_ptr<OutputAttributeType>& pOutputAttribute,
94  const boost::weak_ptr<const InputAttributeType>& pInputAttribute,
95  const IBTAttributeConstWeakPtr& pIBTAttribute,
97  const boost::optional<ipUInt64>& sizeX = boost::optional<ipUInt64>(),
98  const boost::optional<ipUInt64>& sizeY = boost::optional<ipUInt64>(),
99  const image::VolumeGeometry& volumeGeometry = image::VolumeGeometry(),
100  const image::ColorGeometry& colorGeometry = image::ColorGeometry(),
101  const image::TemporalGeometry& temporalGeometry = image::TemporalGeometry());
103 
107  const BaseImageBufferTypeAttribute& getIBTAttribute() const;
108 
109 protected:
112  BoolResult initAttribute();
113 
115  std::string createInitializerFormalString() const;
116 
118  std::string createInitializerEvaluatedString() const;
119 
120 // attributes
121 protected:
125 
127  boost::optional<ipUInt64> _pOptionalSizeX;
128 
130  boost::optional<ipUInt64> _pOptionalSizeY;
131 
134 
137 
140 
143 };
144 
147 
148 } // end of namespace imaproc
149 } // end of namespace ipsdk
150 
151 #pragma warning (pop)
152 
153 #endif // __IPSDKIMAGEPROCESSING_TYPEDDUPLICATEIMAGEINITIALIZER_H__
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
boost::optional< ipUInt64 > _pOptionalSizeY
Optional y size for generated image.
Definition: TypedDuplicateImageInitializer.h:130
image::ColorGeometry _optionalColorGeometry
optional color geometry for generated image
Definition: TypedDuplicateImageInitializer.h:136
boost::optional< ipUInt64 > _pOptionalSizeX
Optional x size for generated image.
Definition: TypedDuplicateImageInitializer.h:127
eImageInitializerType
Enumerate describing output image initializer type.
Definition: ImageInitializerTypes.h:34
Base class for output image initializer using a single image as input.
Definition: BaseImageUnaryInitializer.h:33
Definition of import/export macro for library.
eImageInitializerStoragePolicy _imageInitializerStoragePolicy
flag indicating whether the output image is a memory, a disk image or if the output is inherited from...
Definition: TypedDuplicateImageInitializer.h:142
boost::weak_ptr< const BaseImageBufferTypeAttribute > IBTAttributeConstWeakPtr
Definition: ImageBufferTypeAttributeTypes.h:43
#define IPSDKIMAGEPROCESSING_API
Import/Export macro for library IPSDKImageProcessing.
Definition: IPSDKImageProcessingExports.h:25
eImageInitializerStoragePolicy
Enumerate describing image initializer storage policy.
Definition: ImageInitializerTypes.h:114
Predefined types for image attributes management.
image::TemporalGeometry _optionalTemporalGeometry
optional temporal geometry for generated image
Definition: TypedDuplicateImageInitializer.h:139
Template base class for attributes associated to image processing enumerates.
Definition: ImageBufferTypeAttributeTypes.h:26
eImageInitializerType getImageInitializerType() const
retrieve image initializer type
Definition: TypedDuplicateImageInitializer.h:59
image::VolumeGeometry _optionalVolumeGeometry
optional volume geometry for generated image
Definition: TypedDuplicateImageInitializer.h:133
Class encapsulating volume geometryThis class allows to define geometry volume size and type (2d or 3...
Definition: VolumeGeometry.h:34
Class allowing to initialize an output image from an other image and from a given image buffer type a...
Definition: TypedDuplicateImageInitializer.h:42
Class encapsulating color geometryThis class allows to define geometry color size and type (grey...
Definition: ColorGeometry.h:35
Output initializer used to duplicate input image geometry associated with an image buffer type attrib...
Definition: ImageInitializerTypes.h:38
Class encapsulating temporal geometryThis class allows to define geometry temporal size and type (sin...
Definition: TemporalGeometry.h:35
The allocated image has the same storage type than the input image.
Definition: ImageInitializerTypes.h:116
IBTAttributeConstWeakPtr _pIBTAttribute
Definition: TypedDuplicateImageInitializer.h:124