00001
00002 #ifndef vil1_clamp_h_
00003 #define vil1_clamp_h_
00004 #ifdef VCL_NEEDS_PRAGMA_INTERFACE
00005 #pragma interface
00006 #endif
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include <vil1/vil1_image.h>
00017
00018
00019
00020
00021
00022
00023
00024 vil1_image vil1_clamp(vil1_image src, double range_min, double range_max);
00025
00026
00027
00028
00029 template <class V>
00030 inline
00031 V vil1_clamp_pixel(V const& b, double range_min, double range_max)
00032 {
00033 return (b < V(range_min) ? V(range_min) : (b > V(range_max) ? V(range_max) : b));
00034 }
00035
00036
00037
00038 #if 0
00039
00040
00041
00042
00043
00044 #if !defined(VCL_SGI_CC)
00045 template <class V, class U>
00046 inline
00047 U vil1_clamp(const V& b, U*)
00048 {
00049 return U(b);
00050 }
00051 #endif
00052
00053 inline
00054 unsigned char vil1_clamp(const float& d, unsigned char *)
00055 {
00056 if (d > 255.0)
00057 return 255;
00058 else if (d < 0.0)
00059 return 0;
00060 else
00061 return (unsigned char)d;
00062 }
00063
00064 inline
00065 unsigned char vil1_clamp(const double& d, unsigned char *)
00066 {
00067 if (d > 255.0)
00068 return 255;
00069 else if (d < 0.0)
00070 return 0;
00071 else
00072 return (unsigned char)d;
00073 }
00074 #endif
00075
00076 #endif // vil1_clamp_h_