+++ /dev/null
-#ifndef PIXELFORMAT_H\r
-#define PIXELFORMAT_H\r
-\r
-/****************************************************************************************/\r
-/* PixelFormat.h */\r
-/* */\r
-/* Author: Charles Bloom */\r
-/* Description: The abstract Pixel primitives */\r
-/* */\r
-/* The contents of this file are subject to the Genesis3D Public License */\r
-/* Version 1.01 (the "License"); you may not use this file except in */\r
-/* compliance with the License. You may obtain a copy of the License at */\r
-/* http://www.genesis3d.com */\r
-/* */\r
-/* Software distributed under the License is distributed on an "AS IS" */\r
-/* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See */\r
-/* the License for the specific language governing rights and limitations */\r
-/* under the License. */\r
-/* */\r
-/* The Original Code is Genesis3D, released March 25, 1999. */\r
-/* Genesis3D Version 1.1 released November 15, 1999 */\r
-/* Copyright (C) 1999 WildTangent, Inc. All Rights Reserved */\r
-/* */\r
-/****************************************************************************************/\r
-\r
-#include "basetype.h"\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-typedef enum // all supported formats (including shifts)\r
-{\r
- GE_PIXELFORMAT_NO_DATA = 0,\r
- GE_PIXELFORMAT_8BIT, // PAL\r
- GE_PIXELFORMAT_8BIT_GRAY, // no palette (intensity from bit value)\r
- GE_PIXELFORMAT_16BIT_555_RGB,\r
- GE_PIXELFORMAT_16BIT_555_BGR,\r
- GE_PIXELFORMAT_16BIT_565_RGB, // #5\r
- GE_PIXELFORMAT_16BIT_565_BGR, \r
- GE_PIXELFORMAT_16BIT_4444_ARGB, // #7\r
- GE_PIXELFORMAT_16BIT_1555_ARGB, \r
- GE_PIXELFORMAT_24BIT_RGB, // #9\r
- GE_PIXELFORMAT_24BIT_BGR,\r
- GE_PIXELFORMAT_24BIT_YUV, // * see note below\r
- GE_PIXELFORMAT_32BIT_RGBX, \r
- GE_PIXELFORMAT_32BIT_XRGB, \r
- GE_PIXELFORMAT_32BIT_BGRX, \r
- GE_PIXELFORMAT_32BIT_XBGR,\r
- GE_PIXELFORMAT_32BIT_RGBA, \r
- GE_PIXELFORMAT_32BIT_ARGB, // #17\r
- GE_PIXELFORMAT_32BIT_BGRA, \r
- GE_PIXELFORMAT_32BIT_ABGR,\r
- \r
- GE_PIXELFORMAT_WAVELET, // #20 , Wavelet Compression\r
-\r
- GE_PIXELFORMAT_COUNT\r
-} gePixelFormat;\r
- \r
-/******\r
-\r
-there's something wacked out about these format names :\r
-\r
- for 16 bit & 32 bit , the _RGB or _BGR refers to their order\r
- *in the word or dword* ; since we're on intel, this means\r
- the bytes in the data file have the *opposite* order !!\r
- (for example the 32 bit _ARGB is actually B,G,R,A in raw bytes)\r
- for 24 bit , the _RGB or _BGR refers to their order in the\r
- actual bytes, so that windows bitmaps actually have\r
- _RGB order in a dword !!\r
-\r
-* YUV : the pixelformat ops here are identical to those of 24bit_RGB ;\r
- this is just a place-keeper to notify you that you should to a YUV_to_RGB conversion\r
-\r
-*********/\r
-\r
-#define GE_PIXELFORMAT_8BIT_PAL GE_PIXELFORMAT_8BIT\r
-\r
-typedef uint32 (*gePixelFormat_Composer )(int R,int G,int B,int A);\r
-typedef void (*gePixelFormat_Decomposer )(uint32 Pixel,int *R,int *G,int *B,int *A);\r
-\r
-typedef void (*gePixelFormat_ColorGetter)(uint8 **ppData,int *R,int *G,int *B,int *A);\r
-typedef void (*gePixelFormat_ColorPutter)(uint8 **ppData,int R,int G,int B,int A);\r
-\r
-typedef uint32 (*gePixelFormat_PixelGetter)(uint8 **ppData);\r
-typedef void (*gePixelFormat_PixelPutter)(uint8 **ppData,uint32 Pixel);\r
-\r
-typedef struct gePixelFormat_Operations\r
-{\r
- uint32 RMask;\r
- uint32 GMask;\r
- uint32 BMask;\r
- uint32 AMask;\r
-\r
- int RShift;\r
- int GShift;\r
- int BShift;\r
- int AShift;\r
-\r
- int RAdd;\r
- int GAdd;\r
- int BAdd;\r
- int AAdd;\r
-\r
- int BytesPerPel;\r
- geBoolean HasPalette;\r
- char * Description;\r
- \r
- gePixelFormat_Composer ComposePixel;\r
- gePixelFormat_Decomposer DecomposePixel;\r
-\r
- gePixelFormat_ColorGetter GetColor;\r
- gePixelFormat_ColorPutter PutColor;\r
-\r
- gePixelFormat_PixelGetter GetPixel;\r
- gePixelFormat_PixelPutter PutPixel;\r
-} gePixelFormat_Operations;\r
-\r
- // the Masks double as boolean "HaveAlpha" .. etc..\r
-\r
-GENESISAPI const gePixelFormat_Operations * GENESISCC gePixelFormat_GetOperations( gePixelFormat Format );\r
-\r
- // quick accessors to _GetOps\r
-GENESISAPI geBoolean GENESISCC gePixelFormat_IsValid( gePixelFormat Format);\r
-GENESISAPI unsigned int GENESISCC gePixelFormat_BytesPerPel( gePixelFormat Format );\r
-GENESISAPI geBoolean GENESISCC gePixelFormat_HasPalette( gePixelFormat Format );\r
-GENESISAPI geBoolean GENESISCC gePixelFormat_HasAlpha( gePixelFormat Format );\r
-GENESISAPI geBoolean GENESISCC gePixelFormat_HasGoodAlpha( gePixelFormat Format ); // more than 1 bit of alpha\r
-GENESISAPI const char * GENESISCC gePixelFormat_Description( gePixelFormat Format );\r
-GENESISAPI geBoolean GENESISCC gePixelFormat_IsRaw( gePixelFormat Format );\r
- // 'Raw' means pixels can be made with the Compose operations\r
-\r
-GENESISAPI uint32 GENESISCC gePixelFormat_ComposePixel( gePixelFormat Format,int R,int G,int B,int A);\r
-GENESISAPI void GENESISCC gePixelFormat_DecomposePixel( gePixelFormat Format,uint32 Pixel,int *R,int *G,int *B,int *A);\r
- \r
- // these four functions move ppData to the next pixel\r
-\r
-GENESISAPI void GENESISCC gePixelFormat_GetColor(gePixelFormat Format,uint8 **ppData,int *R,int *G,int *B,int *A);\r
-GENESISAPI void GENESISCC gePixelFormat_PutColor(gePixelFormat Format,uint8 **ppData,int R,int G,int B,int A);\r
-\r
-GENESISAPI uint32 GENESISCC gePixelFormat_GetPixel(gePixelFormat Format,uint8 **ppData);\r
-GENESISAPI void GENESISCC gePixelFormat_PutPixel(gePixelFormat Format,uint8 **ppData,uint32 Pixel);\r
- \r
-GENESISAPI uint32 GENESISCC gePixelFormat_ConvertPixel(gePixelFormat Format,uint32 Pixel,gePixelFormat ToFormat);\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif\r
-\r