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 enum IMG_ComponentOrder
00065 {
00066 IMG_COMPONENT_AS_IS,
00067 IMG_COMPONENT_RGBA,
00068 IMG_COMPONENT_ABGR
00069 };
00070
00071 #define IMG_DT_ALL ((IMG_DataType)0x1F)
00072
00073 static inline int IMGbyteSize(IMG_DataType dt)
00074 {
00075 if(dt == IMG_INT16 || dt == IMG_FLOAT16)
00076 return 2;
00077 else if(dt == IMG_FLOAT32 || dt == IMG_INT32)
00078 return 4;
00079 return 1;
00080 }
00081
00082 static inline PXL_DataFormat IMGformatToPXL(IMG_DataType dt)
00083 {
00084 switch(dt)
00085 {
00086 case IMG_INT8: return PXL_INT8;
00087 case IMG_INT16: return PXL_INT16;
00088 case IMG_INT32: return PXL_INT32;
00089 case IMG_FLOAT32: return PXL_FLOAT32;
00090 case IMG_FLOAT16: return PXL_FLOAT16;
00091 default: return PXL_MAX_DATA_FORMAT;
00092 }
00093
00094 return PXL_MAX_DATA_FORMAT;
00095 }
00096
00097 static inline IMG_DataType IMGformatFromPXL(PXL_DataFormat dt)
00098 {
00099 switch(dt)
00100 {
00101 case PXL_INT8: return IMG_INT8;
00102 case PXL_INT16: return IMG_INT16;
00103 case PXL_INT32: return IMG_INT32;
00104 case PXL_FLOAT32: return IMG_FLOAT32;
00105 case PXL_FLOAT16: return IMG_FLOAT16;
00106 default: return IMG_DT_ANY;
00107 }
00108
00109 return IMG_DT_ANY;
00110 }
00111
00112 static inline IMG_ColorModel IMGcolorModelFromPXL(PXL_Packing pack)
00113 {
00114 switch(pack)
00115 {
00116 case PACK_SINGLE: return IMG_1CHAN;
00117 case PACK_DUAL:
00118 case PACK_DUAL_NI: return IMG_2CHAN;
00119 case PACK_RGB:
00120 case PACK_RGB_NI: return IMG_RGB;
00121 case PACK_RGBA:
00122 case PACK_RGBA_NI: return IMG_RGBA;
00123 default: return IMG_CM_ANY;
00124 }
00125 }
00126
00127 static inline IMG_Interleave IMGinterleaveFromPXL(PXL_Packing pack)
00128 {
00129 switch(pack)
00130 {
00131 case PACK_DUAL:
00132 case PACK_RGB:
00133 case PACK_RGBA: return IMG_INTERLEAVED;
00134 case PACK_DUAL_NI:
00135 case PACK_RGB_NI:
00136 case PACK_RGBA_NI: return IMG_NON_INTERLEAVED;
00137 default: return IMG_INTERLEAVE_AS_IS;
00138 }
00139 }
00140
00141
00142
00143
00144
00145
00146 #define IMG_CM_SIZE 0x0F
00147 #define IMG_CM_ALL ((IMG_ColorModel)0x0F)
00148
00149 static inline int IMGvectorSize(IMG_ColorModel cm)
00150 {
00151 int num;
00152 int sb = (cm & IMG_CM_SIZE);
00153
00154 if(sb == IMG_1CHAN)
00155 num=1;
00156 else if(sb == IMG_2CHAN)
00157 num=2;
00158 else if(sb == IMG_RGB)
00159 num=3;
00160 else if(sb == IMG_RGBA)
00161 num=4;
00162 else
00163 num=0;
00164 return num;
00165 }
00166
00167 static inline bool IMGisReversed(IMG_ColorModel cm)
00168 { return ((bool)(cm & IMG_CM_REVERSED)); }
00169
00170
00171
00172
00173
00174
00175 enum IMG_XOrientation
00176 {
00177 IMG_ORIENT_X_NONE,
00178 IMG_ORIENT_LEFT_FIRST,
00179 IMG_ORIENT_RIGHT_FIRST
00180 };
00181
00182 enum IMG_YOrientation
00183 {
00184 IMG_ORIENT_Y_NONE,
00185 IMG_ORIENT_TOP_FIRST,
00186 IMG_ORIENT_BOTTOM_FIRST
00187 };
00188
00189
00190 enum IMG_DeepRasterColor
00191 {
00192 IMG_DEEP_RGBA_SPLIT,
00193 IMG_DEEP_RGBA_COMBINED,
00194 IMG_DEEP_RGBA_DONT_CARE
00195 };
00196
00197
00198
00199 enum IMG_FileAlphaInfo
00200 {
00201 IMG_ALPHA_OPAQUE,
00202 IMG_ALPHA_CONSTANT,
00203 IMG_ALPHA_CUTOUT,
00204 IMG_ALPHA_VARYING,
00205 IMG_ALPHA_OUT_OF_BOUNDS,
00206 IMG_ALPHA_NONE
00207 };
00208
00209 #endif
00210