00001 #ifndef Impala_Core_Array_Trait_UpoRGB2Ooo_h
00002 #define Impala_Core_Array_Trait_UpoRGB2Ooo_h
00003
00004 namespace Impala
00005 {
00006 namespace Core
00007 {
00008 namespace Array
00009 {
00010 namespace Trait
00011 {
00012
00013
00014 template<class StorT>
00015 class UpoRGB2OooPtr
00016 {
00017 public:
00018 typedef Pattern::TagTransInVar TransVarianceCategory;
00019 typedef Pattern::TagCallPointer CallCategory;
00020
00021 UpoRGB2OooPtr()
00022 {
00023 }
00024
00025 void DoIt(double *ooo, StorT* rgb)
00026 {
00027
00028 ooo[0] = 255.0*(rgb[0] * 0.000233846 + rgb[1] * 0.00261968 + rgb[2] * 0.00127135);
00029 ooo[1] = 255.0*(rgb[0] * 0.000726333 + rgb[1] * 0.000718106+ rgb[2] * -0.00121377);
00030 ooo[2] = 255.0*(rgb[0] * 0.000846833 + rgb[1] * -0.00173932+ rgb[2] * 0.000221515);
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 }
00043 };
00044
00045 }
00046 }
00047 }
00048 }
00049
00050 #endif //UpoRGB2Ooo_h