IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
SubImageSplit.h
1 // SubImageSplit.h:
3 // ----------------
4 //
14 
15 #ifndef __IPSDKIMAGEPROCESSING_SUBIMAGESPLIT_H__
16 #define __IPSDKIMAGEPROCESSING_SUBIMAGESPLIT_H__
17 
18 #include <IPSDKImageProcessing/DataSplit/SubImage/BaseSubImageSplit.h>
19 #include <boost/mpl/if.hpp>
20 
21 namespace ipsdk {
22 namespace imaproc {
23 
26 
27 template <typename TProcessor, typename TAttribute>
28 class SubImageSplit : public BaseSubImageSplit<typename TAttribute::StorageType>
29 {
30 // predefined public types
31 public:
33  typedef TProcessor ProcessorType;
34 
36  typedef TAttribute AttributeType;
37 
39  typedef typename TAttribute::StorageType InputStorageType;
40 
42  typedef typename TAttribute::StorageType OutputStorageType;
43 
44 public:
47  SubImageSplit() {}
48  ~SubImageSplit() {}
50 
51 // methods
52 public:
54  const std::string& getAttributeName() const;
55 
57  const std::string& getAttributeToolTip() const;
58 
65  void init(const eSubImageSplitType& subImageSplitType,
66  const eVolumeParsingType& volumeParsingType,
67  const eColorParsingType& colorParsingType,
68  const eTemporalParsingType& temporalParsingType,
69  const InputStorageType& pImage);
70 
75  void init(const eSubImageSplitType& subImageSplitType,
76  const InputStorageType& pImage);
77 
78 protected:
80  bool checkProcessorType(const processor::BaseProcessor& processor);
81 
86  const ipUInt32 elementIdx,
87  const core::BaseRequestOrigin& requestOrigin);
88 
89 // attributes
90 protected:
91 
92 };
93 
96 
97 template <typename TProcessor, typename TAttribute>
98 inline const std::string&
100 {
101  return TAttribute::getObjectNameStr();
102 }
103 
104 template <typename TProcessor, typename TAttribute>
105 inline const std::string&
107 {
108  return TAttribute::getToolTipStr();
109 }
110 
111 template <typename TProcessor, typename TAttribute>
112 inline void
114  const eVolumeParsingType& volumeParsingType,
115  const eColorParsingType& colorParsingType,
116  const eTemporalParsingType& temporalParsingType,
117  const InputStorageType& pImage)
118 {
119  // call of base class initialization method
120  this->initBase(subImageSplitType,
121  volumeParsingType, colorParsingType, temporalParsingType,
122  pImage);
123 }
124 
125 template <typename TProcessor, typename TAttribute>
126 inline void
128  const InputStorageType& pImage)
129 {
130  // call of base class initialization method
131  this->initBase(subImageSplitType, pImage);
132 }
133 
134 template <typename TProcessor, typename TAttribute>
135 inline bool
137 {
138  // check for consistency between processor and attribute
140  "This attribute is not part of processor class");
141 
142  return dynamic_cast<const TProcessor*>(&processor) != 0;
143 }
144 
145 template <typename TProcessor, typename TAttribute>
146 inline BoolResult
148  const ipUInt32 elementIdx,
149  const core::BaseRequestOrigin& requestOrigin)
150 {
151  // cast of input processor object
152  TProcessor& tProcessor = static_cast<TProcessor&>(processor);
153 
154  // retrieve sub image associated to element
155  OutputStorageType pSubImage;
156  BoolResult bGetSubImageRes = this->getSubImage(elementIdx, pSubImage);
157  if (bGetSubImageRes == true) {
158 
159  // update of processor attribute value
160  tProcessor.TProcessor::template set<TAttribute>(pSubImage);
161 
162  return true;
163  }
164  else
165  return bGetSubImageRes;
166 }
167 
170 
171 } // end of namespace imaproc
172 } // end of namespace ipsdk
173 
174 #endif // __IPSDKIMAGEPROCESSING_SUBIMAGESPLIT_H__
Class allowing to encapsulate a typed process result associated to a string description.
Definition: ProcessingResult.h:28
eSubImageSplitType
Enumerate describing sub image geometry split type.
Definition: SubImageSplitTypes.h:32
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
TProcessor ProcessorType
processor type associated to object
Definition: SubImageSplit.h:33
TAttribute::StorageType OutputStorageType
output data type for split operation
Definition: SubImageSplit.h:42
TAttribute AttributeType
attribute type associated to object
Definition: SubImageSplit.h:36
eVolumeParsingType
Enumerate describing geometry volume(z) parsing type.
Definition: SubImageSplitTypes.h:58
BoolResult processAttribute(processor::BaseProcessor &processor, const ipUInt32 elementIdx, const core::BaseRequestOrigin &requestOrigin)
initialize processor attribute associate to split operation for a given element index ...
Definition: SubImageSplit.h:147
Base class for processor class.
Definition: BaseProcessor.h:43
structure allowing to check whether a given attribute exists in attribute collection information ...
Definition: AttributeCollInfoCheckMacros.h:131
const std::string & getAttributeName() const
retrieve attribute name associated to split operation
Definition: SubImageSplit.h:99
bool checkProcessorType(const processor::BaseProcessor &processor)
check processor type in derived class
Definition: SubImageSplit.h:136
Template class used to split image into sub images for data dispatch.
Definition: SubImageSplit.h:28
eTemporalParsingType
Enumerate describing geometry temporal(t) parsing type.
Definition: SubImageSplitTypes.h:86
const std::string & getAttributeToolTip() const
retrieve attribute tooltip associated to split operation
Definition: SubImageSplit.h:106
TAttribute::StorageType InputStorageType
input data type for split operation
Definition: SubImageSplit.h:39
Base class for request origin description.
Definition: BaseRequestOrigin.h:28
void init(const eSubImageSplitType &subImageSplitType, const eVolumeParsingType &volumeParsingType, const eColorParsingType &colorParsingType, const eTemporalParsingType &temporalParsingType, const InputStorageType &pImage)
initialization method for splitted objects
Definition: SubImageSplit.h:113
eColorParsingType
Enumerate describing geometry color(c) parsing type.
Definition: SubImageSplitTypes.h:72
Base class used to split image into sub images for data dispatch.
Definition: BaseSubImageSplit.h:36
uint32_t ipUInt32
Base types definition.
Definition: BaseTypes.h:53