home *** CD-ROM | disk | FTP | other *** search
- /*****************************************************************
- * fbm.h: FBM Release 1.0 25-Feb-90 Michael Mauldin
- *
- * Copyright (C) 1989,1990 by Michael Mauldin. Permission is granted
- * to use this file in whole or in part for any purpose, educational,
- * recreational or commercial, provided that this copyright notice
- * is retained unchanged. This software is available to all free of
- * charge by anonymous FTP and in the UUNET archives.
- *
- * fbm.h: Fuzzy Bitmap Definition
- *
- * USAGE
- * # include <fbm.h>
- *
- * EDITLOG
- * LastEditDate = Mon Jun 25 00:03:05 1990 - Michael Mauldin
- * LastFileName = /usr2/mlm/src/misc/fbm/fbm.h
- *
- * HISTORY
- * 25-Jun-90 Michael Mauldin (mlm@cs.cmu.edu) Carnegie Mellon
- * Package for Release 1.0
- *
- * 07-Mar-89 Michael Mauldin (mlm) at Carnegie Mellon University
- * Beta release (version 0.9) mlm@cs.cmu.edu.
- *
- * 20-Aug-88 Michael Mauldin (mlm) at Carnegie-Mellon University
- * Created.
- *****************************************************************/
-
- # define FBM_MAX_TITLE 80 /* For title and credits */
-
- # define BLACK 0 /* For 8bit files */
- # define WHITE 255 /* For 8bit files */
- # define BYTE 256 /* For 8bit files */
-
- # define BIG 1 /* msb first byte order */
- # define LITTLE 0 /* lsb first byte order */
-
- # define BYTESPERLINE 32 /* For PostScript output */
-
- # define BLANKS " "
- # define SKIPARG while (*++(*argv)); --(*argv)
- # define CLRARG strncpy (*argv, BLANKS, strlen (*argv)); \
- while (*++(*argv)); --(*argv)
-
- # define FMT_ATK 1 /* Andrew toolkit raster format */
- # define FMT_FACE 2 /* Bennet Yee's 1bit Face format */
- # define FMT_FBM 3 /* + Fuzzy bitmap format */
- # define FMT_GIF 4 /* Compuserve Graphics Interchange */
- # define FMT_IFF 5 /* Amiga Interchange Format File */
- # define FMT_LEAF 6 /* InterLeaf image format */
- # define FMT_MCP 7 /* Macpaint format */
- # define FMT_PBM 8 /* Poskanzer 1bit format */
- # define FMT_PCX 9 /* PCX format */
- # define FMT_SUN 10 /* + Sun rasterfile */
- # define FMT_TIFF 11 /* Tagged IFF, Next, Macintosh */
- # define FMT_X11 12 /* X11 format */
- # define FMT_RLE 13 /* Utah RLE format */
-
- # define FMTCHAR ".ABFGILMPZSTXR"
-
- # define DEF_8BIT FMT_FBM
- # define DEF_1BIT FMT_SUN
-
- /* An FBM bitmap header in memory */
- typedef struct fbm_hdr_struct {
- int cols; /* Width in pixels */
- int rows; /* Height in pixels */
- int planes; /* Depth (1 for B+W, 3 for RGB) */
- int bits; /* Bits per pixel */
- int physbits; /* Bits to store each pixel */
- int rowlen; /* Length of a row in bytes */
- int plnlen; /* Length of a plane in bytes */
- int clrlen; /* Length of color map */
- double aspect; /* ratio of Y to X of one pixel */
- char title[FBM_MAX_TITLE]; /* Null terminated title */
- char credits[FBM_MAX_TITLE]; /* Null terminated credits */
- } FBMHDR;
-
- # define FBM_MAGIC "%bitmap"
- # define BM_MAGIC ('!' << 8 | '!')
- # define PCX_MAGIC 0xa
- # define GIF_MAGIC "GIF87a"
- # define IFF_MAGIC "FORM"
- # define SUN_MAGIC 0x59a66a95
-
- /* FBM bitmap headers in files (null terminated 12 character ascii strings) */
- typedef struct fbm_filehdr_struct {
- char magic[8]; /* 2 bytes FBM_MAGIC number */
- char cols[8]; /* Width in pixels */
- char rows[8]; /* Height in pixels */
- char planes[8]; /* Depth (1 for B+W, 3 for RGB) */
- char bits[8]; /* Bits per pixel */
- char physbits[8]; /* Bits to store each pixel */
- char rowlen[12]; /* Length of a row in bytes */
- char plnlen[12]; /* Length of a plane in bytes */
- char clrlen[12]; /* Length of colormap in bytes */
- char aspect[12]; /* ratio of Y to X of one pixel */
- char title[FBM_MAX_TITLE]; /* Null terminated title */
- char credits[FBM_MAX_TITLE]; /* Null terminated credits */
- } FBMFILEHDR;
-
- /* An FBM bitmap in memory */
- typedef struct fbm_struct {
- FBMHDR hdr; /* Bitmap header */
- unsigned char *cm; /* Pointer to colormap */
- unsigned char *bm; /* Pointer to raw bits */
- } FBM;
-
- /* Functions */
- double atof ();
- char *strcpy();
- char *strncpy();
-
- #ifndef _COMPAT_
- char *malloc();
- #endif
-
- long time (), get_long ();
- int get_short ();
-
- /* Macro for getting next magic char */
- # define NEXTMCH(F,S,L) (((L) > 0) ? ((L)--, *(S)++) : getc (F))
-