#ifndef __HP2XX_H
#define __HP2XX_H
/* Copyright (c) 1991 - 1994 Heinz W. Werntges. All rights reserved. */
/** hp2xx.h: Header for Project "hp2xx"
**
** 91/01/13 V 1.00 HWW Originating
** 91/01/19 V 1.01 HWW Reorganized
** 91/01/31 V 1.02 HWW Tested on SUN; some flags added
** 91/02/15 V 1.03 HWW SUN release; stdlib.h supported
** 91/02/18 V 1.04 HWW plot_picbuf() is macro; new type: HPGL_Pt
** 91/06/18 V 1.05 HWW New PAR elements; ANSI_C supported
** 91/06/15 V 1.06 HWW VGA options added (PC only)
** 91/06/20 V 1.07 HWW Rotation added
** 91/09/08 V 1.08 HWW ATARI 32K format added
** 91/10/09 V 1.08a HWW ATARI 32K format: modified
** 91/10/14 V 1.09 HWW ATARI: PAC format with compression now,
** hwtools.h: excerpt incorporated
** 91/10/20 V 1.09b HWW PAC (compression) removed; atari --> pic (renamed)
** 91/10/25 V 1.10 HWW VAX_C: M_PI added
** 91/11/20 V 1.11 HWW SPn; support
** 91/12/22 V 1.11b HWW Some redefs in PS part
** 92/01/11 V 1.12 HWW Norbert Meyer's ATARI portability changes built in
** 92/01/26 V 1.12a HWW Some prototypes added
** 92/01/31 V 1.12c HWW M_PI def changed ; SUNVIEW etc. + comments added
** 92/02/06 V 1.12d HWW arcs(), circles() added
** 92/02/19 V 1.13c HWW LB etc. supported
** 92/02/21 V 1.14a HWW PG supported
** 92/05/06 V 1.14b HWW Log files & color supported (starting)
** 92/05/19 V 2.00a HWW Color supported
** 92/05/28 V 2.00b HWW Some prototypes changed/added
** 92/06/09 V 2.00c HWW debugged (GNU)
** 92/10/15 V 2.01a HWW LineType added
** 92/11/08 V 2.01c HWW page --> first_page, last_page; GNU --> DJ_GR
** 92/12/13 V 2.02a HWW truesize flag added; colors renamed
** 93/04/13 V 2.10a HWW User-serviceable parts & redundant prototypes
** removed
** 93/05/23 V 2.10b HWW READ_BIN, WRITE_BIN: Now ok for OS/2, too
** 93/07/25 V 2.10c HWW Some prototypes added
** 93/09/02 V 2.10d HWW Some #defines added;
** rect(), to_rgip(): prototypes added
** 94/01/02 V 2.11a HWW PlotCmd_from_tmpfile(): new type; center_mode
** 94/02/10 V 3.00 HWW New concept: Now three central parameter structs ...
** 95/03/23 V 3.01 E.B gnuplot ascii format added
**/
/**
** Working with Pure C (the official descendant of Borland's
** Turbo C for Atari computers)
**/
#ifdef __PUREC__ /* __PUREC__ is pre-defined by the Pure-C compiler */
#ifndef PURE_C
#define PURE_C
#endif
#endif
/**
** Automatic definition of obsolete symbol by Turbo-C and Pure-C:
**/
#ifdef __TURBOC__
#ifndef TURBO_C
#define TURBO_C
#endif
#endif
#ifdef GNU
#define getch getkey
#endif
#ifndef M_PI
#define M_PI 3.141592654 /* Some machines don't know PI */
#endif
#ifndef EOF
#define EOF (-1)
#endif
#ifndef MIN
#define MIN(x,y) ((x)<(y) ? (x) : (y))
#endif
#ifndef MAX
#define MAX(x,y) ((x)<(y) ? (y) : (x))
#endif
#define TRUE 1
#define FALSE 0
/**
** Exit codes
**/
#ifdef VAX
/**
** Only VAX exit code 0 provokes error treatment:
**/
# define ERROR 0
# define NOERROR 1
# define COPYNOTE 2
# define delete unlink
# define FOPEN(n,t) fopen(n,t,"rfm=var","mrs=512")
#else /* !VAX (regular case) */
# define ERROR (-1)
# define NOERROR 0
# define COPYNOTE 1
# define FOPEN(n,t) fopen(n,t)
#endif
#define ESC '\033'
#define CR '\015'
#define FF '\014'
#define LF '\012'
#define BEL '\007'
#define MAX_LB_LEN 150 /* Max num of chars per label */
#define MAXPOLY 2048 /* Size of polygon vertex buffer */
#ifndef VOID
#ifdef __STDC__
#define VOID void
#else
#define VOID char
#endif
#endif /* ifndef VOID */
/* #endif */
/**
** Misc. typedefs
**/
typedef unsigned char Byte;
/**
** When adding your special mode, add a symbol here.
** Please note the alphabetical order (and keep it).
**/
typedef enum{
XX_CAD, XX_CS, XX_EM, XX_EPIC, XX_EPS, XX_FIG, XX_GPT, XX_HPGL,
XX_ILBM, XX_IMG,
XX_MF, XX_PBM, XX_PCL, XX_PCX, XX_PAC, XX_PIC, XX_PNG, XX_PRE,
XX_RGIP, XX_TIFF, XX_ESC2, XX_TERM /* Dummy: terminator */
} hp2xx_mode;
/**
** This struct handles a single row of our raster picture buffer
**/
typedef struct{
int next,prev; /* double-linked list indices */
Byte *buf; /* Ptr to actual data buffer which holds the bits */
/* Indices are used to keep memory consumption low on DOS systems,
and to prevent handling of near/far pointers.
Furthermore, keeping of index is not necessary. */
} TILE;
/**
** Struct holding the whole raster picture
**/
typedef struct {
DevPt pext; /* image size */
int np; /* pixel per row (rounded up to whole bytes) */
int nb; /* bytes per row */
int depth; /* Depth: Number of bit planes (1 to 4) */
int dsh; /* depth right shift: 1->3, 4->1 (8->0) */
TILE *tile; /* Array pointer of all tiles */
TILE tails; /* points to the head and the tail of the linked list */
DevPt kext; /* number of tiles covering the image */
int ksi; /* tile size, 64,128,256,512 (512 not for 16c) */
int ksh; /* tile shift, 6, 7, 8, 9 (9 not for 16c) */
int ksix; /* tile scan-line length in bytes */
int kshx; /* tile scan-line shift */
int nk; /* number of tiles (for allocation, <8K for DOS)*/
unsigned kby; /* size of a tile in bytes, always <= 32K */
char *sf_name; /* Swapfile name */
FILE *sd; /* Swapfile pointer */
} PicBuf;
typedef struct {
float x,y;
} HPGL_Pt;
typedef enum {
NOP, MOVE_TO, DRAW_TO, PLOT_AT, SET_PEN, DEF_PW, DEF_PC, CMD_EOF
} PlotCmd;
typedef struct {
hp2xx_mode mode;
char *modestr;
} mode_list;
/**
** Input parameters: Used mainly during input file processing
**/
typedef struct /* Corresponding option(s) */
{
int first_page, last_page; /* -P first_page:last_page */
int center_mode; /* -C */
int truesize; /* -t */
int hwcolor; /* -c */
int hwsize; /* -p */
double width, height; /* -w width -h height */
double aspectfactor; /* -a aspectfactor */
double rotation; /* -r rotation */
double x0, x1, y0, y1; /* -x x0 -X x1 -y y0 -Y y1 */
double xoff, yoff; /* -o xoff -O yoff */
char *in_file; /* Input file name ("-" = stdin)*/
FILE *hd; /* (internally needed) */
} IN_PAR;
/**
** Output parameters: Used mainly during output file generation
**/
typedef struct /* Corresponding option(s) */
{
Byte vga_mode; /* -V vga_mode */
int vga_width; /* (internally needed) */
int dpi_x, dpi_y; /* -d dpi_x -y dpi_y */
int init_p; /* -i (PCL only) */
int formfeed; /* -F (PCL only) */
int specials; /* -s specials (PCL only) */
char *outfile; /* -f outfile ("-" = stdout) */
double xmin,ymin, xmax,ymax; /* (internally needed) */
double xoff, yoff; /* Internal copies from IN_PAR */
double width, height; /* Internal copies from IN_PAR */
double HP_to_xdots; /* (internally needed) */
double HP_to_ydots; /* (internally needed) */
PicBuf *picbuf; /* (internally needed) */
} OUT_PAR;
/**
** General parameters: Used at various places
**/
typedef struct /* Corresponding option(s) */
{
char *mode; /* -m mode */
char *logfile; /* -l logfile */
char *swapfile; /* -s swapfile */
int quiet; /* -q */
int nofill; /* -n */
int maxpensize; /* (internally needed) */
int is_color; /* (internally needed) */
int maxcolor; /* (internally needed) */
FILE *td; /* (internally needed) */
hp2xx_mode xx_mode; /* (internally needed) */
int maxpens; /* (internally needed) */
} GEN_PAR;
typedef struct {
int abs;
int up;
int sbmode;
int fract;
int pen;
} PE_flags;
#define DEFAULT_PEN_NO 1
#define FLAGSTATE(flag) (flag) ? "ON" : "off"
#if defined(TURBO_C) || defined (GNU) || defined (OS2)
#define READ_BIN "rb"
#define WRITE_BIN "w+b"
#else
#define READ_BIN "r"
#define WRITE_BIN "w+"
#endif
#ifdef MOTOROLA
# define INTELS(x) swaps((short)(x))
# define MOTORS(x) (short)(x)
# define INTELL(x) swapl((long)(x))
# define MORORL(x) (long)(x)
#else
# define INTELS(x) (short)(x)
# define MOTORS(x) swaps((short)(x))
# define INTELL(x) (long)(x)
# define MORORL(x) swapl((long)(x))
#endif
/**
** Prototypes:
**/
short swaps(short);
long swapl(long);
void Send_version (void);
void Send_Copyright (void);
void usage_msg (const GEN_PAR*, const IN_PAR*, const OUT_PAR*);
void print_supported_modes(void);
void preset_par (GEN_PAR*, IN_PAR*, OUT_PAR*);
void reset_par (IN_PAR*);
void autoset_outfile_name (const char*, const char*, char**);
void ShowPercent(long part, long whole);
int HPGL_to_TMP (GEN_PAR*, IN_PAR*);
int TMP_to_VEC (const GEN_PAR*, const OUT_PAR*);
int TMP_to_BUF (const GEN_PAR*, OUT_PAR*);
int BUF_to_RAS (const GEN_PAR*, const OUT_PAR*);
void cleanup_g (GEN_PAR*);
void cleanup_i (IN_PAR*);
void cleanup_o (OUT_PAR*);
void cleanup (GEN_PAR*, IN_PAR*, OUT_PAR*);
void Eprintf (const char*, ...);
void PError (const char*);
void SilentWait (void);
void NormalWait (void);
void plot_user_char (FILE *);
void read_HPGL (GEN_PAR*, const IN_PAR*);
void adjust_input_transform (const GEN_PAR*, const IN_PAR*, OUT_PAR*);
PlotCmd PlotCmd_from_tmpfile (void);
void HPGL_Pt_from_tmpfile (HPGL_Pt *);
void Pen_action_to_tmpfile (PlotCmd, const HPGL_Pt*, int);
int read_float (float*, FILE*);
void line(int relative, HPGL_Pt p);
int read_PE_flags(const GEN_PAR *, int, FILE *, PE_flags *);
int read_PE_coord(int ,FILE *, PE_flags *, float *);
int read_PE_pair(int, FILE *, PE_flags *, HPGL_Pt *);
void read_PE(const GEN_PAR *, FILE *);
int decode_PE_char(int , PE_flags *) ;
int isPEterm(int, PE_flags*);
void to_ATARI (GEN_PAR*, FILE *);
int to_mftex (const GEN_PAR*, const OUT_PAR*, int);
int to_eps (const GEN_PAR*, const OUT_PAR*);
int to_rgip (const GEN_PAR*, const OUT_PAR*);
int to_fig (const GEN_PAR*, const OUT_PAR*);
void size_PicBuf (const GEN_PAR*, const OUT_PAR*, DevPt*);
PicBuf *allocate_PicBuf(const GEN_PAR*, const DevPt*);
void free_PicBuf (PicBuf *);
void tmpfile_to_PicBuf(const GEN_PAR*, const OUT_PAR*);
Byte GetPixel_from_PicBuf(PicBuf*, const DevPt *);
/*Byte GetPixel_from_Tile(const PicBuf*, Byte*, int,int);*/
Byte* GetTileLine(PicBuf*, const DevPt*, int*);
/*int GetTileIndex(const PicBuf*, const DevPt*);*/
int PicBuf_to_PCL (const GEN_PAR*, const OUT_PAR*);
int PicBuf_to_PCX (const GEN_PAR*, const OUT_PAR*);
int PicBuf_to_PNG (const GEN_PAR*, const OUT_PAR*);
int PicBuf_to_TIF (const GEN_PAR*, const OUT_PAR*);
int PicBuf_to_IMG (const GEN_PAR*, const OUT_PAR*);
int PicBuf_to_PBM (const GEN_PAR*, const OUT_PAR*);
int PicBuf_to_ILBM (const GEN_PAR*, const OUT_PAR*);
#ifdef EPSON
int PicBuf_to_ESCP2 (const GEN_PAR*, const OUT_PAR*);
#endif
#ifdef PIC_PAC
int PicBuf_to_PIC (const GEN_PAR*, const OUT_PAR*);
int PicBuf_to_PAC (const GEN_PAR*, const OUT_PAR*);
#endif /* PIC_PAC */
int PicBuf_to_AMIGA (const GEN_PAR*, const OUT_PAR*);
int PicBuf_to_ATARI (const GEN_PAR*, const OUT_PAR*);
int PicBuf_to_DJ_GR (const GEN_PAR*, const OUT_PAR*);
int PicBuf_to_Dummy (void);
int PicBuf_to_PM (const GEN_PAR*, const OUT_PAR*);
int PicBuf_to_OS2 (const GEN_PAR*, const OUT_PAR*);
int PicBuf_to_Sunview(const GEN_PAR*,const OUT_PAR*);
int PicBuf_to_UIS (const GEN_PAR*, const OUT_PAR*);
int PicBuf_to_HGC (const GEN_PAR*, const OUT_PAR*);
int PicBuf_to_VGA (const GEN_PAR*, const OUT_PAR*);
int PicBuf_to_X11 (const GEN_PAR*, const OUT_PAR*);
void fill (HPGL_Pt polygon[MAXPOLY], int numpoints, HPGL_Pt P1, HPGL_Pt P2,
int scale_flag, int filltype, float spacing, float hatchangle);
/*std_main*/
void action_oldstyle(GEN_PAR *, IN_PAR *, OUT_PAR *);
/*to_eps*/
void ps_end(FILE *);
void ps_stroke_and_move_to(HPGL_Pt *, FILE *);
void ps_set_linewidth(double, HPGL_Pt *, FILE *);
void ps_set_color(double, double, double, HPGL_Pt *, FILE *);
void ps_line_to(HPGL_Pt *, char, FILE *);
char *Getdate(void);
void ps_init(const GEN_PAR *, const OUT_PAR *, FILE *, int);
/*to_fig*/
void fig_poly_end(int, int, FILE *, int, long *, long *);
/*to_x11*/
void win_close(void);
#endif /* __HP2XX_H */
Vorgefundene Kodierung: ASCII (7 bit) | 2
|