Hugin trunk 0.1
Loading...
Searching...
No Matches
ImageVariableTranslate.h
Go to the documentation of this file.
1// -*- c-basic-offset: 4 -*-
24#ifndef _PANODATA_IMAGEVARIABLETRANSLATE_H
25#define _PANODATA_IMAGEVARIABLETRANSLATE_H
26
27namespace HuginBase
28{
29/* We define stuff to use the PTO codes i image_variables.h
30 */
42{
43public:
51 inline static bool checkApplicability(const std::string& name)
52 {
53 return false;
54 }
55
69 template <class T>
70 inline static double getValueFromVariable(
71 const std::string& name,
72 const ImageVariable<T> & var
73 )
74 {
75 return 0;
76 }
77
88 template <class T>
89 inline static void setValueFromVariable(
90 const std::string& name,
91 ImageVariable<T> & var,
92 const double value
93 )
94 {
95 }
96
104 template <class T>
105 inline static void addToVariableMap(
106 const ImageVariable<T> & var,
107 VariableMap & map
108 )
109 {
110 }
111};
112
121template <char code1, char code2 = '\0', char code3 = '\0', class T = double>
123{
124public:
125 inline static bool checkApplicability(const std::string& name)
126 {
127 static const char code[] = {code1, code2, code3, '\0'};
128 return ((std::string)code) == name;
129 }
130
131 inline static double getValueFromVariable(const std::string& name, const ImageVariable<T> & var)
132 {
133 return var.getData();
134 }
135
136 inline static void setValueFromVariable(const std::string& name, ImageVariable<T> & var, const double value)
137 {
138 var.setData((T)value);
139 }
140
141 inline static void addToVariableMap(const ImageVariable<T> & var, VariableMap & map)
142 {
143 static const char code[] = {code1, code2, code3, '\0'};
144 map.insert(std::make_pair(code, Variable(code, (double)var.getData())));
145 }
146};
147
148
161template <char base_code, class T = double, size_t size = 4>
163{
164public:
165 inline static bool checkApplicability(const std::string& name)
166 {
167 return name.size() == 2 && name[0] == base_code && name[1] >= 'a' && name[1] < 'a' + char(size);
168 }
169
170 inline static double getValueFromVariable(const std::string& name, const ImageVariable<std::vector<T> > & var)
171 {
172 return var.getData()[name[1]-'a'];
173 }
174
175 inline static void setValueFromVariable(const std::string& name, ImageVariable<std::vector<T> > & var, const double value)
176 {
177 std::vector<T> temp = var.getData();
178 temp[name[1]-'a'] = value;
179 var.setData(temp);
180 }
181
182 inline static void addToVariableMap(const ImageVariable<std::vector<T> > & var, VariableMap & map)
183 {
184 char s[3] = {base_code, 'a', '\0'};
185 for (size_t index = 0; index < size; index++, s[1]++)
186 {
187 map.insert(std::make_pair(s, Variable(s, (double)var.getData()[index])));
188 }
189 }
190};
191
202template <class T = double, size_t size = 3>
204{
205public:
206 inline static bool checkApplicability(const std::string& name)
207 {
208 return name[0] >= 'a' && name[0] < 'a' + char(size);
209 }
210
211 inline static double getValueFromVariable(const std::string& name, const ImageVariable<std::vector<T> > & var)
212 {
213 return var.getData()[name[0]-'a'];
214 }
215
216 inline static void setValueFromVariable(const std::string& name, ImageVariable<std::vector<T> > & var, const double value)
217 {
218 std::vector<T> temp = var.getData();
219 temp[name[0]-'a'] = value;
220 var.setData(temp);
221 }
222
223 inline static void addToVariableMap(const ImageVariable<std::vector<T> > & var, VariableMap & map)
224 {
225 char s[] = "a";
226 for (size_t index = 0; index < size; index++, s[0]++)
227 {
228 map.insert(std::make_pair(s, Variable(s, (double)var.getData()[index])));
229 }
230 }
231};
232
240template <char code_x1, char code_y1, char code_x2 = '\0', char code_y2 = '\0'>
242{
243public:
244 inline static bool checkApplicability(const std::string& name)
245 {
246 static const char code_x[] = {code_x1, code_x2, '\0'};
247 static const char code_y[] = {code_y1, code_y2, '\0'};
248 return name == (std::string) code_x || name == (std::string) code_y;
249 }
250
251 inline static double getValueFromVariable(const std::string& name, const ImageVariable<hugin_utils::FDiff2D> & var)
252 {
253 static const char code_x[] = {code_x1, code_x2, '\0'};
254 return name == (std::string) code_x ? var.getData().x : var.getData().y;
255 }
256
257 inline static void setValueFromVariable(const std::string& name, ImageVariable<hugin_utils::FDiff2D> & var, const double value)
258 {
260 static const char code_x[] = {code_x1, code_x2, '\0'};
261 (name == (std::string)code_x ? temp.x : temp.y) = value;
262 var.setData(temp);
263 }
264
266 {
267 static const char s_x[] = {code_x1, code_x2, '\0'};
268 static const char s_y[] = {code_y1, code_y2, '\0'};
269 map.insert(std::make_pair(s_x, Variable(s_x, var.getData().x)));
270 map.insert(std::make_pair(s_y, Variable(s_y, var.getData().y)));
271 }
272};
273
274// Now we can define a type to use for every PanoramaVariable.
275// We should make sure that any given code is only applicable to one of these.
277
281//typedef PTOVariableConverterSingle<'f','\0', '\0', SrcPanoImage::Projection> PTOVariableConverterForProjection;
285
292
296
302
304
310
315
318//typedef PTOVariableConverterSingle<'V', 'm', '\0', int> PTOVariableConverterForVigCorrMode;
322
339
340#if 0
341//panotools variables, currently not used
344#endif
349}
350
351#endif
An ImageVariable stores a value that can be linked to other ImageVariables of the same type.
Type getData() const
get the variable's value
void setData(const Type data)
Set the variable groups' value.
Object to group conversion functions for PTO format variables representing a hugin_utils::FDiff2D var...
static void setValueFromVariable(const std::string &name, ImageVariable< hugin_utils::FDiff2D > &var, const double value)
static bool checkApplicability(const std::string &name)
static void addToVariableMap(const ImageVariable< hugin_utils::FDiff2D > &var, VariableMap &map)
static double getValueFromVariable(const std::string &name, const ImageVariable< hugin_utils::FDiff2D > &var)
Parent class to anything that aids conversion between PTO file variables and the image variables of S...
static bool checkApplicability(const std::string &name)
Check if a given pto format variable name applies to this image variable.
static void addToVariableMap(const ImageVariable< T > &var, VariableMap &map)
Add all PTO format variables specifed by an image variable in SrcPanoImg to a VariableMap.
static double getValueFromVariable(const std::string &name, const ImageVariable< T > &var)
Get a pto format variable's value, given its name and a reference to the variable in SrcPanoImg.
static void setValueFromVariable(const std::string &name, ImageVariable< T > &var, const double value)
Set a ImageVariable in SrcPanoImg given the pto format variable.
Object to group conversion functions for PTO format variables of up to three characters representing ...
static void addToVariableMap(const ImageVariable< T > &var, VariableMap &map)
static void setValueFromVariable(const std::string &name, ImageVariable< T > &var, const double value)
static double getValueFromVariable(const std::string &name, const ImageVariable< T > &var)
static bool checkApplicability(const std::string &name)
Object to group conversion functions for PTO format variables representing a std::vector variable in ...
static void addToVariableMap(const ImageVariable< std::vector< T > > &var, VariableMap &map)
static bool checkApplicability(const std::string &name)
static void setValueFromVariable(const std::string &name, ImageVariable< std::vector< T > > &var, const double value)
static double getValueFromVariable(const std::string &name, const ImageVariable< std::vector< T > > &var)
Object to group conversion functions for PTO format variables representing a std::vector variable in ...
static double getValueFromVariable(const std::string &name, const ImageVariable< std::vector< T > > &var)
static bool checkApplicability(const std::string &name)
static void setValueFromVariable(const std::string &name, ImageVariable< std::vector< T > > &var, const double value)
static void addToVariableMap(const ImageVariable< std::vector< T > > &var, VariableMap &map)
a variable has a value and a name.
#define IMPEX
mainly consists of wrapper around the pano tools library, to assist in ressource management and to pr...
Definition wxcms.cpp:39
PTOVariableConverterNoOp PTOVariableConverterForResponseType
PTOVariableConverterNoOp PTOVariableConverterForExifExposureMode
PTOVariableConverterSingle< 'T', 'r', 'Z'> PTOVariableConverterForZ
PTOVariableConverterNoOp PTOVariableConverterForVigCorrMode
PTOVariableConverterFDiff2D< 'd', 'e'> PTOVariableConverterForRadialDistortionCenterShift
PTOVariableConverterNoOp PTOVariableConverterForExifDistance
PTOVariableConverterNoOp PTOVariableConverterForGamma
PTOVariableConverterNoOp PTOVariableConverterForExifRedBalance
PTOVariableConverterNoOp PTOVariableConverterForFilename
PTOVariableConverterNoOp PTOVariableConverterForAutoCenterCrop
PTOVariableConverterNoOp PTOVariableConverterForExifAperture
PTOVariableConverterSingle< 'E', 'e', 'v'> PTOVariableConverterForExposureValue
PTOVariableConverterNoOp PTOVariableConverterForExifOrientation
PTOVariableConverterNoOp PTOVariableConverterForExifBlueBalance
PTOVariableConverterNoOp PTOVariableConverterForFlatfieldFilename
PTOVariableConverterNoOp PTOVariableConverterForExifExposureTime
PTOVariableConverterNoOp PTOVariableConverterForExifModel
PTOVariableConverterSingle< 'T', 'p', 'p'> PTOVariableConverterForTranslationPlanePitch
PTOVariableConverterSingle< 'y'> PTOVariableConverterForYaw
PTOVariableConverterNoOp PTOVariableConverterForCropFactor
PTOVariableConverterNoOp PTOVariableConverterForExifLens
PTOVariableConverterNoOp PTOVariableConverterForExifMake
PTOVariableConverterSingle< 'v'> PTOVariableConverterForHFOV
PTOVariableConverterNoOp PTOVariableConverterForExifDate
PTOVariableConverterNoOp PTOVariableConverterForExifCropFactor
PTOVariableConverterNoOp PTOVariableConverterForExifFocalLength35
PTOVariableConverterVectorChar< 'R', float, 5 > PTOVariableConverterForEMoRParams
PTOVariableConverterFDiff2D< 'g', 't'> PTOVariableConverterForShear
PTOVariableConverterNoOp PTOVariableConverterForProjection
PTOVariableConverterNoOp PTOVariableConverterForCropRect
PTOVariableConverterVectorChar< 'V', double, 4 > PTOVariableConverterForRadialVigCorrCoeff
PTOVariableConverterSingle< 'j'> PTOVariableConverterForStack
PTOVariableConverterNoOp PTOVariableConverterForMasks
std::map< std::string, Variable > VariableMap
PTOVariableConverterSingle< 'T', 'p', 'y'> PTOVariableConverterForTranslationPlaneYaw
PTOVariableConverterSingle< 'p'> PTOVariableConverterForPitch
PTOVariableConverterNoOp PTOVariableConverterForActiveMasks
PTOVariableConverterFDiff2D< 'V', 'V', 'x', 'y'> PTOVariableConverterForRadialVigCorrCenterShift
PTOVariableConverterSingle< 'T', 'r', 'Y'> PTOVariableConverterForY
PTOVariableConverterNoOp PTOVariableConverterForSize
PTOVariableConverterNoOp PTOVariableConverterForActive
PTOVariableConverterNoOp PTOVariableConverterForFileMetadata
PTOVariableConverterNoOp PTOVariableConverterForExifFocalLength
PTOVariableConverterNoOp PTOVariableConverterForCropMode
PTOVariableConverterNoOp PTOVariableConverterForRadialDistortionBlue
PTOVariableConverterSingle< 'E', 'r'> PTOVariableConverterForWhiteBalanceRed
PTOVariableConverterSingle< 'E', 'b'> PTOVariableConverterForWhiteBalanceBlue
PTOVariableConverterNoOp PTOVariableConverterForLensNr
PTOVariableConverterSingle< 'T', 'r', 'X'> PTOVariableConverterForX
PTOVariableConverterNoOp PTOVariableConverterForRadialDistortionRed
PTOVariableConverterVector< double, 3 > PTOVariableConverterForRadialDistortion
PTOVariableConverterSingle< 'r'> PTOVariableConverterForRoll
PTOVariableConverterNoOp PTOVariableConverterForExifISO
std::vector< deghosting::BImagePtr > threshold(const std::vector< deghosting::FImagePtr > &inputImages, const double threshold, const uint16_t flags)
Threshold function used for creating alpha masks for images.
Definition threshold.h:41