[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     ! 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>