00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __IMG_FILE_TYPES__
00020 #define __IMG_FILE_TYPES__
00021
00022 #include <PXL/PXL_Common.h>
00023
00024 enum IMG_DataType
00025 {
00026
00027
00028 IMG_DT_ANY = 0x00,
00029
00030
00031 IMG_UCHAR = 0x01, IMG_INT8 = 0x01,
00032 IMG_USHORT = 0x02, IMG_INT16 = 0x02,
00033 IMG_UINT = 0x04, IMG_INT32 = 0x04,
00034
00035 IMG_FLOAT = 0x08, IMG_FLOAT32 = 0x08,
00036 IMG_HALF = 0x10, IMG_FLOAT16 = 0x10
00037 };
00038
00039 enum IMG_ColorModel
00040 {
00041 IMG_CM_ANY = 0,
00042
00043
00044 IMG_1CHAN = 0x01,
00045 IMG_2CHAN = 0x02,
00046 IMG_RGB = 0x04,
00047 IMG_RGBA = 0x08,
00048
00049
00050 IMG_CM_REVERSED = 0x10,
00051
00052
00053 IMG_BGR = (IMG_RGB | IMG_CM_REVERSED),
00054 IMG_ABGR = (IMG_RGBA | IMG_CM_REVERSED)
00055 };
00056
00057 enum IMG_Interleave
00058 {
00059 IMG_INTERLEAVE_AS_IS,
00060 IMG_INTERLEAVED,
00061 IMG_NON_INTERLEAVED
00062 };
00063
00064 #define IMG_DT_ALL ((IMG_DataType)0x1F)
00065
00066 static inline int IMGbyteSize(IMG_DataType dt)
00067 {
00068 if(dt == IMG_INT16 || dt == IMG_FLOAT16)
00069 return 2;
00070 else if(dt == IMG_FLOAT32 || dt == IMG_INT32)
00071 return 4;
00072 return 1;
00073 }
00074
00075 static inline PXL_DataFormat IMGformatToPXL(IMG_DataType dt)
00076 {
00077 switch(dt)
00078 {
00079 case IMG_INT8: return PXL_INT8;
00080 case IMG_INT16: return PXL_INT16;
00081 case IMG_INT32: return PXL_INT32;
00082 case IMG_FLOAT32: return PXL_FLOAT32;
00083 case IMG_FLOAT16: return PXL_FLOAT16;
00084 default: return PXL_MAX_DATA_FORMAT;
00085 }
00086
00087 return PXL_MAX_DATA_FORMAT;
00088 }
00089
00090 static inline IMG_DataType IMGformatFromPXL(PXL_DataFormat dt)
00091 {
00092 switch(dt)
00093 {
00094 case PXL_INT8: return IMG_INT8;
00095 case PXL_INT16: return IMG_INT16;
00096 case PXL_INT32: return IMG_INT32;
00097 case PXL_FLOAT32: return IMG_FLOAT32;
00098 case PXL_FLOAT16: return IMG_FLOAT16;
00099 default: return IMG_DT_ANY;
00100 }
00101
00102 return IMG_DT_ANY;
00103 }
00104
00105 static inline IMG_ColorModel IMGcolorModelFromPXL(PXL_Packing pack)
00106 {
00107 switch(pack)
00108 {
00109 case PACK_SINGLE: return IMG_1CHAN;
00110 case PACK_DUAL:
00111 case PACK_DUAL_NI: return IMG_2CHAN;
00112 case PACK_RGB:
00113 case PACK_RGB_NI: return IMG_RGB;
00114 case PACK_RGBA:
00115 case PACK_RGBA_NI: return IMG_RGBA;
00116 default: return IMG_CM_ANY;
00117 }
00118 }
00119
00120 static inline IMG_Interleave IMGinterleaveFromPXL(PXL_Packing pack)
00121 {
00122 switch(pack)
00123 {
00124 case PACK_DUAL:
00125 case PACK_RGB:
00126 case PACK_RGBA: return IMG_INTERLEAVED;
00127 case PACK_DUAL_NI:
00128 case PACK_RGB_NI:
00129 case PACK_RGBA_NI: return IMG_NON_INTERLEAVED;
00130 default: return IMG_INTERLEAVE_AS_IS;
00131 }
00132 }
00133
00134
00135
00136
00137
00138
00139 #define IMG_CM_SIZE 0x0F
00140 #define IMG_CM_ALL ((IMG_ColorModel)0x0F)
00141
00142 static inline int IMGvectorSize(IMG_ColorModel cm)
00143 {
00144 int num;
00145 int sb = (cm & IMG_CM_SIZE);
00146
00147 if(sb == IMG_1CHAN)
00148 num=1;
00149 else if(sb == IMG_2CHAN)
00150 num=2;
00151 else if(sb == IMG_RGB)
00152 num=3;
00153 else if(sb == IMG_RGBA)
00154 num=4;
00155 else
00156 num=0;
00157 return num;
00158 }
00159
00160 static inline bool IMGisReversed(IMG_ColorModel cm)
00161 { return ((bool)(cm & IMG_CM_REVERSED)); }
00162
00163
00164
00165
00166
00167
00168 enum IMG_XOrientation
00169 {
00170 IMG_ORIENT_X_NONE,
00171 IMG_ORIENT_LEFT_FIRST,
00172 IMG_ORIENT_RIGHT_FIRST
00173 };
00174
00175 enum IMG_YOrientation
00176 {
00177 IMG_ORIENT_Y_NONE,
00178 IMG_ORIENT_TOP_FIRST,
00179 IMG_ORIENT_BOTTOM_FIRST
00180 };
00181
00182
00183 enum IMG_DeepRasterColor
00184 {
00185 IMG_DEEP_RGBA_SPLIT,
00186 IMG_DEEP_RGBA_COMBINED,
00187 IMG_DEEP_RGBA_DONT_CARE
00188 };
00189
00190 #endif
00191