[BACK]Return to rgip.trm CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gnuplot / term

Annotation of OpenXM_contrib/gnuplot/term/rgip.trm, Revision 1.1.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>