Horus Doc || C++ Reference || Class Overview   Pixels   Images   Detector   Geometry   Registry || Doxygen's quick Index  

HxDivVal.h File Reference

More...

#include "HxImageRep.h"

Go to the source code of this file.

Functions

HxImageRep L_HXIMAGEREP HxDivVal (HxImageRep im, HxValue val)
 Division. More...


Detailed Description


Function Documentation

HxImageRep L_HXIMAGEREP HxDivVal HxImageRep    im,
HxValue    val
 

Division.

The function performs division (see Pixels) on all pixels in the input image via a binary pixel operation (see Images).

Implementation specifics : The pixel functor : HxBpoDiv. The image functor instantiator : HxInstantiatorDivV.

00013 {
00014     HxString fname("HxDivVal");
00015 
00016     if (im.isNull())
00017     {
00018         HxGlobalError::instance()->reportError(fname, im.name(), "null image", HxGlobalError::HX_GE_INVALID);
00019         return HxImageRep();
00020     }
00021 
00022     int valdim;
00023     if ((val.tag() == HxValue::SI) || (val.tag() == HxValue::SD))
00024     {
00025         valdim = 1;
00026     }
00027     else if ((val.tag() == HxValue::V2I) || (val.tag() == HxValue::V2D))
00028     {
00029         valdim = 2;
00030     }
00031     else 
00032     {
00033         valdim = 3;
00034     }
00035     if ((valdim != 1) && (im.signature().pixelDimensionality() != valdim))
00036     {
00037         HxGlobalError::instance()->reportError(fname, "pixel dimensionality differs from value dimensionality", 
00038                         HxGlobalError::HX_GE_UNEQUAL_DIMS);
00039         return HxImageRep();
00040     }
00041 
00042     if (val.tag() == HxValue::SI)
00043     {
00044         if (((HxScalarInt) val) == HxScalarInt(0))
00045         {
00046             HxGlobalError::instance()->reportError(fname, "division by zero", HxGlobalError::HX_GE_INVALID);
00047             return HxImageRep();
00048         }
00049     }
00050     else if (val.tag() == HxValue::SD)
00051     {
00052         if (((HxScalarDouble) val) == HxScalarDouble(0.0))
00053         {
00054             HxGlobalError::instance()->reportError(fname, "division by zero", HxGlobalError::HX_GE_INVALID);
00055             return HxImageRep();
00056         }
00057     }
00058     else if (val.tag() == HxValue::V2I)
00059     {
00060         if (((HxVec2Int) val).x() == 0)
00061         {
00062             HxGlobalError::instance()->reportError(fname, "division by zero", HxGlobalError::HX_GE_INVALID);
00063             return HxImageRep();
00064         }
00065         if (((HxVec2Int) val).y() == 0)
00066         {
00067             HxGlobalError::instance()->reportError(fname, "division by zero", HxGlobalError::HX_GE_INVALID);
00068             return HxImageRep();
00069         }
00070     }
00071     else if ((val.tag() == HxValue::V2D) || (val.tag() == HxValue::CPL))
00072     {
00073         if (((HxVec2Double) val).x() == 0.0)
00074         {
00075             HxGlobalError::instance()->reportError(fname, "division by zero", HxGlobalError::HX_GE_INVALID);
00076             return HxImageRep();
00077         }
00078         if (((HxVec2Double) val).y() == 0.0)
00079         {
00080             HxGlobalError::instance()->reportError(fname, "division by zero", HxGlobalError::HX_GE_INVALID);
00081             return HxImageRep();
00082         }
00083 
00084     }
00085     else if (val.tag() == HxValue::V3I)
00086     {
00087         if (((HxVec3Int) val).x() == 0)
00088         {
00089             HxGlobalError::instance()->reportError(fname, "division by zero", HxGlobalError::HX_GE_INVALID);
00090             return HxImageRep();
00091         }
00092         if (((HxVec3Int) val).y() == 0)
00093         {
00094             HxGlobalError::instance()->reportError(fname, "division by zero", HxGlobalError::HX_GE_INVALID);
00095             return HxImageRep();
00096         }
00097         if (((HxVec3Int) val).z() == 0)
00098         {
00099             HxGlobalError::instance()->reportError(fname, "division by zero", HxGlobalError::HX_GE_INVALID);
00100             return HxImageRep();
00101         }
00102     }
00103     else if (val.tag() == HxValue::V3D)
00104     {
00105         if (((HxVec3Double) val).x() == 0.0)
00106         {
00107             HxGlobalError::instance()->reportError(fname, "division by zero", HxGlobalError::HX_GE_INVALID);
00108             return HxImageRep();
00109         }
00110         if (((HxVec3Double) val).y() == 0.0)
00111         {
00112             HxGlobalError::instance()->reportError(fname, "division by zero", HxGlobalError::HX_GE_INVALID);
00113             return HxImageRep();
00114         }
00115         if (((HxVec3Double) val).z() == 0.0)
00116         {
00117             HxGlobalError::instance()->reportError(fname, "division by zero", HxGlobalError::HX_GE_INVALID);
00118             return HxImageRep();
00119         }
00120     }
00121 
00122     return im.binaryPixOp(val, "div");
00123 }


Generated on Tue Feb 3 14:18:46 2004 for C++Reference by doxygen1.2.12 written by Dimitri van Heesch, © 1997-2001