v15i019: gnuplot 2.0 patch 1 (4 of 4)
Russell Lang
rjl at monu1.cc.monash.edu.au
Sat Oct 6 10:14:28 AEST 1990
Posting-number: Volume 15, Issue 19
Submitted-by: Russell Lang <rjl at monu1.cc.monash.edu.au>
Archive-name: gnuplot2/patch04
#! /bin/sh
# This is a shell archive. Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file". To overwrite existing
# files, type "sh file -c". You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g.. If this archive is complete, you
# will see the following message at the end:
# "End of shell archive."
# Contents: patch1c
# Wrapped by eln272v at monu1 on Tue Sep 18 14:53:08 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f patch1c -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"patch1c\"
else
echo shar: Extracting \"patch1c\" \(73914 characters\)
sed "s/^X//" >patch1c <<'END_OF_patch1c'
Xdiff -c ./term/eepic.trm ../patch/term/eepic.trm
X*** ./term/eepic.trm Tue Mar 27 09:03:33 1990
X--- ../patch/term/eepic.trm Wed Sep 12 09:38:06 1990
X***************
X*** 44,51
X #define EEPIC_UNIT (EEPIC_PTS_PER_INCH/DOTS_PER_INCH) /* dot size in pt */
X
X /* 5 inches wide by 3 inches high (default) */
X! #define EEPIC_XMAX (unsigned int)(EEPIC_PTS_PER_INCH/EEPIC_UNIT*5.0)
X! #define EEPIC_YMAX (unsigned int)(EEPIC_PTS_PER_INCH/EEPIC_UNIT*3.0)
X
X #define EEPIC_HTIC (5./EEPIC_UNIT)
X #define EEPIC_VTIC (5./EEPIC_UNIT)
X
X--- 44,51 -----
X #define EEPIC_UNIT (EEPIC_PTS_PER_INCH/DOTS_PER_INCH) /* dot size in pt */
X
X /* 5 inches wide by 3 inches high (default) */
X! #define EEPIC_XMAX (5*DOTS_PER_INCH) /* (EEPIC_PTS_PER_INCH/EEPIC_UNIT*5.0) */
X! #define EEPIC_YMAX (3*DOTS_PER_INCH) /* (EEPIC_PTS_PER_INCH/EEPIC_UNIT*3.0) */
X
X #define EEPIC_HTIC (5*DOTS_PER_INCH/72) /* (5./EEPIC_UNIT) */
X #define EEPIC_VTIC (5*DOTS_PER_INCH/72) /* (5./EEPIC_UNIT) */
X***************
X*** 47,56
X #define EEPIC_XMAX (unsigned int)(EEPIC_PTS_PER_INCH/EEPIC_UNIT*5.0)
X #define EEPIC_YMAX (unsigned int)(EEPIC_PTS_PER_INCH/EEPIC_UNIT*3.0)
X
X! #define EEPIC_HTIC (5./EEPIC_UNIT)
X! #define EEPIC_VTIC (5./EEPIC_UNIT)
X! #define EEPIC_HCHAR (5.3/EEPIC_UNIT)
X! #define EEPIC_VCHAR (11./EEPIC_UNIT)
X
X static unsigned int EEPIC_posx;
X static unsigned int EEPIC_posy;
X
X--- 47,56 -----
X #define EEPIC_XMAX (5*DOTS_PER_INCH) /* (EEPIC_PTS_PER_INCH/EEPIC_UNIT*5.0) */
X #define EEPIC_YMAX (3*DOTS_PER_INCH) /* (EEPIC_PTS_PER_INCH/EEPIC_UNIT*3.0) */
X
X! #define EEPIC_HTIC (5*DOTS_PER_INCH/72) /* (5./EEPIC_UNIT) */
X! #define EEPIC_VTIC (5*DOTS_PER_INCH/72) /* (5./EEPIC_UNIT) */
X! #define EEPIC_HCHAR (DOTS_PER_INCH*53/10/72) /* (5.3/EEPIC_UNIT) */
X! #define EEPIC_VCHAR (DOTS_PER_INCH*11/72) /* (11./EEPIC_UNIT) */
X
X static unsigned int EEPIC_posx;
X static unsigned int EEPIC_posy;
X***************
X*** 92,97
X static int EEPIC_type; /* current line type */
X static BOOLEAN EEPIC_inline = FALSE; /* are we in the middle of a line */
X static void EEPIC_endline(); /* terminate any line in progress */
X
X /* ARROWS */
X /* we use the same code as for LATEX */
X
X--- 92,99 -----
X static int EEPIC_type; /* current line type */
X static BOOLEAN EEPIC_inline = FALSE; /* are we in the middle of a line */
X static void EEPIC_endline(); /* terminate any line in progress */
X+ static int EEPIC_linecount = 0; /* number of points in line so far */
X+ #define EEPIC_LINEMAX 50 /* max value for linecount */
X
X /* ARROWS */
X /* we use the same code as for LATEX */
X***************
X*** 181,186
X fprintf(outfile, "%s(%u,%u)",
X EEPIC_lines[EEPIC_type+2],
X EEPIC_posx, EEPIC_posy);
X }
X
X /* add new point to line */
X
X--- 183,201 -----
X fprintf(outfile, "%s(%u,%u)",
X EEPIC_lines[EEPIC_type+2],
X EEPIC_posx, EEPIC_posy);
X+ EEPIC_linecount = 1;
X+ } else {
X+ /* Even though we are in middle of a path,
X+ * we may want to start a new path command.
X+ * If they are too long then latex will choke.
X+ */
X+ if (EEPIC_linecount++ >= EEPIC_LINEMAX) {
X+ fprintf(outfile, "\n");
X+ fprintf(outfile, "%s(%u,%u)",
X+ EEPIC_lines[EEPIC_type+2],
X+ EEPIC_posx, EEPIC_posy);
X+ EEPIC_linecount = 1;
X+ }
X }
X fprintf(outfile, "(%u,%u)", ux,uy);
X EEPIC_posx = ux;
X***************
X*** 182,189
X EEPIC_lines[EEPIC_type+2],
X EEPIC_posx, EEPIC_posy);
X }
X-
X- /* add new point to line */
X fprintf(outfile, "(%u,%u)", ux,uy);
X EEPIC_posx = ux;
X EEPIC_posy = uy;
X
X--- 197,202 -----
X EEPIC_linecount = 1;
X }
X }
X fprintf(outfile, "(%u,%u)", ux,uy);
X EEPIC_posx = ux;
X EEPIC_posy = uy;
Xdiff -c ./term/eps60.trm ../patch/term/eps60.trm
X*** ./term/eps60.trm Mon Sep 3 16:07:23 1990
X--- ../patch/term/eps60.trm Mon Sep 3 15:54:14 1990
X***************
X*** 0
X
X--- 1,106 -----
X+ #ifdef EPS60
X+
X+ /* make the total dimensions 8 inches by 5 inches */
X+ #define EPS60XMAX 480
X+ #define EPS60YMAX 360
X+
X+ #define EPS60XLAST (EPS60XMAX - 1)
X+ #define EPS60YLAST (EPS60YMAX - 1)
X+
X+ EPS60init()
X+ {
X+ char filename[MAX_ID_LEN+1];
X+ bm_xmax=EPS60XMAX;
X+ bm_ymax=EPS60YMAX;
X+ bm_planes=1; /* one plane */
X+ bm_value=1;
X+ bm_setup();
X+ /* output for EPSON must be binary to stop non Unix computers
X+ changing \n to \r\n.
X+ At present we only do this for PC's.
X+ (Ultrix generates a run time error on the "wb" mode).
X+ if the output is not STDOUT, then the following code
X+ reopens outfile with binary mode. */
X+ #ifdef PC
X+ if (strcmp(outstr,"STDOUT")) {
X+ (void) fclose(outfile);
X+ (void) strcpy(filename,outstr+1); /* remove quotes */
X+ filename[strlen(filename)-1] = '\0';
X+ if ( (outfile = fopen(filename,"wb")) == (FILE *)NULL ) {
X+ if ( (outfile = fopen(filename,"w")) == (FILE *)NULL ) {
X+ os_error("cannot reopen file with binary type; output unknown",
X+ NO_CARET);
X+ }
X+ else {
X+ os_error("cannot reopen file with binary type; output reset to ascii",
X+ NO_CARET);
X+ }
X+ }
X+ }
X+ #endif
X+ }
X+
X+
X+ /* output file must be binary mode for eps60_dump */
X+ eps60_dump()
X+ {
X+ unsigned int x;
X+ int j,k;
X+ int num_bits = (sizeof(unsigned int)-1)*8;
X+ #ifdef PC
X+ fprintf(stderr,"Dumping Epson-style 60-dpi graphics (21kbytes)\n");
X+ #endif
X+ fprintf(outfile,"\0333\030"); /* set line spacing to 24/216" = 8 dots */
X+ for (j=bm_ipc-1;j>=0;j--) {
X+ for (k=num_bits;k>=0;k-=8) {
X+ /* select printer graphics mode 'K' */
X+ fprintf(outfile,"\r\n\033K");
X+ (void) fputc((char)(bm_xmax%256),outfile);
X+ (void) fputc((char)(bm_xmax/256),outfile);
X+ for (x=0; x<bm_xmax; x++) {
X+ (void) fputc( (char)((bm_array[x*bm_ipc+j] >>k) &0xff), outfile );
X+ }
X+ }
X+ }
X+ fprintf(outfile,"\0333\044\r\n"); /* set line spacing to 36/216" = 1/6" */
X+ #ifdef PC
X+ fprintf(stderr,"Print using: COPY /B\n");
X+ #endif
X+ }
X+
X+
X+ EPS60text()
X+ {
X+ eps60_dump();
X+ }
X+
X+
X+ #endif /* EPS60 */
X+
X+
X+
X+
X+ #ifdef TANDY60
X+
X+ /* The only difference between TANDY60 and EPS60 is the inclusion
X+ of codes to swap the Tandy printer into IBM mode and back
X+ into Tandy mode. For a Tandy already in IBM mode, use EPS60. */
X+
X+
X+ TANDY60text()
X+ {
X+ #ifdef PC
X+ fprintf(stderr, "Inserting Tandy/IBM mode conversion codes\n");
X+ #endif
X+ /* Switch to IBM mode, and leave 3 inches above the plot so as
X+ to get rough vertical centring on the page. Perform the
X+ centring by setting 1" line feeds and issuing 3 of them. */
X+ fprintf(outfile, "\033!\0333%c\n\n\n", 216);
X+ eps60_dump();
X+ /* A form feed must be sent before switching back to Tandy mode,
X+ or else the form setting will be messed up. */
X+ fprintf(outfile, "\f\033!");
X+ }
X+
X+
X+ #endif /* TANDY60 */
Xdiff -c ./term/epson.trm ../patch/term/epson.trm
X*** ./term/epson.trm Tue Mar 27 09:02:27 1990
X--- ../patch/term/epson.trm Wed Aug 29 10:04:57 1990
X***************
X*** 696,698
X
X #endif /* NEC */
X
X
X--- 696,890 -----
X
X #endif /* NEC */
X
X+ /* The following Star color driver uses generic bit mapped graphics
X+ routines to build up a bit map in memory. */
X+ /* Core from Epson driver by Russell Lang, eln272v at monu1.cc.monash.oz */
X+ /* Star Color changes made by William Wilson, wew at naucse.cse.nau.edu */
X+ /* On PC, print using 'copy file /b lpt1:', do NOT use 'print' */
X+ /* STARC_init changes outfile to binary mode on PC's */
X+
X+ #ifdef STARC
X+ #ifndef EPSON
X+ #define EPSON
X+ #endif
X+
X+ /* EPSON must be defined */
X+
X+ #define STARCXMAX 400
X+ #define STARCYMAX 320
X+
X+ #define STARCXLAST (STARCXMAX - 1)
X+ #define STARCYLAST (STARCYMAX - 1)
X+
X+ #define STARCVCHAR 11
X+ #define STARCHCHAR 7
X+ #define STARCVTIC 6
X+ #define STARCHTIC 6
X+
X+ /* plane 0=black, 1=cyan(blue), 2=magenta(red), 3=yellow */
X+ static unsigned int STARCcolor[] = {1,8,4,2,10,12,6,14};
X+ static unsigned int STARCpcolor[]= {0,2,1,4};
X+ unsigned int STARC_x=0, STARC_y=0;
X+ int STARC_angle=0;
X+
X+ STARCinit()
X+ {
X+ char filename[MAX_ID_LEN+1];
X+ bm_planes=4;
X+ bm_xmax=STARCXMAX;
X+ bm_ymax=STARCYMAX;
X+ bm_value=1; /* black */
X+ bm_line_mask=0xffff; /* solid lines */
X+ bm_setup();
X+ /* output for STARC must be binary to stop non Unix computers
X+ changing \n to \r\n.
X+ At present we only do this for PC's.
X+ (Ultrix generates a run time error on the "wb" mode).
X+ if the output is not STDOUT, then the following code
X+ reopens outfile with binary mode. */
X+ #ifdef PC
X+ if (strcmp(outstr,"STDOUT")) {
X+ (void) fclose(outfile);
X+ (void) strcpy(filename,outstr+1); /* remove quotes */
X+ filename[strlen(filename)-1] = '\0';
X+ if ( (outfile = fopen(filename,"wb")) == (FILE *)NULL) {
X+ if ( (outfile = fopen(filename,"w")) == (FILE *)NULL ) {
X+ os_error("cannot reopen file with binary type; output unknown",
X+ NO_CARET);
X+ }
X+ else {
X+ os_error("cannot reopen file with binary type; output reset to ascii",
X+ NO_CARET);
X+ }
X+ }
X+ }
X+ #endif
X+ }
X+
X+
X+ STARCgraphics()
X+ {
X+ unsigned int plane;
X+ unsigned int fill=0;
X+ for (plane=0; plane<bm_planes; plane++)
X+ bm_cls(plane,fill);
X+ STARC_x=0;
X+ STARC_y=0;
X+ STARC_angle=0;
X+ }
X+
X+
X+ STARCtext()
X+ {
X+ STARC_dump();
X+ }
X+
X+
X+ STARClinetype(linetype)
X+ int linetype;
X+ {
X+ if (linetype>=6)
X+ linetype %= 6;
X+ bm_value=STARCcolor[linetype+2];
X+ }
X+
X+
X+ STARCmove(x,y)
X+ unsigned int x,y;
X+ {
X+ STARC_x=x;
X+ STARC_y=y;
X+ }
X+
X+
X+ STARCvector(x,y)
X+ unsigned int x,y;
X+ {
X+ bm_line(STARC_x,x,STARC_y,y);
X+ STARC_x=x;
X+ STARC_y=y;
X+ }
X+
X+
X+ STARCput_text(x,y,str)
X+ unsigned int x, y;
X+ char *str;
X+ {
X+ if (STARC_angle == 1)
X+ x += STARCVCHAR/2;
X+ else
X+ y -= STARCVCHAR/2;
X+ switch (STARC_angle) {
X+ case 0:
X+ for (; *str; ++str, x += STARCHCHAR)
X+ bm_putc (x, y, *str, STARC_angle);
X+ break;
X+ case 1:
X+ for (; *str; ++str, y += STARCHCHAR)
X+ bm_putc (x, y, *str, STARC_angle);
X+ break;
X+ }
X+ }
X+
X+
X+ int STARC_text_angle(ang)
X+ int ang;
X+ {
X+ STARC_angle=ang;
X+ return TRUE;
X+ }
X+
X+
X+ STARCreset()
X+ {
X+ bm_release();
X+ }
X+
X+
X+ /* output file must be binary mode for STARC_dump */
X+ STARC_dump()
X+ {
X+ unsigned int x;
X+ unsigned int plane,offset;
X+ int j,k;
X+ int num_bits = (sizeof(unsigned int)-1)*8;
X+ unsigned int column8;
X+ unsigned long column24;
X+ char column3, column2, column1;
X+ #ifdef PC
X+ /* if (bm_planes==4)*/
X+ fprintf(stderr,"Dumping STAR color graphics (65 kbytes)\n");
X+ #endif
X+ fprintf(outfile,"\033A\010"); /* set line spacing to 8/72" = 8 dots */
X+ for (j=bm_ipc-1;j>=0;j--) {
X+ for (k=num_bits;k>=0;k-=8) {
X+ fprintf(outfile,"\n");
X+ for (plane=0; plane<bm_planes; plane++) {
X+ offset=plane*bm_psize;
X+ if (bm_planes>1) {
X+ /* select colour for plane */
X+ fprintf(outfile,"\033r");
X+ (void) fputc((char)STARCpcolor[plane],outfile);
X+ fprintf(outfile,"\r");
X+ }
X+ /* select plotter graphics mode (square pixels) */
X+ fprintf(outfile,"\r\033*\005");
X+ (void) fputc((char)(bm_xmax%256),outfile);
X+ (void) fputc((char)(bm_xmax/256),outfile);
X+ for (x=0; x<bm_xmax; x++) {
X+ (void) fputc( (char)((bm_array[offset+x*bm_ipc+j] >>k) &0xff), outfile);
X+ }
X+ }
X+ }
X+ }
X+ if (bm_planes > 1) {
X+ fprintf(outfile,"\033r");
X+ (void) fputc('\0',outfile); /* set color to black */
X+ }
X+ fprintf(outfile,"\033A\014\r\n"); /* setline spacing to 12/72" */
X+ #ifdef PC
X+ fprintf(stderr,"Print using: COPY /B\n");
X+ #endif
X+ }
X+
X+ #endif /* STARC */
Xdiff -c ./term/hpgl.trm ../patch/term/hpgl.trm
X*** ./term/hpgl.trm Tue Mar 27 09:02:36 1990
X--- ../patch/term/hpgl.trm Wed Sep 12 09:10:47 1990
X***************
X*** 33,40
X #define HPGL_YLAST (HPGL_XMAX - 1)
X
X /* HPGL_VCHAR, HPGL_HCHAR are not used */
X! #define HPGL_VCHAR (int)(HPGL_YMAX*0.032+0.5) /* 3.2% */
X! #define HPGL_HCHAR (int)(HPGL_XMAX*0.012+0.5) /* 1.2% */
X #define HPGL_VTIC (HPGL_YMAX/70)
X #define HPGL_HTIC (HPGL_YMAX/70)
X
X
X--- 33,40 -----
X #define HPGL_YLAST (HPGL_XMAX - 1)
X
X /* HPGL_VCHAR, HPGL_HCHAR are not used */
X! #define HPGL_VCHAR (HPGL_YMAX/100*32/10) /* 3.2% */
X! #define HPGL_HCHAR (HPGL_XMAX/100*12/10) /* 1.2% */
X #define HPGL_VTIC (HPGL_YMAX/70)
X #define HPGL_HTIC (HPGL_YMAX/70)
X
Xdiff -c ./term/hpljet.trm ../patch/term/hpljet.trm
X*** ./term/hpljet.trm Tue Mar 27 09:02:43 1990
X--- ../patch/term/hpljet.trm Tue Aug 28 21:00:50 1990
X***************
X*** 397,404
X {
X }
X
X! /* put_text was added by Russell Lang, eln272v at monu1.cc.monash.oz
X! * IT IS UNTESTED
X */
X /* Put text "str" at pixel position x,y
X **/
X
X--- 397,404 -----
X {
X }
X
X! /* put_text was added by Russell Lang, rjl at monu1.cc.monash.edu.au
X! * Tested and repaired by Steve Wampler sbw at naucse.cse.nau.edu
X */
X /* Put text "str" at pixel position x,y
X **/
X***************
X*** 407,413
X char str[];
X {
X fprintf(outfile, "\033&a%dH\033&a%dV",
X! HPLJET_PX2DP(x), HPLJET_PX2DP(y) );
X fputs(str, outfile);
X }
X
X
X--- 407,415 -----
X char str[];
X {
X fprintf(outfile, "\033&a%dH\033&a%dV",
X! HPLJET_LMARG+HPLJET_PX2DP(x),
X! HPLJET_PX2DP(HPLJETYMAX) + HPLJET_VC2DP(2) + 30 -
X! HPLJET_PX2DP(y) );
X fputs(str, outfile);
X }
X
X***************
X*** 411,446
X fputs(str, outfile);
X }
X
X-
X- /*
X- ** Put text "str" to the lower right corner of the screen.
X- ** "row" is the row number [0:1].
X- ** Actually in the laserjet, put the text above the upper right corner.
X- */
X- HPLJETlrput_text(row,str)
X- unsigned int row;
X- char str[];
X- {
X-
X- fprintf(outfile, "\033&a%dH\033&a%dV",
X- HPLJET_RMARG - HPLJET_HC2DP(strlen(str)), HPLJET_VC2DP(row));
X- fputs(str, outfile);
X- }
X-
X- /*
X- ** Put text "str" to the upper left corner of the screen.
X- ** "row" is the (serial) number of function to be plotted.
X- ** Actually in the laserjet, put the text under the lower left corner.
X- */
X- HPLJETulput_text(row,str)
X- unsigned int row;
X- char str[];
X- {
X- fprintf(outfile, "\033&a%dH\033&a%dV",
X- HPLJET_LMARG,
X- HPLJET_VC2DP(row+3)+HPLJET_PX2DP(HPLJETYMAX));
X- fputs(str, outfile);
X- }
X
X /*
X ** RETURN to normal mode (exit gnuplot)
X
X--- 413,418 -----
X fputs(str, outfile);
X }
X
X
X /*
X ** RETURN to normal mode (exit gnuplot)
Xdiff -c ./term/imagen.trm ../patch/term/imagen.trm
X*** ./term/imagen.trm Tue Mar 27 09:03:23 1990
X--- ../patch/term/imagen.trm Wed Sep 12 09:39:37 1990
X***************
X*** 39,46
X
X #define IMAGEN_PTS_PER_INCH (300)
X
X! #define IMAGEN_XMAX (10.0 * IMAGEN_PTS_PER_INCH) /* 10.0 inches */
X! #define IMAGEN_YMAX (7.5 * IMAGEN_PTS_PER_INCH) /* 7.5 inches */
X
X #define IMAGEN_FONTSIZE 12
X
X
X--- 39,46 -----
X
X #define IMAGEN_PTS_PER_INCH (300)
X
X! #define IMAGEN_XMAX (IMAGEN_PTS_PER_INCH * 10) /* 10.0 inches */
X! #define IMAGEN_YMAX (IMAGEN_PTS_PER_INCH * 75 / 10) /* 7.5 inches */
X
X #define IMAGEN_FONTSIZE 12
X
Xdiff -c ./term/latex.trm ../patch/term/latex.trm
X*** ./term/latex.trm Tue Mar 27 09:03:31 1990
X--- ../patch/term/latex.trm Wed Sep 12 09:27:09 1990
X***************
X*** 17,23
X * This file is included by ../term.c.
X *
X * This terminal driver supports:
X! * LaTeX pictures
X *
X * AUTHORS
X * David Kotz, Russell Lang
X
X--- 17,24 -----
X * This file is included by ../term.c.
X *
X * This terminal driver supports:
X! * LaTeX pictures (latex).
X! * LaTeX pictures with emTeX specials (emtex).
X *
X * AUTHORS
X * David Kotz, Russell Lang
X***************
X*** 39,46
X #define LATEX_UNIT (LATEX_PTS_PER_INCH/DOTS_PER_INCH) /* dot size in pt */
X
X /* 5 inches wide by 3 inches high (default) */
X! #define LATEX_XMAX (unsigned int)(LATEX_PTS_PER_INCH/LATEX_UNIT*5.0)
X! #define LATEX_YMAX (unsigned int)(LATEX_PTS_PER_INCH/LATEX_UNIT*3.0)
X
X #define LATEX_HTIC (5./LATEX_UNIT)
X #define LATEX_VTIC (5./LATEX_UNIT)
X
X--- 40,47 -----
X #define LATEX_UNIT (LATEX_PTS_PER_INCH/DOTS_PER_INCH) /* dot size in pt */
X
X /* 5 inches wide by 3 inches high (default) */
X! #define LATEX_XMAX (5*DOTS_PER_INCH) /* (LATEX_PTS_PER_INCH/LATEX_UNIT*5.0) */
X! #define LATEX_YMAX (3*DOTS_PER_INCH) /* (LATEX_PTS_PER_INCH/LATEX_UNIT*3.0) */
X
X #define LATEX_HTIC (5*DOTS_PER_INCH/72) /* (5./LATEX_UNIT) */
X #define LATEX_VTIC (5*DOTS_PER_INCH/72) /* (5./LATEX_UNIT) */
X***************
X*** 42,51
X #define LATEX_XMAX (unsigned int)(LATEX_PTS_PER_INCH/LATEX_UNIT*5.0)
X #define LATEX_YMAX (unsigned int)(LATEX_PTS_PER_INCH/LATEX_UNIT*3.0)
X
X! #define LATEX_HTIC (5./LATEX_UNIT)
X! #define LATEX_VTIC (5./LATEX_UNIT)
X! #define LATEX_HCHAR (5.3/LATEX_UNIT)
X! #define LATEX_VCHAR (11./LATEX_UNIT)
X
X static int LATEX_posx;
X static int LATEX_posy;
X
X--- 43,52 -----
X #define LATEX_XMAX (5*DOTS_PER_INCH) /* (LATEX_PTS_PER_INCH/LATEX_UNIT*5.0) */
X #define LATEX_YMAX (3*DOTS_PER_INCH) /* (LATEX_PTS_PER_INCH/LATEX_UNIT*3.0) */
X
X! #define LATEX_HTIC (5*DOTS_PER_INCH/72) /* (5./LATEX_UNIT) */
X! #define LATEX_VTIC (5*DOTS_PER_INCH/72) /* (5./LATEX_UNIT) */
X! #define LATEX_HCHAR (DOTS_PER_INCH*53/10/72) /* (5.3/LATEX_UNIT) */
X! #define LATEX_VCHAR (DOTS_PER_INCH*11/72) /* (11./LATEX_UNIT) */
X
X static int LATEX_posx;
X static int LATEX_posy;
X***************
X*** 60,66
X /* POINTS */
X #define LATEX_POINT_TYPES 12 /* we supply more point types */
X static char *LATEX_points[] = {
X! "\\makebox(0,0){$\\Diamond$}",
X "\\makebox(0,0){$+$}",
X "\\makebox(0,0){$\\Box$}",
X "\\makebox(0,0){$\\times$}",
X
X--- 61,67 -----
X /* POINTS */
X #define LATEX_POINT_TYPES 12 /* we supply more point types */
X static char *LATEX_points[] = {
X! "\\raisebox{-1.2pt}{\\makebox(0,0){$\\Diamond$}}",
X "\\makebox(0,0){$+$}",
X "\\raisebox{-1.2pt}{\\makebox(0,0){$\\Box$}}",
X "\\makebox(0,0){$\\times$}",
X***************
X*** 62,68
X static char *LATEX_points[] = {
X "\\makebox(0,0){$\\Diamond$}",
X "\\makebox(0,0){$+$}",
X! "\\makebox(0,0){$\\Box$}",
X "\\makebox(0,0){$\\times$}",
X "\\makebox(0,0){$\\triangle$}",
X "\\makebox(0,0){$\\star$}",
X
X--- 63,69 -----
X static char *LATEX_points[] = {
X "\\raisebox{-1.2pt}{\\makebox(0,0){$\\Diamond$}}",
X "\\makebox(0,0){$+$}",
X! "\\raisebox{-1.2pt}{\\makebox(0,0){$\\Box$}}",
X "\\makebox(0,0){$\\times$}",
X "\\makebox(0,0){$\\triangle$}",
X "\\makebox(0,0){$\\star$}",
X***************
X*** 78,89
X float size; /* size of dot, or thick of line in points */
X float dotspace; /* inter-dot space in points; 0 for lines */
X } LATEX_lines[] = {
X! {.4, 0}, /* thin solid line */
X! {1.0, 0}, /* thick solid line */
X! {2.0, 0}, /* Thick solid line */
X! {.4, 5}, /* dotted line */
X! {.4, 10}, /* widely dotted line */
X! {.4, 15} /* really widely dotted line */
X };
X /* for drawing dotted and solid lines */
X static void LATEX_dot_line();
X
X--- 79,90 -----
X float size; /* size of dot, or thick of line in points */
X float dotspace; /* inter-dot space in points; 0 for lines */
X } LATEX_lines[] = {
X! {.4, 0.0}, /* thin solid line */
X! {1.0, 0.0}, /* thick solid line */
X! {2.0, 0.0}, /* Thick solid line */
X! {.4, 5.0}, /* dotted line */
X! {.4, 10.0}, /* widely dotted line */
X! {.4, 15.0} /* really widely dotted line */
X };
X /* for drawing dotted and solid lines */
X static void LATEX_dot_line();
X***************
X*** 93,98
X static BOOLEAN LATEX_moved = TRUE; /* pen is up after move */
X static float LATEX_dotsize; /* size of LATEX_DOT in units */
X
X /* ARROWS */
X /* the set of non-vertical/non-horizontal LaTeX vector slopes */
X /* except negatives - they are handled specially */
X
X--- 94,104 -----
X static BOOLEAN LATEX_moved = TRUE; /* pen is up after move */
X static float LATEX_dotsize; /* size of LATEX_DOT in units */
X
X+ #ifdef EMTEX
X+ BOOLEAN emtex=FALSE; /* not currently using emtex */
X+ static void EMTEX_solid_line();
X+ #endif
X+
X /* ARROWS */
X /* the set of non-vertical/non-horizontal LaTeX vector slopes */
X /* except negatives - they are handled specially */
X***************
X*** 109,114
X
X LATEX_init()
X {
X LATEX_posx = LATEX_posy = 0;
X LATEX_linetype(-1);
X fprintf(outfile, "%% GNUPLOT: LaTeX picture\n");
X
X--- 115,123 -----
X
X LATEX_init()
X {
X+ #ifdef EMTEX
X+ emtex = FALSE;
X+ #endif
X LATEX_posx = LATEX_posy = 0;
X LATEX_linetype(-1);
X fprintf(outfile, "%% GNUPLOT: LaTeX picture\n");
X***************
X*** 152,157
X if (linetype >= LATEX_LINE_TYPES)
X linetype %= LATEX_LINE_TYPES;
X
X LATEX_flushrule();
X
X if (linetype >= 0 &&
X
X--- 161,169 -----
X if (linetype >= LATEX_LINE_TYPES)
X linetype %= LATEX_LINE_TYPES;
X
X+ #ifdef EMTEX
X+ if (!emtex)
X+ #endif
X LATEX_flushrule();
X
X if (linetype >= 0 &&
X***************
X*** 155,167
X LATEX_flushrule();
X
X if (linetype >= 0 &&
X! LATEX_lines[linetype].size != LATEX_lines[LATEX_type].size)
X! /* redefine \plotpoint */
X! fprintf(outfile, "\\sbox{\\plotpoint}{\\rule[%.3fpt]{%.3fpt}{%.3fpt}}\n",
X! -LATEX_lines[linetype].size/2,
X! LATEX_lines[linetype].size,
X! LATEX_lines[linetype].size);
X!
X LATEX_type = linetype;
X LATEX_dotsize = LATEX_lines[linetype].size / LATEX_UNIT;
X LATEX_moved = TRUE; /* reset */
X
X--- 167,187 -----
X LATEX_flushrule();
X
X if (linetype >= 0 &&
X! (LATEX_type < 0 ||
X! LATEX_lines[linetype].size != LATEX_lines[LATEX_type].size)) {
X! /* redefine \plotpoint */
X! fprintf(outfile,
X! "\\sbox{\\plotpoint}{\\rule[%.3fpt]{%.3fpt}{%.3fpt}}%%\n",
X! -LATEX_lines[linetype].size/2,
X! LATEX_lines[linetype].size,
X! LATEX_lines[linetype].size);
X! #ifdef EMTEX
X! if (emtex) /* change line width */
X! fprintf(outfile, "\\special{em:linewidth %.1fpt}%%\n",
X! LATEX_lines[linetype].size);
X! #endif
X! }
X!
X LATEX_type = linetype;
X LATEX_dotsize
X = ((linetype >= 0) ? LATEX_lines[linetype].size / LATEX_UNIT : 0);
X***************
X*** 163,169
X LATEX_lines[linetype].size);
X
X LATEX_type = linetype;
X! LATEX_dotsize = LATEX_lines[linetype].size / LATEX_UNIT;
X LATEX_moved = TRUE; /* reset */
X }
X
X
X--- 183,190 -----
X }
X
X LATEX_type = linetype;
X! LATEX_dotsize
X! = ((linetype >= 0) ? LATEX_lines[linetype].size / LATEX_UNIT : 0);
X LATEX_moved = TRUE; /* reset */
X }
X
X***************
X*** 209,215
X }
X } else { /* drawing real curves */
X if (LATEX_lines[LATEX_type].dotspace == 0.0)
X! LATEX_solid_line(LATEX_posx, (int)ux, LATEX_posy, (int)uy);
X else
X LATEX_dot_line(LATEX_posx, (int)ux, LATEX_posy, (int)uy);
X }
X
X--- 230,241 -----
X }
X } else { /* drawing real curves */
X if (LATEX_lines[LATEX_type].dotspace == 0.0)
X! #ifdef EMTEX
X! if (emtex)
X! EMTEX_solid_line(LATEX_posx, (int)ux, LATEX_posy, (int)uy);
X! else
X! #endif
X! LATEX_solid_line(LATEX_posx, (int)ux, LATEX_posy, (int)uy);
X else
X LATEX_dot_line(LATEX_posx, (int)ux, LATEX_posy, (int)uy);
X }
X***************
X*** 301,315
X if (width == 0 || height == 0)
X return; /* ignore this rule */
X
X- if (width < 0) {
X- x += width;
X- width = -width;
X- }
X- if (height < 0) {
X- y += height;
X- height = -height;
X- }
X-
X if (valid && combine) {
X /* try to combine new rule with old rule */
X if ((int)lastx == (int)x && lastw == width) { /* vertical rule */
X
X--- 327,332 -----
X if (width == 0 || height == 0)
X return; /* ignore this rule */
X
X if (valid && combine) {
X /* try to combine new rule with old rule */
X if ((int)lastx == (int)x && lastw == width) { /* vertical rule */
X***************
X*** 313,320
X if (valid && combine) {
X /* try to combine new rule with old rule */
X if ((int)lastx == (int)x && lastw == width) { /* vertical rule */
X! lasth += height;
X! return;
X } else if ((int)lasty == (int)y && lasth == height){ /* horiz rule */
X lastw += width;
X return;
X
X--- 330,339 -----
X if (valid && combine) {
X /* try to combine new rule with old rule */
X if ((int)lastx == (int)x && lastw == width) { /* vertical rule */
X! if (lasth * height >= 0) { /* same sign */
X! lasth += height;
X! return;
X! }
X } else if ((int)lasty == (int)y && lasth == height){ /* horiz rule */
X if (lastw * width >= 0) { /* same sign */
X lastw += width;
X***************
X*** 316,323
X lasth += height;
X return;
X } else if ((int)lasty == (int)y && lasth == height){ /* horiz rule */
X! lastw += width;
X! return;
X }
X /* oh well, output last and remember the new one */
X }
X
X--- 335,344 -----
X return;
X }
X } else if ((int)lasty == (int)y && lasth == height){ /* horiz rule */
X! if (lastw * width >= 0) { /* same sign */
X! lastw += width;
X! return;
X! }
X }
X /* oh well, output last and remember the new one */
X }
X***************
X*** 322,336
X /* oh well, output last and remember the new one */
X }
X
X! if (valid)
X! /* if very small use canned dot */
X! if (lastw < LATEX_dotsize || lasth < LATEX_dotsize)
X! fprintf(outfile, "\\put(%d,%d){%s}\n",
X! (int)lastx, (int)lasty, LATEX_DOT);
X! else
X! fprintf(outfile, "\\put(%d,%d){\\rule[%.3fpt]{%.3fpt}{%.3fpt}}\n",
X! (int)lastx, (int)lasty, -LATEX_dotsize*LATEX_UNIT/2,
X! lastw*LATEX_UNIT, lasth*LATEX_UNIT);
X
X if (flush) {
X valid = FALSE;
X
X--- 343,368 -----
X /* oh well, output last and remember the new one */
X }
X
X! if (valid) {
X! /* output the rule */
X! if (lastw < 0) {
X! lastx += lastw;
X! lastw = -lastw;
X! }
X! if (lasth < 0) {
X! lasty += lasth;
X! lasth = -lasth;
X! }
X!
X! /* if very small use canned dot */
X! if (lastw < LATEX_dotsize || lasth < LATEX_dotsize)
X! fprintf(outfile, "\\put(%d,%d){%s}\n",
X! (int)lastx, (int)lasty, LATEX_DOT);
X! else
X! fprintf(outfile, "\\put(%d,%d){\\rule[%.3fpt]{%.3fpt}{%.3fpt}}\n",
X! (int)lastx, (int)lasty, -LATEX_dotsize*LATEX_UNIT/2,
X! lastw*LATEX_UNIT, lasth*LATEX_UNIT);
X! }
X
X if (flush) {
X valid = FALSE;
X***************
X*** 418,424
X int x, y; /* points near sx,sy */
X float m; /* slope of line */
X float arrowslope; /* slope of arrow */
X! float minerror; /* best-case error */
X struct vslope *slope; /* one of the slopes */
X struct vslope *bestslope; /* the slope with min error */
X BOOLEAN horiz; /* was it the horiz line that was best? */
X
X--- 450,456 -----
X int x, y; /* points near sx,sy */
X float m; /* slope of line */
X float arrowslope; /* slope of arrow */
X! float minerror = 0; /* best-case error */
X struct vslope *slope; /* one of the slopes */
X struct vslope *bestslope; /* the slope with min error */
X BOOLEAN horiz; /* was it the horiz line that was best? */
X***************
X*** 440,445
X * we try to find the closest-slope arrowhead.
X */
X bestslope = NULL;
X m = abs((float)dy/dx); /* the slope we want */
X for (slope = LATEX_slopes; slope->dx != 0.0; slope++) {
X /* find the slope of the arrow */
X
X--- 472,478 -----
X * we try to find the closest-slope arrowhead.
X */
X bestslope = NULL;
X+ minerror = 0; /* to shut up turbo C */
X m = abs((float)dy/dx); /* the slope we want */
X for (slope = LATEX_slopes; slope->dx != 0.0; slope++) {
X /* find the slope of the arrow */
X***************
X*** 459,465
X abs(ex-sx));
X else {
X /* we draw the line the usual way, with thin lines */
X! if (who == 1) {
X LATEX_linetype(LATEX_THIN_LINE);
X LATEX_solid_line(sx,ex,sy,ey);
X }
X
X--- 492,499 -----
X abs(ex-sx));
X else {
X /* we draw the line the usual way, with thin lines */
X! #ifdef EMTEX
X! if (emtex) {
X LATEX_linetype(LATEX_THIN_LINE);
X EMTEX_solid_line(sx,ex,sy,ey);
X } else
X***************
X*** 461,468
X /* we draw the line the usual way, with thin lines */
X if (who == 1) {
X LATEX_linetype(LATEX_THIN_LINE);
X! LATEX_solid_line(sx,ex,sy,ey);
X! }
X #ifdef EEPIC
X else {
X EEPIC_move(sx,sy);
X
X--- 495,507 -----
X #ifdef EMTEX
X if (emtex) {
X LATEX_linetype(LATEX_THIN_LINE);
X! EMTEX_solid_line(sx,ex,sy,ey);
X! } else
X! #endif
X! if (who == 1) {
X! LATEX_linetype(LATEX_THIN_LINE);
X! LATEX_solid_line(sx,ex,sy,ey);
X! }
X #ifdef EEPIC
X else {
X EEPIC_move(sx,sy);
X***************
X*** 464,473
X LATEX_solid_line(sx,ex,sy,ey);
X }
X #ifdef EEPIC
X! else {
X! EEPIC_move(sx,sy);
X! EEPIC_vector(ex,ey);
X! }
X #endif /* EEPIC */
X /* and then draw an arrowhead (a short vector) there */
X fprintf(outfile, "\\put(%d,%d){\\vector(%d,%d){0}}\n",
X
X--- 503,512 -----
X LATEX_solid_line(sx,ex,sy,ey);
X }
X #ifdef EEPIC
X! else {
X! EEPIC_move(sx,sy);
X! EEPIC_vector(ex,ey);
X! }
X #endif /* EEPIC */
X /* and then draw an arrowhead (a short vector) there */
X fprintf(outfile, "\\put(%d,%d){\\vector(%d,%d){0}}\n",
X***************
X*** 555,557
X LATEX_posx = LATEX_posy = 0;
X }
X
X
X--- 594,638 -----
X LATEX_posx = LATEX_posy = 0;
X }
X
X+
X+ #ifdef EMTEX
X+
X+ EMTEX_init()
X+ {
X+ emtex=TRUE;
X+ LATEX_posx = LATEX_posy = 0;
X+ fprintf(outfile, "%% GNUPLOT: LaTeX picture with emtex specials\n");
X+ fprintf(outfile, "\\setlength{\\unitlength}{%fpt}\n", LATEX_UNIT);
X+ LATEX_linetype(-1);
X+ }
X+
X+
X+ EMTEX_reset()
X+ {
X+ emtex=FALSE;
X+ LATEX_posx = LATEX_posy = 0;
X+ }
X+
X+
X+ EMTEX_text()
X+ {
X+ fprintf(outfile, "\\end{picture}\n");
X+ }
X+
X+
X+ static void
X+ EMTEX_solid_line(x1,x2, y1,y2)
X+ int x1,x2, y1,y2;
X+ {
X+ /* emtex special solid line */
X+ if (LATEX_moved)
X+ fprintf(outfile, "\\put(%d,%d){\\special{em:moveto}}\n", x1, y1);
X+ if ( (x1!=x2) || (y1!=y2) )
X+ fprintf(outfile, "\\put(%d,%d){\\special{em:lineto}}\n", x2, y2);
X+ LATEX_posx = x2;
X+ LATEX_posy = y2;
X+ LATEX_moved = FALSE;
X+ }
X+
X+
X+ #endif /* EMTEX */
Xdiff -c ./term/pc.trm ../patch/term/pc.trm
X*** ./term/pc.trm Tue Mar 27 09:03:04 1990
X--- ../patch/term/pc.trm Tue Aug 28 20:52:11 1990
X***************
X*** 20,26
X * Under Microsoft C
X * cga, egabios, egalib, vgabios, hercules, corona325, att
X * Under Turboc C
X! * egalib, vgalib, vgamono, mcga, cga, hercules
X *
X * AUTHORS
X * Colin Kelley, Thomas Williams, William Wilson, Russell Lang
X
X--- 20,26 -----
X * Under Microsoft C
X * cga, egabios, egalib, vgabios, hercules, corona325, att
X * Under Turboc C
X! * egalib, vgalib, vgamono, mcga, cga, hercules, att
X *
X * AUTHORS
X * Colin Kelley, Thomas Williams, William Wilson, Russell Lang
X***************
X*** 110,116
X pixelon = (((unsigned int)(font5x7[i][j])) >> k & 1);
X if (pixelon) {
X switch(angle) {
X! case 0 : line_func(x+k+1,y-j,x+k+1,y-j);
X break;
X case 1 : line_func(x-j,y-k-1,x-j,y-k-1);
X break;
X
X--- 110,116 -----
X pixelon = (((unsigned int)(font5x7[i][j])) >> k & 1);
X if (pixelon) {
X switch(angle) {
X! case 0 : (*line_func)(x+k+1,y-j,x+k+1,y-j);
X break;
X case 1 : (*line_func)(x-j,y-k-1,x-j,y-k-1);
X break;
X***************
X*** 112,118
X switch(angle) {
X case 0 : line_func(x+k+1,y-j,x+k+1,y-j);
X break;
X! case 1 : line_func(x-j,y-k-1,x-j,y-k-1);
X break;
X }
X }
X
X--- 112,118 -----
X switch(angle) {
X case 0 : (*line_func)(x+k+1,y-j,x+k+1,y-j);
X break;
X! case 1 : (*line_func)(x-j,y-k-1,x-j,y-k-1);
X break;
X }
X }
X***************
X*** 1197,1202
X outtextxy(x,HERC_YLAST-y,buf);
X }
X
X
X #endif /* ifndef __TURBOC__ */
X
X
X--- 1197,1301 -----
X outtextxy(x,HERC_YLAST-y,buf);
X }
X
X+
X+ #ifdef ATT6300
X+ /* this driver added by rjl at monu1.cc.monash.edu.au */
X+
X+ #define ATT_XMAX 640
X+ #define ATT_YMAX 400
X+
X+ #define ATT_XLAST (ATT_XMAX - 1)
X+ #define ATT_YLAST (ATT_YMAX - 1)
X+
X+ #define ATT_VCHAR PC_VCHAR
X+ #define ATT_HCHAR PC_HCHAR
X+ #define ATT_VTIC 4
X+ #define ATT_HTIC 5
X+
X+ #define ATT_text_angle PC_text_angle
X+ #define ATT_justify_text PC_justify_text
X+ #define ATT_reset PC_reset
X+
X+ ATT_init()
X+ {
X+ g_driver=ATT400;
X+ g_mode=5;
X+ initgraph(&g_driver,&g_mode,path);
X+ switch (g_driver){
X+ case -2: fprintf(stderr,"Graphics card not detected.\n");
X+ break;
X+ case -3: fprintf(stderr,"BGI driver file cannot be found.\n");
X+ break;
X+ case -4: fprintf(stderr,"Invalid BGI driver file.\n");
X+ break;
X+ case -5: fprintf(stderr,"Insufficient memory to load ",
X+ "graphics driver.");
X+ break;
X+ }
X+ }
X+
X+ ATT_graphics()
X+ {
X+ g_driver=ATT400;
X+ g_mode=5;
X+ initgraph(&g_driver,&g_mode,path);
X+ ATT_justify_text(LEFT);
X+ graphics_on = TRUE;
X+ }
X+
X+ ATT_text()
X+ {
X+ if (graphics_on) {
X+ graphics_on = FALSE;
X+ pause();
X+ }
X+ closegraph();
X+ }
X+
X+ ATT_linetype(linetype)
X+ {
X+ if (linetype >= 5)
X+ linetype %= 5;
X+ setlinestyle(4,pattern[linetype+2],1);
X+ }
X+
X+ ATT_move(x,y)
X+ {
X+ if (x < 0)
X+ x = 0;
X+ else if (x > ATT_XLAST)
X+ x = ATT_XLAST;
X+
X+ if (y < 0)
X+ y = 0;
X+ else if (y > ATT_YLAST)
X+ y = ATT_YLAST;
X+ moveto(x,getmaxy()-y);
X+ }
X+
X+ ATT_vector(x,y)
X+ {
X+ if (x < 0)
X+ x = 0;
X+ else if (x > ATT_XLAST)
X+ x = ATT_XLAST;
X+ if (y < 0)
X+ y = 0;
X+ else if (y > ATT_YLAST)
X+ y = ATT_YLAST;
X+
X+ lineto(x,getmaxy()-y);
X+ }
X+
X+
X+ ATT_put_text(x,y,str)
X+ unsigned int x, y;
X+ char *str;
X+ {
X+ strcpy((char far *)buf,str);
X+ outtextxy(x,ATT_YLAST-y,buf);
X+ }
X+ #endif /* ifdef ATT6300 */
X
X #endif /* ifndef __TURBOC__ */
X
Xdiff -c ./term/post.trm ../patch/term/post.trm
X*** ./term/post.trm Tue Mar 27 09:02:51 1990
X--- ../patch/term/post.trm Tue Sep 18 14:40:31 1990
X***************
X*** 40,46
X "/vpt2 vpt 2 mul def\n",
X "/hpt2 hpt 2 mul def\n",
X /* flush left show */
X! "/Lshow { 0 vshift rmoveto show } def\n",
X /* flush right show */
X "/Rshow { dup stringwidth pop neg vshift rmoveto show } def\n",
X /* centred show */
X
X--- 40,47 -----
X "/vpt2 vpt 2 mul def\n",
X "/hpt2 hpt 2 mul def\n",
X /* flush left show */
X! "/Lshow { currentpoint stroke moveto\n",
X! " 0 vshift rmoveto show } def\n",
X /* flush right show */
X "/Rshow { currentpoint stroke moveto\n",
X " dup stringwidth pop neg vshift rmoveto show } def\n",
X***************
X*** 42,48
X /* flush left show */
X "/Lshow { 0 vshift rmoveto show } def\n",
X /* flush right show */
X! "/Rshow { dup stringwidth pop neg vshift rmoveto show } def\n",
X /* centred show */
X "/Cshow { dup stringwidth pop -2 div vshift rmoveto show } def\n",
X /* Border Lines */
X
X--- 43,50 -----
X "/Lshow { currentpoint stroke moveto\n",
X " 0 vshift rmoveto show } def\n",
X /* flush right show */
X! "/Rshow { currentpoint stroke moveto\n",
X! " dup stringwidth pop neg vshift rmoveto show } def\n",
X /* centred show */
X "/Cshow { currentpoint stroke moveto\n",
X " dup stringwidth pop -2 div vshift rmoveto show } def\n",
X***************
X*** 44,50
X /* flush right show */
X "/Rshow { dup stringwidth pop neg vshift rmoveto show } def\n",
X /* centred show */
X! "/Cshow { dup stringwidth pop -2 div vshift rmoveto show } def\n",
X /* Border Lines */
X "/BL { stroke gnulinewidth 2 mul setlinewidth} def\n",
X /* Axes Lines */
X
X--- 46,53 -----
X "/Rshow { currentpoint stroke moveto\n",
X " dup stringwidth pop neg vshift rmoveto show } def\n",
X /* centred show */
X! "/Cshow { currentpoint stroke moveto\n",
X! " dup stringwidth pop -2 div vshift rmoveto show } def\n",
X /* Border Lines */
X "/BL { stroke gnulinewidth 2 mul setlinewidth } def\n",
X /* Axes Lines */
X***************
X*** 46,52
X /* centred show */
X "/Cshow { dup stringwidth pop -2 div vshift rmoveto show } def\n",
X /* Border Lines */
X! "/BL { stroke gnulinewidth 2 mul setlinewidth} def\n",
X /* Axes Lines */
X "/AL { stroke gnulinewidth 2 div setlinewidth } def\n",
X /* Plot Lines */
X
X--- 49,55 -----
X "/Cshow { currentpoint stroke moveto\n",
X " dup stringwidth pop -2 div vshift rmoveto show } def\n",
X /* Border Lines */
X! "/BL { stroke gnulinewidth 2 mul setlinewidth } def\n",
X /* Axes Lines */
X "/AL { stroke gnulinewidth 2 div setlinewidth } def\n",
X /* Plot Lines */
X***************
X*** 102,109
X #define PS_HTIC (PS_YMAX/80)
X
X
X! #define PS_SC (360.0/PS_XMAX) /* scale is 1pt = 10 units */
X! #define PS_LW (0.25/PS_SC) /* linewidth = 0.25 pts */
X
X #define PS_VCHAR1 (int)(7.0/PS_SC) /* 7 point characters */
X #define PS_HCHAR1 (int)(0.6*7.0/PS_SC)
X
X--- 105,112 -----
X #define PS_HTIC (PS_YMAX/80)
X
X
X! #define PS_SC (PS_XMAX/360) /* scale is 1pt = 10 units */
X! #define PS_LW (0.25*PS_SC) /* linewidth = 0.25 pts */
X
X #define PS_VCHAR1 (7*PS_SC) /* 7 point characters */
X #define PS_HCHAR1 (7*PS_SC*6/10)
X***************
X*** 105,112
X #define PS_SC (360.0/PS_XMAX) /* scale is 1pt = 10 units */
X #define PS_LW (0.25/PS_SC) /* linewidth = 0.25 pts */
X
X! #define PS_VCHAR1 (int)(7.0/PS_SC) /* 7 point characters */
X! #define PS_HCHAR1 (int)(0.6*7.0/PS_SC)
X
X #define PS_VCHAR2 (int)(11.0/PS_SC) /* 11 point characters */
X #define PS_HCHAR2 (int)(0.6*11.0/PS_SC)
X
X--- 108,115 -----
X #define PS_SC (PS_XMAX/360) /* scale is 1pt = 10 units */
X #define PS_LW (0.25*PS_SC) /* linewidth = 0.25 pts */
X
X! #define PS_VCHAR1 (7*PS_SC) /* 7 point characters */
X! #define PS_HCHAR1 (7*PS_SC*6/10)
X
X #define PS_VCHAR2 (11*PS_SC) /* 11 point characters */
X #define PS_HCHAR2 (11*PS_SC*6/10)
X***************
X*** 108,115
X #define PS_VCHAR1 (int)(7.0/PS_SC) /* 7 point characters */
X #define PS_HCHAR1 (int)(0.6*7.0/PS_SC)
X
X! #define PS_VCHAR2 (int)(11.0/PS_SC) /* 11 point characters */
X! #define PS_HCHAR2 (int)(0.6*11.0/PS_SC)
X
X
X EPSF1_init()
X
X--- 111,118 -----
X #define PS_VCHAR1 (7*PS_SC) /* 7 point characters */
X #define PS_HCHAR1 (7*PS_SC*6/10)
X
X! #define PS_VCHAR2 (11*PS_SC) /* 11 point characters */
X! #define PS_HCHAR2 (11*PS_SC*6/10)
X
X
X EPSF1_init()
X***************
X*** 135,142
X fprintf(outfile,"%%%%DocumentFonts: %s\n", ps_font);
X fprintf(outfile,"%%%%DocumentNeededFonts: %s\n", ps_font);
X fprintf(outfile,"%%%%BoundingBox: 0 0 %d %d\n",
X! (int)(xsize*(PS_XMAX)*PS_SC+0.5),
X! (int)(ysize*(PS_YMAX)*PS_SC+0.5) );
X fprintf(outfile,"%%%%EndComments\n");
X fprintf(outfile,"40 dict begin\n");
X fprintf(outfile,"/gnulinewidth %.3f def\n",PS_LW);
X
X--- 138,145 -----
X fprintf(outfile,"%%%%DocumentFonts: %s\n", ps_font);
X fprintf(outfile,"%%%%DocumentNeededFonts: %s\n", ps_font);
X fprintf(outfile,"%%%%BoundingBox: 0 0 %d %d\n",
X! (int)(xsize*(PS_XMAX)/PS_SC+0.5),
X! (int)(ysize*(PS_YMAX)/PS_SC+0.5) );
X fprintf(outfile,"%%%%EndComments\n");
X fprintf(outfile,"40 dict begin\n");
X fprintf(outfile,"/gnulinewidth %.3f def\n",PS_LW);
X***************
X*** 142,148
X fprintf(outfile,"/gnulinewidth %.3f def\n",PS_LW);
X fprintf(outfile,"/vshift %d def\n",
X ps_big ? -PS_VCHAR2/3 : -PS_VCHAR1/3);
X! fprintf(outfile,"/dl {%.3f mul} def\n",1/PS_SC); /* dash length */
X fprintf(outfile,"/hpt %.1f def\n",PS_HTIC/2.0);
X fprintf(outfile,"/vpt %.1f def\n",PS_VTIC/2.0);
X for ( i=0; PS_header[i] != NULL; i++)
X
X--- 145,151 -----
X fprintf(outfile,"/gnulinewidth %.3f def\n",PS_LW);
X fprintf(outfile,"/vshift %d def\n",
X ps_big ? -PS_VCHAR2/3 : -PS_VCHAR1/3);
X! fprintf(outfile,"/dl {%d mul} def\n",PS_SC); /* dash length */
X fprintf(outfile,"/hpt %.1f def\n",PS_HTIC/2.0);
X fprintf(outfile,"/vpt %.1f def\n",PS_VTIC/2.0);
X for ( i=0; PS_header[i] != NULL; i++)
X***************
X*** 150,156
X fprintf(outfile,"%%%%EndProlog\n");
X fprintf(outfile,"%%%%BeginSetup\n");
X fprintf(outfile,"/Gnu_save save def\n");
X! fprintf(outfile,"%.3f %.3f scale\n",PS_SC,PS_SC);
X fprintf(outfile,"%%%%IncludeFont: %s\n", ps_font);
X fprintf(outfile,"/%s findfont %d ", ps_font,
X ps_big ? PS_VCHAR2 : PS_VCHAR1 );
X
X--- 153,160 -----
X fprintf(outfile,"%%%%EndProlog\n");
X fprintf(outfile,"%%%%BeginSetup\n");
X fprintf(outfile,"/Gnu_save save def\n");
X! fprintf(outfile,"%.3f %.3f scale\n",1.0/PS_SC,1.0/PS_SC);
X! fprintf(outfile,"0 setgray\n");
X fprintf(outfile,"%%%%IncludeFont: %s\n", ps_font);
X fprintf(outfile,"/%s findfont %d ", ps_font,
X ps_big ? PS_VCHAR2 : PS_VCHAR1 );
X***************
X*** 198,205
X fprintf(outfile,"%%%%DocumentNeededFonts: %s\n", ps_font);
X fprintf(outfile,"%%%%Pages: (atend)\n");
X fprintf(outfile,"%%%%BoundingBox: %d 50 550 %d\n",
X! (int)(550.5-ysize*(PS_YMAX)*PS_SC*2),
X! (int)(50.5+xsize*(PS_XMAX)*PS_SC*2) );
X fprintf(outfile,"%%%%EndComments\n");
X fprintf(outfile,"/GnuTransform {\n");
X fprintf(outfile," 90 rotate\n 50 -550 translate\n 2 2 scale\n");
X
X--- 202,209 -----
X fprintf(outfile,"%%%%DocumentNeededFonts: %s\n", ps_font);
X fprintf(outfile,"%%%%Pages: (atend)\n");
X fprintf(outfile,"%%%%BoundingBox: %d 50 550 %d\n",
X! (int)(550.5-ysize*(PS_YMAX)/PS_SC*2),
X! (int)(50.5+xsize*(PS_XMAX)/PS_SC*2) );
X fprintf(outfile,"%%%%EndComments\n");
X fprintf(outfile,"/GnuTransform {\n");
X fprintf(outfile," 90 rotate\n 50 -550 translate\n 2 2 scale\n");
X***************
X*** 292,297
X }
X if (ps_ang != 0)
X fprintf(outfile,"grestore\n");
X }
X
X int PS_text_angle(ang)
X
X--- 296,302 -----
X }
X if (ps_ang != 0)
X fprintf(outfile,"grestore\n");
X+ ps_path_count = 0;
X }
X
X int PS_text_angle(ang)
Xdiff -c ./term/t410x.trm ../patch/term/t410x.trm
X*** ./term/t410x.trm Wed Aug 29 12:16:17 1990
X--- ../patch/term/t410x.trm Tue Aug 28 20:28:50 1990
X***************
X*** 0
X
X--- 1,239 -----
X+ /* GNUPLOT - t410x.trm */
X+ /*
X+ * Copyright (C) 1990
X+ *
X+ * Permission to use, copy, and distribute this software and its
X+ * documentation for any purpose with or without fee is hereby granted,
X+ * provided that the above copyright notice appear in all copies and
X+ * that both that copyright notice and this permission notice appear
X+ * in supporting documentation.
X+ *
X+ * Permission to modify the software is granted, but not the right to
X+ * distribute the modified code. Modifications are to be distributed
X+ * as patches to released version.
X+ *
X+ * This software is provided "as is" without express or implied warranty.
X+ *
X+ * This file is included by ../term.c.
X+ *
X+ * This terminal driver supports: Tektronix 410x and 420x series terminals
X+ *
X+ * AUTHORS
X+ * Colin Kelley, Thomas Williams
X+ *
X+ * send your comments or suggestions to (pixar!info-gnuplot at sun.com).
X+ *
X+ */
X+
X+ /* Tektronix 410X and 420X driver written by Cary D. Renzema.
X+ * email address: caryr at vice.ico.tek.com
X+ *
X+ * I've tested this driver on the following terminals: 4106, 4107A, 4109
X+ * and 4207. It should work, without editing, on other terminals in the
X+ * 410x and 420x families. It will probably need to be changed to work
X+ * on a 4105 (screen size and character rotation are two guesses). This
X+ * file can also be used as a start for a 411x driver.
X+ *
X+ * Cary R.
X+ * April 5, 1990
X+ */
X+
X+ #ifdef T410X
X+
X+ #define T410XXMAX 4095
X+ #define T410XYMAX 3131
X+
X+ #define T410XVCHAR 71
X+ #define T410XHCHAR 51
X+ #define T410XVTIC 36
X+ #define T410XHTIC 36
X+
X+ static int T410X_angle=0;
X+
X+ T410X_init()
X+ {
X+ (void) fprintf(outfile, "\033%%!0\033MN0\033MCB7C;\033MQ1\033MT1");
X+ (void) fprintf(outfile, "\033MG1\033RK!\033SK!\033LZ\033%%!1");
X+ /*
X+ 1. set tek mode
X+ 2. set character path to 0 (characters placed equal to rotation)
X+ 3. set character size to 59 height
X+ 4. set character precision to string
X+ 5. set character text index to 1
X+ 6. set character write mode to overstrike
X+ 7. clear the view
X+ 8. clear the segments
X+ 9. clear the dialog buffer
X+ 10. set ansi mode
X+ */
X+ (void) fflush(outfile);
X+ }
X+
X+
X+ T410X_reset()
X+ {
X+ (void) fprintf(outfile, "\033%%!0\033LZ\033%%!1");
X+ /*
X+ 1. set tek mode
X+ 2. clear the dialog buffer
X+ 3. set ansi mode
X+ */
X+ (void) fflush(outfile);
X+ }
X+
X+
X+ T410X_graphics()
X+ {
X+ (void) fprintf(outfile, "\033%%!0\033\014\033LV0");
X+ /*
X+ 1. set tek mode
X+ 2. clear the screen
X+ 3. set dialog area invisible
X+ */
X+ (void) fflush(outfile);
X+ }
X+
X+ T410X_text()
X+ {
X+ (void) fprintf(outfile, "\033LV1\033%%!1");
X+ /*
X+ 1. set dialog area visible
X+ 2. set ansi mode
X+ */
X+ (void) fflush(outfile);
X+ }
X+
X+
X+ T410X_move(x, y)
X+ unsigned int x, y;
X+ {
X+ (void) fprintf(outfile, "\033LF");
X+ (void) T410X_encode_x_y(x, y);
X+ (void) fflush(outfile);
X+ }
X+
X+
X+ T410X_vector(x, y)
X+ unsigned int x, y;
X+ {
X+ (void) fprintf(outfile, "\033LG");
X+ (void) T410X_encode_x_y(x, y);
X+ (void) fflush(outfile);
X+ }
X+
X+
X+ T410X_point(x, y, number)
X+ unsigned int x, y;
X+ int number;
X+ {
X+ (void) fprintf(outfile, "\033MM");
X+ (void) T410X_encode_int(max(number, 0)%11);
X+ (void) fprintf(outfile, "\033LH");
X+ (void) T410X_encode_x_y(x, y);
X+ (void) fflush(outfile);
X+ }
X+
X+
X+ T410X_linetype(linetype)
X+ int linetype;
X+ {
X+ switch (linetype) {
X+ case -1:
X+ (void) fprintf(outfile, "\033ML5");
X+ break;
X+ case -2:
X+ (void) fprintf(outfile, "\033ML?");
X+ break;
X+ default:
X+ (void) fprintf(outfile, "\033ML");
X+ (void) T410X_encode_int(linetype%14+2);
X+ break;
X+ }
X+ (void) fprintf(outfile, "\033MV");
X+ (void) T410X_encode_int(max(linetype, 0)%8);
X+ (void) fflush(outfile);
X+ }
X+
X+
X+ T410X_put_text(x, y, str)
X+ unsigned int x, y;
X+ char str[];
X+ {
X+ extern int T410X_angle;
X+
X+ if (T410X_angle == 0) {
X+ (void) T410X_move(x, y-T410XVCHAR/2+6);
X+ (void) fprintf(outfile, "\033MR00");
X+ } else {
X+ (void) T410X_move(x+T410XHCHAR/2-6, y);
X+ (void) fprintf(outfile, "\033MRE:0");
X+ }
X+ (void) fprintf(outfile, "\033LT");
X+ (void) T410X_encode_int(strlen(str));
X+ (void) fputs(str, outfile);
X+ (void) fflush(outfile);
X+ }
X+
X+ T410X_text_angle(ang)
X+ int ang;
X+ {
X+ extern int T410X_angle;
X+
X+ T410X_angle = ang;
X+ return(TRUE);
X+ }
X+
X+ /* These last two routines are based on fortran code found in the
X+ * 4106/4107/4109/CX PROGRAMMERS manual.
X+ */
X+
X+ T410X_encode_x_y(x, y)
X+ unsigned int x, y;
X+ {
X+ static char chix=0, chiy=0, cloy=0, ceb=0;
X+
X+ register unsigned int hix, lox, hiy, loy, eb, lx, ly;
X+
X+ lx = (x <= T410XXMAX) ? x : T410XXMAX;
X+ ly = (y <= T410XYMAX) ? y : T410XYMAX;
X+
X+ hix = lx/128 + 32;
X+ lox = (lx/4)%32 + 64;
X+ hiy = ly/128 + 32;
X+ loy = (ly/4)%32 + 96;
X+ eb = (ly%4)*4 + lx%4 + 96;
X+
X+ if (chiy != hiy) (void) putc(hiy, outfile);
X+ if (ceb != eb) (void) putc(eb, outfile);
X+ if ((cloy!=loy) || (ceb!=eb) || (chix!=hix)) (void) putc(loy, outfile);
X+ if (chix != hix) (void) putc(hix, outfile);
X+ (void) putc(lox, outfile);
X+
X+ chix = hix;
X+ chiy = hiy;
X+ cloy = loy;
X+ ceb = eb;
X+ }
X+
X+
X+ T410X_encode_int(number)
X+ int number;
X+ {
X+ register unsigned int mag, hi1, hi2, lo;
X+
X+ mag = abs(number);
X+
X+ hi1 = mag/1024 + 64;
X+ hi2 = (mag/16)%64 + 64;
X+ lo = mag%16 + 32;
X+
X+ if (number >= 0) lo += 16;
X+
X+ if (hi1 != 64) (void) putc(hi1, outfile);
X+ if ((hi2 != 64) || (hi1 != 64)) (void) putc(hi2, outfile);
X+ (void) putc(lo, outfile);
X+
X+ }
X+
X+
X+ #endif /* T410X */
Xdiff -c ./term/unixpc.trm ../patch/term/unixpc.trm
X*** ./term/unixpc.trm Tue Mar 27 09:03:15 1990
X--- ../patch/term/unixpc.trm Tue Aug 28 16:03:19 1990
X***************
X*** 122,128
X uw.uw_height = uPC_YMAX; /* 288 normal--we clobber 12 (top row)*/
X uw.uw_uflags = 1; /* Creates with no border */
X
X! IfErrOut (ioctl(0, WIOCSETD, &uw), <0, "ioctl failed on", "WIOCSETD");
X }
X
X
X
X--- 122,128 -----
X uw.uw_height = uPC_YMAX; /* 288 normal--we clobber 12 (top row)*/
X uw.uw_uflags = 1; /* Creates with no border */
X
X! IfErrOut (ioctl(1, WIOCSETD, &uw), <0, "ioctl failed on", "WIOCSETD");
X }
X
X
X***************
X*** 144,150
X printf ("\033[25;1H");
X
X uPC_ur.ur_dstop = DSTSRC; /* replace (clear screen). */
X! IfErrOut (ioctl(0, WIOCRASTOP, &uPC_ur), <0,
X "ioctl failed", "WIOCRASTOP");
X uPC_ur.ur_dstop = DSTOR; /* Or in (show text) */
X }
X
X--- 144,150 -----
X printf ("\033[25;1H");
X
X uPC_ur.ur_dstop = DSTSRC; /* replace (clear screen). */
X! IfErrOut (ioctl(1, WIOCRASTOP, &uPC_ur), <0,
X "ioctl failed", "WIOCRASTOP");
X uPC_ur.ur_dstop = DSTOR; /* Or in (show text) */
X }
X***************
X*** 154,160
X {
X /* This routine will flush the display. */
X
X! IfErrOut (ioctl(0, WIOCRASTOP, &uPC_ur), <0,
X "ioctl failed", "WIOCRASTOP");
X }
X
X
X--- 154,160 -----
X {
X /* This routine will flush the display. */
X
X! IfErrOut (ioctl(1, WIOCRASTOP, &uPC_ur), <0,
X "ioctl failed", "WIOCRASTOP");
X }
X
X***************
X*** 522,528
X struct utdata ut;
X
X /* Reset the window to the right size. */
X! ioctl(0, WIOCSETD, &wreset); /* 0, not wncur here! */
X
X /* Scroll the screen once. (avoids typing over the same line) */
X fprintf (stderr, "\n");
X
X--- 522,528 -----
X struct utdata ut;
X
X /* Reset the window to the right size. */
X! ioctl(1, WIOCSETD, &wreset); /* 0, not wncur here! */
X
X /* Scroll the screen once. (avoids typing over the same line) */
X fprintf (stderr, "\n");
Xdiff -c ./term/x11.trm ../patch/term/x11.trm
X*** ./term/x11.trm Thu Sep 6 09:24:44 1990
X--- ../patch/term/x11.trm Tue Sep 4 00:50:32 1990
X***************
X*** 0
X
X--- 1,77 -----
X+ /*
X+ * x11.trm --- inboard terminal driver for X11
X+ */
X+
X+ #define X11_XMAX 4096
X+ #define X11_YMAX 4096
X+
X+ /* approximations for typical font/screen sizes */
X+ #define X11_VCHAR (X11_YMAX/25)
X+ #define X11_HCHAR (X11_XMAX/100)
X+ #define X11_VTIC (X11_YMAX/100)
X+ #define X11_HTIC (X11_XMAX/150)
X+
X+ #define X11_nopts 22
X+ char X11_opts[X11_nopts][20] = {
X+ "-iconic", "-rv", "-reverse", "+rv", "-synchronous",
X+ "-display", "-geometry", "-bg", "-background", "-bd", "-bordercolor", "-bw",
X+ "-borderwidth", "-fg", "-foreground", "-fn", "-font", "-name",
X+ "-selectionTimeout", "-title", "-xnllanguage", "-xrm"
X+ };
X+ int X11_optarg[X11_nopts] = {
X+ 0, 0, 0, 0, 0,
X+ 1, 1, 1, 1, 1, 1, 1,
X+ 1, 1, 1, 1, 1, 1,
X+ 1, 1, 1, 1
X+ };
X+
X+ FILE *X11_pipe, *popen();
X+ char X11_command[1024]= "gnuplot_x11 -name gnuplot";
X+
X+
X+ /* X11_args - scan gnuplot command line for standard X Toolkit options */
X+
X+ X11_args(argc, argv) int argc; char *argv[]; {
X+ int nx11 = 0, n;
X+
X+ while(++argv, --argc > 0) {
X+ for (n=0; n<X11_nopts; n++) {
X+ if (!strcmp(*argv, X11_opts[n])) {
X+ strcat(X11_command, " ");
X+ strcat(X11_command, *argv);
X+ if (X11_optarg[n]) {
X+ if (--argc <= 0) return(nx11);
X+ strcat(X11_command, " \"");
X+ strcat(X11_command, *++argv);
X+ strcat(X11_command, "\"");
X+ nx11++;
X+ }
X+ nx11++; break;
X+ }
X+ }
X+ if (n == X11_nopts) break;
X+ }
X+ return(nx11);
X+ }
X+
X+ X11_init() { X11_pipe = popen(X11_command, "w"); }
X+
X+ X11_reset() { fprintf(X11_pipe, "R\n"); fflush(X11_pipe); }
X+
X+ X11_text() { fprintf(X11_pipe, "E\n"); fflush(X11_pipe); }
X+
X+ X11_graphics() { fprintf(X11_pipe, "G\n"); }
X+
X+ X11_move(x,y) unsigned int x,y; { fprintf(X11_pipe, "M%04d%04d\n", x, y); }
X+
X+ X11_vector(x,y) unsigned int x,y; { fprintf(X11_pipe, "V%04d%04d\n", x, y); }
X+
X+ X11_linetype(lt) int lt; { fprintf(X11_pipe, "L%04d\n", lt); }
X+
X+ X11_put_text(x,y,str) unsigned int x,y; char str[]; {
X+ fprintf(X11_pipe, "T%04d%04d%s\n", x, y, str);
X+ }
X+ X11_justify_text(mode) enum JUSTIFY mode; {
X+ fprintf(X11_pipe, "J%04d\n", mode);
X+ return(TRUE);
X+ }
X*** ./term.h Wed Aug 29 12:15:55 1990
X--- ../patch1/term.h Tue Sep 18 14:40:02 1990
X***************
X*** 0
X
X--- 1,86 -----
X+ /* GNUPLOT - term.h */
X+ /*
X+ * Copyright (C) 1986, 1987, 1990 Thomas Williams, Colin Kelley
X+ *
X+ * Permission to use, copy, and distribute this software and its
X+ * documentation for any purpose with or without fee is hereby granted,
X+ * provided that the above copyright notice appear in all copies and
X+ * that both that copyright notice and this permission notice appear
X+ * in supporting documentation.
X+ *
X+ * Permission to modify the software is granted, but not the right to
X+ * distribute the modified code. Modifications are to be distributed
X+ * as patches to released version.
X+ *
X+ * This software is provided "as is" without express or implied warranty.
X+ *
X+ *
X+ * AUTHORS
X+ *
X+ * Original Software:
X+ * Thomas Williams, Colin Kelley.
X+ *
X+ * Gnuplot 2.0 additions:
X+ * Russell Lang, Dave Kotz, John Campbell.
X+ *
X+ * send your comments or suggestions to (pixar!info-gnuplot at sun.com).
X+ *
X+ **************************************
X+ * term.h: terminal support definitions
X+ * Edit this file depending on the set of terminals you wish to support.
X+ * Comment out the terminal types that you don't want or don't have, and
X+ * uncomment those that you want included. Be aware that some terminal
X+ * types (eg, SUN, UNIXPLOT) will require changes in the makefile
X+ * LIBS definition.
X+ */
X+
X+ /* These terminals are not relevant for MSDOS */
X+ #ifndef MSDOS
X+
X+ #define AED /* AED 512 and AED 767 */
X+ #define BITGRAPH /* BBN BitGraph */
X+ #define HPLJET /* HP Laserjet */
X+ /* #define IRIS4D /* IRIS4D series computer */
X+ #define KERMIT /* MS-Kermit Tektronix 4010 emulator */
X+ /* #define FIG /* Fig graphics language (requires object.h from TransFig) */
X+ #define REGIS /* ReGis graphics (vt125, vt220, vt240, Gigis...) */
X+ #define SELANAR /* Selanar */
X+ /* #define SUN /* Sun Microsystems Workstation */
X+ #define T410X /* Tektronix 4106, 4107, 4109 and 420x terminals */
X+ #define TEK /* Tektronix 4010, and probably others */
X+ /* #define UNIXPC /* unixpc (ATT 3b1 or ATT 7300) */
X+ /* #define UNIXPLOT /* unixplot */
X+ /* #define X11 /* X11R4 window system */
X+
X+ #endif
X+
X+ /* These terminals can be used on any system */
X+ #define DXY800A /* Roland DXY800A plotter */
X+ #define EEPIC /* EEPIC-extended LaTeX driver, for EEPIC users */
X+ #define EMTEX /* LATEX picture environment with EMTEX specials */
X+ #define EPS60 /* Epson-style 60-dot per inch printers */
X+ #define EPSON /* Epson LX-800, Star NL-10, NX-1000 and lots of others */
X+ #define HP2648 /* HP2648, HP2647 */
X+ #define HP26 /* HP2623A and maybe others */
X+ #define HP75 /* HP7580, and probably other HPs */
X+ #define HPGL /* HP7475, HP7220 plotters, and (hopefully) lots of others */
X+ #define IMAGEN /* Imagen laser printers (300dpi) (requires -Iterm also) */
X+ #define LATEX /* LATEX picture environment */
X+ #define NEC /* NEC CP6 pinwriter printer */
X+ #define POSTSCRIPT /* Postscript */
X+ #define PROPRINTER /* IBM Proprinter */
X+ #define QMS /* QMS/QUIC laserprinter (Talaris 1200 and others) */
X+ #define STARC /* Star Color Printer */
X+ #define TANDY60 /* Tandy DMP-130 series 60-dot per inch graphics */
X+ #define V384 /* Vectrix 384 and tandy color printer */
X+
X+ /* These are for MSDOS only */
X+ #ifdef MSDOS
X+ #ifdef __TURBOC__
X+ #define ATT6300 /* AT&T 6300 graphics */
X+ #else
X+ #define ATT6300 /* AT&T 6300 graphics */
X+ #define CORONA /* Corona graphics 325 */
X+ #define HERCULES /* IBM PC/Clone with Hercules graphics board */
X+ #endif
X+ #endif
X*** ./term.c Tue Mar 27 09:02:05 1990
X--- ../patch1/term.c Thu Sep 6 09:20:17 1990
X***************
X*** 29,34
X
X #include <stdio.h>
X #include "plot.h"
X
X /* for use by all drivers */
X #define sign(x) ((x) >= 0 ? 1 : -1)
X
X--- 29,35 -----
X
X #include <stdio.h>
X #include "plot.h"
X+ #include "term.h"
X
X /* for use by all drivers */
X #define sign(x) ((x) >= 0 ? 1 : -1)
X***************
X*** 242,247
X #endif
X #endif
X
X #ifdef EPSON
X #define FONT57
X #endif
X
X--- 243,266 -----
X #endif
X #endif
X
X+ #ifdef STARC
X+ #ifndef EPSON
X+ #define EPSON
X+ #endif
X+ #endif
X+
X+ #ifdef TANDY60
X+ #ifndef EPS60
X+ #define EPS60
X+ #endif
X+ #endif
X+
X+ #ifdef EPS60
X+ #ifndef EPSON
X+ #define EPSON
X+ #endif
X+ #endif
X+
X #ifdef EPSON
X #define FONT57
X #endif
X***************
X*** 282,287
X # endif
X #endif
X
X #ifdef TEK /* all TEK types, TEK, BBN, SELANAR, KERMIT */
X #include "term/tek.trm"
X #endif
X
X--- 301,310 -----
X # endif
X #endif
X
X+ #ifdef T410X /* Tektronix 4106, 4107, 4109 and 420x terminals */
X+ #include "term/t410x.trm"
X+ #endif
X+
X #ifdef TEK /* all TEK types, TEK, BBN, SELANAR, KERMIT */
X #include "term/tek.trm"
X #endif
X***************
X*** 286,292
X #include "term/tek.trm"
X #endif
X
X! #ifdef EPSON /* all bit map types, EPSON, NEC, PROPRINTER */
X #include "term/epson.trm"
X #endif
X
X
X--- 309,315 -----
X #include "term/tek.trm"
X #endif
X
X! #ifdef EPSON /* bit map types, EPSON, NEC, PROPRINTER, STAR Color */
X #include "term/epson.trm"
X #endif
X
X***************
X*** 290,295
X #include "term/epson.trm"
X #endif
X
X #ifdef FIG /* Fig 1.4FS Interactive graphics program */
X #include "term/fig.trm"
X #endif
X
X--- 313,322 -----
X #include "term/epson.trm"
X #endif
X
X+ #ifdef EPS60 /* old-style EPSON 60-dpi */
X+ #include "term/eps60.trm"
X+ #endif
X+
X #ifdef FIG /* Fig 1.4FS Interactive graphics program */
X #include "term/fig.trm"
X #endif
X***************
X*** 305,310
X # endif
X #endif
X
X #ifdef LATEX /* LATEX type */
X #include "term/latex.trm"
X #endif
X
X--- 332,343 -----
X # endif
X #endif
X
X+ #ifdef EMTEX /* EMTEX (LATEX for PC) type */
X+ # ifndef LATEX
X+ # define LATEX
X+ # endif
X+ #endif
X+
X #ifdef LATEX /* LATEX type */
X #include "term/latex.trm"
X #endif
X***************
X*** 375,380
X #include "term/unixplot.trm"
X #endif /* UNIXPLOT */
X
X /* Dummy functions for unavailable features */
X
X /* change angle of text. 0 is horizontal left to right.
X
X--- 408,417 -----
X #include "term/unixplot.trm"
X #endif /* UNIXPLOT */
X
X+ #ifdef X11
X+ #include "term/x11.trm"
X+ #endif /* X11 */
X+
X /* Dummy functions for unavailable features */
X
X /* change angle of text. 0 is horizontal left to right.
X***************
X*** 464,469
X HERC_text, null_scale, HERC_graphics, HERC_move, HERC_vector,
X HERC_linetype, HERC_put_text, MCGA_text_angle,
X HERC_justify_text, line_and_point, do_arrow}
X #else /* TURBO */
X
X ,{"cga", "IBM PC/Clone with CGA graphics board",
X
X--- 501,514 -----
X HERC_text, null_scale, HERC_graphics, HERC_move, HERC_vector,
X HERC_linetype, HERC_put_text, MCGA_text_angle,
X HERC_justify_text, line_and_point, do_arrow}
X+ #ifdef ATT6300
X+ ,{"att", "IBM PC/Clone with AT&T 6300 graphics board",
X+ ATT_XMAX, ATT_YMAX, ATT_VCHAR, ATT_HCHAR,
X+ ATT_VTIC, ATT_HTIC, ATT_init, ATT_reset,
X+ ATT_text, null_scale, ATT_graphics, ATT_move, ATT_vector,
X+ ATT_linetype, ATT_put_text, ATT_text_angle,
X+ ATT_justify_text, line_and_point, do_arrow}
X+ #endif
X #else /* TURBO */
X
X ,{"cga", "IBM PC/Clone with CGA graphics board",
X***************
X*** 506,512
X #endif /* HERCULES */
X
X #ifdef ATT6300
X! ,{"att", "AT&T 6300 terminal ???",
X ATT_XMAX, ATT_YMAX, ATT_VCHAR, ATT_HCHAR,
X ATT_VTIC, ATT_HTIC, ATT_init, ATT_reset,
X ATT_text, null_scale, ATT_graphics, ATT_move, ATT_vector,
X
X--- 551,557 -----
X #endif /* HERCULES */
X
X #ifdef ATT6300
X! ,{"att", "AT&T PC/6300 graphics",
X ATT_XMAX, ATT_YMAX, ATT_VCHAR, ATT_HCHAR,
X ATT_VTIC, ATT_HTIC, ATT_init, ATT_reset,
X ATT_text, null_scale, ATT_graphics, ATT_move, ATT_vector,
X***************
X*** 558,563
X null_justify_text, do_point, do_arrow}
X #endif
X
X #ifdef EPSON
X ,{"epson_lx800", "Epson LX-800, Star NL-10, NX-1000 and lots of others",
X EPSONXMAX, EPSONYMAX, EPSONVCHAR, EPSONHCHAR,
X
X--- 603,636 -----
X null_justify_text, do_point, do_arrow}
X #endif
X
X+ #ifdef EEPIC
X+ ,{"eepic", "EEPIC -- extended LaTeX picture environment",
X+ EEPIC_XMAX, EEPIC_YMAX, EEPIC_VCHAR, EEPIC_HCHAR,
X+ EEPIC_VTIC, EEPIC_HTIC, EEPIC_init, EEPIC_reset,
X+ EEPIC_text, EEPIC_scale, EEPIC_graphics, EEPIC_move, EEPIC_vector,
X+ EEPIC_linetype, EEPIC_put_text, EEPIC_text_angle,
X+ EEPIC_justify_text, EEPIC_point, EEPIC_arrow}
X+ #endif
X+
X+ #ifdef EMTEX
X+
X+ ,{"emtex", "LATEX picture environment with emTeX specials",
X+ LATEX_XMAX, LATEX_YMAX, LATEX_VCHAR, LATEX_HCHAR,
X+ LATEX_VTIC, LATEX_HTIC, EMTEX_init, EMTEX_reset,
X+ EMTEX_text, LATEX_scale, LATEX_graphics, LATEX_move, LATEX_vector,
X+ LATEX_linetype, LATEX_put_text, LATEX_text_angle,
X+ LATEX_justify_text, LATEX_point, LATEX_arrow}
X+ #endif
X+
X+ #ifdef EPS60
X+ ,{"epson_60dpi", "Epson-style 60-dot per inch printers",
X+ EPS60XMAX, EPS60YMAX, EPSONVCHAR, EPSONHCHAR,
X+ EPSONVTIC, EPSONHTIC, EPS60init, EPSONreset,
X+ EPS60text, null_scale, EPSONgraphics, EPSONmove, EPSONvector,
X+ EPSONlinetype, EPSONput_text, EPSON_text_angle,
X+ null_justify_text, do_point, do_arrow}
X+ #endif
X+
X #ifdef EPSON
X ,{"epson_lx800", "Epson LX-800, Star NL-10, NX-1000 and lots of others",
X EPSONXMAX, EPSONYMAX, EPSONVCHAR, EPSONHCHAR,
X***************
X*** 675,689
X LATEX_justify_text, LATEX_point, LATEX_arrow}
X #endif
X
X- #ifdef EEPIC
X- ,{"eepic", "EEPIC -- extended LaTeX picture environment",
X- EEPIC_XMAX, EEPIC_YMAX, EEPIC_VCHAR, EEPIC_HCHAR,
X- EEPIC_VTIC, EEPIC_HTIC, EEPIC_init, EEPIC_reset,
X- EEPIC_text, EEPIC_scale, EEPIC_graphics, EEPIC_move, EEPIC_vector,
X- EEPIC_linetype, EEPIC_put_text, EEPIC_text_angle,
X- EEPIC_justify_text, EEPIC_point, EEPIC_arrow}
X- #endif
X-
X #ifdef NEC
X ,{"nec_cp6m", "NEC printer CP6 Monochrome",
X NECXMAX, NECYMAX, NECVCHAR, NECHCHAR,
X
X--- 748,753 -----
X LATEX_justify_text, LATEX_point, LATEX_arrow}
X #endif
X
X #ifdef NEC
X ,{"nec_cp6m", "NEC printer CP6 Monochrome",
X NECXMAX, NECYMAX, NECVCHAR, NECHCHAR,
X***************
X*** 769,774
X null_justify_text, line_and_point, do_arrow}
X #endif
X
X #ifdef SUN
X ,{"sun", "SunView window system",
X SUN_XMAX, SUN_YMAX, SUN_VCHAR, SUN_HCHAR,
X
X--- 833,847 -----
X null_justify_text, line_and_point, do_arrow}
X #endif
X
X+ #ifdef STARC
X+ ,{"starc", "Star Color Printer",
X+ STARCXMAX, STARCYMAX, STARCVCHAR, STARCHCHAR,
X+ STARCVTIC, STARCHTIC, STARCinit, STARCreset,
X+ STARCtext, null_scale, STARCgraphics, STARCmove, STARCvector,
X+ STARClinetype, STARCput_text, STARC_text_angle,
X+ null_justify_text, line_and_point, do_arrow}
X+ #endif
X+
X #ifdef SUN
X ,{"sun", "SunView window system",
X SUN_XMAX, SUN_YMAX, SUN_VCHAR, SUN_HCHAR,
X***************
X*** 778,783
X SUN_justify_text, line_and_point, do_arrow}
X #endif
X
X #ifdef TEK
X ,{"tek40xx", "Tektronix 4010 and others; most TEK emulators",
X TEK40XMAX, TEK40YMAX, TEK40VCHAR, TEK40HCHAR,
X
X--- 851,874 -----
X SUN_justify_text, line_and_point, do_arrow}
X #endif
X
X+ #ifdef TANDY60
X+ ,{"tandy_60dpi", "Tandy DMP-130 series 60-dot per inch graphics",
X+ EPS60XMAX, EPS60YMAX, EPSONVCHAR, EPSONHCHAR,
X+ EPSONVTIC, EPSONHTIC, EPS60init, EPSONreset,
X+ TANDY60text, null_scale, EPSONgraphics, EPSONmove, EPSONvector,
X+ EPSONlinetype, EPSONput_text, EPSON_text_angle,
X+ null_justify_text, do_point, do_arrow}
X+ #endif
X+
X+ #ifdef T410X
X+ ,{"tek410x", "Tektronix 4106, 4107, 4109 and 420X terminals",
X+ T410XXMAX, T410XYMAX, T410XVCHAR, T410XHCHAR,
X+ T410XVTIC, T410XHTIC, T410X_init, T410X_reset,
X+ T410X_text, null_scale, T410X_graphics, T410X_move, T410X_vector,
X+ T410X_linetype, T410X_put_text, T410X_text_angle,
X+ null_justify_text, T410X_point, do_arrow}
X+ #endif
X+
X #ifdef TEK
X ,{"tek40xx", "Tektronix 4010 and others; most TEK emulators",
X TEK40XMAX, TEK40YMAX, TEK40VCHAR, TEK40HCHAR,
X***************
X*** 813,818
X V384_linetype, V384_put_text, null_text_angle,
X null_justify_text, do_point, do_arrow}
X #endif
X };
X
X #define TERMCOUNT (sizeof(term_tbl)/sizeof(struct termentry))
X
X--- 904,924 -----
X V384_linetype, V384_put_text, null_text_angle,
X null_justify_text, do_point, do_arrow}
X #endif
X+
X+ #ifdef X11
X+ ,{"x11", "X11 Window System",
X+ X11_XMAX, X11_YMAX, X11_VCHAR, X11_HCHAR,
X+ X11_VTIC, X11_HTIC, X11_init, X11_reset,
X+ X11_text, null_scale, X11_graphics, X11_move, X11_vector,
X+ X11_linetype, X11_put_text, null_text_angle,
X+ X11_justify_text, line_and_point, do_arrow}
X+ ,{"X11", "X11 Window System - multi-color points",
X+ X11_XMAX, X11_YMAX, X11_VCHAR, X11_HCHAR,
X+ X11_VTIC, X11_HTIC, X11_init, X11_reset,
X+ X11_text, null_scale, X11_graphics, X11_move, X11_vector,
X+ X11_linetype, X11_put_text, null_text_angle,
X+ X11_justify_text, do_point, do_arrow}
X+ #endif
X };
X
X #define TERMCOUNT (sizeof(term_tbl)/sizeof(struct termentry))
X***************
X*** 985,990
X case 4 : term_name = "egalib";
X break;
X case 7 : term_name = "hercules";
X break;
X case 9 : term_name = "vgalib";
X break;
X
X--- 1091,1098 -----
X case 4 : term_name = "egalib";
X break;
X case 7 : term_name = "hercules";
X+ break;
X+ case 8 : term_name = "att";
X break;
X case 9 : term_name = "vgalib";
X break;
X*** ./gnuplot_x11.c Thu Sep 6 09:22:16 1990
X--- ../patch1/gnuplot_x11.c Wed Sep 5 21:25:26 1990
X***************
X*** 0
X
X--- 1,241 -----
X+ /*-----------------------------------------------------------------------------
X+ *
X+ * gnuplot_x11 - X11 outboard terminal driver for gnuplot 2
X+ *
X+ * Requires installation of companion inboard x11 driver in gnuplot/term.c
X+ *
X+ * Acknowledgements:
X+ * Chris Peterson (MIT) - original Xlib gnuplot support (and Xaw examples)
X+ * Dana Chee (Bellcore) - mods to original support for gnuplot 2.0
X+ * Arthur Smith (Cornell) - graphical-label-widget idea (xplot)
X+ *
X+ * This code is provided as is and with no warranties of any kind.
X+ *
X+ * Ed Kubaitis
X+ * Computing Services Office - University of Illinois, Urbana
X+ *---------------------------------------------------------------------------*/
X+
X+ #include <stdio.h>
X+ #include <X11/Intrinsic.h>
X+ #include <X11/StringDefs.h>
X+ #include <Cardinals.h> /* use -Idir for location on your system */
X+ #include <Label.h> /* use -Idir for location on your system */
X+
X+
X+ #define Color (D>1)
X+ #define Ncolors 11
X+ unsigned long colors[Ncolors];
X+ char color_keys[Ncolors][30] = { "text", "border", "axis",
X+ "line1", "line2", "line3", "line4", "line5", "line6", "line7", "line8" };
X+
X+ char color_values[Ncolors][30] = { "black", "black", "black",
X+ "red", "green", "blue", "magenta", "cyan", "sienna", "orange", "coral" };
X+
X+ char dashes[10][5] = { {0}, {1,6,0},
X+ {0}, {4,2,0}, {1,3,0}, {4,4,0}, {1,5,0}, {4,4,4,1,0}, {4,2,0}, {1,3,0}
X+ };
X+
X+ Widget w_top, w_label;
X+ Window win; Display *dpy;
X+ Pixmap pixmap; GC gc = (GC)NULL;
X+ XFontStruct *font;
X+ unsigned long fg, bg;
X+ Dimension W = 640 , H = 450; int D;
X+ Arg args[5];
X+ static void gnuplot(), resize();
X+
X+ int cx=0, cy=0, vchar, nc = 0;
X+ double xscale, yscale;
X+ #define X(x) (Dimension) (x * xscale)
X+ #define Y(y) (Dimension) ((4095-y) * yscale)
X+ enum JUSTIFY { LEFT, CENTRE, RIGHT } jmode;
X+ #define Nbuf 1024
X+ char buf[Nbuf];
X+ String *commands = NULL;
X+
X+ /*-----------------------------------------------------------------------------
X+ * main program - fire up application and callbacks
X+ *---------------------------------------------------------------------------*/
X+
X+ main(argc, argv) int argc; char *argv[]; {
X+
X+ /* initialize application */
X+ w_top = XtInitialize("gnuplot", "Gnuplot", NULL, 0, &argc, argv);
X+ XtSetArg(args[0], XtNwidth, W);
X+ XtSetArg(args[1], XtNheight, H);
X+ w_label = XtCreateManagedWidget("", labelWidgetClass, w_top, args, TWO);
X+ XtRealizeWidget(w_top);
X+
X+ /* extract needed information */
X+ dpy = XtDisplay(w_top); win = XtWindow(w_top); D = DisplayPlanes(dpy,0);
X+ if (Color) {
X+ char option[20], *value;
X+ XColor used, exact;
X+ int n;
X+
X+ for(n=0; n<Ncolors; n++) {
X+ strcpy(option, color_keys[n]);
X+ strcat(option, "Color");
X+ value = XGetDefault(dpy, "gnuplot", option);
X+ if (!value) { value = color_values[n]; }
X+ if (XAllocNamedColor(dpy, DefaultColormap(dpy,0), value, &used,&exact))
X+ colors[n] = used.pixel;
X+ else {
X+ fprintf(stderr, "gnuplot: cannot allocate %s:%s\n", option, value);
X+ fprintf(stderr, "gnuplot: assuming %s:black\n", option);
X+ colors[n] = BlackPixel(dpy,0);
X+ }
X+ }
X+ }
X+ XtSetArg(args[0], XtNfont, &font);
X+ XtSetArg(args[1], XtNforeground, &fg);
X+ XtSetArg(args[2], XtNbackground, &bg);
X+ XtSetArg(args[3], XtNwidth, &W);
X+ XtSetArg(args[4], XtNheight,&H);
X+ XtGetValues(w_label, args, FIVE);
X+ vchar = (font->ascent + font->descent);
X+
X+ /* add callbacks on input-from-gnuplot-on-stdin & window-resized */
X+ XtAddInput(0, XtInputReadMask, gnuplot, NULL);
X+ XtAddEventHandler(w_label, StructureNotifyMask, FALSE, resize, NULL);
X+
X+ XtMainLoop();
X+ }
X+
X+ /*-----------------------------------------------------------------------------
X+ * display - display accumulated commands from inboard driver
X+ *---------------------------------------------------------------------------*/
X+
X+ display() {
X+ int n, x, y, sw, sl, lt, width, type;
X+ char *buf, *str;
X+
X+ /* set scaling factor between internal driver & window geometry */
X+ xscale = (double)W / 4096.; yscale = (double)H / 4096.;
X+
X+ /* return old pixmap & GC, if any */
X+ if (gc) { XFreeGC(dpy, gc); XFreePixmap(dpy, pixmap); }
X+
X+ /* create new pixmap & GC */
X+ pixmap = XCreatePixmap(dpy, DefaultRootWindow(dpy), W, H, D);
X+ gc = XCreateGC(dpy, pixmap, 0, NULL);
X+ XSetFont(dpy, gc, font->fid);
X+
X+ /* connect new pixmap to label widget */
X+ XtSetArg(args[0], XtNbitmap, pixmap);
X+ XtSetValues(w_label, args, ONE);
X+
X+ /* erase pixmap */
X+ if (Color) {
X+ XSetForeground(dpy, gc, bg);
X+ XFillRectangle(dpy, pixmap, gc, 0, 0, W, H);
X+ XSetForeground(dpy, gc, fg);
X+ XSetBackground(dpy, gc, bg);
X+ }
X+ else {
X+ XSetFunction(dpy, gc, GXxor);
X+ XCopyArea(dpy, pixmap, pixmap, gc, 0, 0, W, H, 0, 0);
X+ XSetFunction(dpy, gc, GXcopyInverted);
X+ }
X+
X+ /* loop over accumulated commands from inboard driver */
X+ for (n=0; n<nc; n++) {
X+ buf = commands[n];
X+
X+ /* X11_vector(x,y) - draw vector */
X+ if (*buf == 'V') {
X+ sscanf(buf, "V%4d%4d", &x, &y);
X+ XDrawLine(dpy, pixmap, gc, X(cx), Y(cy), X(x), Y(y));
X+ cx = x; cy = y;
X+ }
X+
X+ /* X11_move(x,y) - move */
X+ else if (*buf == 'M')
X+ sscanf(buf, "M%4d%4d", &cx, &cy);
X+
X+ /* X11_put_text(x,y,str) - draw text */
X+ else if (*buf == 'T') {
X+ sscanf(buf, "T%4d%4d", &x, &y);
X+ str = buf + 9; sl = strlen(str) - 1;
X+ sw = XTextWidth(font, str, sl);
X+ switch(jmode) {
X+ case LEFT: sw = 0; break;
X+ case CENTRE: sw = -sw/2; break;
X+ case RIGHT: sw = -sw; break;
X+ }
X+ if (!Color)
X+ XDrawString(dpy, pixmap, gc, X(x)+sw, Y(y)+vchar/3, str, sl);
X+ else {
X+ XSetForeground(dpy, gc, colors[0]);
X+ XDrawString(dpy, pixmap, gc, X(x)+sw, Y(y)+vchar/3, str, sl);
X+ XSetForeground(dpy, gc, colors[lt+1]);
X+ }
X+ }
X+
X+ /* X11_justify_text(mode) - set text justification mode */
X+ else if (*buf == 'J')
X+ sscanf(buf, "J%4d", &jmode);
X+
X+ /* X11_linetype(type) - set line type */
X+ else if (*buf == 'L') {
X+ sscanf(buf, "L%4d", <);
X+ lt = (lt+2)%10;
X+ width = (lt == 0) ? 2 : 0;
X+ if (Color) {
X+ if (lt != 1)
X+ type = LineSolid;
X+ else {
X+ type = LineOnOffDash;
X+ XSetDashes(dpy, gc, 0, dashes[lt], strlen(dashes[lt]));
X+ }
X+ XSetForeground(dpy, gc, colors[lt+1]);
X+ }
X+ else {
X+ type = (lt == 0 || lt == 2) ? LineSolid : LineOnOffDash;
X+ if (dashes[lt][0])
X+ XSetDashes(dpy, gc, 0, dashes[lt], strlen(dashes[lt]));
X+ }
X+ XSetLineAttributes( dpy,gc, width, type, CapButt, JoinBevel);
X+ }
X+ }
X+
X+ /* trigger expose events to display pixmap */
X+ XClearArea(dpy, win, 0, 0, 0, 0, True);
X+ }
X+
X+ /*-----------------------------------------------------------------------------
X+ * gnuplot - Xt callback on input from gnuplot inboard X11 driver
X+ *---------------------------------------------------------------------------*/
X+
X+ static void
X+ gnuplot(cd, s, id) char *cd; int *s; XtInputId *id; {
X+
X+ while (fgets(buf, Nbuf, stdin)) {
X+ if (*buf == 'G') { /* enter graphics mode */
X+ if (commands) {
X+ int n;
X+ for (n=0; n<nc; n++) XtFree(commands[n]);
X+ XtFree(commands);
X+ }
X+ commands = NULL; nc = 0;
X+ }
X+ else if (*buf == 'E') { display(); break; } /* leave graphics mode */
X+ else if (*buf == 'R') { exit(0); } /* leave X11/x11 mode */
X+ else {
X+ commands = (String *)XtRealloc(commands, (nc+1) * sizeof(String));
X+ commands[nc++] = XtNewString(buf);
X+ }
X+ }
X+ if (feof(stdin) || ferror(stdin)) exit(0);
X+ }
X+
X+ /*-----------------------------------------------------------------------------
X+ * resize - Xt callback when window resized
X+ *---------------------------------------------------------------------------*/
X+
X+ static void
X+ resize(w, cd, e) Widget w; char *cd; XConfigureEvent *e; {
X+ if (e->type != ConfigureNotify) return;
X+ W = e->width; H = e->height;
X+ display();
X+ }
END_OF_patch1c
if test 73914 -ne `wc -c <patch1c`; then
echo shar: \"patch1c\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of shell archive.
exit 0
More information about the Comp.sources.misc
mailing list