e7eabd46b9
git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@1545 8092fc87-c524-0410-9efc-e669fe64eaf9
163 lines
5.0 KiB
C++
163 lines
5.0 KiB
C++
/*--main.h----------------------------------------------------------
|
|
* Main include file for ANIM2PCX.
|
|
* Note: all files editted with tab stops every 4 spaces.
|
|
*/
|
|
|
|
/* ------------------------------------------------------------------------
|
|
* Typedefs for portability.
|
|
*/
|
|
|
|
typedef char BOOL; /* 0==FALSE, 1==TRUE */
|
|
typedef char BYTE; /* signed 8-bit number */
|
|
typedef unsigned char UBYTE; /* unsigned 8-bit number */
|
|
typedef int WORD; /* signed 16-bit number */
|
|
typedef unsigned int UWORD; /* unsigned 16-bit number */
|
|
typedef long LONG; /* signed 32-bit number */
|
|
typedef unsigned long ULONG; /* unsigned 32-bit number */
|
|
typedef void (*ProcHandle)();
|
|
|
|
/* --- enable argument checking in Microsoft's include files */
|
|
#define LINT_ARGS
|
|
|
|
/*-----------------------------------------------------------------*/
|
|
|
|
#ifndef NULL
|
|
#define NULL 0
|
|
#endif
|
|
|
|
#ifndef FALSE
|
|
#define FALSE 0
|
|
#define TRUE 1
|
|
#endif
|
|
|
|
#define FAIL 1
|
|
#define SUCCESS 0
|
|
|
|
#define MAX_INTEGER 32767
|
|
|
|
#define HIWORD(longValue) ((UWORD)((longValue) >> 16))
|
|
#define LOWORD(longValue) ((UWORD)(longValue))
|
|
|
|
/* --- this depends on the memory model we're using */
|
|
/* Within the 64 KB data segment. */
|
|
#define NULL_DATAPTR 0
|
|
/* #define NULL_PROCPTR ((BYTE far *) NULL) */
|
|
#define NULL_PROCPTR ((ProcHandle) NULL)
|
|
|
|
/* --- separate Microsoft "far" ptrs into their segment & offset parts */
|
|
#define FP_SEG(fp) (*((UWORD *)&(fp) + 1))
|
|
#define FP_OFF(fp) (*((UWORD *)&(fp)))
|
|
|
|
/* --- combine segment & offset into a "far" ptr */
|
|
#define BYTE_FAR_PTR(seg,off) ((BYTE far *)(((LONG)(seg)<<16)+(off)))
|
|
#define WORD_FAR_PTR(seg,off) ((WORD far *)(((LONG)(seg)<<16)+(UWORD)(off)))
|
|
|
|
/*----------------------------------------------------------------------*/
|
|
|
|
#define SWAP(a,b) { (a) ^= (b); (b) ^= (a); (a) ^= (b); }
|
|
#define ORDER(a,b) if ((a)>(b)) SWAP((a),(b))
|
|
#define MAX(a,b) ((a)>(b)?(a):(b))
|
|
#define MIN(a,b) ((a)<(b)?(a):(b))
|
|
#define ABS(a) ((a)>0?(a):-(a))
|
|
#define DIV_ROUND(x, d) (((x) + ((d) >> 1)) / (d)) /* ASSUME d > 0. */
|
|
#define EVEN_UP(a) ( ((a)+1) & ~1 )
|
|
/* Even number >= a. */
|
|
|
|
#define CHECK_DOS(fn) if ((fn) == -1) goto doserr
|
|
|
|
/* ------------------------------------------------------------------------
|
|
* Graphics data structures.
|
|
*/
|
|
|
|
typedef struct {
|
|
WORD x, y;
|
|
} POINT;
|
|
typedef struct {
|
|
WORD w, h;
|
|
} Dims;
|
|
typedef struct {
|
|
WORD x, y, w, h;
|
|
} Box;
|
|
|
|
/*
|
|
* kludge for easy access to individual red/green/blue values within a LONG.
|
|
* NOTE: this depends on 808x byte order being low-high.
|
|
*/
|
|
typedef struct {
|
|
UBYTE blue, green, red, unused1;
|
|
} LONG_RGB;
|
|
|
|
/* --- Max # colors visible on screen. */
|
|
#define MAX_COLORS 256
|
|
|
|
/* --- Max # planes that a bitmap can have. */
|
|
#define MAX_PLANES 4
|
|
|
|
/* --- BITMAP structure */
|
|
typedef struct {
|
|
WORD width; /* Width in bytes of each row. Must be even. */
|
|
Box box; /* Pixel bounds of bitmap. (x,y == 0.) */
|
|
WORD planes; /* Number of planes. */
|
|
UWORD seg[MAX_PLANES]; /* SEG where each plane is allocated. */
|
|
} BITMAP;
|
|
|
|
typedef struct {
|
|
BITMAP *bitmap;
|
|
WORD nPlanes; /* used only in FMT_ONLY mode */
|
|
UBYTE xpcolor;
|
|
} MaskBM;
|
|
|
|
typedef struct {
|
|
UWORD w, h; /* raster width & height in pixels */
|
|
UBYTE nPlanes; /* # source bitplanes */
|
|
} BitMapHeader;
|
|
|
|
/* --------------------------------------------------------------------------
|
|
* Description of screen format "f" (320 x 200, 256-colors).
|
|
*/
|
|
#define ppb 1 /* pixels per byte */
|
|
#define ppb_minus1 0 /* ppb - 1 */
|
|
#define ppb_shift 0 /* 1 << ppb_shift == ppb */
|
|
#define bpp 8 /* bits per pixel */
|
|
#define bpp_minus1 7 /* bpp - 1 */
|
|
#define bpp_shift 3 /* 1 << bpp_shift == bpp */
|
|
#define curDepth 1 /* Single plane in byte-per-pixel format. */
|
|
#define white_color 0xff /* register # for default white. */
|
|
|
|
/* -----------------------------------------------------------------------
|
|
* Number of chars in an MS-DOS filename or directory (path) name.
|
|
*/
|
|
#define FILENAME_ROOT_LENGTH 8
|
|
#define FILENAME_SUFFIX_LENGTH 3
|
|
#define SEQUENCE_ROOT_LENGTH 4 /* XXXX in XXXX0001.PCX, XXXX0002.PCX...*/
|
|
#define SEQUENCE_DIGITS_LENGTH (FILENAME_ROOT_LENGTH - SEQUENCE_ROOT_LENGTH)
|
|
#define FILENAME_LENGTH 12 /* ROOT + '.' + SUFFIX */
|
|
#define PATHNAME_LENGTH 66 /* drive + path (no filename) */
|
|
|
|
/* -----------------------------------------------------------------------
|
|
* Screen Format "f".
|
|
*/
|
|
#define N_COLUMNS 320
|
|
#define N_LINES 200
|
|
#define N_BYTES_IN_BITMAP (N_COLUMNS * N_LINES)
|
|
|
|
/* -----------------------------------------------------------------------
|
|
* Buffered i/o.
|
|
*/
|
|
void OpenIOBuffer(BOOL forWriting);
|
|
void CloseIOBuffer(WORD file);
|
|
WORD GFlush(WORD file);
|
|
LONG GSeek(WORD file, LONG count, WORD seekType);
|
|
WORD GRead(WORD file, UBYTE *buffer, UWORD nBytes);
|
|
WORD GWrite(WORD file, UBYTE *buffer, UWORD nBytes);
|
|
|
|
/* -----------------------------------------------------------------------
|
|
* Procedures that need to be declared so parameters or return values of
|
|
* correct type.
|
|
*/
|
|
WORD far *BMLineStart(BITMAP*, WORD, WORD);
|
|
|
|
/* --- mnemonic names for Microsoft library functions */
|
|
#define movmem(source,dest,length) memmove(dest,source,length)
|
|
#define setmem(ptr,length,value) memset(ptr,value,length)
|