diff options
Diffstat (limited to 'modules/libgrbase/g_pal.h')
-rw-r--r-- | modules/libgrbase/g_pal.h | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/modules/libgrbase/g_pal.h b/modules/libgrbase/g_pal.h new file mode 100644 index 0000000..1895438 --- /dev/null +++ b/modules/libgrbase/g_pal.h @@ -0,0 +1,133 @@ +/* + * Copyright © 2006-2013 SplinterGU (Fenix/Bennugd) + * Copyright © 2002-2006 Fenix Team (Fenix) + * Copyright © 1999-2002 José Luis Cebrián Pagüe (Fenix) + * + * This file is part of Bennu - Game Development + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + * + */ + +#ifndef __PAL_H +#define __PAL_H + +/* --------------------------------------------------------------------------- */ +#ifdef _MSC_VER +#pragma pack(push, 1) +#endif + +typedef struct _rgb_component +{ + uint8_t r ; + uint8_t g ; + uint8_t b ; +} +#ifdef __GNUC__ +__attribute__ ((packed)) +#endif +rgb_component ; + +typedef struct _palette +{ + rgb_component rgb[256] ; + + uint32_t colorequiv[256] ; + + int use; + + struct _palette * next ; + struct _palette * prev ; +} +#ifdef __GNUC__ +__attribute__ ((packed)) +#endif +PALETTE ; + +#ifdef _MSC_VER +#pragma pack(pop) +#endif + +/* --------------------------------------------------------------------------- */ + +#include "g_bitmap.h" + +/* --------------------------------------------------------------------------- */ + +/* Paleta de colores */ +/* ----------------- */ + +extern PALETTE * first_palette ; + +extern int palette_changed ; + +/* Lista ordenada de colores */ + +extern int color_list[ 256 ] ; + +/* Tabla de transparencias */ + +extern uint8_t trans_table[ 256 ][ 256 ] ; +extern int trans_table_updated ; + +/* Deja un color a 50% de intensidad */ + +extern uint16_t colorghost[65536] ; + +/* Paleta de colores por defecto */ + +extern uint8_t default_palette[]; +extern uint32_t default_colorequiv[256]; + +/* --------------------------------------------------------------------------- */ + +extern int find_nearest_color( PALETTE * pal, int first, int last, int r, int g, int b ); +extern int _rgb( PIXEL_FORMAT * format, int r, int g, int b ); +extern int _rgba( PIXEL_FORMAT * format, int r, int g, int b, int a ); +void _get_rgb( PIXEL_FORMAT * format, int color, int *r, int *g, int *b ); +void _get_rgba( PIXEL_FORMAT * format, int color, int *r, int *g, int *b, int *a ); +extern void pal_refresh( PALETTE * pal ); +extern void pal_use( PALETTE * pal ); +extern int pal_discard( PALETTE * pal ); +extern PALETTE * pal_new( PALETTE * basepal ); +extern PALETTE * pal_new_rgb( unsigned char * datapal ); +extern void pal_destroy( PALETTE * pal ); +extern int pal_get( PALETTE * spal, int color, int num, uint8_t * pal ); +extern int pal_set( PALETTE * spal, int color, int num, uint8_t * pal ); +extern int pal_map_assign( int libid, int mapcode, PALETTE * palid ); +extern int pal_map_remove( int libid, int mapcode ); +extern void gr_roll_palette( int color0, int num, int inc ); +extern int gr_rgb( int r, int g, int b ); +extern int gr_rgba( int r, int g, int b, int a ); +extern void gr_get_rgb( int color, int *r, int *g, int *b ); +extern void gr_get_rgba( int color, int *r, int *g, int *b, int *a ); +extern int gr_rgb_depth( int depth, int r, int g, int b ); +extern int gr_rgba_depth( int depth, int r, int g, int b, int a ); +extern void gr_get_rgb_depth( int depth, int color, int *r, int *g, int *b ); +extern void gr_get_rgba_depth( int depth, int color, int *r, int *g, int *b, int *a ); +extern int gr_find_nearest_color( int r, int g, int b ); +extern void gr_make_trans_table(); +extern void gr_set_rgb( int color, int r, int g, int b ); +extern void gr_get_colors( int color, int num, uint8_t * pal ); +extern void gr_set_colors( int color, int num, uint8_t * pal ); + +/* --------------------------------------------------------------------------- */ + +#endif |