eLynx SDK
v3.3.0 C++ image processing API reference |
00001 //============================================================================ 00002 // PixelMacros.h Image.Component package 00003 //============================================================================ 00004 // Usage : define common definition for pixel format 00005 //---------------------------------------------------------------------------- 00006 // Copyright (C) 2009 by eLynx project 00007 // 00008 // This library is free software; you can redistribute it and/or 00009 // modify it under the terms of the GNU Library General Public 00010 // License as published by the Free Software Foundation; either 00011 // version 2 of the License, or (at your option) any later version. 00012 // 00013 // This library is distributed in the hope that it will be useful, 00014 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00016 // See the GNU Library General Public License for more details. 00017 //---------------------------------------------------------------------------- 00018 #ifndef __PixelMacros_h__ 00019 #define __PixelMacros_h__ 00020 00021 namespace eLynx { 00022 namespace Image { 00023 00024 #define elxINSTANTIATE_CLASS_FOR_ALL_PIXEL_TYPES(Name) \ 00025 \ 00026 template class Name<PixelLub>; \ 00027 template class Name<PixelLus>; \ 00028 template class Name<PixelLi>; \ 00029 template class Name<PixelLf>; \ 00030 template class Name<PixelLd>; \ 00031 \ 00032 template class Name<PixelLAub>; \ 00033 template class Name<PixelLAus>; \ 00034 template class Name<PixelLAi>; \ 00035 template class Name<PixelLAf>; \ 00036 template class Name<PixelLAd>; \ 00037 \ 00038 template class Name<PixelRGBub>; \ 00039 template class Name<PixelRGBus>; \ 00040 template class Name<PixelRGBi>; \ 00041 template class Name<PixelRGBf>; \ 00042 template class Name<PixelRGBd>; \ 00043 \ 00044 template class Name<PixelRGBAub>; \ 00045 template class Name<PixelRGBAus>; \ 00046 template class Name<PixelRGBAi>; \ 00047 template class Name<PixelRGBAf>; \ 00048 template class Name<PixelRGBAd>; \ 00049 \ 00050 template class Name<PixelComplexi>; \ 00051 template class Name<PixelComplexf>; \ 00052 template class Name<PixelComplexd>; \ 00053 \ 00054 template class Name<PixelHLSf>; \ 00055 template class Name<PixelHLSd>; \ 00056 \ 00057 template class Name<PixelXYZf>; \ 00058 template class Name<PixelXYZd>; \ 00059 \ 00060 template class Name<PixelLabf>; \ 00061 template class Name<PixelLabd>; \ 00062 \ 00063 template class Name<PixelLuvf>; \ 00064 template class Name<PixelLuvd>; \ 00065 \ 00066 template class Name<PixelLchf>; \ 00067 template class Name<PixelLchd>; \ 00068 \ 00069 template class Name<PixelHLabf>; \ 00070 template class Name<PixelHLabd>; 00071 00072 #define elxINSTANTIATE_METHOD_FOR_ALL_PIXEL_TYPES(_MacroName_) \ 00073 _MacroName_(PixelLub) \ 00074 _MacroName_(PixelLus) \ 00075 _MacroName_(PixelLi) \ 00076 _MacroName_(PixelLf) \ 00077 _MacroName_(PixelLd) \ 00078 _MacroName_(PixelComplexi) \ 00079 _MacroName_(PixelComplexf) \ 00080 _MacroName_(PixelComplexd) \ 00081 _MacroName_(PixelLAub) \ 00082 _MacroName_(PixelLAus) \ 00083 _MacroName_(PixelLAi) \ 00084 _MacroName_(PixelLAf) \ 00085 _MacroName_(PixelLAd) \ 00086 _MacroName_(PixelRGBub) \ 00087 _MacroName_(PixelRGBus) \ 00088 _MacroName_(PixelRGBi) \ 00089 _MacroName_(PixelRGBf) \ 00090 _MacroName_(PixelRGBd) \ 00091 _MacroName_(PixelRGBAub) \ 00092 _MacroName_(PixelRGBAus) \ 00093 _MacroName_(PixelRGBAi) \ 00094 _MacroName_(PixelRGBAf) \ 00095 _MacroName_(PixelRGBAd) \ 00096 _MacroName_(PixelHLSf) \ 00097 _MacroName_(PixelHLSd) \ 00098 _MacroName_(PixelXYZf) \ 00099 _MacroName_(PixelXYZd) \ 00100 _MacroName_(PixelLuvf) \ 00101 _MacroName_(PixelLuvd) \ 00102 _MacroName_(PixelLabf) \ 00103 _MacroName_(PixelLabd) \ 00104 _MacroName_(PixelLchf) \ 00105 _MacroName_(PixelLchd) \ 00106 _MacroName_(PixelHLabf) \ 00107 _MacroName_(PixelHLabd) 00108 00109 #define elxINSTANTIATE_METHOD_FOR_ALL_PIXEL_TYPES2(_MacroName_) \ 00110 _MacroName_(PixelL, uint8) \ 00111 _MacroName_(PixelL, uint16) \ 00112 _MacroName_(PixelL, int32) \ 00113 _MacroName_(PixelL, float) \ 00114 _MacroName_(PixelL, double) \ 00115 _MacroName_(PixelComplex, int32) \ 00116 _MacroName_(PixelComplex, float) \ 00117 _MacroName_(PixelComplex, double) \ 00118 _MacroName_(PixelLA, uint8) \ 00119 _MacroName_(PixelLA, uint16) \ 00120 _MacroName_(PixelLA, int32) \ 00121 _MacroName_(PixelLA, float) \ 00122 _MacroName_(PixelLA, double) \ 00123 _MacroName_(PixelRGB, uint8) \ 00124 _MacroName_(PixelRGB, uint16) \ 00125 _MacroName_(PixelRGB, int32) \ 00126 _MacroName_(PixelRGB, float) \ 00127 _MacroName_(PixelRGB, double) \ 00128 _MacroName_(PixelRGBA, uint8) \ 00129 _MacroName_(PixelRGBA, uint16) \ 00130 _MacroName_(PixelRGBA, int32) \ 00131 _MacroName_(PixelRGBA, float) \ 00132 _MacroName_(PixelRGBA, double) \ 00133 _MacroName_(PixelHLS, float) \ 00134 _MacroName_(PixelHLS, double) \ 00135 _MacroName_(PixelXYZ, float) \ 00136 _MacroName_(PixelXYZ, double) \ 00137 _MacroName_(PixelLuv, float) \ 00138 _MacroName_(PixelLuv, double) \ 00139 _MacroName_(PixelLab, float) \ 00140 _MacroName_(PixelLab, double) \ 00141 _MacroName_(PixelLch, float) \ 00142 _MacroName_(PixelLch, double) \ 00143 _MacroName_(PixelHLab, float) \ 00144 _MacroName_(PixelHLab, double) 00145 00146 #define elxCALL_FUNCTION_FOR_ALL_PIXEL_TYPES(_FunctionName_, type, ...) \ 00147 switch (type) \ 00148 { \ 00149 case Image::PF_Lub : _FunctionName_<Image::PixelLub>(__VA_ARGS__); break; \ 00150 case Image::PF_Lus : _FunctionName_<Image::PixelLus>(__VA_ARGS__); break; \ 00151 case Image::PF_Li : _FunctionName_<Image::PixelLi>(__VA_ARGS__); break; \ 00152 case Image::PF_Lf : _FunctionName_<Image::PixelLf>(__VA_ARGS__); break; \ 00153 case Image::PF_Ld : _FunctionName_<Image::PixelLd>(__VA_ARGS__); break; \ 00154 case Image::PF_LAub : _FunctionName_<Image::PixelLAub>(__VA_ARGS__); break; \ 00155 case Image::PF_LAus : _FunctionName_<Image::PixelLAus>(__VA_ARGS__); break; \ 00156 case Image::PF_LAi : _FunctionName_<Image::PixelLAi>(__VA_ARGS__); break; \ 00157 case Image::PF_LAf : _FunctionName_<Image::PixelLAf>(__VA_ARGS__); break; \ 00158 case Image::PF_LAd : _FunctionName_<Image::PixelLAd>(__VA_ARGS__); break; \ 00159 case Image::PF_RGBub : _FunctionName_<Image::PixelRGBub>(__VA_ARGS__); break; \ 00160 case Image::PF_RGBus : _FunctionName_<Image::PixelRGBus>(__VA_ARGS__); break; \ 00161 case Image::PF_RGBi : _FunctionName_<Image::PixelRGBi>(__VA_ARGS__); break; \ 00162 case Image::PF_RGBf : _FunctionName_<Image::PixelRGBf>(__VA_ARGS__); break; \ 00163 case Image::PF_RGBd : _FunctionName_<Image::PixelRGBd>(__VA_ARGS__); break; \ 00164 case Image::PF_RGBAub : _FunctionName_<Image::PixelRGBAub>(__VA_ARGS__); break; \ 00165 case Image::PF_RGBAus : _FunctionName_<Image::PixelRGBAus>(__VA_ARGS__); break; \ 00166 case Image::PF_RGBAi : _FunctionName_<Image::PixelRGBAi>(__VA_ARGS__); break; \ 00167 case Image::PF_RGBAf : _FunctionName_<Image::PixelRGBAf>(__VA_ARGS__); break; \ 00168 case Image::PF_RGBAd : _FunctionName_<Image::PixelRGBAd>(__VA_ARGS__); break; \ 00169 case Image::PF_CPLXi : _FunctionName_<Image::PixelComplexi>(__VA_ARGS__); break; \ 00170 case Image::PF_CPLXf : _FunctionName_<Image::PixelComplexf>(__VA_ARGS__); break; \ 00171 case Image::PF_CPLXd : _FunctionName_<Image::PixelComplexd>(__VA_ARGS__); break; \ 00172 case Image::PF_HLSf : _FunctionName_<Image::PixelHLSf>(__VA_ARGS__); break; \ 00173 case Image::PF_HLSd : _FunctionName_<Image::PixelHLSd>(__VA_ARGS__); break; \ 00174 case Image::PF_XYZf : _FunctionName_<Image::PixelXYZf>(__VA_ARGS__); break; \ 00175 case Image::PF_XYZd : _FunctionName_<Image::PixelXYZd>(__VA_ARGS__); break; \ 00176 case Image::PF_Luvf : _FunctionName_<Image::PixelLuvf>(__VA_ARGS__); break; \ 00177 case Image::PF_Luvd : _FunctionName_<Image::PixelLuvd>(__VA_ARGS__); break; \ 00178 case Image::PF_Labf : _FunctionName_<Image::PixelLabf>(__VA_ARGS__); break; \ 00179 case Image::PF_Labd : _FunctionName_<Image::PixelLabd>(__VA_ARGS__); break; \ 00180 case Image::PF_Lchf : _FunctionName_<Image::PixelLchf>(__VA_ARGS__); break; \ 00181 case Image::PF_Lchd : _FunctionName_<Image::PixelLchd>(__VA_ARGS__); break; \ 00182 case Image::PF_HLabf : _FunctionName_<Image::PixelHLabf>(__VA_ARGS__); break; \ 00183 case Image::PF_HLabd : _FunctionName_<Image::PixelHLabd>(__VA_ARGS__); break; \ 00184 case Image::PF_Undefined : break; \ 00185 } 00186 00187 } // namespace Image 00188 } // namespace eLynx 00189 00190 #endif // __Pixels_h__