aboutsummaryrefslogtreecommitdiff
path: root/modules/libgrbase/g_bitmap.h
diff options
context:
space:
mode:
Diffstat (limited to 'modules/libgrbase/g_bitmap.h')
-rw-r--r--modules/libgrbase/g_bitmap.h131
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