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

Annotation of OpenXM_contrib/gnuplot/term/tgif.trm, Revision 1.1.1.1

1.1       maekawa     1: /*{{{}}}*/
                      2: /***************************************************************************/
                      3: /*                                                                         */
                      4: /* $Id: tgif.trm,v 1.66 1998/04/14 00:18:10 drd Exp $                     */
                      5: /*                                                                         */
                      6: /***************************************************************************/
                      7: /* GNUPLOT - tgif.trm                                                      */
                      8:
                      9:
                     10: /*[
                     11:  * Copyright 1990 - 1993, 1998
                     12:  *
                     13:  * Permission to use, copy, and distribute this software and its
                     14:  * documentation for any purpose with or without fee is hereby granted,
                     15:  * provided that the above copyright notice appear in all copies and
                     16:  * that both that copyright notice and this permission notice appear
                     17:  * in supporting documentation.
                     18:  *
                     19:  * Permission to modify the software is granted, but not the right to
                     20:  * distribute the complete modified source code.  Modifications are to
                     21:  * be distributed as patches to the released version.  Permission to
                     22:  * distribute binaries produced by compiling modified sources is granted,
                     23:  * provided you
                     24:  *   1. distribute the corresponding source modifications from the
                     25:  *    released version in the form of a patch file along with the binaries,
                     26:  *   2. add special version identification to distinguish your version
                     27:  *    in addition to the base release version number,
                     28:  *   3. provide your name and address as the primary contact for the
                     29:  *    support of your modified version, and
                     30:  *   4. retain our contact information in regard to use of the base
                     31:  *    software.
                     32:  * Permission to distribute the released version of the source code along
                     33:  * with corresponding source modifications in the form of a patch file is
                     34:  * granted with same provisions 2 through 4 for binary distributions.
                     35:  *
                     36:  * This software is provided "as is" without express or implied warranty
                     37:  * to the extent permitted by applicable law.
                     38: ]*/
                     39:
                     40: /*                                       */
                     41: /* This file is included by ../term.c.                                     */
                     42: /*                                                                         */
                     43: /* This terminal driver supports:                                          */
                     44: /*     TGIF                                                                */
                     45: /*                                                                         */
                     46: /* AUTHORS:                                                                */
                     47: /*  Werner Geppert and Andreas Kuhlewind                                   */
                     48: /*  March, 21st 1995                                                       */
                     49: /*                                                                         */
                     50: /* send your comments or suggestions to werner@mez.ruhr-uni-bochum.de      */
                     51: /*                                                                         */
                     52: /*                                                                         */
                     53: /* MODIFIED May, 11st 1997 by NOVÁK Levente (novakl@tigris.klte.hu):       */
                     54: /*                                                                         */
                     55: /*          - Modified the default linewidth for borders from 3 to 2       */
                     56: /*          - Modified the default size of markers' bounding box           */
                     57: /*            to allow nicer shapes                                        */
                     58: /*          - Slightly modified the markers and added several new ones,    */
                     59: /*            now we have 64 different pointtypes, the same as for the     */
                     60: /*            PostScript terminal                                          */
                     61: /*          - I left the %.1f format for pixel positions, but I think      */
                     62: /*            Tgif does only calculate with integer positions              */
                     63:
                     64:
                     65: /***************************************************************************/
                     66:
                     67: /*}}}  */
                     68: /***************************************************************************/
                     69: #include "driver.h"
                     70:
                     71: #ifdef TERM_REGISTER
                     72: register_term(tgif)
                     73: #endif
                     74:
                     75: #ifdef TERM_PROTO
                     76: TERM_PUBLIC void TGIF_options __PROTO((void));
                     77: TERM_PUBLIC void TGIF_init __PROTO((void));
                     78: TERM_PUBLIC void TGIF_reset __PROTO((void));
                     79: TERM_PUBLIC void TGIF_text __PROTO((void));
                     80: TERM_PUBLIC void TGIF_graphics __PROTO((void));
                     81: TERM_PUBLIC void TGIF_move __PROTO((unsigned int ux, unsigned int uy));
                     82: TERM_PUBLIC void TGIF_vector __PROTO((unsigned int ux, unsigned int uy));
                     83: TERM_PUBLIC void TGIF_linetype __PROTO((int linetype));
                     84: TERM_PUBLIC void TGIF_put_text __PROTO((unsigned int ux, unsigned int uy, char *str)); /* ref point and text */
                     85: TERM_PUBLIC int TGIF_text_angle __PROTO((int ang));
                     86: TERM_PUBLIC int TGIF_justify_text __PROTO((enum JUSTIFY mode));
                     87: TERM_PUBLIC void TGIF_point __PROTO((unsigned int ux, unsigned int uy, int number));
                     88: TERM_PUBLIC void TGIF_arrow __PROTO((unsigned int sx, unsigned int sy, unsigned int ex, unsigned int ey, TBOOLEAN head));
                     89: TERM_PUBLIC int TGIF_set_font __PROTO((char *font));
                     90: TERM_PUBLIC void TGIF_set_pointsize __PROTO((double size));
                     91: /*}}}  */
                     92: /* default length for static strings */
                     93: #define TGIF_STRLEN_MAX 255
                     94:
                     95: /* standard x/y plot size in portrait mode */
                     96: #define TGIF_XMAX 950
                     97: #define TGIF_YMAX 634
                     98:
                     99: /* total available plotting area */
                    100: #define TGIF_XTOT 950
                    101: #define TGIF_YTOT 1400
                    102:
                    103: /* Offset  */
                    104: #define TGIF_XOFF 50
                    105: #define TGIF_YOFF 50
                    106:
                    107: #define TGIF_XSHIFT 1030       /* 80 points skip */
                    108: #define TGIF_YSHIFT 714
                    109:
                    110: #define TGIF_VCHAR 18          /* default is 18 pt       */
                    111: #define TGIF_HCHAR (18*6/10)
                    112:
                    113: #define TGIF_VTIC (TGIF_YMAX/80)
                    114: #define TGIF_HTIC (TGIF_YMAX/80)
                    115:
                    116:
                    117: #define TGIF_MAXPOLY 100
                    118: /*}}}  */
                    119: #define GOT_TGIF_PROTO
                    120: #endif
                    121:
                    122: #ifndef TERM_PROTO_ONLY
                    123:
                    124: #ifdef TERM_BODY
                    125: /* tgif driver by Werner Geppert, werner@mez.ruhr-uni-bochum.de */
                    126: /***************************************************************************/
                    127: /* Variables:                                                              */
                    128: static unsigned int uLastTgifX, uLastTgifY;    /* last Coordinate         */
                    129:
                    130: static unsigned int uActNr;    /* current elementnumber                   */
                    131: static unsigned int uActPage;  /* current pagenumber                      */
                    132: static unsigned int uActResolution;    /* resolution in percent           */
                    133: static unsigned int uActZoom;  /* zoom factor                             */
                    134: static unsigned int uActAngle; /* current textangle                       */
                    135: static unsigned int uActThick; /* actual linethickness                    */
                    136: static unsigned int uActPointSize;     /* point size                      */
                    137: static unsigned int uActStyle; /* actual linestyle                        */
                    138: static unsigned int uActJust;  /* actual textjustification                */
                    139: static unsigned int uXshift;   /* actual shift x                          */
                    140: static unsigned int uYshift;   /* actual shift y                          */
                    141: static unsigned int uTgifPlotCount;    /* counts number of plots          */
                    142: static unsigned int uTgifPlotRow, uTgifPlotCol;                /* actual plot row and col   */
                    143: static unsigned int uTgif_win_horiz, /* number of plots in x and  */ uTgif_win_verti;  /*      y direction [x,y]         */
                    144:
                    145:
                    146:
                    147: static char sActColor[TGIF_STRLEN_MAX];                /* current color         */
                    148: static unsigned int uDefaultFontSize;  /* default font size         */
                    149: static unsigned int uActFontSize;      /* current font size         */
                    150: static char sDefaultFont[TGIF_STRLEN_MAX];     /* default font          */
                    151: static char sActFont[TGIF_STRLEN_MAX]; /* current font          */
                    152: /* static char          sActPointString[TGIF_STRLEN_MAX]; HBB: unused */
                    153:
                    154: static TBOOLEAN TgifSolid = FALSE;
                    155: static TBOOLEAN TgifPortrait = TRUE;
                    156:
                    157: static unsigned int uTgifPlotsPerPage = 1;
                    158: static unsigned int uTextAngle[] =
                    159: {0, 3};
                    160:
                    161: /*
                    162:  * 10 different pointtypes need 10 different linetypes
                    163:  */
                    164:
                    165: /* NL: Modified first value to 2 from 3 */
                    166: static unsigned int uLineThick[] = { 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
                    167: static unsigned int uLineStyle[] = { 0, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0 };
                    168: static char *psColors[] =
                    169: {
                    170:  "black", "black",             /* border and x/y-zero-axes       */
                    171:  "red", "green", "blue", "magenta", "cyan", "yellow",
                    172:  "DarkSeaGreen", "HotPink", "black", "coral"};
                    173:
                    174: #if 0                          /* HBB: unused */
                    175: static char *psFonts[] =
                    176: {"Times-Roman", "Courier", "Helvetica", "NewCenturySchlbk-Roman", "Symbol", NULL};
                    177:
                    178: static unsigned int psFontSizes[] =
                    179: { 8, 10, 11, 12, 14, 17, 18, 20, 24, 25, 34, 40, 45, 50 };
                    180: #endif
                    181:
                    182: static int iTgifPolyCount;
                    183: static unsigned int uBuffX[TGIF_MAXPOLY], uBuffY[TGIF_MAXPOLY];
                    184:
                    185: enum eState {
                    186:     NEWPOLY = 100, INPOLY
                    187: };
                    188: static enum eState eTgifState = NEWPOLY;
                    189:
                    190: static void TGIF_flush_poly __PROTO((void));
                    191:
                    192:
                    193:
                    194: /*}}}  */
                    195: /***************************************************************************/
                    196: static void TGIF_flush_poly()
                    197: {
                    198:     int i;
                    199:
                    200:
                    201:     if (eTgifState == INPOLY) {
                    202:        fprintf(gpoutfile, "poly('%s',%d,[\n\t", sActColor, iTgifPolyCount);
                    203:
                    204:        for (i = 0; i < iTgifPolyCount - 1; i++) {
                    205:            fprintf(gpoutfile, "%u,%u,", uBuffX[i], uBuffY[i]);
                    206:            if ((i + 1) % 8 == 0)
                    207:                fputs("\n\t", gpoutfile);
                    208:        }
                    209:
                    210:        fprintf(gpoutfile, "%u,%u],0,%u,1,%u,0,0,%u,0,8,3,0,[\n]).\n",
                    211:                uBuffX[iTgifPolyCount - 1], uBuffY[iTgifPolyCount - 1],
                    212:                uActThick, uActNr, uActStyle);
                    213:
                    214:        uActNr++;
                    215:
                    216:        eTgifState = NEWPOLY;
                    217:        iTgifPolyCount = 0;
                    218:        if (gpoutfile != (FILE *) NULL)
                    219:            fflush(gpoutfile);
                    220:     }
                    221: }                              /* TGIF_flush_poly */
                    222: /*}}}  */
                    223: /***************************************************************************/
                    224: TERM_PUBLIC void TGIF_options()
                    225: {
                    226:
                    227:     struct value a, b;
                    228:     double dscaleH, dscaleV;
                    229:
                    230:
                    231:     strcpy(sActFont, "Helvetica");
                    232:     strcpy(sDefaultFont, "Helvetica");
                    233:     uActFontSize = 18;
                    234:     uDefaultFontSize = 18;
                    235:     term->v_char = (unsigned int) (uActFontSize);
                    236:     term->h_char = (unsigned int) (uActFontSize * 6 / 10);
                    237:
                    238:     TgifPortrait = TRUE;
                    239:     uTgifPlotsPerPage = 1;
                    240:     uTgifPlotRow = 1;
                    241:     uTgifPlotCol = 1;
                    242:     uTgif_win_horiz = 1;
                    243:     uTgif_win_verti = 1;
                    244:     uActResolution = 100;
                    245:
                    246:
                    247: /*}}}  */
                    248:
                    249:     if (!END_OF_COMMAND) {
                    250:        if (almost_equals(c_token, "p$ortrait")) {
                    251:            TgifPortrait = TRUE;
                    252:            c_token++;
                    253:        } else if (almost_equals(c_token, "l$andscape")) {
                    254:            TgifPortrait = FALSE;
                    255:            uActResolution = 140;
                    256:            c_token++;
                    257:        }
                    258:     }
                    259: /*}}}  */
                    260:
                    261:     if (!END_OF_COMMAND) {
                    262:        if (equals(c_token, "[")) {     /* windows specified */
                    263:            c_token++;
                    264:            if (END_OF_COMMAND) {
                    265:                int_error("no. windows: [horizontal,vertical] expected", c_token);
                    266:            } else if (!equals(c_token, ",")) {
                    267:                uTgif_win_horiz = (int) real(const_express(&a));
                    268:            }
                    269:            if (!equals(c_token, ","))
                    270:                int_error("',' expected", c_token);
                    271:            c_token++;
                    272:            if (!equals(c_token, "]")) {
                    273:                uTgif_win_verti = (int) real(const_express(&a));
                    274:            }
                    275:            if (!equals(c_token, "]"))
                    276:                int_error("expecting ']'", c_token);
                    277:            c_token++;
                    278:
                    279:            uTgifPlotsPerPage = uTgif_win_verti * uTgif_win_horiz;
                    280:
                    281:
                    282:        }
                    283:     }
                    284: /*}}}  */
                    285:
                    286:     if (!END_OF_COMMAND) {
                    287:        if (almost_equals(c_token, "s$olid")) {
                    288:            TgifSolid = TRUE;
                    289:            c_token++;
                    290:        } else if (almost_equals(c_token, "d$ashed")) {
                    291:            TgifSolid = FALSE;
                    292:            c_token++;
                    293:        }
                    294:     }
                    295: /*}}}  */
                    296:
                    297:     if (!END_OF_COMMAND && isstring(c_token)) {
                    298:        quote_str(sActFont, c_token, MAX_LINE_LEN);
                    299:        strcpy(sDefaultFont, sActFont);
                    300:        c_token++;
                    301:     }
                    302:     if (!END_OF_COMMAND) {
                    303:        /* We have font size specified */
                    304:        uActFontSize = (unsigned int) real(const_express(&b));
                    305:        uDefaultFontSize = uActFontSize;
                    306:        term->v_char = (unsigned int) (uActFontSize);
                    307:        term->h_char = (unsigned int) (uActFontSize * 6 / 10);
                    308:     }
                    309: /*}}}  */
                    310:
                    311:     if (TgifPortrait) {
                    312:        dscaleH = (double) 100.0 *(TGIF_XTOT) / (xsize * (TGIF_XMAX + (uTgif_win_horiz - 1) * TGIF_XSHIFT));
                    313:        dscaleV = (double) 100.0 *(TGIF_YTOT) / (ysize * (TGIF_YMAX + (uTgif_win_verti - 1) * TGIF_YSHIFT));
                    314:        uActResolution = (int) GPMIN(dscaleH, dscaleV);
                    315:        switch (uTgif_win_verti) {
                    316:        case 1:
                    317:            uActZoom = 0;
                    318:            break;
                    319:
                    320:        case 2:
                    321:            uActZoom = 1;
                    322:            break;
                    323:        default:
                    324:            uActZoom = 2;
                    325:            break;
                    326:
                    327:        }
                    328:     } else {
                    329:        dscaleH = (double) 100.0 *(TGIF_YTOT) / (xsize * (TGIF_XMAX + (uTgif_win_horiz - 1) * TGIF_XSHIFT));
                    330:        dscaleV = (double) 100.0 *(TGIF_XTOT) / (ysize * (TGIF_YMAX + (uTgif_win_verti - 1) * TGIF_YSHIFT));
                    331:        uActResolution = (unsigned int) GPMIN(dscaleH, dscaleV);
                    332:
                    333:        switch (uTgif_win_verti) {
                    334:        case 1:
                    335:            uActZoom = 0;
                    336:            break;
                    337:
                    338:        case 2:
                    339:            uActZoom = 1;
                    340:            break;
                    341:        default:
                    342:            uActZoom = 2;
                    343:            break;
                    344:
                    345:        }
                    346:     }
                    347:
                    348: /*}}}  */
                    349:
                    350:     sprintf(term_options, "%s [%u,%u] %s \"%s\" %u",
                    351:            TgifPortrait ? "portrait" : "landscape",
                    352:            uTgif_win_horiz, uTgif_win_verti,
                    353:            TgifSolid ? "solid" : "dashed",
                    354:            sActFont, uActFontSize);
                    355: }
                    356: /*}}}  */
                    357: /***************************************************************************/
                    358: TERM_PUBLIC void TGIF_init()
                    359: {
                    360:
                    361:     if (multiplot) {
                    362:        /* uActResolution= TgifPortrait ? (unsigned int)100 : (unsigned int)145 ; */
                    363:        uActResolution = (unsigned int) 100;
                    364:
                    365:        if (uTgifPlotsPerPage > 1) {
                    366:            fputs("warning: using standard multiplot\n", stderr);
                    367:            uTgifPlotsPerPage = 1;
                    368:        }
                    369:        uActZoom = 1;
                    370:     }
                    371:     fprintf(gpoutfile, "\
                    372: %%TGIF 2.15-p7\n\
                    373: state(%d,30,%u,0,0,%u,16,1,9,1,1,0,0,0,0,1,0,'%s',0,%u,0,0,1,10,0,0,1,1,0,16,0,0,1,1,1).\n\
                    374: %%\n%% @(#)$Header: /export/home/cheetah/ddenholm/cvsroot/gnuplot/term/tgif.trm,v 1.66 1998/04/14 00:18:10 drd Exp $\n%% %%W%%\n%%\n\
                    375: page(1,\"\").\n",
                    376:            TgifPortrait ? 0 : 1, uActResolution, uActZoom, sActFont, uActFontSize);
                    377:     eTgifState = NEWPOLY;
                    378:     iTgifPolyCount = 0;
                    379:     uTgifPlotCount = 0;
                    380:     uActPage = 1;
                    381:
                    382: }                              /* TGIF_init */
                    383: /*}}}  */
                    384: /***************************************************************************/
                    385: TERM_PUBLIC void TGIF_graphics()
                    386: {
                    387:
                    388:     TGIF_flush_poly();
                    389:
                    390:     if (multiplot) {
                    391:
                    392:        term->xmax = (TgifPortrait) ? TGIF_XTOT : TGIF_YTOT;
                    393:        term->ymax = (TgifPortrait) ? TGIF_YTOT : TGIF_XTOT;
                    394:        uLastTgifX = (TgifPortrait) ? TGIF_XOFF : TGIF_YOFF;
                    395:        uLastTgifY = (TgifPortrait) ? TGIF_YTOT + TGIF_YOFF : TGIF_XTOT + TGIF_XOFF;
                    396:
                    397:        uYshift = uLastTgifY;
                    398:        uXshift = uLastTgifX;
                    399:
                    400:     } else {
                    401:        if (uTgifPlotCount < uTgifPlotsPerPage)
                    402:            uTgifPlotCount++;
                    403:        else {
                    404:            fprintf(stderr, "error: number of plots > plots per page\n");
                    405:            return;
                    406:        }
                    407:
                    408:        uXshift = (unsigned int) TGIF_XOFF *100 / uActResolution + (xsize * (uTgifPlotCol - 1) * TGIF_XSHIFT);
                    409:        uYshift = (unsigned int) TGIF_YOFF *100 / uActResolution + (ysize * (TGIF_YMAX +
                    410:                                                                             (uTgifPlotRow - 1) * TGIF_YSHIFT));
                    411:
                    412:        if (uTgifPlotCount % uTgif_win_horiz == 0) {
                    413:            uTgifPlotCol = 1;
                    414:            uTgifPlotRow++;
                    415:        } else {
                    416:            uTgifPlotCol++;
                    417:        }
                    418:
                    419:        uLastTgifX = uXshift;
                    420:        uLastTgifY = uYshift;
                    421:
                    422:     }
                    423:
                    424:
                    425:
                    426:
                    427:
                    428: /* default settings for each plot */
                    429:     iTgifPolyCount = 0;
                    430:     uActNr = 0;
                    431:     uActAngle = 0;
                    432:     uActThick = 1;
                    433:     uActStyle = 0;
                    434:     uActJust = LEFT;
                    435:     strcpy(sActColor, psColors[0]);
                    436:
                    437:
                    438: }                              /* TGIF_graphics */
                    439: /*}}}  */
                    440: /***************************************************************************/
                    441: TERM_PUBLIC void TGIF_text()
                    442: {
                    443:     TGIF_flush_poly();
                    444:
                    445:
                    446: }                              /* TGIF_text */
                    447:
                    448: /*}}}  */
                    449: /***************************************************************************/
                    450: TERM_PUBLIC void TGIF_reset()
                    451: {
                    452:     TGIF_flush_poly();
                    453:     iTgifPolyCount = 0;
                    454:     uTgifPlotCount = 0;
                    455:     uTgifPlotRow = 1;
                    456:     uTgifPlotCol = 1;
                    457:
                    458:
                    459:     if (gpoutfile != (FILE *) NULL)
                    460:        fflush(gpoutfile);
                    461:
                    462: }                              /* TGIF_reset */
                    463: /*}}}  */
                    464: /***************************************************************************/
                    465: TERM_PUBLIC void TGIF_linetype(linetype)
                    466: int linetype;
                    467: {
                    468:     unsigned int ult;
                    469:
                    470:
                    471:     TGIF_flush_poly();
                    472:
                    473:
                    474:     if (linetype >= 0)
                    475:        ult = 2 + linetype % 10;
                    476:     else
                    477:        ult = linetype + 2;
                    478:
                    479:     strcpy(sActColor, psColors[ult]);
                    480:     uActThick = uLineThick[ult];
                    481:     if (!TgifSolid)
                    482:        uActStyle = uLineStyle[ult];
                    483:     else {
                    484:        if (ult == 1)           /* grid */
                    485:            uActStyle = uLineStyle[ult];
                    486:        else
                    487:            uActStyle = uLineStyle[2];
                    488:
                    489:     }
                    490:
                    491: }                              /* TGIF_linetype */
                    492: /*}}}  */
                    493: /***************************************************************************/
                    494: TERM_PUBLIC void TGIF_move(ux, uy)
                    495: unsigned int ux, uy;
                    496: {
                    497:
                    498:     uLastTgifX = ux + uXshift;
                    499:     uLastTgifY = uYshift - uy;
                    500:
                    501:     if (eTgifState == INPOLY)
                    502:        TGIF_flush_poly();
                    503:
                    504:
                    505:
                    506: }                              /* TGIF_move */
                    507: /*}}}  */
                    508: /***************************************************************************/
                    509: TERM_PUBLIC void TGIF_vector(ux, uy)
                    510: unsigned int ux, uy;
                    511: {
                    512:
                    513:     ux = ux + uXshift;
                    514:     uy = uYshift - uy;
                    515:
                    516:
                    517:
                    518:     if (eTgifState == NEWPOLY) {
                    519:        uBuffX[0] = uLastTgifX;
                    520:        uBuffY[0] = uLastTgifY;
                    521:        iTgifPolyCount = 1;
                    522:        eTgifState = INPOLY;
                    523:     }
                    524:     uBuffX[iTgifPolyCount] = ux;
                    525:     uBuffY[iTgifPolyCount] = uy;
                    526:     uLastTgifX = ux;
                    527:     uLastTgifY = uy;
                    528:     iTgifPolyCount++;
                    529:     eTgifState = INPOLY;
                    530:
                    531:     if (iTgifPolyCount == TGIF_MAXPOLY) {
                    532:        TGIF_flush_poly();
                    533:
                    534:     }
                    535: }                              /* TGIF_vector */
                    536: /*}}}  */
                    537: /***************************************************************************/
                    538: TERM_PUBLIC void TGIF_arrow(sx, sy, ex, ey, head)
                    539: unsigned int sx, sy, ex, ey;
                    540: TBOOLEAN head;
                    541: {
                    542:
                    543:     TGIF_flush_poly();
                    544:
                    545:     sx = sx + uXshift;
                    546:     ex = ex + uXshift;
                    547:     sy = uYshift - sy;
                    548:     ey = uYshift - ey;
                    549:
                    550:
                    551:     if (head) {
                    552:        fprintf(gpoutfile, "poly('%s',%d,[\n\t%u,%u,%u,%u],1,%u,1,%u,0,0,%u,0,8,3,0,[\n]).\n",
                    553:                sActColor, 2, sx, sy, ex, ey, uActThick, uActNr, uActStyle);
                    554:     } else {
                    555:        fprintf(gpoutfile, "poly('%s',%d,[\n\t%u,%u,%u,%u],1,%u,1,%u,0,0,%u,0,8,3,0,[\n]).\n",
                    556:                sActColor, 2, sx, sy, ex, ey, uActThick, uActNr, uActStyle);
                    557:     }
                    558:
                    559:     uActNr++;
                    560:
                    561:
                    562:
                    563:     uLastTgifX = ex;
                    564:     uLastTgifY = ey;
                    565:
                    566: }                              /* TGIF_arrow */
                    567: /*}}}  */
                    568: /***************************************************************************/
                    569: TERM_PUBLIC void TGIF_put_text(ux, uy, str)
                    570: unsigned int ux, uy;
                    571: char *str;
                    572: {
                    573:
                    574:     unsigned int x, y;
                    575:     struct termentry *t = term;
                    576:
                    577:     TGIF_flush_poly();
                    578:
                    579:     x = ux + uXshift;
                    580:     y = uYshift - uy - t->v_char / 2;
                    581:
                    582:
                    583:
                    584:     if (strlen(str) == 0)
                    585:        return;
                    586:
                    587:
                    588:     fprintf(gpoutfile,
                    589:            "text('%s',%u,%u,'%s',0,%u,1,%u,%u,1,55,119,%u,0,15,4,0,0,0,0,[\n\t\"%s\"]).\n",
                    590:            sActColor, x, y, sActFont, uActFontSize, uActJust, uActAngle, uActNr, str);
                    591:
                    592:     uActNr += 2;
                    593:
                    594:     /* reset font size and font, they might have been changed */
                    595:     uActFontSize = uDefaultFontSize;
                    596:     strcpy(sActFont, sDefaultFont);
                    597:
                    598: }                              /* TGIF_put_text */
                    599: /*}}}  */
                    600: /***************************************************************************/
                    601: TERM_PUBLIC int TGIF_text_angle(ang)
                    602: int ang;
                    603: {
                    604:     uActAngle = uTextAngle[ang];       /* 0=waag.  1=senkrecht */
                    605:     return (TRUE);
                    606: }                              /* TGIF_text_angle */
                    607:
                    608: /*}}}  */
                    609: /***************************************************************************/
                    610: TERM_PUBLIC int TGIF_justify_text(mode)
                    611: enum JUSTIFY mode;
                    612: {
                    613:     uActJust = mode;
                    614:     return (TRUE);
                    615: }                              /* TGIF_justify_text */
                    616:
                    617: /*}}}  */
                    618: /***************************************************************************/
                    619: TERM_PUBLIC void TGIF_point(ux, uy, number)
                    620: unsigned int ux, uy;
                    621: int number;
                    622: {
                    623:     double p;                  /* all pointtypes fit in a (x +/-p)x(y +/-p) box */
                    624:
                    625:     double x, y;
                    626:
                    627:
                    628:
                    629:     x = (double) (ux + uXshift);
                    630:     y = (double) (uYshift - uy);
                    631:
                    632:     p = pointsize * 8.0;       /* NL: Increased the bounding box (p value) from 4.0 to 8.0 */
                    633:     if (p == (double) 0.0)
                    634:        p = 0.1;
                    635:
                    636:     TGIF_flush_poly();
                    637:
                    638:     if (number != -1)
                    639:        number = number % 63;
                    640:     switch (number) {
                    641:     case -1:
                    642: /* HBB: corrected format string, shuts up gcc -Wall */
                    643:        fprintf(gpoutfile, "poly('%s',2,[\n\t%.1f,%.1f,%.1f,%.1f],0,1,1,%u,0,0,0,0,8,3,0,[\n]).\n",
                    644:                sActColor, x, y, x + 1, y + 1, uActNr++);
                    645:        break;
                    646:     case 0:
                    647:        /* cross */
                    648:        /* taking thickness 2 for cross & plus & star */
                    649:        fprintf(gpoutfile, "\
                    650: group([\n\
                    651: poly('%s',2,[\n\t%.1f,%.1f,%.1f,%.1f],0,2,1,%u,0,0,0,0,8,3,0,[\n]).\n\
                    652: poly('%s',2,[\n\t%.1f,%.1f,%.1f,%.1f],0,2,1,%u,0,0,0,0,8,3,0,[\n]).\n",
                    653:                sActColor, x - p, y - p, x + p, y + p, uActNr+1,
                    654:                sActColor, x - p, y + p, x + p, y - p, uActNr+2);
                    655:        uActNr += 4;
                    656:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                    657:        break;
                    658:        /*}}}  */
                    659:     case 1:
                    660:        /* plus */
                    661:        /* taking thickness 2 for cross & plus & star */
                    662:        fprintf(gpoutfile, "\
                    663: group([\n\
                    664: poly('%s',2,[\n\t%.1f,%.1f,%.1f,%.1f],0,2,1,%u,0,0,0,0,8,3,0,[\n]),\n\
                    665: poly('%s',2,[\n\t%.1f,%.1f,%.1f,%.1f],0,2,1,%u,0,0,0,0,8,3,0,[\n])\n",
                    666:                sActColor, x, y - p - 1, x, y + p + 1, uActNr+1,
                    667:                sActColor, x - p - 1, y, x + p + 1, y, uActNr+2);
                    668:        uActNr += 4;
                    669:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                    670:        break;
                    671:        /*}}}  */
                    672:     case 2:
                    673:        /* star */
                    674:        /* taking thickness 2 for cross & plus & star */
                    675:        fprintf(gpoutfile, "group([\n");
                    676:        fprintf(gpoutfile, "poly('%s',2,[\n\t%.1f,%.1f,%.1f,%.1f],0,2,1,%u,0,0,0,0,8,3,0,[\n]),\n",
                    677:                sActColor, x, y - p - 1, x, y + p + 1, uActNr++);
                    678:        fprintf(gpoutfile, "poly('%s',2,[\n\t%.1f,%.1f,%.1f,%.1f],0,2,1,%u,0,0,0,0,8,3,0,[\n])\n",
                    679:                sActColor, x - p - 1, y, x + p + 1, y, uActNr++);
                    680:        fprintf(gpoutfile, "poly('%s',2,[\n\t%.1f,%.1f,%.1f,%.1f],0,2,1,%u,0,0,0,0,8,3,0,[\n]).\n",
                    681:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                    682:        fprintf(gpoutfile, "poly('%s',2,[\n\t%.1f,%.1f,%.1f,%.1f],0,2,1,%u,0,0,0,0,8,3,0,[\n]).\n",
                    683:                sActColor, x - p, y + p, x + p, y - p, uActNr++);
                    684:        uActNr += 4;
                    685:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                    686:        break;
                    687:        /*}}}  */
                    688:     case 3:
                    689:        /* box */
                    690:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                    691:                sActColor, x - p, y - p, x + p, y + p, uActNr);
                    692:        uActNr++;
                    693:        break;
                    694:        /*}}}  */
                    695:     case 4:
                    696:        /* filled box */
                    697:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n",
                    698:                sActColor, x - p, y - p, x + p, y + p, uActNr);
                    699:        uActNr++;
                    700:        break;
                    701:        /*}}}  */
                    702:     case 5:
                    703:        /* circle */
                    704:        fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                    705:                sActColor, x - p, y - p, x + p, y + p, uActNr);
                    706:        uActNr++;
                    707:        break;
                    708:        /*}}}  */
                    709:     case 6:
                    710:        /* filled circle */
                    711:        fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n",
                    712:                sActColor, x - p, y - p, x + p, y + p, uActNr);
                    713:        uActNr++;
                    714:        break;
                    715:        /*}}}  */
                    716:     case 7:
                    717:        /* triangle up */
                    718:        fprintf(gpoutfile,
                    719:                "polygon('%s',4,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                    720:                sActColor, x, y - p, x + p, y + 0.75 * p, x - p, y + 0.75 * p, x, y - p, uActNr);
                    721:        uActNr++;
                    722:        break;
                    723:        /*}}}  */
                    724:     case 8:
                    725:        /* filled triangle up */
                    726:        fprintf(gpoutfile,
                    727:                "polygon('%s',4,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                    728:                sActColor, x, y - p, x + p, y + 0.75 * p, x - p, y + 0.75 * p, x, y - p, uActNr);
                    729:        uActNr++;
                    730:        break;
                    731:        /*}}}  */
                    732:     case 9:
                    733:        /* triangle down */
                    734:        fprintf(gpoutfile,
                    735:                "polygon('%s',4,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                    736:                sActColor, x, y + p, x - p, y - 0.75 * p, x + p, y - 0.75 * p, x, y + p, uActNr);
                    737:        uActNr++;
                    738:        break;
                    739:        /*}}}  */
                    740:     case 10:
                    741:        /* filled triangle down */
                    742:        fprintf(gpoutfile,
                    743:                "polygon('%s',4,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                    744:                sActColor, x, y + p, x - p, y - 0.75 * p, x + p, y - 0.75 * p, x, y + p, uActNr);
                    745:        uActNr++;
                    746:        break;
                    747:        /*}}}  */
                    748:     case 11:
                    749:        /* diamond */
                    750:        fprintf(gpoutfile,
                    751:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                    752:                sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr);
                    753:        uActNr++;
                    754:        break;
                    755:        /*}}}  */
                    756:     case 12:
                    757:        /* filled diamond */
                    758:        fprintf(gpoutfile,
                    759:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                    760:                sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr);
                    761:        uActNr++;
                    762:        break;
                    763:        /*}}}  */
                    764:     case 13:
                    765:        /* pentagon */
                    766:        fprintf(gpoutfile,
                    767:                "polygon('%s',6,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                    768:                sActColor, x, y - p, x + p, y - p / 4, x + 0.625 * p, y + p, x - 0.625 * p, y + p,
                    769:                x - p, y - p / 4, x, y - p, uActNr);
                    770:        uActNr++;
                    771:        break;
                    772:        /*}}}  */
                    773:     case 14:
                    774:        /* filled pentagon */
                    775:        fprintf(gpoutfile,
                    776:                "polygon('%s',6,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                    777:                sActColor, x, y - p, x + p, y - p / 4, x + 0.625 * p, y + p, x - 0.625 * p, y + p,
                    778:                x - p, y - p / 4, x, y - p, uActNr);
                    779:        uActNr++;
                    780:        break;
                    781:        /*}}}  */
                    782:     case 15:
                    783:        /* circle1 */
                    784:        fprintf(gpoutfile, "group([\n");
                    785:        fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                    786:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                    787:        fprintf(gpoutfile,
                    788:                "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,4480,2560,%u,0,0,8,3,0,[\n]).\n",
                    789:                sActColor, x - p, y - p, x, y, x + p * 0.342, y - p * 0.94, x - p * 0.342, y - p *
                    790:                0.94, 2 * p, 2 * p, uActNr++);
                    791:        uActNr += 2;
                    792:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                    793:        break;
                    794:        /*}}}  */
                    795:     case 16:
                    796:        /* circle2 */
                    797:        fprintf(gpoutfile, "group([\n");
                    798:        fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                    799:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                    800:        fprintf(gpoutfile,
                    801:                "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,0,5760,%u,0,0,8,3,0,[\n]).\n",
                    802:                sActColor, x - p, y - p, x, y, x + p, y, x, y - p, 2 * p, 2 * p, uActNr++);
                    803:        uActNr += 2;
                    804:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                    805:        break;
                    806:        /*}}}  */
                    807:     case 17:
                    808:        /* circle3 */
                    809:        fprintf(gpoutfile, "group([\n");
                    810:        fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                    811:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                    812:        fprintf(gpoutfile,
                    813:                "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,5760,5760,%u,0,0,8,3,0,[\n]).\n",
                    814:                sActColor, x - p, y - p, x, y, x, y - p, x - p, y, 2 * p, 2 * p, uActNr++);
                    815:        uActNr += 2;
                    816:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                    817:        break;
                    818:        /*}}}  */
                    819:     case 18:
                    820:        /* circle4 */
                    821:        fprintf(gpoutfile, "group([\n");
                    822:        fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                    823:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                    824:        fprintf(gpoutfile,
                    825:                "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,0,11520,%u,0,0,8,3,0,[\n]).\n",
                    826:                sActColor, x - p, y - p, x, y, x + p, y, x - p, y, 2 * p, 2 * p, uActNr++);
                    827:        uActNr += 2;
                    828:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                    829:        break;
                    830:        /*}}}  */
                    831:     case 19:
                    832:        /* circle5 */
                    833:        fprintf(gpoutfile, "group([\n");
                    834:        fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                    835:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                    836:        fprintf(gpoutfile,
                    837:                "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,11520,5760,%u,0,0,8,3,0,[\n]).\n",
                    838:                sActColor, x - p, y - p, x, y, x - p, y, x, y + p, 2 * p, 2 * p, uActNr++);
                    839:        uActNr += 2;
                    840:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                    841:        break;
                    842:        /*}}}  */
                    843:     case 20:
                    844:        /* circle6 */
                    845:        fprintf(gpoutfile, "group([\n");
                    846:        fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                    847:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                    848:        fprintf(gpoutfile,
                    849:                "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,0,5760,%u,0,0,8,3,0,[\n]).\n",
                    850:                sActColor, x - p, y - p, x, y, x + p, y, x, y - p, 2 * p, 2 * p, uActNr++);
                    851:        fprintf(gpoutfile,
                    852:                "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,11520,5760,%u,0,0,8,3,0,[\n]).\n",
                    853:                sActColor, x - p, y - p, x, y, x - p, y, x, y + p, 2 * p, 2 * p, uActNr++);
                    854:        uActNr += 3;
                    855:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                    856:        break;
                    857:        /*}}}  */
                    858:     case 21:
                    859:        /* circle7 */
                    860:        fprintf(gpoutfile, "group([\n");
                    861:        fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                    862:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                    863:        fprintf(gpoutfile,
                    864:                "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,5760,11520,%u,0,0,8,3,0,[\n]).\n",
                    865:                sActColor, x - p, y - p, x, y, x, y - p, x, y + p, 2 * p, 2 * p, uActNr++);
                    866:        uActNr += 2;
                    867:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                    868:        break;
                    869:        /*}}}  */
                    870:     case 22:
                    871:        /* circle8 */
                    872:        fprintf(gpoutfile, "group([\n");
                    873:        fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                    874:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                    875:        fprintf(gpoutfile,
                    876:                "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,0,17280,%u,0,0,8,3,0,[\n]).\n",
                    877:                sActColor, x - p, y - p, x, y, x + p, y, x, y + p, 2 * p, 2 * p, uActNr++);
                    878:        uActNr += 2;
                    879:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                    880:        break;
                    881:        /*}}}  */
                    882:     case 23:
                    883:        /* circle9 */
                    884:        fprintf(gpoutfile, "group([\n");
                    885:        fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                    886:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                    887:        fprintf(gpoutfile,
                    888:                "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,17280,5760,%u,0,0,8,3,0,[\n]).\n",
                    889:                sActColor, x - p, y - p, x, y, x, y + p, x + p, y, 2 * p, 2 * p, uActNr++);
                    890:        uActNr += 2;
                    891:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                    892:        break;
                    893:        /*}}}  */
                    894:     case 24:
                    895:        /* circle10 */
                    896:        fprintf(gpoutfile, "group([\n");
                    897:        fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                    898:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                    899:        fprintf(gpoutfile,
                    900:                "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,17280,11520,%u,0,0,8,3,0,[\n]).\n",
                    901:                sActColor, x - p, y - p, x, y, x, y + p, x, y - p, 2 * p, 2 * p, uActNr++);
                    902:        uActNr += 2;
                    903:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                    904:        break;
                    905:        /*}}}  */
                    906:     case 25:
                    907:        /* circle11 */
                    908:        fprintf(gpoutfile, "group([\n");
                    909:        fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                    910:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                    911:        fprintf(gpoutfile,
                    912:                "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,5760,5760,%u,0,0,8,3,0,[\n]).\n",
                    913:                sActColor, x - p, y - p, x, y, x, y - p, x - p, y, 2 * p, 2 * p, uActNr++);
                    914:        fprintf(gpoutfile,
                    915:                "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,17280,5760,%u,0,0,8,3,0,[\n]).\n",
                    916:                sActColor, x - p, y - p, x, y, x, y + p, x + p, y, 2 * p, 2 * p, uActNr++);
                    917:        uActNr += 3;
                    918:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                    919:        break;
                    920:        /*}}}  */
                    921:     case 26:
                    922:        /* circle12 */
                    923:        fprintf(gpoutfile, "group([\n");
                    924:        fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                    925:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                    926:        fprintf(gpoutfile,
                    927:                "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,17280,17280,%u,0,0,8,3,0,[\n]).\n",
                    928:                sActColor, x - p, y - p, x, y, x, y + p, x - p, y, 2 * p, 2 * p, uActNr++);
                    929:        uActNr += 2;
                    930:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                    931:        break;
                    932:        /*}}}  */
                    933:     case 27:
                    934:        /* circle13 */
                    935:        fprintf(gpoutfile, "group([\n");
                    936:        fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                    937:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                    938:        fprintf(gpoutfile,
                    939:                "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,11520,11520,%u,0,0,8,3,0,[\n]).\n",
                    940:                sActColor, x - p, y - p, x, y, x - p, y, x + p, y, 2 * p, 2 * p, uActNr++);
                    941:        uActNr += 2;
                    942:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                    943:        break;
                    944:        /*}}}  */
                    945:     case 28:
                    946:        /* circle14 */
                    947:        fprintf(gpoutfile, "group([\n");
                    948:        fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                    949:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                    950:        fprintf(gpoutfile,
                    951:                "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,11520,17280,%u,0,0,8,3,0,[\n]).\n",
                    952:                sActColor, x - p, y - p, x, y, x - p, y, x, y - p, 2 * p, 2 * p, uActNr++);
                    953:        uActNr += 2;
                    954:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                    955:        break;
                    956:        /*}}}  */
                    957:     case 29:
                    958:        /* circle15 */
                    959:        fprintf(gpoutfile, "group([\n");
                    960:        fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                    961:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                    962:        fprintf(gpoutfile,
                    963:                "arc('%s',1,1,1,0,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,0,%.1f,%.1f,5760,17280,%u,0,0,8,3,0,[\n]).\n",
                    964:                sActColor, x - p, y - p, x, y, x, y - p, x + p, y, 2 * p, 2 * p, uActNr++);
                    965:        uActNr += 2;
                    966:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                    967:        break;
                    968:        /*}}}  */
                    969:     case 30:
                    970:        /* circle16 */
                    971:        fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n",
                    972:                sActColor, x - p, y - p, x + p, y + p, uActNr);
                    973:        uActNr++;
                    974:        break;
                    975:        /*}}}  */
                    976:     case 31:
                    977:        /* box1 */
                    978:        fprintf(gpoutfile, "group([\n");
                    979:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                    980:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                    981:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n",
                    982:                sActColor, x - p / 4, y - p, x + p / 4, y, uActNr++);
                    983:        uActNr += 2;
                    984:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                    985:        break;
                    986:        /*}}}  */
                    987:     case 32:
                    988:        /* box2 */
                    989:        fprintf(gpoutfile, "group([\n");
                    990:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                    991:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                    992:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n",
                    993:                sActColor, x, y - p, x + p, y, uActNr++);
                    994:        uActNr += 2;
                    995:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                    996:        break;
                    997:        /*}}}  */
                    998:     case 33:
                    999:        /* box3 */
                   1000:        fprintf(gpoutfile, "group([\n");
                   1001:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                   1002:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                   1003:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n",
                   1004:                sActColor, x - p, y - p, x, y, uActNr++);
                   1005:        uActNr += 2;
                   1006:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1007:        break;
                   1008:        /*}}}  */
                   1009:     case 34:
                   1010:        /* box4 */
                   1011:        fprintf(gpoutfile, "group([\n");
                   1012:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                   1013:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                   1014:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n",
                   1015:                sActColor, x - p, y - p, x + p, y, uActNr++);
                   1016:        uActNr += 2;
                   1017:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1018:        break;
                   1019:        /*}}}  */
                   1020:     case 35:
                   1021:        /* box5 */
                   1022:        fprintf(gpoutfile, "group([\n");
                   1023:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                   1024:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                   1025:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n",
                   1026:                sActColor, x - p, y, x, y + p, uActNr++);
                   1027:        uActNr += 2;
                   1028:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1029:        break;
                   1030:        /*}}}  */
                   1031:     case 36:
                   1032:        /* box6 */
                   1033:        fprintf(gpoutfile, "group([\n");
                   1034:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                   1035:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                   1036:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n",
                   1037:                sActColor, x, y - p, x + p, y, uActNr++);
                   1038:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n",
                   1039:                sActColor, x - p, y, x, y + p, uActNr++);
                   1040:        uActNr += 3;
                   1041:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1042:        break;
                   1043:        /*}}}  */
                   1044:     case 37:
                   1045:        /* box7 */
                   1046:        fprintf(gpoutfile, "group([\n");
                   1047:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                   1048:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                   1049:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n",
                   1050:                sActColor, x - p, y - p, x, y + p, uActNr++);
                   1051:        uActNr += 2;
                   1052:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1053:        break;
                   1054:        /*}}}  */
                   1055:     case 38:
                   1056:        /* box8 */
                   1057:        fprintf(gpoutfile, "group([\n");
                   1058:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                   1059:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                   1060:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n",
                   1061:                sActColor, x - p, y - p, x + p, y, uActNr++);
                   1062:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n",
                   1063:                sActColor, x - p, y, x, y + p, uActNr++);
                   1064:        uActNr += 3;
                   1065:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1066:        break;
                   1067:        /*}}}  */
                   1068:     case 39:
                   1069:        /* box9 */
                   1070:        fprintf(gpoutfile, "group([\n");
                   1071:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                   1072:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                   1073:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n",
                   1074:                sActColor, x, y, x + p, y + p, uActNr++);
                   1075:        uActNr += 2;
                   1076:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1077:        break;
                   1078:        /*}}}  */
                   1079:     case 40:
                   1080:        /* box10 */
                   1081:        fprintf(gpoutfile, "group([\n");
                   1082:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                   1083:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                   1084:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n",
                   1085:                sActColor, x, y - p, x + p, y + p, uActNr++);
                   1086:        uActNr += 2;
                   1087:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1088:        break;
                   1089:        /*}}}  */
                   1090:     case 41:
                   1091:        /* box11 */
                   1092:        fprintf(gpoutfile, "group([\n");
                   1093:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                   1094:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                   1095:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n",
                   1096:                sActColor, x - p, y - p, x, y, uActNr++);
                   1097:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n",
                   1098:                sActColor, x, y, x + p, y + p, uActNr++);
                   1099:        uActNr += 3;
                   1100:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1101:        break;
                   1102:        /*}}}  */
                   1103:     case 42:
                   1104:        /* box12 */
                   1105:        fprintf(gpoutfile, "group([\n");
                   1106:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                   1107:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                   1108:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n",
                   1109:                sActColor, x - p, y - p, x + p, y, uActNr++);
                   1110:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n",
                   1111:                sActColor, x, y, x + p, y + p, uActNr++);
                   1112:        uActNr += 3;
                   1113:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1114:        break;
                   1115:        /*}}}  */
                   1116:     case 43:
                   1117:        /* box13 */
                   1118:        fprintf(gpoutfile, "group([\n");
                   1119:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                   1120:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                   1121:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n",
                   1122:                sActColor, x - p, y, x + p, y + p, uActNr++);
                   1123:        uActNr += 2;
                   1124:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1125:        break;
                   1126:        /*}}}  */
                   1127:     case 44:
                   1128:        /* box14 */
                   1129:        fprintf(gpoutfile, "group([\n");
                   1130:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                   1131:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                   1132:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n",
                   1133:                sActColor, x, y - p, x + p, y, uActNr++);
                   1134:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n",
                   1135:                sActColor, x - p, y, x + p, y + p, uActNr++);
                   1136:        uActNr += 3;
                   1137:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1138:        break;
                   1139:        /*}}}  */
                   1140:     case 45:
                   1141:        /* box15 */
                   1142:        fprintf(gpoutfile, "group([\n");
                   1143:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n",
                   1144:                sActColor, x - p, y - p, x + p, y + p, uActNr++);
                   1145:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n",
                   1146:                sActColor, x - p, y - p, x, y, uActNr++);
                   1147:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n",
                   1148:                sActColor, x - p, y, x + p, y + p, uActNr++);
                   1149:        uActNr += 3;
                   1150:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1151:        break;
                   1152:        /*}}}  */
                   1153:     case 46:
                   1154:        /* box16 */
                   1155:        fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n",
                   1156:                sActColor, x - p, y - p, x + p, y + p, uActNr);
                   1157:        uActNr++;
                   1158:        break;
                   1159:        /*}}}  */
                   1160:     case 47:
                   1161:        /* diamond1 */
                   1162:        fprintf(gpoutfile, "group([\n");
                   1163:        fprintf(gpoutfile,
                   1164:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1165:                sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr);
                   1166:        fprintf(gpoutfile,
                   1167:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1168:                sActColor, x - 0.625 * p, y - 0.375 * p, x - 0.375 * p, y - 0.625 * p, x + p / 8,
                   1169:                y - p / 8, x - p / 8, y + p / 8, x - 0.625 * p, y - 0.375 * p, uActNr);
                   1170:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1171:        uActNr += 2;
                   1172:        break;
                   1173:        /*}}}  */
                   1174:     case 48:
                   1175:        /* diamond2 */
                   1176:        fprintf(gpoutfile, "group([\n");
                   1177:        fprintf(gpoutfile,
                   1178:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1179:                sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr);
                   1180:        fprintf(gpoutfile,
                   1181:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1182:                sActColor, x - p / 2, y - p / 2, x, y - p, x + p / 2, y - p / 2, x, y, x - p / 2,
                   1183:                y - p / 2, uActNr);
                   1184:        uActNr += 2;
                   1185:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1186:        break;
                   1187:        /*}}}  */
                   1188:     case 49:
                   1189:        /* diamond3 */
                   1190:        fprintf(gpoutfile, "group([\n");
                   1191:        fprintf(gpoutfile,
                   1192:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1193:                sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr);
                   1194:        fprintf(gpoutfile,
                   1195:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1196:                sActColor, x - p, y, x - p / 2, y - p / 2, x, y, x - p / 2, y + p / 2, x - p, y, uActNr);
                   1197:        uActNr += 2;
                   1198:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1199:        break;
                   1200:        /*}}}  */
                   1201:     case 50:
                   1202:        /* diamond4 */
                   1203:        fprintf(gpoutfile, "group([\n");
                   1204:        fprintf(gpoutfile,
                   1205:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1206:                sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr);
                   1207:        fprintf(gpoutfile,
                   1208:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1209:                sActColor, x - p, y, x, y - p, x + p / 2, y - p / 2, x - p / 2, y + p / 2, x - p,
                   1210:                y, uActNr);
                   1211:        uActNr += 2;
                   1212:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1213:        break;
                   1214:        /*}}}  */
                   1215:     case 51:
                   1216:        /* diamond5 */
                   1217:        fprintf(gpoutfile, "group([\n");
                   1218:        fprintf(gpoutfile,
                   1219:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1220:                sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr);
                   1221:        fprintf(gpoutfile,
                   1222:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1223:                sActColor, x - p / 2, y + p / 2, x, y, x + p / 2, y + p / 2, x, y + p, x - p / 2,
                   1224:                y + p / 2, uActNr);
                   1225:        uActNr += 2;
                   1226:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1227:        break;
                   1228:        /*}}}  */
                   1229:     case 52:
                   1230:        /* diamond6 */
                   1231:        fprintf(gpoutfile, "group([\n");
                   1232:        fprintf(gpoutfile,
                   1233:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1234:                sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr);
                   1235:        fprintf(gpoutfile,
                   1236:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1237:                sActColor, x - p / 2, y - p / 2, x, y - p, x + p / 2, y - p / 2, x, y, x - p / 2,
                   1238:                y - p / 2, uActNr);
                   1239:        fprintf(gpoutfile,
                   1240:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1241:                sActColor, x - p / 2, y + p / 2, x, y, x + p / 2, y + p / 2, x, y + p, x - p / 2,
                   1242:                y + p / 2, uActNr);
                   1243:        uActNr += 3;
                   1244:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1245:        break;
                   1246:        /*}}}  */
                   1247:     case 53:
                   1248:        /* diamond7 */
                   1249:        fprintf(gpoutfile, "group([\n");
                   1250:        fprintf(gpoutfile,
                   1251:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1252:                sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr);
                   1253:        fprintf(gpoutfile,
                   1254:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1255:                sActColor, x - p, y, x - p / 2, y - p / 2, x + p / 2, y + p / 2, x, y + p, x - p,
                   1256:                y, uActNr);
                   1257:        uActNr += 2;
                   1258:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1259:        break;
                   1260:        /*}}}  */
                   1261:     case 54:
                   1262:        /* diamond8 */
                   1263:        fprintf(gpoutfile, "group([\n");
                   1264:        fprintf(gpoutfile,
                   1265:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1266:                sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr);
                   1267:        fprintf(gpoutfile,
                   1268:                "polygon('%s',7,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1269:                sActColor, x - p, y, x, y - p, x + p / 2, y - p / 2, x, y, x + p / 2, y + p / 2,
                   1270:                x, y + p, x - p, y, uActNr);
                   1271:        uActNr += 2;
                   1272:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1273:        break;
                   1274:        /*}}}  */
                   1275:     case 55:
                   1276:        /* diamond9 */
                   1277:        fprintf(gpoutfile, "group([\n");
                   1278:        fprintf(gpoutfile,
                   1279:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1280:                sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr);
                   1281:        fprintf(gpoutfile,
                   1282:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1283:                sActColor, x, y, x + p / 2, y - p / 2, x + p, y, x + p / 2, y + p / 2, x, y, uActNr);
                   1284:        uActNr += 2;
                   1285:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1286:        break;
                   1287:        /*}}}  */
                   1288:     case 56:
                   1289:        /* diamond10 */
                   1290:        fprintf(gpoutfile, "group([\n");
                   1291:        fprintf(gpoutfile,
                   1292:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1293:                sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr);
                   1294:        fprintf(gpoutfile,
                   1295:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1296:                sActColor, x - p / 2, y - p / 2, x, y - p, x + p, y, x + p / 2, y + p / 2, x - p /
                   1297:                2, y - p / 2, uActNr);
                   1298:        uActNr += 2;
                   1299:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1300:        break;
                   1301:        /*}}}  */
                   1302:     case 57:
                   1303:        /* diamond11 */
                   1304:        fprintf(gpoutfile, "group([\n");
                   1305:        fprintf(gpoutfile,
                   1306:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1307:                sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr);
                   1308:        fprintf(gpoutfile,
                   1309:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1310:                sActColor, x - p, y, x - p / 2, y - p / 2, x, y, x - p / 2, y + p / 2, x - p, y, uActNr);
                   1311:        fprintf(gpoutfile,
                   1312:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1313:                sActColor, x, y, x + p / 2, y - p / 2, x + p, y, x + p / 2, y + p / 2, x, y, uActNr);
                   1314:        uActNr += 3;
                   1315:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1316:        break;
                   1317:        /*}}}  */
                   1318:     case 58:
                   1319:        /* diamond12 */
                   1320:        fprintf(gpoutfile, "group([\n");
                   1321:        fprintf(gpoutfile,
                   1322:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1323:                sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr);
                   1324:        fprintf(gpoutfile,
                   1325:                "polygon('%s',7,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1326:                sActColor, x - p, y, x, y - p, x + p, y, x + p / 2, y + p / 2, x, y, x - p / 2, y
                   1327:                + p / 2, x - p, y, uActNr);
                   1328:        uActNr += 2;
                   1329:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1330:        break;
                   1331:        /*}}}  */
                   1332:     case 59:
                   1333:        /* diamond13 */
                   1334:        fprintf(gpoutfile, "group([\n");
                   1335:        fprintf(gpoutfile,
                   1336:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1337:                sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr);
                   1338:        fprintf(gpoutfile,
                   1339:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1340:                sActColor, x - p / 2, y + p / 2, x + p / 2, y - p / 2, x + p, y, x, y + p, x - p /
                   1341:                2, y + p / 2, uActNr);
                   1342:        uActNr += 2;
                   1343:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1344:        break;
                   1345:        /*}}}  */
                   1346:     case 60:
                   1347:        /* diamond14 */
                   1348:        fprintf(gpoutfile, "group([\n");
                   1349:        fprintf(gpoutfile,
                   1350:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1351:                sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr);
                   1352:        fprintf(gpoutfile,
                   1353:                "polygon('%s',7,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1354:                sActColor, x - p / 2, y - p / 2, x, y - p, x + p, y, x, y + p, x - p / 2, y + p /
                   1355:                2, x, y, x - p / 2, y - p / 2, uActNr);
                   1356:        uActNr += 2;
                   1357:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1358:        break;
                   1359:        /*}}}  */
                   1360:     case 61:
                   1361:        /* diamond15 */
                   1362:        fprintf(gpoutfile, "group([\n");
                   1363:        fprintf(gpoutfile,
                   1364:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1365:                sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr);
                   1366:        fprintf(gpoutfile,
                   1367:                "polygon('%s',7,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1368:                sActColor, x - p, y, x - p / 2, y - p / 2, x, y, x + p / 2, y - p / 2, x + p, y,
                   1369:                x, y + p, x - p, y, uActNr);
                   1370:        uActNr += 2;
                   1371:        fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++);
                   1372:        break;
                   1373:        /*}}}  */
                   1374:     case 62:
                   1375:        /* diamond16 */
                   1376:        fprintf(gpoutfile,
                   1377:                "polygon('%s',5,[\n%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n",
                   1378:                sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr);
                   1379:        uActNr++;
                   1380:        break;
                   1381:        /*}}}  */
                   1382:
                   1383:     }                          /* switch */
                   1384: }                              /* TGIF_point */
                   1385:
                   1386: /*}}}  */
                   1387: /***************************************************************************/
                   1388: TERM_PUBLIC void TGIF_set_pointsize(size)
                   1389: double size;
                   1390: {
                   1391:     uActPointSize = size;
                   1392: }
                   1393:
                   1394: /*}}}  */
                   1395: /***************************************************************************/
                   1396: TERM_PUBLIC int TGIF_set_font(font) /* Entry font as added by DJL in post.trm */
                   1397: char *font;
                   1398: {
                   1399:     char name[32];
                   1400:     int size, sep;
                   1401:
                   1402:     sep = strcspn(font, ",");
                   1403:     strncpy(name, font, sep);
                   1404:     name[sep] = NUL;
                   1405:     size = uActFontSize;
                   1406:     sscanf(&(font[sep + 1]), "%d", &size);
                   1407:     uActFontSize = size;
                   1408:     return TRUE;
                   1409: }
                   1410:
                   1411: /*}}}  */
                   1412: /***************************************************************************/
                   1413:
                   1414: #endif /* TERM_BODY */
                   1415:
                   1416: #ifdef TERM_TABLE
                   1417:
                   1418: TERM_TABLE_START(tgif_driver)
                   1419: "tgif",
                   1420: "TGIF X11 [mode] [x,y] [dashed] [\042font\042 [fontsize]]",
                   1421: TGIF_XMAX, TGIF_YMAX, TGIF_VCHAR, TGIF_HCHAR,
                   1422: TGIF_VTIC, TGIF_HTIC, TGIF_options, TGIF_init, TGIF_reset,
                   1423: TGIF_text, null_scale, TGIF_graphics, TGIF_move, TGIF_vector,
                   1424: TGIF_linetype, TGIF_put_text, TGIF_text_angle,
                   1425: TGIF_justify_text, TGIF_point, TGIF_arrow, TGIF_set_font,
                   1426: TGIF_set_pointsize, TERM_CAN_MULTIPLOT
                   1427:
                   1428: TERM_TABLE_END(tgif_driver)
                   1429: #undef LAST_TERM
                   1430:
                   1431: #define LAST_TERM tgif_driver
                   1432:
                   1433: #endif /* TERM_TABLE */
                   1434:
                   1435: #endif /* TERM_PROTO_ONLY */
                   1436:
                   1437: #ifdef TERM_HELP
                   1438: START_HELP(tgif)
                   1439: "1 tgif",
                   1440: "?commands set terminal tgif",
                   1441: "?set terminal tgif",
                   1442: "?set term tgif",
                   1443: "?terminal tgif",
                   1444: "?term tgif",
                   1445: "?tgif",
                   1446: " Tgif is an X11-based drawing tool---it has nothing to do with GIF.",
                   1447: "",
                   1448: " The `tgif` driver supports different pointsizes (with `set pointsize`),",
                   1449: " different label fonts and font sizes (e.g. `set label \"Hallo\" at x,y font",
                   1450: " \"Helvetica,34\"`) and multiple graphs on the page.  The proportions of the",
                   1451: " axes are not changed.",
                   1452: "",
                   1453: " Syntax:",
                   1454: "       set terminal tgif {portrait | landscape} {<[x,y]>}",
                   1455: "                         {solid | dashed}",
                   1456: "                         {\"<fontname>\"} {<fontsize>}",
                   1457: "",
                   1458: " where <[x,y]> specifies the number of graphs in the x and y directions on the",
                   1459: " page, \"<fontname>\" is the name of a valid PostScript font, and <fontsize>",
                   1460: " specifies the size of the PostScript font.  Defaults are `portrait`, `[1,1]`,",
                   1461: " `dashed`, `\"Helvetica\"`, and `18`.",
                   1462: "",
                   1463: " The `solid` option is usually prefered if lines are colored, as they often",
                   1464: " are in the editor.  Hardcopy will be black-and-white, so `dashed` should be",
                   1465: " chosen for that.",
                   1466: "",
                   1467: " Multiplot is implemented in two different ways.",
                   1468: "",
                   1469: " The first multiplot implementation is the standard gnuplot multiplot feature:",
                   1470: "",
                   1471: "       set terminal tgif",
                   1472: "       set output \"file.obj\"",
                   1473: "       set multiplot",
                   1474: "       set origin x01,y01",
                   1475: "       set size  xs,ys",
                   1476: "       plot ...",
                   1477: "            ...",
                   1478: "       set origin x02,y02",
                   1479: "       plot ...",
                   1480: "       set nomultiplot",
                   1481: "",
                   1482: " See `set multiplot` for further information.",
                   1483: "",
                   1484: " The second version is the [x,y] option for the driver itself.  The advantage",
                   1485: " of this implementation is that everything is scaled and placed automatically",
                   1486: " without the need for setting origins and sizes; the graphs keep their natural",
                   1487: " x/y proportions of 3/2 (or whatever is fixed by `set size`).",
                   1488: "",
                   1489: " If both multiplot methods are selected, the standard method is chosen and a",
                   1490: " warning message is given.",
                   1491: "",
                   1492: " Examples of single plots (or standard multiplot):",
                   1493: "       set terminal tgif                  # defaults",
                   1494: "       set terminal tgif \"Times-Roman\" 24",
                   1495: "       set terminal tgif landscape",
                   1496: "       set terminal tgif landscape solid",
                   1497: "",
                   1498: " Examples using the built-in multiplot mechanism:",
                   1499: "       set terminal tgif portrait [2,4]  # portrait; 2 plots in the x-",
                   1500: "                                         # and 4 in the y-direction",
                   1501: "       set terminal tgif [1,2]           # portrait; 1 plot in the x-",
                   1502: "                                         # and 2 in the y-direction",
                   1503: "       set terminal tgif landscape [3,3] # landscape; 3 plots in both",
                   1504: "                                         # directions"
                   1505: END_HELP(tgif)
                   1506: #endif
                   1507: /*{{{}}}*/

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>