home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mega Top 1
/
os2_top1.zip
/
os2_top1
/
APPS
/
RAYTRACE
/
RT
/
GBM.H
< prev
next >
Wrap
C/C++ Source or Header
|
1994-04-10
|
2KB
|
77 lines
/*
GBM.H General Bitmap Code
Data is stored as an array of lines.
Lines are stored with bottom line first, moving upwards.
Each line is an array of pixels, leftmost first.
Lines are padded to be a multiple of a dword long.
Palettised pixels are either a 1 bit, 4 bit, or 8 bit indexes.
Alternately a B, G, R triple in that order is stored.
This format exactly matches the format used by OS/2 and Windows bitmaps.
One notable point: a 1 in a 1bpp image denotes colour 1, as found by
looking at palette entry 1. Data is not inverse when passed to and from GBM.
*/
#ifndef GBM_H
#define GBM_H
typedef int GBM_ERR;
#define GBM_ERR_OK ((GBM_ERR) 0)
#define GBM_ERR_MEM ((GBM_ERR) 1)
#define GBM_ERR_NOT_SUPP ((GBM_ERR) 2)
#define GBM_ERR_BAD_OPTION ((GBM_ERR) 3)
#define GBM_ERR_NOT_FOUND ((GBM_ERR) 4)
#define GBM_ERR_BAD_MAGIC ((GBM_ERR) 5)
#define GBM_ERR_BAD_SIZE ((GBM_ERR) 6)
#define GBM_ERR_READ ((GBM_ERR) 7)
#define GBM_ERR_WRITE ((GBM_ERR) 8)
#define GBM_FT_R1 0x0001
#define GBM_FT_R4 0x0002
#define GBM_FT_R8 0x0004
#define GBM_FT_R24 0x0008
#define GBM_FT_W1 0x0010
#define GBM_FT_W4 0x0020
#define GBM_FT_W8 0x0040
#define GBM_FT_W24 0x0080
typedef struct
{
char *short_name; /* Eg: "Targa" */
char *long_name; /* Eg: "Truevision Targa / Vista" */
char *extensions; /* Eg: "TGA VST" */
int flags; /* What functionality exists */
} GBMFT;
typedef struct { byte r, g, b; } GBMRGB;
#define PRIV_SIZE 2000
typedef struct
{
int w, h, bpp; /* Bitmap dimensions */
byte priv [PRIV_SIZE]; /* Private internal buffer */
} GBM;
#ifndef _GBM_
GBM_ERR gbm_init(void);
GBM_ERR gbm_deinit(void);
GBM_ERR gbm_query_n_filetypes(int *n_ft);
GBM_ERR gbm_query_filetype(int ft, GBMFT *gbmft);
GBM_ERR gbm_guess_filetype(char *fn, int *ft);
GBM_ERR gbm_read_header(char *fn, int fd, int ft, GBM *gbm, char *opt);
GBM_ERR gbm_read_palette(int fd, int ft, GBM *gbm, GBMRGB *gbmrgb);
GBM_ERR gbm_read_data(int fd, int ft, GBM *gbm, byte *data);
GBM_ERR gbm_write(char *fn, int fd, int ft, GBM *gbm, GBMRGB *gbmrgb, byte *data, char *opt);
char *gbm_err(GBM_ERR rc);
#endif
#endif