IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
DuplicateImageInitializer.h
1 // DuplicateImageInitializer.h:
3 // ----------------------------
4 //
18 
19 #ifndef __IPSDKIMAGEPROCESSING_DUPLICATEIMAGEINITIALIZER_H__
20 #define __IPSDKIMAGEPROCESSING_DUPLICATEIMAGEINITIALIZER_H__
21 
22 // suppression warnings
23 // warning C4251: 'ipsdk::imaproc::DuplicateImageInitializer::_imageBufferType' : class 'ipsdk::image::eImageBufferType' needs to have dll-interface to be used by clients of class 'ipsdk::imaproc::DuplicateImageInitializer'
24 #pragma warning (push)
25 #pragma warning (disable : 4251)
26 
28 #include <IPSDKImageProcessing/OutputInitializer/Image/BaseImageUnaryInitializer.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 DuplicateImageInitializer : public BaseImageUnaryInitializer<InputAttributeType, OutputAttributeType>
43 {
44 // predefined public type
45 public:
47  static const eImageInitializerType::domain g_imageInitializerType = eImageInitializerType::eIIT_Duplicate;
48 
49 public:
55 
56 // methods
57 public:
60  {
61  return g_imageInitializerType;
62  }
63 
74  void init(const boost::weak_ptr<OutputAttributeType>& pOutputAttribute,
75  const boost::weak_ptr<const InputAttributeType>& pInputAttribute,
78  const boost::optional<ipUInt64>& sizeX = boost::optional<ipUInt64>(),
79  const boost::optional<ipUInt64>& sizeY = boost::optional<ipUInt64>(),
80  const image::VolumeGeometry& volumeGeometry = image::VolumeGeometry(),
81  const image::ColorGeometry& colorGeometry = image::ColorGeometry(),
82  const image::TemporalGeometry& temporalGeometry = image::TemporalGeometry());
83 
95  void init(const boost::weak_ptr<OutputAttributeType>& pOutputAttribute,
96  const boost::weak_ptr<const InputAttributeType>& pInputAttribute,
99  const boost::optional<ipUInt64>& sizeX = boost::optional<ipUInt64>(),
100  const boost::optional<ipUInt64>& sizeY = boost::optional<ipUInt64>(),
101  const image::VolumeGeometry& volumeGeometry = image::VolumeGeometry(),
102  const image::ColorGeometry& colorGeometry = image::ColorGeometry(),
103  const image::TemporalGeometry& temporalGeometry = image::TemporalGeometry());
104  void init(const boost::weak_ptr<OutputAttributeType>& pOutputAttribute,
105  const boost::weak_ptr<const InputAttributeType>& pInputAttribute,
108  const boost::optional<ipUInt64>& sizeX = boost::optional<ipUInt64>(),
109  const boost::optional<ipUInt64>& sizeY = boost::optional<ipUInt64>(),
110  const image::VolumeGeometry& volumeGeometry = image::VolumeGeometry(),
111  const image::ColorGeometry& colorGeometry = image::ColorGeometry(),
112  const image::TemporalGeometry& temporalGeometry = image::TemporalGeometry());
114 
119  const image::eImageBufferType& getImageBufferType() const;
120 
121 protected:
124  BoolResult initAttribute();
125 
127  std::string createInitializerFormalString() const;
128 
130  std::string createInitializerEvaluatedString() const;
131 
132 // attributes
133 protected:
136 
138  boost::optional<ipUInt64> _pOptionalSizeX;
139 
141  boost::optional<ipUInt64> _pOptionalSizeY;
142 
145 
148 
151 
154 
157 };
158 
161 
162 } // end of namespace imaproc
163 } // end of namespace ipsdk
164 
165 #pragma warning (pop)
166 
167 #endif // __IPSDKIMAGEPROCESSING_DUPLICATEIMAGEINITIALIZER_H__
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
image::TemporalGeometry _optionalTemporalGeometry
optional temporal geometry for generated image
Definition: DuplicateImageInitializer.h:150
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
image::ColorGeometry _optionalColorGeometry
optional color geometry for generated image
Definition: DuplicateImageInitializer.h:147
Definition of import/export macro for library.
image::eImageBufferType _imageBufferType
image buffer type optionnaly used to initialize output image
Definition: DuplicateImageInitializer.h:135
#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.
boost::optional< ipUInt64 > _pOptionalSizeY
Optional y size for generated image.
Definition: DuplicateImageInitializer.h:141
eImageInitializerDistributionPolicy _imageInitializerDistributionPolicy
flag indicating whether distributed output image is allowed if input is
Definition: DuplicateImageInitializer.h:153
eImageInitializerType getImageInitializerType() const
retrieve image initializer type
Definition: DuplicateImageInitializer.h:59
image::VolumeGeometry _optionalVolumeGeometry
optional volume geometry for generated image
Definition: DuplicateImageInitializer.h:144
Class encapsulating volume geometryThis class allows to define geometry volume size and type (2d or 3...
Definition: VolumeGeometry.h:34
Output initializer used to duplicate input image geometry.
Definition: ImageInitializerTypes.h:36
eImageInitializerStoragePolicy _imageInitializerStoragePolicy
flag indicating whether the output image is a memory, a disk image or if the output is inherited from...
Definition: DuplicateImageInitializer.h:156
boost::optional< ipUInt64 > _pOptionalSizeX
Optional x size for generated image.
Definition: DuplicateImageInitializer.h:138
Class encapsulating color geometryThis class allows to define geometry color size and type (grey...
Definition: ColorGeometry.h:35
Class allowing to initialize an output image from an other image and optionnaly from a given type...
Definition: DuplicateImageInitializer.h:42
Class encapsulating temporal geometryThis class allows to define geometry temporal size and type (sin...
Definition: TemporalGeometry.h:35
eImageInitializerDistributionPolicy
Enumerate describing image initializer distribution policy.
Definition: ImageInitializerTypes.h:99
empty buffer type
Definition: ImageTypes.h:80
Image memory distribution is allowed.
Definition: ImageInitializerTypes.h:101
The allocated image has the same storage type than the input image.
Definition: ImageInitializerTypes.h:116
eImageBufferType
types associated to image buffers
Definition: ImageTypes.h:78