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 
38 /// How the channel data should be interpreted.
40 {
46  IMG_TI_SAMPLE_COUNT // Deep sample count pseudo-plane
47 };
48 
49 IMG_API const char *IMGgetNameFromTypeInfo(IMG_TypeInfo type_info);
51 
52 
54 {
56 
58 
59  // basic channel configurations
60  IMG_1CHAN = 0x01,
61  IMG_2CHAN = 0x02,
62  IMG_RGB = 0x04,
63  IMG_RGBA = 0x08,
64 
65  // extension bits
67 
68  // commonly reversed formats
71 };
72 
73 IMG_API const char *IMGgetNameFromColorModel(IMG_ColorModel type_info);
75 
76 
78 {
82 };
83 
84 static inline const char *
85 IMGinterleave(IMG_Interleave i)
86 {
87  switch (i)
88  {
89  case IMG_INTERLEAVED: return "interleaved";
90  case IMG_NON_INTERLEAVED: return "non_interleaved";
91  default: return "default";
92  }
93 }
94 
96 {
100 };
101 
102 static inline const char *
103 IMGcomponentOrder(IMG_ComponentOrder order)
104 {
105  switch (order)
106  {
107  case IMG_COMPONENT_RGBA: return "rgba";
108  case IMG_COMPONENT_ABGR: return "abgr";
109  default: return "default";
110  }
111 }
112 
113 #define IMG_DT_ALL ((IMG_DataType)0x1F)
114 
115 static inline int IMGbyteSize(IMG_DataType dt)
116  {
117  if(dt == IMG_INT16 || dt == IMG_FLOAT16)
118  return 2;
119  else if(dt == IMG_FLOAT32 || dt == IMG_INT32)
120  return 4;
121  return 1;
122  }
123 
124 static inline PXL_DataFormat IMGformatToPXL(IMG_DataType dt)
125 {
126  switch(dt)
127  {
128  case IMG_INT8: return PXL_INT8;
129  case IMG_INT16: return PXL_INT16;
130  case IMG_INT32: return PXL_INT32;
131  case IMG_FLOAT32: return PXL_FLOAT32;
132  case IMG_FLOAT16: return PXL_FLOAT16;
133  default: return PXL_MAX_DATA_FORMAT;
134  }
135  // unknown format.
136  return PXL_MAX_DATA_FORMAT;
137 }
138 
139 static inline IMG_DataType IMGformatFromPXL(PXL_DataFormat dt)
140 {
141  switch(dt)
142  {
143  case PXL_INT8: return IMG_INT8;
144  case PXL_INT16: return IMG_INT16;
145  case PXL_INT32: return IMG_INT32;
146  case PXL_FLOAT32: return IMG_FLOAT32;
147  case PXL_FLOAT16: return IMG_FLOAT16;
148  default: return IMG_DT_ANY;
149  }
150  // unknown format.
151  return IMG_DT_ANY;
152 }
153 
154 static inline IMG_ColorModel IMGcolorModelFromPXL(PXL_Packing pack)
155 {
156  switch(pack)
157  {
158  case PACK_SINGLE: return IMG_1CHAN;
159  case PACK_UV:
160  case PACK_DUAL:
161  case PACK_DUAL_NI: return IMG_2CHAN;
162  case PACK_RGB:
163  case PACK_RGB_NI: return IMG_RGB;
164  case PACK_RGBA:
165  case PACK_RGBA_NI: return IMG_RGBA;
166  default: return IMG_CM_ANY;
167  }
168 }
169 
170 static inline PXL_Packing IMGcolorModelToPXL(IMG_ColorModel cm,
171  bool interleave = true)
172 {
173  switch(cm)
174  {
175  case IMG_1CHAN: return PACK_SINGLE;
176  case IMG_2CHAN: return interleave ? PACK_UV : PACK_DUAL_NI;
177  case IMG_RGB: return interleave ? PACK_RGB : PACK_RGB_NI;
178  case IMG_RGBA: return interleave ? PACK_RGBA : PACK_RGBA_NI;
179  default: return PACK_UNKNOWN;
180  }
181 }
182 
183 static inline IMG_Interleave IMGinterleaveFromPXL(PXL_Packing pack)
184 {
185  switch(pack)
186  {
187  case PACK_UV:
188  case PACK_DUAL:
189  case PACK_RGB:
190  case PACK_RGBA: return IMG_INTERLEAVED;
191  case PACK_DUAL_NI:
192  case PACK_RGB_NI:
193  case PACK_RGBA_NI: return IMG_NON_INTERLEAVED;
194  default: return IMG_INTERLEAVE_AS_IS;
195  }
196 }
197 
198 //
199 // ------------------------------------------------------------------------
200 //
201 
202 // size mask
203 #define IMG_CM_SIZE 0x0F
204 #define IMG_CM_ALL ((IMG_ColorModel)0x0F)
205 
206 static inline int IMGvectorSize(IMG_ColorModel cm)
207  {
208  int num;
209  int sb = (cm & IMG_CM_SIZE);
210 
211  if(sb == IMG_1CHAN)
212  num=1;
213  else if(sb == IMG_2CHAN)
214  num=2;
215  else if(sb == IMG_RGB)
216  num=3;
217  else if(sb == IMG_RGBA)
218  num=4;
219  else
220  num=0;
221  return num;
222  }
223 
224 static inline bool IMGisReversed(IMG_ColorModel cm)
225  { return ((bool)(cm & IMG_CM_REVERSED)); }
226 
227 static inline IMG_ColorModel
228 IMGcolorModelFromVectorSize(int vsize)
229 {
230  switch(vsize)
231  {
232  case 1: return IMG_1CHAN;
233  case 2: return IMG_2CHAN;
234  case 3: return IMG_RGB;
235  case 4: return IMG_RGBA;
236  }
237  return IMG_CM_UNDEFINED;
238 }
239 
240 //
241 // ------------------------------------------------------------------------
242 //
243 
244 // Image Orientation enums.
246 {
250 };
251 
253 {
257 };
258 
259 static inline const char *
260 IMGxorientation(IMG_XOrientation o)
261 {
262  switch (o)
263  {
264  case IMG_ORIENT_LEFT_FIRST: return "left to right";
265  case IMG_ORIENT_RIGHT_FIRST: return "right to left";
266  default: return "default";
267  }
268 }
269 
270 static inline const char *
271 IMGyorientation(IMG_YOrientation o)
272 {
273  switch (o)
274  {
275  case IMG_ORIENT_TOP_FIRST: return "top to bottom";
276  case IMG_ORIENT_BOTTOM_FIRST: return "bottom to top";
277  default: return "default";
278  }
279 }
280 
281 // Deep Raster RGBA preference
283 {
287 };
288 
289 // return enum for the IMG_File::getAlphaInfo() method, triggered by
290 // IMG_FileParms::detectTrivialAlpha()
292 {
293  IMG_ALPHA_OPAQUE, // constant 1
294  IMG_ALPHA_CONSTANT, // constant valued
295  IMG_ALPHA_CUTOUT, // either 1.0 or 0.0
297  IMG_ALPHA_OUT_OF_BOUNDS, // < 0.0 or > 1.0
298  IMG_ALPHA_NONE // no alpha channel
299 };
300 
301 /// Type of image we want to create or have opened.
303 {
304  IMG_TYPE_2D = 1 << 0, ///> The image is a 2D image.
305  IMG_TYPE_DEEP_PIXEL = 1 << 1 ///> The image is a deep pixel image.
306 };
307 
308 
309 // Depth interpolation settings for deep pixel images.
311 {
315 };
316 
319 
320 // mipmap generation options
322 {
325 };
326 
327 #endif
328 
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:39
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:77
IMG_ColorModel
Definition: IMG_FileTypes.h:53
IMG_API IMG_DepthInterp IMGgetDepthInterpFromName(const char *name)
IMG_ComponentOrder
Definition: IMG_FileTypes.h:95
type
Definition: core.h:1059
IMG_API const char * IMGgetNameFromTypeInfo(IMG_TypeInfo type_info)
IMG_API const char * IMGgetNameFromDepthInterp(IMG_DepthInterp type)