HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
IMG_FileTypes.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  * NAME: IMG_Types.h ( IMG Library, C++)
7  *
8  * COMMENTS: IMG data types
9  */
10 
11 #ifndef __IMG_FILE_TYPES__
12 #define __IMG_FILE_TYPES__
13 
14 #include "IMG_API.h"
15 #include <PXL/PXL_Common.h>
16 
18 {
20 
21  // Allow bit masking of types so formats can specify which types they
22  // support.
23  IMG_DT_ANY = 0x00,
24 
25  // All integer data types are unsigned.
26  IMG_UCHAR = 0x01, IMG_INT8 = 0x01,
27  IMG_USHORT = 0x02, IMG_INT16 = 0x02,
28  IMG_UINT = 0x04, IMG_INT32 = 0x04,
29 
30  IMG_FLOAT = 0x08, IMG_FLOAT32 = 0x08,
31  IMG_HALF = 0x10, IMG_FLOAT16 = 0x10
32 };
33 
36 
37 /// How the channel data should be interpreted.
39 {
45  IMG_TI_SAMPLE_COUNT // Deep sample count pseudo-plane
46 };
47 
48 IMG_API const char *IMGgetNameFromTypeInfo(IMG_TypeInfo type_info);
50 
51 
53 {
55 
57 
58  // basic channel configurations
59  IMG_1CHAN = 0x01,
60  IMG_2CHAN = 0x02,
61  IMG_RGB = 0x04,
62  IMG_RGBA = 0x08,
63 
64  // extension bits
66 
67  // commonly reversed formats
70 };
71 
72 IMG_API const char *IMGgetNameFromColorModel(IMG_ColorModel type_info);
74 
75 
77 {
81 };
82 
83 static inline const char *
84 IMGinterleave(IMG_Interleave i)
85 {
86  switch (i)
87  {
88  case IMG_INTERLEAVED: return "interleaved";
89  case IMG_NON_INTERLEAVED: return "non_interleaved";
90  default: return "default";
91  }
92 }
93 
95 {
99 };
100 
101 static inline const char *
102 IMGcomponentOrder(IMG_ComponentOrder order)
103 {
104  switch (order)
105  {
106  case IMG_COMPONENT_RGBA: return "rgba";
107  case IMG_COMPONENT_ABGR: return "abgr";
108  default: return "default";
109  }
110 }
111 
112 #define IMG_DT_ALL ((IMG_DataType)0x1F)
113 
114 static inline int IMGbyteSize(IMG_DataType dt)
115  {
116  if(dt == IMG_INT16 || dt == IMG_FLOAT16)
117  return 2;
118  else if(dt == IMG_FLOAT32 || dt == IMG_INT32)
119  return 4;
120  return 1;
121  }
122 
123 static inline PXL_DataFormat IMGformatToPXL(IMG_DataType dt)
124 {
125  switch(dt)
126  {
127  case IMG_INT8: return PXL_INT8;
128  case IMG_INT16: return PXL_INT16;
129  case IMG_INT32: return PXL_INT32;
130  case IMG_FLOAT32: return PXL_FLOAT32;
131  case IMG_FLOAT16: return PXL_FLOAT16;
132  default: return PXL_MAX_DATA_FORMAT;
133  }
134  // unknown format.
135  return PXL_MAX_DATA_FORMAT;
136 }
137 
138 static inline IMG_DataType IMGformatFromPXL(PXL_DataFormat dt)
139 {
140  switch(dt)
141  {
142  case PXL_INT8: return IMG_INT8;
143  case PXL_INT16: return IMG_INT16;
144  case PXL_INT32: return IMG_INT32;
145  case PXL_FLOAT32: return IMG_FLOAT32;
146  case PXL_FLOAT16: return IMG_FLOAT16;
147  default: return IMG_DT_ANY;
148  }
149  // unknown format.
150  return IMG_DT_ANY;
151 }
152 
153 static inline IMG_ColorModel IMGcolorModelFromPXL(PXL_Packing pack)
154 {
155  switch(pack)
156  {
157  case PACK_SINGLE: return IMG_1CHAN;
158  case PACK_UV:
159  case PACK_DUAL:
160  case PACK_DUAL_NI: return IMG_2CHAN;
161  case PACK_RGB:
162  case PACK_RGB_NI: return IMG_RGB;
163  case PACK_RGBA:
164  case PACK_RGBA_NI: return IMG_RGBA;
165  default: return IMG_CM_ANY;
166  }
167 }
168 
169 static inline PXL_Packing IMGcolorModelToPXL(IMG_ColorModel cm,
170  bool interleave = true)
171 {
172  switch(cm)
173  {
174  case IMG_1CHAN: return PACK_SINGLE;
175  case IMG_2CHAN: return interleave ? PACK_UV : PACK_DUAL_NI;
176  case IMG_RGB: return interleave ? PACK_RGB : PACK_RGB_NI;
177  case IMG_RGBA: return interleave ? PACK_RGBA : PACK_RGBA_NI;
178  default: return PACK_UNKNOWN;
179  }
180 }
181 
182 static inline IMG_Interleave IMGinterleaveFromPXL(PXL_Packing pack)
183 {
184  switch(pack)
185  {
186  case PACK_UV:
187  case PACK_DUAL:
188  case PACK_RGB:
189  case PACK_RGBA: return IMG_INTERLEAVED;
190  case PACK_DUAL_NI:
191  case PACK_RGB_NI:
192  case PACK_RGBA_NI: return IMG_NON_INTERLEAVED;
193  default: return IMG_INTERLEAVE_AS_IS;
194  }
195 }
196 
197 //
198 // ------------------------------------------------------------------------
199 //
200 
201 // size mask
202 #define IMG_CM_SIZE 0x0F
203 #define IMG_CM_ALL ((IMG_ColorModel)0x0F)
204 
205 static inline int IMGvectorSize(IMG_ColorModel cm)
206  {
207  int num;
208  int sb = (cm & IMG_CM_SIZE);
209 
210  if(sb == IMG_1CHAN)
211  num=1;
212  else if(sb == IMG_2CHAN)
213  num=2;
214  else if(sb == IMG_RGB)
215  num=3;
216  else if(sb == IMG_RGBA)
217  num=4;
218  else
219  num=0;
220  return num;
221  }
222 
223 static inline bool IMGisReversed(IMG_ColorModel cm)
224  { return ((bool)(cm & IMG_CM_REVERSED)); }
225 
226 static inline IMG_ColorModel
227 IMGcolorModelFromVectorSize(int vsize)
228 {
229  switch(vsize)
230  {
231  case 1: return IMG_1CHAN;
232  case 2: return IMG_2CHAN;
233  case 3: return IMG_RGB;
234  case 4: return IMG_RGBA;
235  }
236  return IMG_CM_UNDEFINED;
237 }
238 
239 //
240 // ------------------------------------------------------------------------
241 //
242 
243 // Image Orientation enums.
245 {
249 };
250 
252 {
256 };
257 
258 static inline const char *
259 IMGxorientation(IMG_XOrientation o)
260 {
261  switch (o)
262  {
263  case IMG_ORIENT_LEFT_FIRST: return "left to right";
264  case IMG_ORIENT_RIGHT_FIRST: return "right to left";
265  default: return "default";
266  }
267 }
268 
269 static inline const char *
270 IMGyorientation(IMG_YOrientation o)
271 {
272  switch (o)
273  {
274  case IMG_ORIENT_TOP_FIRST: return "top to bottom";
275  case IMG_ORIENT_BOTTOM_FIRST: return "bottom to top";
276  default: return "default";
277  }
278 }
279 
280 // Deep Raster RGBA preference
282 {
286 };
287 
288 // return enum for the IMG_File::getAlphaInfo() method, triggered by
289 // IMG_FileParms::detectTrivialAlpha()
291 {
292  IMG_ALPHA_OPAQUE, // constant 1
293  IMG_ALPHA_CONSTANT, // constant valued
294  IMG_ALPHA_CUTOUT, // either 1.0 or 0.0
296  IMG_ALPHA_OUT_OF_BOUNDS, // < 0.0 or > 1.0
297  IMG_ALPHA_NONE // no alpha channel
298 };
299 
300 /// Type of image we want to create or have opened.
302 {
303  IMG_TYPE_2D = 1 << 0, ///> The image is a 2D image.
304  IMG_TYPE_DEEP_PIXEL = 1 << 1 ///> The image is a deep pixel image.
305 };
306 
307 
308 // Depth interpolation settings for deep pixel images.
310 {
314 };
315 
318 
319 // mipmap generation options
321 {
324 };
325 
326 #endif
327 
IMG_ImageType
Type of image we want to create or have opened.
IMG_XOrientation
#define IMG_CM_SIZE
IMG_API IMG_DataType IMGgetDataTypeFromName(const char *name)
IMG_DeepRasterColor
IMG_TypeInfo
How the channel data should be interpreted.
Definition: IMG_FileTypes.h:38
IMG_MipRoundMode
IMG_API const char * IMGgetNameFromColorModel(IMG_ColorModel type_info)
IMG_API IMG_TypeInfo IMGgetTypeInfoFromName(const char *name)
#define IMG_API
Definition: IMG_API.h:10
IMG_DataType
Definition: IMG_FileTypes.h:17
IMG_API IMG_ColorModel IMGgetColorModelFromName(const char *name)
PXL_Packing
Definition: PXL_Common.h:32
GLdouble GLdouble GLint GLint order
Definition: glad.h:2676
GLuint const GLchar * name
Definition: glcorearb.h:786
PXL_DataFormat
Definition: PXL_Common.h:20
IMG_FileAlphaInfo
IMG_YOrientation
IMG_API const char * IMGgetNameFromDataType(IMG_DataType type)
IMG_DepthInterp
The image is a 2D image.
IMG_Interleave
Definition: IMG_FileTypes.h:76
IMG_ColorModel
Definition: IMG_FileTypes.h:52
IMG_API IMG_DepthInterp IMGgetDepthInterpFromName(const char *name)
IMG_ComponentOrder
Definition: IMG_FileTypes.h:94
type
Definition: core.h:1059
IMG_API const char * IMGgetNameFromTypeInfo(IMG_TypeInfo type_info)
IMG_API const char * IMGgetNameFromDepthInterp(IMG_DepthInterp type)