diff options
Diffstat (limited to 'modules/libgrbase/g_bitmap.h')
-rw-r--r-- | modules/libgrbase/g_bitmap.h | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/modules/libgrbase/g_bitmap.h b/modules/libgrbase/g_bitmap.h new file mode 100644 index 0000000..d98bbe5 --- /dev/null +++ b/modules/libgrbase/g_bitmap.h @@ -0,0 +1,131 @@ +/* + * 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 __BITMAP_H +#define __BITMAP_H + +#include "g_pal.h" + +/* --------------------------------------------------------------------------- */ + +#define GI_NOCOLORKEY 0x00000001 /* info_flags bits */ +#define GI_CLEAN 0x40000000 /* the graphic is clean (no data) */ +#define GI_EXTERNAL_DATA 0x80000000 /* data area is external, it don't belong to bitmap */ + +#define GI_ANALIZE_MASK GI_NOCOLORKEY + +#define CPOINT_UNDEFINED 32767 /* It's enough if X is set to this value */ + +/* --------------------------------------------------------------------------- */ + +typedef struct _cpoint +{ + short int x; + short int y; +} +CPOINT; + +typedef struct _pixel_format +{ + PALETTE * palette; /* Palette for 8 bits graphics */ + + uint8_t depth; /* bits per pixel */ + uint8_t depthb; /* bytes per pixel */ + + uint8_t Rloss; + uint8_t Gloss; + uint8_t Bloss; + uint8_t Aloss; + + uint8_t Rshift; + uint8_t Gshift; + uint8_t Bshift; + uint8_t Ashift; + + uint32_t Rmask; + uint32_t Gmask; + uint32_t Bmask; + uint32_t Amask; +} +PIXEL_FORMAT; + +typedef struct _bitmap +{ + int code; /* Identifier of the graphic (in the graphic library) */ + char name[ 64 ]; /* Name of the graphic */ + + uint32_t width; /* Width of a bitmap frame in pixels */ + uint32_t height; /* Height of a bitmap frame in pixels */ + + uint32_t pitch; /* Bytes of distance between bitmap lines */ + uint32_t widthb; /* Width of a bitmap frame in bytes */ + + PIXEL_FORMAT * format; /* Pixel format */ + + /* Runtime use */ + int modified; /* 0 - bitmap not modified + 1 - bitmap is modified + 2 - bitmap is modified and needs analysis + */ + int info_flags; /* Analysis result (see bitmap_analize) */ + + void * data; /* Pointer to the bitmap data at current frame */ + + uint32_t ncpoints; /* Number of control points */ + CPOINT * cpoints; /* Pointer to the control points ([0] = center) */ + + /* Blend Ops */ + int16_t * blend_table; /* Pointer to 16 bits blend table if any */ + + /* Linked list of all bitmaps in memory */ +/* + struct _bitmap * next; + struct _bitmap * prev; +*/ +} +GRAPH; + +/* --------------------------------------------------------------------------- */ + +extern GRAPH * bitmap_new( int code, int w, int h, int depth ); +extern GRAPH * bitmap_new_ex( int code, int w, int h, int depth, void * data, int pitch ); +extern GRAPH * bitmap_clone( GRAPH * t ); +extern GRAPH * bitmap_new_syslib( int w, int h, int depth ); +extern void bitmap_destroy( GRAPH * map ); +extern void bitmap_destroy_fake( GRAPH * map ); +extern void bitmap_add_cpoint( GRAPH *map, int x, int y ); +extern void bitmap_set_cpoint( GRAPH * map, uint32_t point, int x, int y ); +extern void bitmap_analize( GRAPH * bitmap ); + +extern PIXEL_FORMAT * bitmap_create_format( int bpp ); + +extern int bitmap_next_code(); + +/* --------------------------------------------------------------------------- */ + +#endif |