00001 #ifndef PIXELFORMAT_H
00002 #define PIXELFORMAT_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "basetype.h"
00027
00028 #ifdef __cplusplus
00029 extern "C" {
00030 #endif
00031
00032 typedef enum
00033 {
00034 GE_PIXELFORMAT_NO_DATA = 0,
00035 GE_PIXELFORMAT_8BIT,
00036 GE_PIXELFORMAT_8BIT_GRAY,
00037 GE_PIXELFORMAT_16BIT_555_RGB,
00038 GE_PIXELFORMAT_16BIT_555_BGR,
00039 GE_PIXELFORMAT_16BIT_565_RGB,
00040 GE_PIXELFORMAT_16BIT_565_BGR,
00041 GE_PIXELFORMAT_16BIT_4444_ARGB,
00042 GE_PIXELFORMAT_16BIT_1555_ARGB,
00043 GE_PIXELFORMAT_24BIT_RGB,
00044 GE_PIXELFORMAT_24BIT_BGR,
00045 GE_PIXELFORMAT_24BIT_YUV,
00046 GE_PIXELFORMAT_32BIT_RGBX,
00047 GE_PIXELFORMAT_32BIT_XRGB,
00048 GE_PIXELFORMAT_32BIT_BGRX,
00049 GE_PIXELFORMAT_32BIT_XBGR,
00050 GE_PIXELFORMAT_32BIT_RGBA,
00051 GE_PIXELFORMAT_32BIT_ARGB,
00052 GE_PIXELFORMAT_32BIT_BGRA,
00053 GE_PIXELFORMAT_32BIT_ABGR,
00054
00055 GE_PIXELFORMAT_WAVELET,
00056
00057 GE_PIXELFORMAT_COUNT
00058 } gePixelFormat;
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077 #define GE_PIXELFORMAT_8BIT_PAL GE_PIXELFORMAT_8BIT
00078
00079 typedef uint32 (*gePixelFormat_Composer )(int R,int G,int B,int A);
00080 typedef void (*gePixelFormat_Decomposer )(uint32 Pixel,int *R,int *G,int *B,int *A);
00081
00082 typedef void (*gePixelFormat_ColorGetter)(uint8 **ppData,int *R,int *G,int *B,int *A);
00083 typedef void (*gePixelFormat_ColorPutter)(uint8 **ppData,int R,int G,int B,int A);
00084
00085 typedef uint32 (*gePixelFormat_PixelGetter)(uint8 **ppData);
00086 typedef void (*gePixelFormat_PixelPutter)(uint8 **ppData,uint32 Pixel);
00087
00088 typedef struct gePixelFormat_Operations
00089 {
00090 uint32 RMask;
00091 uint32 GMask;
00092 uint32 BMask;
00093 uint32 AMask;
00094
00095 int RShift;
00096 int GShift;
00097 int BShift;
00098 int AShift;
00099
00100 int RAdd;
00101 int GAdd;
00102 int BAdd;
00103 int AAdd;
00104
00105 int BytesPerPel;
00106 geBoolean HasPalette;
00107 char * Description;
00108
00109 gePixelFormat_Composer ComposePixel;
00110 gePixelFormat_Decomposer DecomposePixel;
00111
00112 gePixelFormat_ColorGetter GetColor;
00113 gePixelFormat_ColorPutter PutColor;
00114
00115 gePixelFormat_PixelGetter GetPixel;
00116 gePixelFormat_PixelPutter PutPixel;
00117 } gePixelFormat_Operations;
00118
00119
00120
00121 GENESISAPI const gePixelFormat_Operations * GENESISCC gePixelFormat_GetOperations( gePixelFormat Format );
00122
00123
00124 GENESISAPI geBoolean GENESISCC gePixelFormat_IsValid( gePixelFormat Format);
00125 GENESISAPI unsigned int GENESISCC gePixelFormat_BytesPerPel( gePixelFormat Format );
00126 GENESISAPI geBoolean GENESISCC gePixelFormat_HasPalette( gePixelFormat Format );
00127 GENESISAPI geBoolean GENESISCC gePixelFormat_HasAlpha( gePixelFormat Format );
00128 GENESISAPI geBoolean GENESISCC gePixelFormat_HasGoodAlpha( gePixelFormat Format );
00129 GENESISAPI const char * GENESISCC gePixelFormat_Description( gePixelFormat Format );
00130 GENESISAPI geBoolean GENESISCC gePixelFormat_IsRaw( gePixelFormat Format );
00131
00132
00133 GENESISAPI uint32 GENESISCC gePixelFormat_ComposePixel( gePixelFormat Format,int R,int G,int B,int A);
00134 GENESISAPI void GENESISCC gePixelFormat_DecomposePixel( gePixelFormat Format,uint32 Pixel,int *R,int *G,int *B,int *A);
00135
00136
00137
00138 GENESISAPI void GENESISCC gePixelFormat_GetColor(gePixelFormat Format,uint8 **ppData,int *R,int *G,int *B,int *A);
00139 GENESISAPI void GENESISCC gePixelFormat_PutColor(gePixelFormat Format,uint8 **ppData,int R,int G,int B,int A);
00140
00141 GENESISAPI uint32 GENESISCC gePixelFormat_GetPixel(gePixelFormat Format,uint8 **ppData);
00142 GENESISAPI void GENESISCC gePixelFormat_PutPixel(gePixelFormat Format,uint8 **ppData,uint32 Pixel);
00143
00144 GENESISAPI uint32 GENESISCC gePixelFormat_ConvertPixel(gePixelFormat Format,uint32 Pixel,gePixelFormat ToFormat);
00145
00146
00147 #ifdef __cplusplus
00148 }
00149 #endif
00150
00151 #endif
00152