home *** CD-ROM | disk | FTP | other *** search
- /*
- * gfx.h -- non-ANSI
- *
- * Graphics utility functions.
- *
- * Copyright (c) 1990, MetaWare Incorporated
- */
-
- #ifndef _GFX_H
- #define _GFX_H
-
- #define _GFX_PALETTE -1 /* set GFX PALETTE with _gfx_color() */
-
- #define _DRAW_LINE 0 /* values for _gfx_line() */
- #define _FILL_BOX 1
- #define _EMPTY_BOX 2
- #define _PAT 0x400
-
- #define _DFLT -14232 /* default value */
- #define _CURR_PT -1347 /* relative coordinates */
- #define _STEP -2415
- #define _XOR_PEL 0x2000
-
- #define _FLT_CURR_PT -275864.312
- #define _FLT_STEP -982132.001
- #define _FLT_DFLT -723943.914
-
- #define _GFX_PI 3.141593 /* for setting angles in _gfx_arc() */
- #define _ROUND -1.1 /* for specifying a circular _gfx_arc() */
-
-
- #define _MONO_DISPLAY 0x1 /* Values for gfx.card_monitor */
- #define _COLOR_DISPLAY 0x2
- #define _EGA_DISPLAY 0x4
- #define _VGA_DISPLAY 0x8
- #define _MDA_CARD 0x100
- #define _CGA_CARD 0x200
- #define _EGA_CARD 0x400
- #define _VGA_CARD 0x800
- #define _HERC_CARD 0x1000
- #define _EGA_HERC (EGA_CARD | HERC_CARD)
-
- #define _NOT_SET 0xFFFF /* Values for gfx.bios_mode */
- #define _BW_40_TEXT 0
- #define _COLOR_40_TEXT 1
- #define _BW_80_TEXT 2
- #define _COLOR_80_TEXT 3
- #define _GRAPHICS 4
- #define _MED_RES_COLOR 4
- #define _MED_RES_BW 5
- #define _HI_RES_BW 6
- #define _MONO_TEXT 7
- #define _HERC_TEXT 8
- #define _HERC_GFX 9
- #define _EGA_MED_RES 0xD
- #define _EGA_HI_RES 0xE
- #define _EGA_MONO 0xF
- #define _EGA_COLOR 0x10
- #define _VGA_MONO 0x11
- #define _VGA_COLOR 0x12
-
-
- #define _FORCE_BIOS_MODE 0x8000
- #define _FORCE_EGA_MED_RES FORCE_BIOS_MODE + EGA_MED_RES
- #define _FORCE_EGA_HI_RES FORCE_BIOS_MODE + EGA_HI_RES
- #define _FORCE_EGA_MONO FORCE_BIOS_MODE + EGA_MONO
- #define _FORCE_EGA_COLOR FORCE_BIOS_MODE + EGA_COLOR
- #define _FORCE_VGA_MONO FORCE_BIOS_MODE + VGA_MONO
- #define _FORCE_VGA_COLOR FORCE_BIOS_MODE + VGA_COLOR
-
- #define _OR_EGA_MED_RES 0xD00
- #define _OR_EGA_HI_RES 0xE00
- #define _OR_EGA_MONO 0xF00
- #define _OR_EGA_COLOR 0x1000
- #define _OR_VGA_MONO 0x1100
- #define _OR_VGA_COLOR 0x1200
- #define _NO_MODE_CHANGE 0x7300
-
- #define _gfx_error(text_string) _set_gfx_err_number(0, text_string)
- #define _FREE_PIC(a) free(a)
-
- #define _BAD_ARG 1
- #define _BAD_VIDEO 2
- #define _BAD_ASPECT 3
- #define _BAD_ANGLE 4
- #define _NO_DISK_SPACE 5
- #define _NO_HEAP_SPACE 6
- #define _PAINT_OVERFLOW 7
- #define _OUT_OF_VIEW 8
- #define _BAD_VIEW_HANDLE 9
- #define _WRONG_PIC_TYPE 10
- #define _NOT_A_PIC_FILE 11
- #define _BAD_FPIC_INDEX 12
- #define _BAD_FPIC_HANDLE 13
- #define _BAD_FONT_HANDLE 14
-
-
- #define _MAX_FPIC_CB 10
-
-
- struct _arc {
- int col; /* parameters for 'CURVE' routines */
- int row;
- int rad;
- int color;
- double aspect;
- double start;
- double end;
- void (*write_pix)(int, int);
- };
-
-
- typedef struct _gfx_scale { int x_num, x_denom, y_num, y_denom;
- double x_flt, y_flt; } _SCALE;
-
- typedef struct _vu {
-
- unsigned int bkgnd; /* background color */
- unsigned int fgnd; /* forground color */
- unsigned int font_handle; /* current font for view */
- unsigned int auto_scale; /* use auto-scaling */
- unsigned int xlat_scale; /* the auto-scaling factor */
-
- int v_start_byte; /* first byte */
- int v_nbytes_wide; /* viewport's width -- in bytes */
- int n_pels_high; /* viewport's height */
- int n_pels_wide;
-
- int min_x, min_y; /* viewport's upper left corner */
- int max_x, max_y; /* viewport's lower right corner */
- int pt_x, pt_y; /* current x,y coordinate pair */
- int ilog_x, ilog_y; /* logical x,y pair for integer scaling */
- double flog_x, flog_y; /* logical x,y pair for floating point scaling */
- int x_org, y_org; /* viewport's origin */
- int x_dir, y_dir; /* direction in which coordinates grow */
- _SCALE scale;
- int (*get_pt)(int *);
- int vstatus;
- char *view_pic;
- int fpic_index;
- } _VIEW;
-
- #define _MAX_VIEWS 16
-
- typedef struct _fpic_cb {unsigned int signature, type;
- int dos_handle, max_fpics;
- long *pic_pos;
- } _FPIC_CB;
-
- #define _FPIC_HDR_SIZE (sizeof(FPIC_CB) - sizeof(LONG *))
- #define _fpic_loc(fpic_cb, index) (*((fpic_cb)->pic_pos + (index)))
-
- typedef struct _gc {int pt_x, pt_y;
- int ilog_x, ilog_y;
- double flog_x, flog_y;
- } _CRSR;
-
- typedef struct {
-
- /* general parameters for setting rom bios */
-
- unsigned int gfx_mode; /* graphics mode info */
- unsigned int card_monitor; /* type of card and monitor */
- unsigned int bios_mode; /* crt mode */
- unsigned int vpage_n; /* active display page */
- unsigned int wpage_n; /* active write page */
- unsigned int err_number; /* function error number */
- unsigned int show_gfx_err; /* display the error number */
- unsigned int use_ansi; /* use ansi.sys */
- unsigned int ansi_is_loaded; /* is ansi.sys loaded? */
- unsigned int paint_stack_sz; /* size of stack for _gfx_paint function */
-
- /* Info for writing text to the screen */
-
- unsigned int attr; /* attribute byte for text mode */
- unsigned int screen_base; /* base of screen ram for segment register */
- unsigned int width; /* screen width - 80 or 40 */
-
- /* Graphics info */
-
- unsigned int view_nmbr;
- unsigned int palette; /* palette of colors */
- int bytes_per_row; /* 80 is standard*/
- int last_video_row;
- int xor_pel;
-
- unsigned int bkgnd; /* background color */
- unsigned int fgnd; /* forground color */
- unsigned int font_handle;/* font for writing */
- unsigned int auto_scale; /* use auto-scaling */
- unsigned int xlat_scale; /* the auto-scaling factor */
-
- int v_start_byte; /* first byte */
- int v_nbytes_wide; /* viewport's width -- in bytes */
- int n_pels_high; /* viewport's height */
- int n_pels_wide;
-
- int min_x, min_y; /* viewport's upper left corner */
- int max_x, max_y; /* viewport's lower right corner */
- int pt_x, pt_y; /* current x,y coordinate pair */
- int ilog_x, ilog_y; /* logical x,y pair for integer scaling */
- double flog_x, flog_y; /* logical x,y pair for floating point scaling */
- int x_org, y_org; /* viewport's origin */
- int x_dir, y_dir; /* direction in which coordinates grow */
- _SCALE scale;
- int (*get_pt)(int *);
- int vstatus;
- char *view_pic;
- int fpic_index;
-
- struct _arc arc;
-
- int vpic_handle;
- _FPIC_CB *vpic_cb;
- _FPIC_CB *fpic_cb[_MAX_FPIC_CB];
-
- } _GFX_STATUS;
-
-
- /* if you are not using Microsoft C, remove the 'near' declaration */
- /* so it looks like -- extern GFX_STATUS _gfx; */
-
- extern _GFX_STATUS _gfx;
-
- typedef struct _box_coor {int x1, y1, x2, y2;} _BOX_COOR;
-
- typedef struct _pic {unsigned int xbytes;
- unsigned int yrows;
- unsigned int n_pels_per_row;
- unsigned char lopen_bits;
- unsigned char ropen_bits;} _PIC;
-
-
-
- #define _GET_GFX_VAL 1
- #define _SET_GFX_VAL 2
-
- #define _GET_GFX_STATUS(a, b) _gfx_set_get_status_val(_GET_GFX_VAL, a, b)
- #define _get_gfx_status(a, b) _gfx_set_get_status_val(_GET_GFX_VAL, a, b)
- #define _SET_GFX_STATUS(a, b) _gfx_set_get_status_val(_SET_GFX_VAL, a, b)
- #define _set_gfx_status(a, b) _gfx_set_get_status_val(_SET_GFX_VAL, a, b)
-
- #define _GFX_GFX_MODE 1
- #define _GFX_CARD_MONITOR 2
- #define _GFX_BIOS_MODE 3
- #define _GFX_VPAGE_N 4
- #define _GFX_WPAGE_N 5
- #define _GFX_ERR_NUMBER 6
- #define _GFX_SHOW_GFX_ERR 7
- #define _GFX_USE_ANSI 8
- #define _GFX_ANSI_IS_LOADED 9
- #define _GFX_PAINT_STACK_SZ 10
- #define _GFX_ATTR 11
- #define _GFX_SCREEN_BASE 12
- #define _GFX_WIDTH 13
- #define _GFX_VIEW_NMBR 14
- #define _GFX__PALLETE 15
- #define _GFX_BYTES_PER_ROW 16
- #define _GFX_LAST_VIDEO_ROW 17
- #define _GFX_XOR_PEL 18
- #define _GFX_BKGND 19
- #define _GFX_FGND 20
- #define _GFX_FONT_HANDLE 21
- #define _GFX_AUTO_SCALE 22
- #define _GFX_XLAT_SCALE 23
- #define _GFX_V_START_BYTE 24
- #define _GFX_V_NBYTES_WIDE 25
- #define _GFX_N_PELS_HIGH 26
- #define _GFX_N_PELS_WIDE 27
- #define _GFX_MIN_X 28
- #define _GFX_MIN_Y 29
- #define _GFX_MAX_X 30
- #define _GFX_MAX_Y 31
- #define _GFX_PT_X 32
- #define _GFX_PT_Y 33
- #define _GFX_ILOG_X 34
- #define _GFX_ILOG_Y 35
-
- #define _GFX_FLOG_X 36
- #define _GFX_FLOG_Y 37
- #define _GFX_X_ORG 38
- #define _GFX_Y_ORG 39
- #define _GFX_X_DIR 40
- #define _GFX_Y_DIR 41
- #define _GFX_SCALE_X_NUM 42
- #define _GFX_SCALE_X_DENOM 43
- #define _GFX_SCALE_Y_NUM 44
- #define _GFX_SCALE_Y_DENOM 45
- #define _GFX_SCALE_X_FLT 46
- #define _GFX_SCALE_Y_FLT 47
- #define _GFX_VSTATUS 48
- #define _GFX_VIEW_PIC 49
- #define _GFX_FPIC_INDEX 50
- #define _GFX_VPIC_HANDLE 51
- #define _GFX_VPIC_CB 52
- #define _GFX_FPIC_CB 53
-
-
- #define _ROM_8x8 1
- #define _ROM_8x14 2
-
- int _gfx_arc( );
- void _gfx_cls( );
- int _gfx_circle( );
- int _gfx_close_fpic(int );
- int _gfx_clear_view(int, int);
- int _gfx_close_view(int,int);
- int _gfx_close_view_file(void);
- void _gfx_clearscreen(void);
- void _gfx_color( );
- int _gfx_compress_fpic_file(char *, char *);
- int _gfx_copy_video_pages(int, int);
- int _gfx_create_fpic(char *, int);
- int _gfx_create_view_file(char *);
- int _gfx_delete_fpic(int, int);
- int _gfx_draw();
- int _gfx_ellipse( );
- int _gfx_fastfill( );
- int _gfx_get_fpic( );
- struct _pic *_gfx_get_pic( );
- #define _gfx_init_gfx_struct(a) (_gfx_init_struct(a))
- void _gfx_init_struct(int);
- int _gfx_line( );
- int _gfx_locate(int, int);
- int _gfx_move_view( );
- int _gfx_open_fpic(char *, int);
- int _gfx_open_view( );
- int _gfx_paint( );
- int _gfx_point( );
- int _gfx_put_fpic( );
- int _gfx_put_pic( );
- int _gfx_pset( );
- struct _pic *_gfx_read_fpic(int ,int );
- void _gfx_scale_float_view(double ,double, double, double, int, int);
- void _gfx_scale_int_view(int, int, int, int, int, int);
- int _gfx_screen(int );
- int _gfx_set_extended_ega_mode(int, int, int, int);
- int _gfx_set_video_pages(int, int);
- void _gfx_set_video_resolution(int, int);
- int _gfx_switch_view(int, int);
- int _gfx_write_fpic(struct _pic *, int, int);
-
- #ifdef __HIGHC__
-
- #define GFX_PALETTE -1 /* set GFX PALETTE with COLOR() */
- #define DRAW_LINE 0 /* values for LINE() */
- #define FILL_BOX 1
- #define EMPTY_BOX 2
- #define PAT 0x400
-
- #define DFLT -14232 /* default value */
- #define CURR_PT -1347 /* relative coordinates */
- #define STEP -2415
- #define XOR_PEL 0x2000
-
- #define FLT_CURR_PT -275864.312
- #define FLT_STEP -982132.001
- #define FLT_DFLT -723943.914
-
- #define PI 3.141593 /* for setting angles in ARC() */
- #define ROUND -1.1 /* for specifying a circular ARC() */
-
-
- #define MONO_DISPLAY 0x1 /* Values for gfx.card_monitor */
- #define COLOR_DISPLAY 0x2
- #define EGA_DISPLAY 0x4
- #define VGA_DISPLAY 0x8
- #define MDA_CARD 0x100
- #define CGA_CARD 0x200
- #define EGA_CARD 0x400
- #define VGA_CARD 0x800
- #define HERC_CARD 0x1000
- #define EGA_HERC (EGA_CARD | HERC_CARD)
-
- #define NOT_SET 0xFFFF /* Values for gfx.bios_mode */
- #define BW_40_TEXT 0
- #define COLOR_40_TEXT 1
- #define BW_80_TEXT 2
- #define COLOR_80_TEXT 3
- #define GRAPHICS 4
- #define MED_RES_COLOR 4
- #define MED_RES_BW 5
- #define HI_RES_BW 6
- #define MONO_TEXT 7
- #define HERC_TEXT 8
- #define HERC_GFX 9
- #define EGA_MED_RES 0xD
- #define EGA_HI_RES 0xE
- #define EGA_MONO 0xF
- #define EGA_COLOR 0x10
- #define VGA_MONO 0x11
- #define VGA_COLOR 0x12
-
-
- #define FORCE_BIOS_MODE 0x8000
- #define FORCE_EGA_MED_RES FORCE_BIOS_MODE + EGA_MED_RES
- #define FORCE_EGA_HI_RES FORCE_BIOS_MODE + EGA_HI_RES
- #define FORCE_EGA_MONO FORCE_BIOS_MODE + EGA_MONO
- #define FORCE_EGA_COLOR FORCE_BIOS_MODE + EGA_COLOR
- #define FORCE_VGA_MONO FORCE_BIOS_MODE + VGA_MONO
- #define FORCE_VGA_COLOR FORCE_BIOS_MODE + VGA_COLOR
-
- #define OR_EGA_MED_RES 0xD00
- #define OR_EGA_HI_RES 0xE00
- #define OR_EGA_MONO 0xF00
- #define OR_EGA_COLOR 0x1000
- #define OR_VGA_MONO 0x1100
- #define OR_VGA_COLOR 0x1200
- #define NO_MODE_CHANGE 0x7300
-
- #define _gfx_error(text_string) _set_gfx_err_number(0, text_string)
- #define FREE_PIC(a) free(a)
-
- #define BAD_ARG 1
- #define BAD_VIDEO 2
- #define BAD_ASPECT 3
- #define BAD_ANGLE 4
- #define NO_DISK_SPACE 5
- #define NO_HEAP_SPACE 6
- #define PAINT_OVERFLOW 7
- #define OUT_OF_VIEW 8
- #define BAD_VIEW_HANDLE 9
- #define WRONG_PIC_TYPE 10
- #define NOT_A_PIC_FILE 11
- #define BAD_FPIC_INDEX 12
- #define BAD_FPIC_HANDLE 13
- #define BAD_FONT_HANDLE 14
-
- #define MAX_FPIC_CB 10
- #define MAX_VIEWS 16
-
- #define SCALE _SCALE
- #define GFX_STATUS _GFX_STATUS
- #define VIEW _VIEW
- #define FPIC_CB _FPIC_CB
-
- #define FPIC_HDR_SIZE (sizeof(FPIC_CB) - sizeof(LONG *))
- #define fpic_loc(fpic_cb, index) (*((fpic_cb)->pic_pos + (index)))
-
- #define CRSR _CRSR
- #define BOX_COOR _BOX_COOR
- #define PIC _PIC
-
-
- #define GET_GFX_VAL 1
- #define SET_GFX_VAL 2
-
- #define GET_GFX_STATUS(a, b) set_get_gfx_status_val(GET_GFX_VAL, a, b)
- #define get_gfx_status(a, b) set_get_gfx_status_val(GET_GFX_VAL, a, b)
- #define SET_GFX_STATUS(a, b) set_get_gfx_status_val(SET_GFX_VAL, a, b)
- #define set_gfx_status(a, b) set_get_gfx_status_val(SET_GFX_VAL, a, b)
-
- #define GFX_GFX_MODE 1
- #define GFX_CARD_MONITOR 2
- #define GFX_BIOS_MODE 3
- #define GFX_VPAGE_N 4
- #define GFX_WPAGE_N 5
- #define GFX_ERR_NUMBER 6
- #define GFX_SHOW_GFX_ERR 7
- #define GFX_USE_ANSI 8
- #define GFX_ANSI_IS_LOADED 9
- #define GFX_PAINT_STACK_SZ 10
- #define GFX_ATTR 11
- #define GFX_SCREEN_BASE 12
- #define GFX_WIDTH 13
- #define GFX_VIEW_NMBR 14
- #define GFX__PALLETE 15
- #define GFX_BYTES_PER_ROW 16
- #define GFX_LAST_VIDEO_ROW 17
- #define GFX_XOR_PEL 18
- #define GFX_BKGND 19
- #define GFX_FGND 20
- #define GFX_FONT_HANDLE 21
- #define GFX_AUTO_SCALE 22
- #define GFX_XLAT_SCALE 23
- #define GFX_V_START_BYTE 24
- #define GFX_V_NBYTES_WIDE 25
- #define GFX_N_PELS_HIGH 26
- #define GFX_N_PELS_WIDE 27
- #define GFX_MIN_X 28
- #define GFX_MIN_Y 29
- #define GFX_MAX_X 30
- #define GFX_MAX_Y 31
- #define GFX_PT_X 32
- #define GFX_PT_Y 33
- #define GFX_ILOG_X 34
- #define GFX_ILOG_Y 35
-
- #define GFX_FLOG_X 36
- #define GFX_FLOG_Y 37
- #define GFX_X_ORG 38
- #define GFX_Y_ORG 39
- #define GFX_X_DIR 40
- #define GFX_Y_DIR 41
- #define GFX_SCALE_X_NUM 42
- #define GFX_SCALE_X_DENOM 43
- #define GFX_SCALE_Y_NUM 44
- #define GFX_SCALE_Y_DENOM 45
- #define GFX_SCALE_X_FLT 46
- #define GFX_SCALE_Y_FLT 47
- #define GFX_VSTATUS 48
- #define GFX_VIEW_PIC 49
- #define GFX_FPIC_INDEX 50
- #define GFX_VPIC_HANDLE 51
- #define GFX_VPIC_CB 52
- #define GFX_FPIC_CB 53
-
-
- #define ROM_8x8 1
- #define ROM_8x14 2
-
- int ARC( );
- int CIRCLE( );
- int CLOSE_FPIC(int );
- int CLEAR_VIEW(int, int);
- int CLOSE_VIEW(int,int);
- int CLOSE_VIEW_FILE(void);
- void CLS( );
- void COLOR( );
- int COMPRESS_FPIC_FILE(char *, char *);
- int COPY_VIDEO_PAGES(int, int);
- int CREATE_FPIC(char *, int);
- int CREATE_VIEW_FILE(char *);
- int DELETE_FPIC(int, int);
- int DRAW();
- int ELLIPSE( );
- int FASTFILL( );
- int GET_FPIC( );
- struct _pic *GET_PIC( );
- void INIT_GFX_STRUCT(int);
- int LINE( );
- int LOCATE(int, int);
- int MOVE_VIEW( );
- int OPEN_FPIC(char *, int);
- int OPEN_VIEW( );
- int PAINT( );
- int POINT( );
- int PUT_FPIC( );
- int PUT_PIC( );
- int PSET( );
- struct _pic *READ_FPIC(int ,int );
- void SCALE_FLOAT_VIEW(double ,double, double, double, int, int);
- void SCALE_INT_VIEW(int, int, int, int, int, int);
- int SCREEN(int );
- int SET_EXTENDED_EGA_MODE(int, int, int, int);
- int SET_VIDEO_PAGES(int, int);
- void SET_VIDEO_RESOLUTION(int, int);
- int SWITCH_VIEW(int, int);
- int WRITE_FPIC(struct _pic *, int, int);
-
- #endif
- #endif /* _GFX_H */
-