Annotation of OpenXM_contrib/gnuplot/term/rgip.trm, Revision 1.1
1.1 ! maekawa 1: /*
! 2: * $Id: rgip.trm,v 1.16 1998/04/14 00:18:06 drd Exp $
! 3: */
! 4:
! 5: /* GNUPLOT - rgip.trm Uniplex graphics metafile */
! 6:
! 7: /*[
! 8: * Copyright 1990 - 1993, 1998
! 9: *
! 10: * Permission to use, copy, and distribute this software and its
! 11: * documentation for any purpose with or without fee is hereby granted,
! 12: * provided that the above copyright notice appear in all copies and
! 13: * that both that copyright notice and this permission notice appear
! 14: * in supporting documentation.
! 15: *
! 16: * Permission to modify the software is granted, but not the right to
! 17: * distribute the complete modified source code. Modifications are to
! 18: * be distributed as patches to the released version. Permission to
! 19: * distribute binaries produced by compiling modified sources is granted,
! 20: * provided you
! 21: * 1. distribute the corresponding source modifications from the
! 22: * released version in the form of a patch file along with the binaries,
! 23: * 2. add special version identification to distinguish your version
! 24: * in addition to the base release version number,
! 25: * 3. provide your name and address as the primary contact for the
! 26: * support of your modified version, and
! 27: * 4. retain our contact information in regard to use of the base
! 28: * software.
! 29: * Permission to distribute the released version of the source code along
! 30: * with corresponding source modifications in the form of a patch file is
! 31: * granted with same provisions 2 through 4 for binary distributions.
! 32: *
! 33: * This software is provided "as is" without express or implied warranty
! 34: * to the extent permitted by applicable law.
! 35: ]*/
! 36:
! 37: /*
! 38: * This file is included by ../term.c.
! 39: *
! 40: * This terminal driver supports:
! 41: * RGIP metafile
! 42: *
! 43: * AUTHORS
! 44: * Hans Olav Eggestad
! 45: *
! 46: * send your comments or suggestions to (info-gnuplot@dartmouth.edu).
! 47: *
! 48: */
! 49:
! 50: /*
! 51: * Original for direct RGIP Metafile output.
! 52: */
! 53: /*
! 54: * Max pixels for X and Y in one window is 10000.
! 55: */
! 56: /*
! 57: * adapted to the new terminal layout by Stefan Bodewig (Dec. 1995)
! 58: */
! 59:
! 60: #include "driver.h"
! 61:
! 62: #ifdef TERM_REGISTER
! 63: register_term(rgip)
! 64: register_term(uniplex)
! 65: #endif
! 66:
! 67: #ifdef TERM_PROTO
! 68: TERM_PUBLIC void RGIP_init __PROTO((void));
! 69: TERM_PUBLIC void RGIP_graphics __PROTO((void));
! 70: TERM_PUBLIC void RGIP_text __PROTO((void));
! 71: TERM_PUBLIC void RGIP_linetype __PROTO((int lt));
! 72: TERM_PUBLIC void RGIP_move __PROTO((unsigned int x, unsigned int y));
! 73: TERM_PUBLIC void RGIP_vector __PROTO((unsigned int ux, unsigned int uy));
! 74: TERM_PUBLIC int RGIP_text_angle __PROTO((int ang));
! 75: TERM_PUBLIC int RGIP_justify_text __PROTO((enum JUSTIFY mode));
! 76: TERM_PUBLIC void RGIP_put_text __PROTO((unsigned int x, unsigned int y, char *str));
! 77: TERM_PUBLIC void RGIP_reset __PROTO((void));
! 78: TERM_PUBLIC void RGIP_do_point __PROTO((unsigned int x, unsigned int y, int number));
! 79: TERM_PUBLIC void RGIP_options __PROTO((void));
! 80: #define RGIP_X_MAX 10000
! 81: #define RGIP_Y_MAX 6700
! 82:
! 83: #define RGIP_FONTSIZE 1
! 84: #define RGIP_SC (300)
! 85: #define RGIP_XMAX 9900
! 86: #define RGIP_YMAX 6600
! 87: #define RGIP_HTIC (100)
! 88: #define RGIP_VTIC (100)
! 89: #define RGIP_VCHAR (RGIP_FONTSIZE*RGIP_SC)
! 90: #define RGIP_HCHAR (RGIP_VCHAR*3/7)
! 91: #endif /* TERM_PROTO */
! 92:
! 93: #ifndef TERM_PROTO_ONLY
! 94: #ifdef TERM_BODY
! 95:
! 96:
! 97: void RGIP_write_poly __PROTO((void));
! 98: static unsigned char *RGIP_cvts __PROTO((unsigned char *str, int *lcnt));
! 99: /* static void RGIP_setfont __PROTO((int sz)); */
! 100:
! 101: #include <sys/types.h>
! 102: #include <sys/stat.h>
! 103:
! 104: #define RGIPDOTS 0
! 105: #define RGIPMARK 1
! 106: #define RGIPTEXT 2
! 107: #define RGIPLINE 3
! 108: #define RGIPPOLY 4
! 109: #define RGIP_MAX_POLY 250
! 110: static char *RGIP_Obj[6] =
! 111: {"DOTS", "MARK", "TEXT", "LINE", "POLY"};
! 112:
! 113: /*
! 114: * RGIP fontsises range from 1 to 8
! 115: */
! 116:
! 117: #define RGIP_FACES 3
! 118: #define RGIP_FSTYLES 4
! 119: #define RGIP_FSIZES 8
! 120: #define RGIP_HELVETICA 0
! 121: #define RGIP_TIMES 1
! 122: #define RGIP_COURIER 2
! 123: #define RGIP_LINE_WIDTHS 8 /* future, currently invisible and visible 0
! 124: and 1 */
! 125: #define RGIP_LINE_TYPES 8
! 126: #define RGIP_COLORS 16
! 127: #define RGIP_POINT_TYPES 8
! 128:
! 129:
! 130:
! 131:
! 132: static int RGIP_orgX; /* absolute-pixel-ORIgin of graph. */
! 133: static int RGIP_orgY;
! 134: static int RGIP_orgx; /* absolute-pixel-ORIgin of current plot. */
! 135: static int RGIP_orgy;
! 136: static int RGIP_posx; /* current drawing position (lines). */
! 137: static int RGIP_posy;
! 138: /* static int RGIP_inplot; */
! 139: static int RGIP_xmax = RGIP_XMAX; /* width of graph in pixels. */
! 140: static int RGIP_ymax = RGIP_YMAX; /* height of graph in pixels. */
! 141: static int RGIP_winx = RGIP_XMAX; /* width of graph in pixels. */
! 142: static int RGIP_winy = RGIP_YMAX; /* height of graph in pixels. */
! 143: /* static int RGIP_blofs; */ /* BaseLine OFfSet from bounding box.*/
! 144: static int RGIP_angle = 0; /* 0 for horizontal text, 90 for vertical */
! 145: static int RGIP_portrait = 0; /* 0 for horizontal text, 90 for vertical */
! 146: static enum JUSTIFY RGIP_justify = LEFT; /* left/center/right */
! 147: static int RGIP_fface = 2; /* Times */
! 148: static int RGIP_ftype = 1; /* style roman */
! 149: static int RGIP_fontsize = RGIP_FONTSIZE; /* */
! 150: static int RGIP_tcol = 7; /* text color */
! 151: static int RGIP_lsty = 1; /* line style */
! 152: static int RGIP_lcol = 7; /* line color */
! 153: static int RGIP_lwid = 1; /* line width */
! 154: static int RGIP_fsty = 8; /* fill style */
! 155: static int RGIP_fcol = 8; /* fill color */
! 156: static int RGIP_mcol = 7; /* marker color */
! 157: static int RGIP_msty = 1; /* marker style */
! 158: static int RGIP_msize = 1; /* marker size */
! 159:
! 160: static int RGIP_win_horiz = 1;
! 161: static int RGIP_win_verti = 1;
! 162: static int RGIP_plot_nr = 0;
! 163:
! 164: unsigned int RGIP_vecpos;
! 165: unsigned int RGIP_xvector[RGIP_MAX_POLY];
! 166: unsigned int RGIP_yvector[RGIP_MAX_POLY];
! 167: static unsigned char *RGIP_cvts();
! 168:
! 169:
! 170: TERM_PUBLIC void RGIP_init()
! 171: {
! 172: register struct termentry *t = term;
! 173:
! 174: RGIP_posx = RGIP_posy = 0;
! 175:
! 176: if (RGIP_portrait) {
! 177: RGIP_orgX = (RGIP_Y_MAX - RGIP_YMAX) / 2;
! 178: RGIP_orgY = (RGIP_X_MAX - RGIP_XMAX) / 2;
! 179: RGIP_xmax = RGIP_winx = (int) (RGIP_YMAX / RGIP_win_horiz);
! 180: RGIP_ymax = RGIP_winy = (int) (RGIP_XMAX / RGIP_win_verti);
! 181: } else {
! 182: RGIP_orgX = (RGIP_X_MAX - RGIP_XMAX) / 2;
! 183: RGIP_orgY = (RGIP_Y_MAX - RGIP_YMAX) / 2;
! 184: RGIP_xmax = RGIP_winx = (int) (RGIP_XMAX / RGIP_win_horiz);
! 185: RGIP_ymax = RGIP_winy = (int) (RGIP_YMAX / RGIP_win_verti);
! 186: }
! 187:
! 188: t->xmax = (unsigned int) (RGIP_xmax);
! 189: t->ymax = (unsigned int) (RGIP_ymax);
! 190:
! 191: RGIP_vecpos = 0;
! 192: }
! 193:
! 194: TERM_PUBLIC void RGIP_graphics()
! 195: {
! 196: static int Gnr = 0;
! 197: struct stat buf;
! 198: unsigned char *p, fn[128];
! 199:
! 200: int tmpx, tmpy;
! 201: /* int xoff, yoff; */
! 202:
! 203: if (RGIP_vecpos) {
! 204: RGIP_write_poly();
! 205: }
! 206: if (!Gnr || RGIP_plot_nr >= (RGIP_win_horiz * RGIP_win_verti)) {
! 207: fstat(fileno(gpoutfile), &buf);
! 208: if (S_ISREG(buf.st_mode)) {
! 209: if (outstr && (p = (unsigned char *) strchr(outstr, 'X'))) {
! 210: /* substitute X with graphnr */
! 211: if (!Gnr) { /* delete the base file */
! 212: unlink(outstr); /* should we close it first ? ? ? */
! 213: } else {
! 214: fputs("%RI_GROUPEND\n", gpoutfile);
! 215: fclose(gpoutfile);
! 216: }
! 217: *p = NUL;
! 218: sprintf(fn, "%s%1d%s", outstr, ++Gnr, p + 1);
! 219: if ((gpoutfile = fopen(fn, "w")) == (FILE *) NULL) {
! 220: os_error("cannot reopen file with binary type; output unknown",
! 221: NO_CARET);
! 222: }
! 223: *p = 'X'; /* put back X */
! 224: }
! 225: }
! 226: fprintf(gpoutfile, "\
! 227: %RGIP_METAFILE: 1.0a\n\
! 228: %RI_GROUPSTART\n\
! 229: 0 0 %d %d SetWindow\n\
! 230: 100 100 %d %d 10 1 7 1 8 BOX\n",
! 231: (RGIP_portrait) ? RGIP_Y_MAX : RGIP_X_MAX,
! 232: (RGIP_portrait) ? RGIP_X_MAX : RGIP_Y_MAX,
! 233: (RGIP_portrait) ? RGIP_YMAX : RGIP_XMAX,
! 234: (RGIP_portrait) ? RGIP_XMAX : RGIP_YMAX);
! 235: RGIP_plot_nr = 0;
! 236: } else {
! 237: fputs("%RI_GROUPEND\n", gpoutfile);
! 238: }
! 239: fputs("%RI_GROUPSTART\n", gpoutfile);
! 240: RGIP_plot_nr++;
! 241: /* Gnr++; */
! 242: tmpx = RGIP_orgX + ((RGIP_plot_nr - 1) % RGIP_win_horiz) * RGIP_winx;
! 243: tmpy = RGIP_orgY + ((RGIP_win_verti - 1) - (int) ((RGIP_plot_nr - 1) / RGIP_win_horiz)) * RGIP_winy;
! 244: RGIP_orgx = tmpx + (int) ((RGIP_winx - RGIP_xmax) / 2);
! 245: RGIP_orgy = tmpy + (int) ((RGIP_winy - RGIP_ymax) / 2);
! 246:
! 247:
! 248: /* RGIP_linetype(-1); */
! 249: }
! 250:
! 251: TERM_PUBLIC void RGIP_text()
! 252: {
! 253: }
! 254:
! 255: TERM_PUBLIC void RGIP_linetype(lt)
! 256: int lt;
! 257: {
! 258: /* int pen, pattern; */
! 259:
! 260: if (RGIP_vecpos) {
! 261: RGIP_write_poly();
! 262: }
! 263: /* -2: axis
! 264: * -1: border
! 265: * 0: arrow
! 266: * 1-7: graph
! 267: */
! 268: if (lt == -2) {
! 269: lt = 1;
! 270: RGIP_lwid = 5;
! 271: } else if (lt == -1) {
! 272: lt = 5;
! 273: RGIP_lwid = 2;
! 274: } else {
! 275: RGIP_lwid = (int) (lt / RGIP_LINE_TYPES);
! 276: if (RGIP_lwid < 1)
! 277: RGIP_lwid = 1;
! 278: RGIP_lwid *= 2;
! 279: lt = (lt % RGIP_LINE_TYPES) + 1;
! 280: }
! 281: fputs("%RI_GROUPEND\n\
! 282: %RI_GROUPSTART\n", gpoutfile);
! 283:
! 284: /* RGIP_lsty = (lt == 0 || lt == 2) ? 1 : lt; */
! 285:
! 286: RGIP_lsty = lt;
! 287: }
! 288:
! 289:
! 290: TERM_PUBLIC void RGIP_move(x, y)
! 291: unsigned int x, y;
! 292: {
! 293: /*
! 294: fputs("%RI_GROUPEND\n", gpoutfile);
! 295: fputs("%RI_GROUPSTART\n", gpoutfile);
! 296: */
! 297: if (RGIP_vecpos) {
! 298: RGIP_write_poly();
! 299: }
! 300: RGIP_xvector[0] = x + RGIP_orgx;
! 301: RGIP_yvector[0] = y + RGIP_orgy;
! 302: RGIP_vecpos = 1;
! 303: /*
! 304: RGIP_posx = x;
! 305: RGIP_posy = y;
! 306: */
! 307: }
! 308:
! 309:
! 310: TERM_PUBLIC void RGIP_vector(ux, uy)
! 311: unsigned int ux, uy;
! 312: {
! 313: /* store polygon-node */
! 314:
! 315: RGIP_xvector[RGIP_vecpos] = ux + RGIP_orgx;
! 316: RGIP_yvector[RGIP_vecpos] = uy + RGIP_orgy;
! 317: RGIP_vecpos++;
! 318: if (RGIP_vecpos >= RGIP_MAX_POLY) {
! 319: RGIP_write_poly();
! 320: RGIP_xvector[RGIP_vecpos] = ux + RGIP_orgx;
! 321: RGIP_yvector[RGIP_vecpos] = uy + RGIP_orgy;
! 322: RGIP_vecpos++;
! 323: }
! 324: }
! 325:
! 326: void RGIP_write_poly()
! 327: {
! 328: register int i;
! 329:
! 330: putc('[', gpoutfile);
! 331: for (i = 0; i < RGIP_vecpos; i++) {
! 332: if (!(i % 8))
! 333: putc('\n', gpoutfile);
! 334: fprintf(gpoutfile, " %1d\
! 335: %1d",
! 336: RGIP_xvector[i],
! 337: RGIP_yvector[i]);
! 338: }
! 339: RGIP_vecpos = 0;
! 340: putc(']', gpoutfile);
! 341:
! 342: fprintf(gpoutfile, " %1d %d %1d %1d %1d %s\n", RGIP_lwid, RGIP_lsty,
! 343: RGIP_lcol, RGIP_fsty, RGIP_fcol, RGIP_Obj[RGIPPOLY]);
! 344:
! 345: /*
! 346: RGIP_posx = ux;
! 347: RGIP_posy = uy;
! 348: */
! 349: /* RGIP_move(ux, uy); */
! 350: }
! 351:
! 352:
! 353: TERM_PUBLIC int RGIP_text_angle(ang)
! 354: int ang;
! 355: {
! 356: if (RGIP_vecpos) {
! 357: RGIP_write_poly();
! 358: }
! 359: if (RGIP_angle != ang) {
! 360: RGIP_angle = ang; /* record for later use */
! 361: }
! 362: return (TRUE);
! 363: }
! 364:
! 365: TERM_PUBLIC int RGIP_justify_text(mode)
! 366: enum JUSTIFY mode;
! 367: {
! 368: if (RGIP_vecpos) {
! 369: RGIP_write_poly();
! 370: }
! 371: RGIP_justify = mode;
! 372: return (TRUE);
! 373: }
! 374:
! 375: static unsigned char *RGIP_cvts(str, lcnt)
! 376: unsigned char *str;
! 377: int *lcnt; /* lines */
! 378: {
! 379: unsigned char *cp1;
! 380: unsigned char *cp2;
! 381: static unsigned char *buf = NULL;
! 382: int lc = 1;
! 383:
! 384: lc = 1;
! 385: /* Free up old buffer, if there is one, get a new one. Since */
! 386: /* all transformations shorten the string, get a buffer that is */
! 387: /* the same size as the input string. */
! 388:
! 389: if (buf != NULL)
! 390: (void) free(buf);
! 391: buf = (unsigned char *) gp_alloc(strlen(str), "converted label string");
! 392:
! 393: /* Do the transformations. */
! 394:
! 395: cp1 = str;
! 396: cp2 = buf;
! 397: while (strlen(cp1) > 0) {
! 398: switch (*cp1) {
! 399: case '\\': /* Escape sequence. */
! 400: if (*++cp1 == '\\') {
! 401: /* Begin new line. */
! 402: *cp2++ = '\n';
! 403: lc++;
! 404: break;
! 405: }
! 406: case '(':
! 407: *cp2++ = '\\';
! 408: *cp2++ = '(';
! 409: break;
! 410: case ')':
! 411: *cp2++ = '\\';
! 412: *cp2++ = ')';
! 413: break;
! 414: /* Fall through to just copy next char out. */
! 415:
! 416: default:
! 417: *cp2++ = *cp1;
! 418: break;
! 419: }
! 420: cp1++;
! 421: }
! 422:
! 423: *cp2++ = '\n';
! 424: *cp2 = NUL;
! 425: *lcnt = lc;
! 426: return (buf);
! 427: }
! 428:
! 429: TERM_PUBLIC void RGIP_put_text(x, y, str)
! 430: unsigned int x, y; /* reference point of string */
! 431: char *str; /* the text */
! 432: {
! 433: register struct termentry *t = term;
! 434: unsigned char *cvstr, *p;
! 435: int xlines; /* lines */
! 436:
! 437: if (RGIP_vecpos) {
! 438: RGIP_write_poly();
! 439: }
! 440: cvstr = RGIP_cvts(str, &xlines);
! 441:
! 442: x += RGIP_orgx,
! 443: y += RGIP_orgy;
! 444:
! 445: if (!RGIP_angle) { /* horisontal */
! 446: y += (int) (t->v_char) * (xlines - 2) / 2;
! 447: /* y += (t->v_char)*xlines; */
! 448: y += (int) (t->v_char) / 4;
! 449: } else {
! 450: x -= (int) (t->v_char) * (xlines - 2) / 2;
! 451: x -= (int) (t->v_char) / 4;
! 452: }
! 453:
! 454: while ((p = (unsigned char *) strchr(cvstr, '\n'))) {
! 455: *p = '\0';
! 456: if (strlen(cvstr))
! 457: fprintf(gpoutfile, "%1d %1d %1d %1d (%s) %1d %1d %1d %1d %s\n",
! 458: x, y, RGIP_justify, RGIP_angle * 90, cvstr, RGIP_fface,
! 459: RGIP_ftype, RGIP_fontsize, RGIP_tcol, RGIP_Obj[RGIPTEXT]);
! 460: cvstr = ++p;
! 461: if (RGIP_angle) { /* vertical */
! 462: x += (t->v_char);
! 463: } else {
! 464: y -= (t->v_char);
! 465: }
! 466: }
! 467: }
! 468:
! 469:
! 470: TERM_PUBLIC void RGIP_reset()
! 471: {
! 472: if (RGIP_vecpos) {
! 473: RGIP_write_poly();
! 474: }
! 475: fputs("%RI_GROUPEND\n", gpoutfile);
! 476: /* fputs("%RI_GROUPEND\n", gpoutfile); */
! 477: }
! 478:
! 479: /* static void
! 480: RGIP_setfont(sz)
! 481: int sz;
! 482: {
! 483: RGIP_fontsize = (int) (sz);
! 484: if ( RGIP_fontsize < 1 ) RGIP_fontsize = 1;
! 485: term->v_char = (unsigned int)(RGIP_fontsize*RGIP_SC);
! 486: term->h_char = (unsigned int)(RGIP_fontsize*RGIP_SC*3/7);
! 487: }
! 488: */
! 489:
! 490: TERM_PUBLIC void RGIP_do_point(x, y, number)
! 491: unsigned int x, y;
! 492: int number;
! 493: {
! 494:
! 495: x += RGIP_orgx,
! 496: y += RGIP_orgy;
! 497:
! 498: if (number < 0) { /* do dot */
! 499: fprintf(gpoutfile, "%1d %1d %1d %s\n",
! 500: x, y, RGIP_mcol, RGIP_Obj[RGIPDOTS]);
! 501: return;
! 502: }
! 503: RGIP_msty = (number % RGIP_POINT_TYPES) + 1;
! 504: RGIP_msize = ((int) (number / RGIP_POINT_TYPES)) + 1;
! 505:
! 506: fprintf(gpoutfile, "%1d %1d %1d %1d %1d %s\n",
! 507: x, y, RGIP_msize, RGIP_msty, RGIP_mcol, RGIP_Obj[RGIPMARK]);
! 508: }
! 509:
! 510: TERM_PUBLIC void RGIP_options()
! 511: {
! 512: struct value a;
! 513:
! 514: while (!END_OF_COMMAND) {
! 515: if (almost_equals(c_token, "p$ortrait")) {
! 516: RGIP_portrait = TRUE;
! 517: c_token++;
! 518: } else if (almost_equals(c_token, "l$andscape")) {
! 519: RGIP_portrait = FALSE;
! 520: c_token++;
! 521: } else if (equals(c_token, "[")) { /* windows spesified */
! 522: c_token++;
! 523: /* if (RGIP_plot_nr>1) */
! 524: if (equals(c_token, "]")) {
! 525: /* RGIP_page(); */
! 526: c_token++;
! 527: continue;
! 528: }
! 529: if (END_OF_COMMAND) {
! 530: int_error("no. windows: [horizontal,vertical] expected", c_token);
! 531: } else if (!equals(c_token, ",")) {
! 532: RGIP_win_horiz = (int) real(const_express(&a));
! 533: }
! 534: if (!equals(c_token, ","))
! 535: int_error("',' expected", c_token);
! 536: c_token++;
! 537: if (!equals(c_token, "]")) {
! 538: RGIP_win_verti = (int) real(const_express(&a));
! 539: }
! 540: if (!equals(c_token, "]"))
! 541: int_error("expecting ']'", c_token);
! 542: c_token++;
! 543: } else {
! 544: /* We have font size specified */
! 545: RGIP_fontsize = (int) real(const_express(&a));
! 546: if (RGIP_fontsize < 1)
! 547: RGIP_fontsize = 1;
! 548: term->v_char = (unsigned int) (RGIP_fontsize * RGIP_SC);
! 549: term->h_char = (unsigned int) (RGIP_fontsize * RGIP_SC * 3 / 7);
! 550: }
! 551: }
! 552: sprintf(term_options, "%s %d [%1d,%1d]",
! 553: (RGIP_portrait) ? "portrait" : "landscape",
! 554: RGIP_fontsize, RGIP_win_horiz, RGIP_win_verti);
! 555: }
! 556:
! 557: #endif /* TERM_BODY */
! 558:
! 559: #ifdef TERM_TABLE
! 560:
! 561: TERM_TABLE_START(rgip_driver)
! 562: "rgip", "RGIP metafile (Uniplex). Option: fontsize (1-8)",
! 563: RGIP_XMAX, RGIP_YMAX, RGIP_VCHAR, RGIP_HCHAR,
! 564: RGIP_VTIC, RGIP_HTIC, RGIP_options, RGIP_init, RGIP_reset,
! 565: RGIP_text, null_scale, RGIP_graphics, RGIP_move,
! 566: RGIP_vector, RGIP_linetype, RGIP_put_text, RGIP_text_angle,
! 567: RGIP_justify_text, RGIP_do_point, do_arrow, set_font_null
! 568: TERM_TABLE_END(rgip_driver)
! 569:
! 570: #undef LAST_TERM
! 571: #define LAST_TERM rgip_driver
! 572:
! 573: TERM_TABLE_START(uniplex_driver)
! 574: "uniplex", "RGIP metafile (Uniplex). Option: fontsize (1-8) (Same as rgip)",
! 575: RGIP_XMAX, RGIP_YMAX, RGIP_VCHAR, RGIP_HCHAR,
! 576: RGIP_VTIC, RGIP_HTIC, RGIP_options, RGIP_init, RGIP_reset,
! 577: RGIP_text, null_scale, RGIP_graphics, RGIP_move,
! 578: RGIP_vector, RGIP_linetype, RGIP_put_text, RGIP_text_angle,
! 579: RGIP_justify_text, RGIP_do_point, do_arrow, set_font_null
! 580: TERM_TABLE_END(uniplex_driver)
! 581:
! 582: #undef LAST_TERM
! 583: #define LAST_TERM uniplex_driver
! 584:
! 585: #endif /* TERM_TABLE */
! 586: #endif /* TERM_PROTO_ONLY */
! 587:
! 588: #ifdef TERM_HELP
! 589: START_HELP(rgip)
! 590: "1 rgip",
! 591: "?commands set terminal rgip",
! 592: "?set terminal rgip",
! 593: "?set term rgip",
! 594: "?terminal rgip",
! 595: "?term rgip",
! 596: "?rgip",
! 597: "?commands set terminal uniplex",
! 598: "?set terminal uniplex",
! 599: "?set term uniplex",
! 600: "?terminal uniplex",
! 601: "?term uniplex",
! 602: "?uniplex",
! 603: " The `rgip` and `uniplex` terminal drivers support RGIP metafiles. They can",
! 604: " combine several graphs on a single page, but only one page is allowed in a",
! 605: " given output file.",
! 606: "",
! 607: " Syntax:",
! 608: " set terminal rgip | uniplex {portrait | landscape}",
! 609: " {[<horiz>,<vert>]} {<fontsize>}",
! 610: "",
! 611: " permissible values for the font size are in the range 1--8, with the default",
! 612: " being 1. The default layout is landscape. Graphs are placed on the page in",
! 613: " a `horiz`x`vert` grid, which defaults to [1,1].",
! 614: "",
! 615: " Example:",
! 616: " set terminal uniplex portrait [2,3]",
! 617: "",
! 618: " puts six graphs on a page in three rows of two in portrait orientation."
! 619: END_HELP(rgip)
! 620: #endif /* TERM_HELP */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>