/* Hello, Emacs, this is -*-C-*- */ /* $Id: tgif.trm,v 1.56 2015/08/21 20:45:03 sfeam Exp $ */ /* GNUPLOT - tgif.trm */ /*[ * Copyright 1990 - 1993, 1998, 2004 * * Permission to use, copy, and distribute this software and its * documentation for any purpose with or without fee is hereby granted, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear * in supporting documentation. * * Permission to modify the software is granted, but not the right to * distribute the complete modified source code. Modifications are to * be distributed as patches to the released version. Permission to * distribute binaries produced by compiling modified sources is granted, * provided you * 1. distribute the corresponding source modifications from the * released version in the form of a patch file along with the binaries, * 2. add special version identification to distinguish your version * in addition to the base release version number, * 3. provide your name and address as the primary contact for the * support of your modified version, and * 4. retain our contact information in regard to use of the base * software. * Permission to distribute the released version of the source code along * with corresponding source modifications in the form of a patch file is * granted with same provisions 2 through 4 for binary distributions. * * This software is provided "as is" without express or implied warranty * to the extent permitted by applicable law. ]*/ /* */ /* This file is included by ../term.c. */ /* */ /* This terminal driver supports: */ /* TGIF */ /* */ /* AUTHORS: */ /* Werner Geppert and Andreas Kuhlewind */ /* March, 21st 1995 */ /* */ /* send your comments or suggestions to werner@mez.ruhr-uni-bochum.de */ /* */ /* */ /* MODIFIED May, 11st 1997 by NOVÁK Levente (novakl@tigris.klte.hu): */ /* */ /* - Modified the default linewidth for borders from 3 to 2 */ /* - Modified the default size of markers' bounding box */ /* to allow nicer shapes */ /* - Slightly modified the markers and added several new ones, */ /* now we have 64 different pointtypes, the same as for the */ /* PostScript terminal */ /* - I left the %.1f format for pixel positions, but I think */ /* Tgif does only calculate with integer positions */ /* */ /* Modified 07 July 2000 by Ian MacPhedran */ /* - added PM3D support */ /* */ /* Modified 04 February 2002 by Levente Novák */ /* - break long "polygon()" directives into lines, as it made */ /* Tgif fail polygons had >8 sides */ /* (e.g. when using "filledcurves") */ /* */ /* Modified 29 November 2004 Shigeharu TAKENO */ /* - add linewidth and monochrome options */ /* update option parsing to be order-independent */ /* */ /***************************************************************************/ /*}}} */ /***************************************************************************/ #include "driver.h" #ifdef TERM_REGISTER register_term(tgif) #endif #ifdef TERM_PROTO TERM_PUBLIC void TGIF_options __PROTO((void)); TERM_PUBLIC void TGIF_init __PROTO((void)); TERM_PUBLIC void TGIF_reset __PROTO((void)); TERM_PUBLIC void TGIF_text __PROTO((void)); TERM_PUBLIC void TGIF_graphics __PROTO((void)); TERM_PUBLIC void TGIF_move __PROTO((unsigned int ux, unsigned int uy)); TERM_PUBLIC void TGIF_vector __PROTO((unsigned int ux, unsigned int uy)); TERM_PUBLIC void TGIF_linetype __PROTO((int linetype)); TERM_PUBLIC void TGIF_put_text __PROTO((unsigned int ux, unsigned int uy, const char *str)); /* ref point and text */ TERM_PUBLIC int TGIF_text_angle __PROTO((int ang)); TERM_PUBLIC int TGIF_justify_text __PROTO((enum JUSTIFY mode)); TERM_PUBLIC void TGIF_point __PROTO((unsigned int ux, unsigned int uy, int number)); TERM_PUBLIC int TGIF_set_font __PROTO((const char *font)); TERM_PUBLIC void TGIF_set_pointsize __PROTO((double size)); TERM_PUBLIC void TGIF_set_linewidth __PROTO((double size)); TERM_PUBLIC int TGIF_make_palette (t_sm_palette *); TERM_PUBLIC void TGIF_previous_palette (void); TERM_PUBLIC void TGIF_set_color (t_colorspec *); TERM_PUBLIC void TGIF_fillbox(int style, unsigned int x1, unsigned int y1, unsigned int width, unsigned int height); TERM_PUBLIC void TGIF_FillSolid(char *curcolor,int fillpar); TERM_PUBLIC void TGIF_filled_polygon (int, gpiPoint *); /*}}} */ /* default length for static strings */ #define TGIF_STRLEN_MAX 255 /* standard x/y plot size in portrait mode */ #define TGIF_XMAX 950 #define TGIF_YMAX 634 /* total available plotting area */ #define TGIF_XTOT 950 #define TGIF_YTOT 1400 /* Offset */ #define TGIF_XOFF 50 #define TGIF_YOFF 50 #define TGIF_XSHIFT 1030 /* 80 points skip */ #define TGIF_YSHIFT 714 #define TGIF_VCHAR 18 /* default is 18 pt */ #define TGIF_HCHAR (18*6/10) #define TGIF_VTIC (TGIF_YMAX/80) #define TGIF_HTIC (TGIF_YMAX/80) #define TGIF_MAXPOLY 100 /*}}} */ #define GOT_TGIF_PROTO #endif #ifndef TERM_PROTO_ONLY #ifdef TERM_BODY /* tgif driver by Werner Geppert, werner@mez.ruhr-uni-bochum.de */ /***************************************************************************/ /* Variables: */ static unsigned int uLastTgifX, uLastTgifY; /* last Coordinate */ static unsigned int uActNr; /* current elementnumber */ static unsigned int uActPage; /* current pagenumber */ static unsigned int uActResolution=100; /* resolution in percent */ static unsigned int uActZoom; /* zoom factor */ static unsigned int uActAngle; /* current textangle */ static unsigned int uActThick; /* actual linethickness */ static double uActPointSize = 1; /* point size */ static unsigned int uActStyle; /* actual linestyle */ static unsigned int uActJust; /* actual textjustification */ static unsigned int uXshift; /* actual shift x */ static unsigned int uYshift; /* actual shift y */ static unsigned int uTgifPlotCount; /* counts number of plots */ static unsigned int uTgifPlotRow=1, uTgifPlotCol=1; /* actual plot row and col */ static unsigned int uTgif_win_horiz=1, /* number of plots in x and */ uTgif_win_verti=1; /* y direction [x,y] */ static double dActThick_factor=1.0; /* linewidth factor */ static double dActThick_default=1.0; /* default linewidth factor */ static TBOOLEAN TgifUseColor = TRUE; static char sActColor[TGIF_STRLEN_MAX]; /* current color */ static unsigned int uDefaultFontSize = 18; /* default font size */ static unsigned int uActFontSize = 18; /* current font size */ static char sDefaultFont[TGIF_STRLEN_MAX] = "Helvetica"; /* default font */ static char sActFont[TGIF_STRLEN_MAX] = "Helvetica"; /* current font */ /* static char sActPointString[TGIF_STRLEN_MAX]; HBB: unused */ static TBOOLEAN TgifSolid = FALSE; static TBOOLEAN TgifPortrait = TRUE; static unsigned int uTgifPlotsPerPage = 1; /* * 10 different pointtypes need 10 different linetypes */ /* NL: Modified first value to 2 from 3 */ static unsigned int uLineThick[] = { 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; static unsigned int uLineStyle[] = { 0, 5, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0 }; static const char *psColors[] = { "black", "black", /* border and x/y-zero-axes */ "red", "green", "blue", "magenta", "cyan", "yellow", "DarkSeaGreen", "HotPink", "black", "coral" }; /* for color density */ static const rgb255_color psColorcomp[] = { {0,0,0}, {0,0,0}, {255,0,0}, {0,255,0}, {0,0,255}, {255,0,255}, {0,255,255}, {255,255,0}, {143,188,143}, {255,105,180}, {0,0,0}, {255,127,80} }; static rgb255_color rgbActColor; static unsigned int uFillPattern[] = { 2, 3, 5, 1, 20, 26, 21, 27, 14, 15 }; #define TGIF_fillpatterns 10 static int iTgifPolyCount; static unsigned int uBuffX[TGIF_MAXPOLY], uBuffY[TGIF_MAXPOLY]; enum eState { NEWPOLY = 100, INPOLY }; static enum eState eTgifState = NEWPOLY; static void TGIF_flush_poly __PROTO((void)); /*}}} */ /***************************************************************************/ static void TGIF_flush_poly() { int i; if (eTgifState == INPOLY) { fprintf(gpoutfile, "poly('%s',%d,[\n\t", sActColor, iTgifPolyCount); for (i = 0; i < iTgifPolyCount - 1; i++) { fprintf(gpoutfile, "%u,%u,", uBuffX[i], uBuffY[i]); if ((i + 1) % 8 == 0) fputs("\n\t", gpoutfile); } fprintf(gpoutfile, "%u,%u],0,%u,1,%u,0,0,%u,0,8,3,0,[\n]).\n", uBuffX[iTgifPolyCount - 1], uBuffY[iTgifPolyCount - 1], uActThick, uActNr, uActStyle); uActNr++; eTgifState = NEWPOLY; iTgifPolyCount = 0; if (gpoutfile != (FILE *) NULL) fflush(gpoutfile); } } /* TGIF_flush_poly */ /*}}} */ /***************************************************************************/ enum TGIF_id { TGIF_MONOCHROME, TGIF_COLOR, TGIF_LINEWIDTH, TGIF_PORTRAIT, TGIF_LANDSCAPE, TGIF_GRAPHS, TGIF_SOLID, TGIF_DASHED, TGIF_FONT, TGIF_OTHER, TGIF_DEFAULT }; static struct gen_table TGIF_opts[] = { {"mo$nochrome", TGIF_MONOCHROME}, {"c$olor", TGIF_COLOR}, {"c$olour", TGIF_COLOR}, {"linew$idth", TGIF_LINEWIDTH}, {"lw", TGIF_LINEWIDTH}, {"p$ortrait", TGIF_PORTRAIT}, {"l$andscape", TGIF_LANDSCAPE}, {"[", TGIF_GRAPHS}, {"s$olid", TGIF_SOLID}, {"d$ashed", TGIF_DASHED}, {"font", TGIF_FONT}, {"default", TGIF_DEFAULT}, {NULL, TGIF_OTHER} }; TERM_PUBLIC void TGIF_options() { struct value a, b; double dscaleH, dscaleV; int option; while (!END_OF_COMMAND) { option = lookup_table(&TGIF_opts[0],c_token); switch(option) { case TGIF_DEFAULT: strcpy(sActFont, "Helvetica"); strcpy(sDefaultFont, "Helvetica"); uActFontSize = 18; uDefaultFontSize = 18; term->v_char = (unsigned int) (uActFontSize); term->h_char = (unsigned int) (uActFontSize * 6 / 10); TgifPortrait = TRUE; TgifUseColor = TRUE; term->flags &= ~TERM_MONOCHROME; TgifSolid = FALSE; uTgifPlotsPerPage = 1; uTgifPlotRow = 1; uTgifPlotCol = 1; uTgif_win_horiz = 1; uTgif_win_verti = 1; uActResolution = 100; dActThick_factor = 1.0; dActThick_default = 1.0; c_token++; break; case TGIF_MONOCHROME: TgifUseColor = FALSE; term->flags |= TERM_MONOCHROME; c_token++; break; case TGIF_COLOR: TgifUseColor = TRUE; term->flags &= ~TERM_MONOCHROME; c_token++; break; case TGIF_LINEWIDTH: c_token++; if (END_OF_COMMAND) { int_error(c_token, "linewidth: width is not specified."); } else { if((dActThick_default = real(const_express(&a)))<=0.0){ int_error(c_token-1,"linewidth: out of range"); dActThick_default = 1.0; } } break; case TGIF_PORTRAIT: TgifPortrait = TRUE; c_token++; break; case TGIF_LANDSCAPE: TgifPortrait = FALSE; /* uActResolution = 140; */ c_token++; break; case TGIF_GRAPHS: c_token++; if (END_OF_COMMAND) { int_error(c_token, "no. windows: [horizontal,vertical] expected"); } else if (!equals(c_token, ",")) { uTgif_win_horiz = (int) real(const_express(&a)); } if (!equals(c_token, ",")) int_error(c_token, "',' expected"); c_token++; if (!equals(c_token, "]")) { uTgif_win_verti = (int) real(const_express(&a)); } if (!equals(c_token, "]")) int_error(c_token, "expecting ']'"); c_token++; uTgifPlotsPerPage = uTgif_win_verti * uTgif_win_horiz; break; case TGIF_SOLID: TgifSolid = TRUE; c_token++; break; case TGIF_DASHED: TgifSolid = FALSE; c_token++; break; case TGIF_FONT: c_token++; /* Fall through */ case TGIF_OTHER: default: { char *s; if ((s = try_to_get_string())) { double fontsize; int sep = strcspn(s,","); if (s[sep] == ',' && (1 == sscanf(&s[sep+1],"%lf",&fontsize))) uActFontSize = (int)(fontsize+0.5); if (sep > 0) { strncpy(sActFont, s, sizeof(sActFont)); sActFont[sep] = NUL; } strcpy(sDefaultFont, sActFont); free(s); } else if (option == TGIF_FONT) { int_error(c_token,"Expecting font name "); } else { /* We have font size specified */ uActFontSize = (unsigned int) real(const_express(&b)); uDefaultFontSize = uActFontSize; term->v_char = (unsigned int) (uActFontSize); term->h_char = (unsigned int) (uActFontSize * 6 / 10); } break; } } } if (TgifPortrait) { dscaleH = (double) 100.0 *(TGIF_XTOT) / (xsize * (TGIF_XMAX + (uTgif_win_horiz - 1) * TGIF_XSHIFT)); dscaleV = (double) 100.0 *(TGIF_YTOT) / (ysize * (TGIF_YMAX + (uTgif_win_verti - 1) * TGIF_YSHIFT)); uActResolution = (int) GPMIN(dscaleH, dscaleV); switch (uTgif_win_verti) { case 1: uActZoom = 0; break; case 2: uActZoom = 1; break; default: uActZoom = 2; break; } } else { dscaleH = (double) 100.0 *(TGIF_YTOT) / (xsize * (TGIF_XMAX + (uTgif_win_horiz - 1) * TGIF_XSHIFT)); dscaleV = (double) 100.0 *(TGIF_XTOT) / (ysize * (TGIF_YMAX + (uTgif_win_verti - 1) * TGIF_YSHIFT)); uActResolution = (unsigned int) GPMIN(dscaleH, dscaleV); switch (uTgif_win_verti) { case 1: uActZoom = 0; break; case 2: uActZoom = 1; break; default: uActZoom = 2; break; } } sprintf(&(term_options[strlen(term_options)]), "%s [%u,%u]", TgifPortrait ? "portrait" : "landscape", uTgif_win_horiz, uTgif_win_verti); strcat(term_options, TgifUseColor ? " color" : " monochrome"); sprintf(&(term_options[strlen(term_options)]), " linewidth %f", dActThick_default); sprintf(&(term_options[strlen(term_options)]), " %s font \"%s,%u\"", TgifSolid ? "solid" : "dashed", sActFont, uActFontSize); } /*}}} */ /***************************************************************************/ TERM_PUBLIC void TGIF_init() { if (multiplot) { /* uActResolution= TgifPortrait ? (unsigned int)100 : (unsigned int)145 ; */ uActResolution = (unsigned int) 100; if (uTgifPlotsPerPage > 1) { fputs("warning: using standard multiplot\n", stderr); uTgifPlotsPerPage = 1; } uActZoom = 1; } fprintf(gpoutfile, "\ %%TGIF 2.15-p7\n\ 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\ %%\n\ %% @(#)Creator: gnuplot %s patchlevel %s\n\ %% %%W%%\n\ %%\n\ page(1,\"\").\n", TgifPortrait ? 0 : 1, uActResolution, uActZoom, sActFont, uActFontSize, gnuplot_version, gnuplot_patchlevel); eTgifState = NEWPOLY; iTgifPolyCount = 0; uTgifPlotCount = 0; uActPage = 1; } /* TGIF_init */ /*}}} */ /***************************************************************************/ TERM_PUBLIC void TGIF_graphics() { TGIF_flush_poly(); if (multiplot) { term->xmax = (TgifPortrait) ? TGIF_XTOT : TGIF_YTOT; term->ymax = (TgifPortrait) ? TGIF_YTOT : TGIF_XTOT; uLastTgifX = (TgifPortrait) ? TGIF_XOFF : TGIF_YOFF; uLastTgifY = (TgifPortrait) ? TGIF_YTOT + TGIF_YOFF : TGIF_XTOT + TGIF_XOFF; uYshift = uLastTgifY; uXshift = uLastTgifX; } else { if (uTgifPlotCount < uTgifPlotsPerPage) uTgifPlotCount++; else { fputs("error: number of plots > plots per page\n", stderr); return; } uXshift = (unsigned int) TGIF_XOFF *100 / uActResolution + (xsize * (uTgifPlotCol - 1) * TGIF_XSHIFT); uYshift = (unsigned int) TGIF_YOFF *100 / uActResolution + (ysize * (TGIF_YMAX + (uTgifPlotRow - 1) * TGIF_YSHIFT)); if (uTgifPlotCount % uTgif_win_horiz == 0) { uTgifPlotCol = 1; uTgifPlotRow++; } else { uTgifPlotCol++; } uLastTgifX = uXshift; uLastTgifY = uYshift; } /* default settings for each plot */ iTgifPolyCount = 0; uActNr = 0; uActAngle = 0; uActThick = 1; uActStyle = 0; uActJust = LEFT; strcpy(sActColor,psColors[0]); /* black */ rgbActColor = psColorcomp[0]; } /* TGIF_graphics */ /*}}} */ /***************************************************************************/ TERM_PUBLIC void TGIF_text() { TGIF_flush_poly(); } /* TGIF_text */ /*}}} */ /***************************************************************************/ TERM_PUBLIC void TGIF_reset() { TGIF_flush_poly(); iTgifPolyCount = 0; uTgifPlotCount = 0; uTgifPlotRow = 1; uTgifPlotCol = 1; if (gpoutfile != (FILE *) NULL) fflush(gpoutfile); } /* TGIF_reset */ /*}}} */ /***************************************************************************/ TERM_PUBLIC void TGIF_linetype(int linetype) { unsigned int ult; TGIF_flush_poly(); if (linetype >= 0) ult = 2 + linetype % 10; else if (linetype < -2) ult = 0; else ult = linetype + 2; if (TgifUseColor == FALSE) { strcpy(sActColor,"black"); rgbActColor = psColorcomp[0]; } else{ strcpy(sActColor, psColors[ult]); rgbActColor = psColorcomp[ult]; } uActThick = dActThick_factor * dActThick_default * uLineThick[ult]+0.5; if (!TgifSolid) uActStyle = uLineStyle[ult]; else { if (ult == 1) /* grid */ uActStyle = uLineStyle[ult]; else uActStyle = uLineStyle[2]; } } /* TGIF_linetype */ /*}}} */ /***************************************************************************/ TERM_PUBLIC void TGIF_move(unsigned int ux, unsigned int uy) { uLastTgifX = ux + uXshift; uLastTgifY = uYshift - uy; if (eTgifState == INPOLY) TGIF_flush_poly(); } /* TGIF_move */ /*}}} */ /***************************************************************************/ TERM_PUBLIC void TGIF_vector(unsigned int ux, unsigned int uy) { ux = ux + uXshift; uy = uYshift - uy; if (eTgifState == NEWPOLY) { uBuffX[0] = uLastTgifX; uBuffY[0] = uLastTgifY; iTgifPolyCount = 1; eTgifState = INPOLY; } uBuffX[iTgifPolyCount] = ux; uBuffY[iTgifPolyCount] = uy; uLastTgifX = ux; uLastTgifY = uy; iTgifPolyCount++; eTgifState = INPOLY; if (iTgifPolyCount == TGIF_MAXPOLY) { TGIF_flush_poly(); } } /* TGIF_vector */ /*}}} */ /*}}} */ /***************************************************************************/ TERM_PUBLIC void TGIF_put_text(unsigned int ux, unsigned int uy, const char *str) { unsigned int x, y; struct termentry *t = term; TGIF_flush_poly(); x = ux + uXshift; y = uYshift - uy - t->v_char / 2; if (strlen(str) == 0) return; fprintf(gpoutfile, "\ 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", sActColor, x, y, sActFont, uActFontSize, (uActAngle ? CENTRE : uActJust), uActAngle, uActNr, str); uActNr += 2; } /* TGIF_put_text */ /*}}} */ /***************************************************************************/ TERM_PUBLIC int TGIF_text_angle(int ang) { switch (ang) { case -270: case 90: uActAngle = 3; break; case 180: case -180: uActAngle = 2; break; case -90: case 270: uActAngle = 1; break; default: uActAngle = 0; break; } return (TRUE); } /* TGIF_text_angle */ /*}}} */ /***************************************************************************/ TERM_PUBLIC int TGIF_justify_text(enum JUSTIFY mode) { uActJust = mode; return (TRUE); } /* TGIF_justify_text */ /*}}} */ /***************************************************************************/ TERM_PUBLIC void TGIF_point(unsigned int ux, unsigned int uy, int number) { double p; /* all pointtypes fit in a (x +/-p)x(y +/-p) box */ double x, y; x = (double) (ux + uXshift); y = (double) (uYshift - uy); p = 4.0 * uActPointSize; if (p == (double) 0.0) p = 0.1; TGIF_flush_poly(); if (number != -1) number = number % 63; switch (number) { case -1: /* HBB: corrected format string, shuts up gcc -Wall */ fprintf(gpoutfile, "\ poly('%s',2,[\n\t%.1f,%.1f,%.1f,%.1f],0,1,1,%u,0,0,0,0,8,3,0,[\n]).\n", sActColor, x, y, x + 1, y + 1, uActNr++); break; case 0: /* plus */ /* taking thickness 2 for cross & plus & star */ fprintf(gpoutfile, "\ group([\n\ poly('%s',2,[\n\t%.1f,%.1f,%.1f,%.1f],0,2,1,%u,0,0,0,0,8,3,0,[\n]),\n\ poly('%s',2,[\n\t%.1f,%.1f,%.1f,%.1f],0,2,1,%u,0,0,0,0,8,3,0,[\n])\n", sActColor, x, y - p - 1, x, y + p + 1, uActNr+1, sActColor, x - p - 1, y, x + p + 1, y, uActNr+2); uActNr += 4; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 1: /* cross */ /* taking thickness 2 for cross & plus & star */ fprintf(gpoutfile, "\ group([\n\ poly('%s',2,[\n\t%.1f,%.1f,%.1f,%.1f],0,2,1,%u,0,0,0,0,8,3,0,[\n]).\n\ poly('%s',2,[\n\t%.1f,%.1f,%.1f,%.1f],0,2,1,%u,0,0,0,0,8,3,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr+1, sActColor, x - p, y + p, x + p, y - p, uActNr+2); uActNr += 4; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 2: /* star */ /* taking thickness 2 for cross & plus & star */ fputs("group([\n", gpoutfile); fprintf(gpoutfile, "\ poly('%s',2,[\n\t%.1f,%.1f,%.1f,%.1f],0,2,1,%u,0,0,0,0,8,3,0,[\n]),\n", sActColor, x, y - p - 1, x, y + p + 1, uActNr++); fprintf(gpoutfile, "\ poly('%s',2,[\n\t%.1f,%.1f,%.1f,%.1f],0,2,1,%u,0,0,0,0,8,3,0,[\n])\n", sActColor, x - p - 1, y, x + p + 1, y, uActNr++); fprintf(gpoutfile, "\ poly('%s',2,[\n\t%.1f,%.1f,%.1f,%.1f],0,2,1,%u,0,0,0,0,8,3,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "\ poly('%s',2,[\n\t%.1f,%.1f,%.1f,%.1f],0,2,1,%u,0,0,0,0,8,3,0,[\n]).\n", sActColor, x - p, y + p, x + p, y - p, uActNr++); uActNr += 4; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 3: /* box */ fprintf(gpoutfile, "\ box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr); uActNr++; break; /*}}} */ case 4: /* filled box */ fprintf(gpoutfile, "\ box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr); uActNr++; break; /*}}} */ case 5: /* circle */ fprintf(gpoutfile, "\ oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr); uActNr++; break; /*}}} */ case 6: /* filled circle */ fprintf(gpoutfile, "\ oval('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr); uActNr++; break; /*}}} */ case 7: /* triangle up */ fprintf(gpoutfile, "\ polygon('%s',4,[\n\ %.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y - p, x + p, y + 0.75 * p, x - p, y + 0.75 * p, x, y - p, uActNr); uActNr++; break; /*}}} */ case 8: /* filled triangle up */ fprintf(gpoutfile, "\ polygon('%s',4,[\n\ %.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y - p, x + p, y + 0.75 * p, x - p, y + 0.75 * p, x, y - p, uActNr); uActNr++; break; /*}}} */ case 9: /* triangle down */ fprintf(gpoutfile, "\ polygon('%s',4,[\n\ %.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],0,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y + p, x - p, y - 0.75 * p, x + p, y - 0.75 * p, x, y + p, uActNr); uActNr++; break; /*}}} */ case 10: /* filled triangle down */ fprintf(gpoutfile, "\ polygon('%s',4,[\n\ %.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f,%.1f],1,1,1,0,%u,0,0,0,0,0,[\n]).\n", sActColor, x, y + p, x - p, y - 0.75 * p, x + p, y - 0.75 * p, x, y + p, uActNr); uActNr++; break; /*}}} */ case 11: /* diamond */ fprintf(gpoutfile, "\ 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", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); uActNr++; break; /*}}} */ case 12: /* filled diamond */ fprintf(gpoutfile, "\ 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", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); uActNr++; break; /*}}} */ case 13: /* pentagon */ fprintf(gpoutfile, "\ 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", sActColor, x, y - p, x + p, y - p / 4, x + 0.625 * p, y + p, x - 0.625 * p, y + p, x - p, y - p / 4, x, y - p, uActNr); uActNr++; break; /*}}} */ case 14: /* filled pentagon */ fprintf(gpoutfile, "\ 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", sActColor, x, y - p, x + p, y - p / 4, x + 0.625 * p, y + p, x - 0.625 * p, y + p, x - p, y - p / 4, x, y - p, uActNr); uActNr++; break; /*}}} */ case 15: /* circle1 */ fputs("group([\n", gpoutfile); fprintf(gpoutfile, "\ oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n\ ]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "\ 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", sActColor, x - p, y - p, x, y, x + p * 0.342, y - p * 0.94, x - p * 0.342, y - p * 0.94, 2 * p, 2 * p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 16: /* circle2 */ fputs("group([\n", gpoutfile); fprintf(gpoutfile, "\ oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "\ 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", sActColor, x - p, y - p, x, y, x + p, y, x, y - p, 2 * p, 2 * p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 17: /* circle3 */ fputs("group([\n", gpoutfile); fprintf(gpoutfile, "\ oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "\ 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", sActColor, x - p, y - p, x, y, x, y - p, x - p, y, 2 * p, 2 * p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 18: /* circle4 */ fputs("group([\n", gpoutfile); fprintf(gpoutfile, "\ oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "\ 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", sActColor, x - p, y - p, x, y, x + p, y, x - p, y, 2 * p, 2 * p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 19: /* circle5 */ fputs("group([\n", gpoutfile); fprintf(gpoutfile, "\ oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "\ 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", sActColor, x - p, y - p, x, y, x - p, y, x, y + p, 2 * p, 2 * p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 20: /* circle6 */ fputs("group([\n", gpoutfile); fprintf(gpoutfile, "\ oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "\ 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", sActColor, x - p, y - p, x, y, x + p, y, x, y - p, 2 * p, 2 * p, uActNr++); fprintf(gpoutfile, "\ 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", sActColor, x - p, y - p, x, y, x - p, y, x, y + p, 2 * p, 2 * p, uActNr++); uActNr += 3; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 21: /* circle7 */ fputs("group([\n", gpoutfile); fprintf(gpoutfile, "\ oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "\ 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", sActColor, x - p, y - p, x, y, x, y - p, x, y + p, 2 * p, 2 * p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 22: /* circle8 */ fputs("group([\n", gpoutfile); fprintf(gpoutfile, "\ oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "\ 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", sActColor, x - p, y - p, x, y, x + p, y, x, y + p, 2 * p, 2 * p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 23: /* circle9 */ fputs("group([\n", gpoutfile); fprintf(gpoutfile, "\ oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "\ 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", sActColor, x - p, y - p, x, y, x, y + p, x + p, y, 2 * p, 2 * p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 24: /* circle10 */ fputs("group([\n", gpoutfile); fprintf(gpoutfile, "\ oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "\ 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", sActColor, x - p, y - p, x, y, x, y + p, x, y - p, 2 * p, 2 * p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 25: /* circle11 */ fputs("group([\n", gpoutfile); fprintf(gpoutfile, "\ oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "\ 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", sActColor, x - p, y - p, x, y, x, y - p, x - p, y, 2 * p, 2 * p, uActNr++); fprintf(gpoutfile, "\ 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", sActColor, x - p, y - p, x, y, x, y + p, x + p, y, 2 * p, 2 * p, uActNr++); uActNr += 3; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 26: /* circle12 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "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", sActColor, x - p, y - p, x, y, x, y + p, x - p, y, 2 * p, 2 * p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 27: /* circle13 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "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", sActColor, x - p, y - p, x, y, x - p, y, x + p, y, 2 * p, 2 * p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 28: /* circle14 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "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", sActColor, x - p, y - p, x, y, x - p, y, x, y - p, 2 * p, 2 * p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 29: /* circle15 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "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", sActColor, x - p, y - p, x, y, x, y - p, x + p, y, 2 * p, 2 * p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 30: /* circle16 */ fprintf(gpoutfile, "oval('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr); uActNr++; break; /*}}} */ case 31: /* box1 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p / 4, y - p, x + p / 4, y, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 32: /* box2 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x, y - p, x + p, y, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 33: /* box3 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x, y, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 34: /* box4 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 35: /* box5 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y, x, y + p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 36: /* box6 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x, y - p, x + p, y, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y, x, y + p, uActNr++); uActNr += 3; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 37: /* box7 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x, y + p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 38: /* box8 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y, x, y + p, uActNr++); uActNr += 3; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 39: /* box9 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x, y, x + p, y + p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 40: /* box10 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x, y - p, x + p, y + p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 41: /* box11 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x, y, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x, y, x + p, y + p, uActNr++); uActNr += 3; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 42: /* box12 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x, y, x + p, y + p, uActNr++); uActNr += 3; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 43: /* box13 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y, x + p, y + p, uActNr++); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 44: /* box14 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x, y - p, x + p, y, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y, x + p, y + p, uActNr++); uActNr += 3; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 45: /* box15 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,2,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x, y, uActNr++); fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y, x + p, y + p, uActNr++); uActNr += 3; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 46: /* box16 */ fprintf(gpoutfile, "box('%s',%.1f,%.1f,%.1f,%.1f,1,1,1,%u,0,0,0,[\n]).\n", sActColor, x - p, y - p, x + p, y + p, uActNr); uActNr++; break; /*}}} */ case 47: /* diamond1 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "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", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "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", sActColor, x - 0.625 * p, y - 0.375 * p, x - 0.375 * p, y - 0.625 * p, x + p / 8, y - p / 8, x - p / 8, y + p / 8, x - 0.625 * p, y - 0.375 * p, uActNr); fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); uActNr += 2; break; /*}}} */ case 48: /* diamond2 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "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", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "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", sActColor, x - p / 2, y - p / 2, x, y - p, x + p / 2, y - p / 2, x, y, x - p / 2, y - p / 2, uActNr); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 49: /* diamond3 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "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", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "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", sActColor, x - p, y, x - p / 2, y - p / 2, x, y, x - p / 2, y + p / 2, x - p, y, uActNr); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 50: /* diamond4 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "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", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "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", sActColor, x - p, y, x, y - p, x + p / 2, y - p / 2, x - p / 2, y + p / 2, x - p, y, uActNr); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 51: /* diamond5 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "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", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "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", sActColor, x - p / 2, y + p / 2, x, y, x + p / 2, y + p / 2, x, y + p, x - p / 2, y + p / 2, uActNr); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 52: /* diamond6 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "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", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "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", sActColor, x - p / 2, y - p / 2, x, y - p, x + p / 2, y - p / 2, x, y, x - p / 2, y - p / 2, uActNr); fprintf(gpoutfile, "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", sActColor, x - p / 2, y + p / 2, x, y, x + p / 2, y + p / 2, x, y + p, x - p / 2, y + p / 2, uActNr); uActNr += 3; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 53: /* diamond7 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "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", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "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", sActColor, x - p, y, x - p / 2, y - p / 2, x + p / 2, y + p / 2, x, y + p, x - p, y, uActNr); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 54: /* diamond8 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "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", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "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", sActColor, x - p, y, x, y - p, x + p / 2, y - p / 2, x, y, x + p / 2, y + p / 2, x, y + p, x - p, y, uActNr); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 55: /* diamond9 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "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", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "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", sActColor, x, y, x + p / 2, y - p / 2, x + p, y, x + p / 2, y + p / 2, x, y, uActNr); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 56: /* diamond10 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "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", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "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", sActColor, x - p / 2, y - p / 2, x, y - p, x + p, y, x + p / 2, y + p / 2, x - p / 2, y - p / 2, uActNr); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 57: /* diamond11 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "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", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "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", sActColor, x - p, y, x - p / 2, y - p / 2, x, y, x - p / 2, y + p / 2, x - p, y, uActNr); fprintf(gpoutfile, "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", sActColor, x, y, x + p / 2, y - p / 2, x + p, y, x + p / 2, y + p / 2, x, y, uActNr); uActNr += 3; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 58: /* diamond12 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "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", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "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", sActColor, x - p, y, x, y - p, x + p, y, x + p / 2, y + p / 2, x, y, x - p / 2, y + p / 2, x - p, y, uActNr); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 59: /* diamond13 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "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", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "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", sActColor, x - p / 2, y + p / 2, x + p / 2, y - p / 2, x + p, y, x, y + p, x - p / 2, y + p / 2, uActNr); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 60: /* diamond14 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "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", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "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", sActColor, x - p / 2, y - p / 2, x, y - p, x + p, y, x, y + p, x - p / 2, y + p / 2, x, y, x - p / 2, y - p / 2, uActNr); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 61: /* diamond15 */ fprintf(gpoutfile, "group([\n"); fprintf(gpoutfile, "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", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); fprintf(gpoutfile, "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", sActColor, x - p, y, x - p / 2, y - p / 2, x, y, x + p / 2, y - p / 2, x + p, y, x, y + p, x - p, y, uActNr); uActNr += 2; fprintf(gpoutfile, "],\n%u,0,[\n]).\n", uActNr++); break; /*}}} */ case 62: /* diamond16 */ fprintf(gpoutfile, "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", sActColor, x, y + p, x + p, y, x, y - p, x - p, y, x, y + p, uActNr); uActNr++; break; /*}}} */ } /* switch */ } /* TGIF_point */ /*}}} */ /***************************************************************************/ TERM_PUBLIC void TGIF_set_pointsize(double size) { uActPointSize = size < 0. ? 1. : size; } TERM_PUBLIC void TGIF_set_linewidth(double size) { dActThick_factor = size < 0. ? 1. : size; } /*}}} */ /***************************************************************************/ TERM_PUBLIC int TGIF_set_font(const char *font) { int sep; if (!font || !(*font)) font = sDefaultFont; sep = strcspn(font, ","); if (sep > 0) { strncpy(sActFont, font, sep); sActFont[sep] = NUL; } sscanf(&(font[sep + 1]), "%d", &uActFontSize); return TRUE; } TERM_PUBLIC int TGIF_make_palette(t_sm_palette *palette) { return 0; /* can do continuous colors */ } TERM_PUBLIC void TGIF_previous_palette(void) { /* do nothing */ } TERM_PUBLIC void TGIF_set_color(t_colorspec *colorspec) { if (colorspec->type == TC_LT) { TGIF_linetype(colorspec->lt); } else if (colorspec->type == TC_FRAC) { rgb255maxcolors_from_gray(colorspec->value, &rgbActColor); sprintf(sActColor, "#%.2x%.2x%.2x", rgbActColor.r, rgbActColor.g, rgbActColor.b); } else if (colorspec->type == TC_RGB) { rgbActColor.r = colorspec->lt >> 16 & 0xff; rgbActColor.g = colorspec->lt >> 8 & 0xff; rgbActColor.b = colorspec->lt & 0xff; sprintf(sActColor, "#%.2x%.2x%.2x", rgbActColor.r, rgbActColor.g, rgbActColor.b); } } TERM_PUBLIC void TGIF_fillbox(int style, unsigned int x1, unsigned int y1, unsigned int width, unsigned int height) { gpiPoint corner[4]; corner[0].x = x1; corner[0].y = y1; corner[1].x = x1+width; corner[1].y = y1; corner[2].x = x1+width; corner[2].y = y1+height; corner[3].x = x1; corner[3].y = y1+height; corner->style = style; TGIF_filled_polygon(4, corner); } TERM_PUBLIC void TGIF_FillSolid(char *curcolor,int fillpar) { int red, green, blue; double fact = (double)(100 - fillpar) * 0.01; if (fact < 0.0) fact = 0.0; else if (fact > 1.0) fact = 1.0; red = rgbActColor.r + (0xff - rgbActColor.r) * fact; green = rgbActColor.g + (0xff - rgbActColor.g) * fact; blue = rgbActColor.b + (0xff - rgbActColor.b) * fact; sprintf(curcolor,"#%.2x%.2x%.2x", red, green, blue); } TERM_PUBLIC void TGIF_filled_polygon(int points, gpiPoint *corners) { int i,pattern; int fillpar = corners->style >> 4; int style = corners->style & 0xf; char curcolor[TGIF_STRLEN_MAX]; if (eTgifState == INPOLY) TGIF_flush_poly(); /* Clean up current data */ switch (style) { case FS_EMPTY: pattern=uFillPattern[0]; strcpy(curcolor,"white"); break; case FS_TRANSPARENT_PATTERN: case FS_PATTERN: pattern=uFillPattern[fillpar % TGIF_fillpatterns]; strcpy(curcolor,sActColor); break; case FS_TRANSPARENT_SOLID: case FS_SOLID: pattern=1; TGIF_FillSolid(curcolor,fillpar); break; default: pattern=1; strcpy(curcolor,sActColor); } fprintf(gpoutfile, "polygon('%s',%d,[\n\t",curcolor,points+1); /* loop through points, do the first one last as well as first */ fprintf(gpoutfile,"%u,%u,", corners[0].x+uXshift, uYshift-corners[0].y); for (i = 1; i < points; i++) { fprintf(gpoutfile, "%u,%u,", corners[i].x+uXshift, uYshift-corners[i].y); /* LN: Break long lines as Tgif is rather picky about them */ if ((i + 1) % 8 == 0) fputs("\n\t", gpoutfile); } fprintf(gpoutfile, "%u,%u", corners[0].x+uXshift, uYshift-corners[0].y); fprintf(gpoutfile, "],%d,1,0,0,%u,0,0,0,0,[\n]).\n", pattern, uActNr); uActNr++; } /*}}} */ /***************************************************************************/ #endif /* TERM_BODY */ #ifdef TERM_TABLE TERM_TABLE_START(tgif_driver) "tgif", "TGIF X11 [mode] [x,y] [dashed] [\042font\042 [fontsize]]", TGIF_XMAX, TGIF_YMAX, TGIF_VCHAR, TGIF_HCHAR, TGIF_VTIC, TGIF_HTIC, TGIF_options, TGIF_init, TGIF_reset, TGIF_text, null_scale, TGIF_graphics, TGIF_move, TGIF_vector, TGIF_linetype, TGIF_put_text, TGIF_text_angle, TGIF_justify_text, TGIF_point, do_arrow, TGIF_set_font, TGIF_set_pointsize, TERM_CAN_MULTIPLOT|TERM_CAN_DASH|TERM_LINEWIDTH, 0, 0, TGIF_fillbox, TGIF_set_linewidth #ifdef USE_MOUSE ,0, 0, 0, 0, 0 /* no mouse support for the tgif terminal */ #endif , TGIF_make_palette, TGIF_previous_palette, TGIF_set_color, TGIF_filled_polygon TERM_TABLE_END(tgif_driver) #undef LAST_TERM #define LAST_TERM tgif_driver #endif /* TERM_TABLE */ #endif /* TERM_PROTO_ONLY */ #ifdef TERM_HELP START_HELP(tgif) "1 tgif", "?commands set terminal tgif", "?set terminal tgif", "?set term tgif", "?terminal tgif", "?term tgif", "?tgif", " Tgif is an X11-based drawing tool---it has nothing to do with GIF.", "", " The `tgif` driver supports a choice of font and font size and multiple", " graphs on the page. The proportions of the axes are not changed.", "", " Syntax:", " set terminal tgif {portrait | landscape | default} {<[x,y]>}", " {monochrome | color}", " {{linewidth | lw} }", " {solid | dashed}", " {font \"{,}\"}", "", " where <[x,y]> specifies the number of graphs in the x and y directions on the", " page, `color` enables color, `linewidth` scales all linewidths by ,", " \"\" is the name of a valid PostScript font, and ", " specifies the size of the PostScript font.", " `defaults` sets all options to their defaults: `portrait`, `[1,1]`, `color`,", " `linewidth 1.0`, `dashed`, `\"Helvetica,18\"`.", "", " The `solid` option is usually prefered if lines are colored, as they often", " are in the editor. Hardcopy will be black-and-white, so `dashed` should be", " chosen for that.", "", " Multiplot is implemented in two different ways.", "", " The first multiplot implementation is the standard gnuplot multiplot feature:", "", " set terminal tgif", " set output \"file.obj\"", " set multiplot", " set origin x01,y01", " set size xs,ys", " plot ...", " ...", " set origin x02,y02", " plot ...", " unset multiplot", "", " See `set multiplot` for further information.", "", " The second version is the [x,y] option for the driver itself. The advantage", " of this implementation is that everything is scaled and placed automatically", " without the need for setting origins and sizes; the graphs keep their natural", " x/y proportions of 3/2 (or whatever is fixed by `set size`).", "", " If both multiplot methods are selected, the standard method is chosen and a", " warning message is given.", "", " Examples of single plots (or standard multiplot):", " set terminal tgif # defaults", " set terminal tgif \"Times-Roman,24\"", " set terminal tgif landscape", " set terminal tgif landscape solid", "", " Examples using the built-in multiplot mechanism:", " set terminal tgif portrait [2,4] # portrait; 2 plots in the x-", " # and 4 in the y-direction", " set terminal tgif [1,2] # portrait; 1 plot in the x-", " # and 2 in the y-direction", " set terminal tgif landscape [3,3] # landscape; 3 plots in both", " # directions" END_HELP(tgif) #endif /*{{{}}}*/