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

Annotation of OpenXM_contrib/gnuplot/term/iris4d.trm, Revision 1.1.1.2

1.1       maekawa     1: /*
1.1.1.2 ! maekawa     2:  * $Id: iris4d.trm,v 1.6 1998/12/14 18:40:12 lhecking Exp $
1.1       maekawa     3:  *
                      4:  */
                      5:
                      6: /* GNUPLOT - iris4d.trm */
                      7:
                      8: /*[
                      9:  * Copyright 1990 - 1993, 1998   Thomas Williams, Colin Kelley
                     10:  *
                     11:  * Permission to use, copy, and distribute this software and its
                     12:  * documentation for any purpose with or without fee is hereby granted,
                     13:  * provided that the above copyright notice appear in all copies and
                     14:  * that both that copyright notice and this permission notice appear
                     15:  * in supporting documentation.
                     16:  *
                     17:  * Permission to modify the software is granted, but not the right to
                     18:  * distribute the complete modified source code.  Modifications are to
                     19:  * be distributed as patches to the released version.  Permission to
                     20:  * distribute binaries produced by compiling modified sources is granted,
                     21:  * provided you
                     22:  *   1. distribute the corresponding source modifications from the
                     23:  *    released version in the form of a patch file along with the binaries,
                     24:  *   2. add special version identification to distinguish your version
                     25:  *    in addition to the base release version number,
                     26:  *   3. provide your name and address as the primary contact for the
                     27:  *    support of your modified version, and
                     28:  *   4. retain our contact information in regard to use of the base
                     29:  *    software.
                     30:  * Permission to distribute the released version of the source code along
                     31:  * with corresponding source modifications in the form of a patch file is
                     32:  * granted with same provisions 2 through 4 for binary distributions.
                     33:  *
                     34:  * This software is provided "as is" without express or implied warranty
                     35:  * to the extent permitted by applicable law.
                     36: ]*/
                     37:
                     38: /*
                     39:  * This file is included by ../term.c.
                     40:  *
                     41:  * This terminal driver supports:
                     42:  *   IRIS terminals
                     43:  *
                     44:  * AUTHORS
                     45:  *   John H. Merritt
                     46:  *           (Applied Research Corporation) 7/1/89
                     47:  *           INTERNET: merritt@iris613.gsfc.nasa.gov
                     48:  *
                     49:  * send your comments or suggestions to (info-gnuplot@dartmouth.edu).
                     50:  *
                     51:  */
                     52: /*
                     53:  * adapted to the new terminal layout by Stefan Bodewig (Dec. 1995)
                     54:  */
                     55:
                     56: #include "driver.h"
                     57:
                     58: #ifdef TERM_REGISTER
                     59: register_term(iris4d)
                     60: #endif
                     61:
                     62: #ifdef TERM_PROTO
                     63: TERM_PUBLIC void IRIS4D_options __PROTO((void));
                     64: TERM_PUBLIC void IRIS4D_init __PROTO((void));
                     65: TERM_PUBLIC void IRIS4D_graphics __PROTO((void));
                     66: TERM_PUBLIC void IRIS4D_text __PROTO((void));
                     67: TERM_PUBLIC void IRIS4D_linetype __PROTO((int linetype));
                     68: TERM_PUBLIC void IRIS4D_move __PROTO((unsigned int x, unsigned int y));
                     69: TERM_PUBLIC void IRIS4D_vector __PROTO((unsigned int x, unsigned int y));
                     70: TERM_PUBLIC void IRIS4D_put_text __PROTO((unsigned int x, unsigned int y, char *str));
                     71: TERM_PUBLIC void IRIS4D_reset __PROTO((void));
                     72: #define IRIS4D_XMAX 1024
                     73: #define IRIS4D_YMAX 1024
                     74: #define IRIS4D_VCHAR (IRIS4D_YMAX/30)
                     75: #define IRIS4D_HCHAR (IRIS4D_XMAX/72)
                     76: #define IRIS4D_VTIC (IRIS4D_YMAX/80)
                     77: #define IRIS4D_HTIC (IRIS4D_XMAX/80)
                     78: #endif /* TERM_PROTO */
                     79:
                     80: #ifndef TERM_PROTO_ONLY
                     81: #ifdef TERM_BODY
                     82: void IRIS4D_cmove __PROTO((unsigned int x, unsigned int y));
                     83: #include <gl.h>
                     84:
                     85: #define IRIS4DRC    ".gnuplot_iris4d"
                     86:
                     87: #define IRIS4D_XLAST (IRIS4D_XMAX - 1)
                     88: #define IRIS4D_YLAST (IRIS4D_YMAX - 1)
                     89:
                     90:
                     91: static short colors24bits[][3] =
                     92: {
                     93:     {85, 85, 85},              /* 0. BACK GROUND ( DARKGRAY ) */
                     94:     {0, 0, 0},                 /* 1. BLACK */
                     95:     {170, 0, 170},             /* 2. MAGENTA */
                     96:     {85, 255, 255},            /* 3. LIGHTCYAN */
                     97:     {170, 0, 0},               /* 4. RED */
                     98:     {0, 170, 0},               /* 5. GREEN */
                     99:     {255, 85, 255},            /* 6. LIGHTMAGENTA */
                    100:     {255, 255, 85},            /* 7. YELLOW */
                    101:     {255, 85, 85},             /* 8. LIGHTRED */
                    102:     {85, 255, 85},             /* 9. LIGHTGREEN */
                    103:     {0, 170, 170},             /* 10. CYAN */
                    104:     {170, 170, 0},             /* 11. BROWN */
                    105: };
                    106: #define COLOR24_SIZE (sizeof(colors24bits) / (sizeof(short) * 3))
                    107:
                    108: static iris24bits = FALSE;
                    109:
                    110: #define IRIS4D_BACKGROUND      0
                    111: #define IRIS4D_BLACK           1
                    112: #define IRIS4D_MAGENTA         2
                    113: #define IRIS4D_LIGHTCYAN       3
                    114: #define IRIS4D_RED             4
                    115: #define IRIS4D_GREEN           5
                    116: #define IRIS4D_LIGHTMAGENTA    6
                    117: #define IRIS4D_YELLOW          7
                    118: #define IRIS4D_LIGHTRED                8
                    119: #define IRIS4D_LIGHTGREEN      9
                    120: #define IRIS4D_CYAN            10
                    121: #define IRIS4D_BROWN           11
                    122:
                    123: TERM_PUBLIC void IRIS4D_options()
                    124: {
                    125:     int i = 0;
                    126:     struct value a;
                    127:
                    128:     if (!END_OF_COMMAND) {
                    129:        i = (int) real(const_express(&a));
                    130:     }
                    131:     iris24bits = (i == 24);
                    132:
                    133:     sprintf(term_options, "%s", iris24bits ? "24" : "8");
                    134: }
                    135:
                    136: TERM_PUBLIC void IRIS4D_init()
                    137: {
                    138:     int i;
                    139:     char homedirfile[80], line[80];
                    140:     FILE *f;
                    141:
                    142:     foreground();
                    143:     winopen("Gnuplot");
                    144:     if (iris24bits) {
                    145:        RGBmode();
                    146:        gconfig();
                    147:     }
                    148:     /* BAD CODING STYLE! What about error checking? lh */
                    149:     strcat(strcat(strcpy(homedirfile, getenv("HOME")), "/"), IRIS4DRC);
                    150:     if ((f = fopen(IRIS4DRC, "r")) != NULL ||
                    151:        (f = fopen(homedirfile, "r")) != NULL) {
                    152:        int c1, c2, c3;
                    153:        for (i = 0; i < COLOR24_SIZE; i++) {
                    154:            if (fgets(line, 79, f) == NULL ||
                    155:                sscanf(line, "%d %d %d", &c1, &c2, &c3) != 3)
                    156:                int_error("Iris4d color file terminated prematurely or wrong format.\n", NO_CARET);
                    157:            colors24bits[i][0] = c1;
                    158:            colors24bits[i][1] = c2;
                    159:            colors24bits[i][2] = c3;
                    160:        }
                    161:
                    162:        fclose(f);
                    163:     }
                    164:     deflinestyle(1, 0x3FFF);   /* long dash */
                    165:     deflinestyle(2, 0x5555);   /* dotted */
                    166:     deflinestyle(3, 0x3333);   /* short dash */
                    167:     deflinestyle(4, 0xB5AD);   /* dotdashed */
                    168:     deflinestyle(5, 0x0F0F);   /* dashed */
                    169:     deflinestyle(6, 0xBBBB);   /* dotdashed */
                    170:     deflinestyle(7, 0x3F3F);   /* mid-long dash */
                    171:     deflinestyle(8, 0x7777);   /* mid-long dash */
                    172:
                    173:     return;
                    174: }
                    175:
                    176: TERM_PUBLIC void IRIS4D_graphics()
                    177: {
                    178:     reshapeviewport();
                    179:     ortho2((Coord) 0, (Coord) IRIS4D_XMAX, (Coord) 0, (Coord) IRIS4D_YMAX);
                    180:     if (iris24bits)
                    181:        RGBcolor(colors24bits[IRIS4D_BACKGROUND][0],
                    182:                 colors24bits[IRIS4D_BACKGROUND][1],
                    183:                 colors24bits[IRIS4D_BACKGROUND][2]);
                    184:     else
                    185:        color(WHITE);
                    186:
                    187:     clear();
                    188:
                    189:     return;
                    190: }
                    191:
                    192: TERM_PUBLIC void IRIS4D_text()
                    193: {
                    194:     gflush();                  /* flush buffer */
                    195:     return;                    /* enter text from another window!!! */
                    196: }
                    197:
                    198: TERM_PUBLIC void IRIS4D_linetype(linetype)
                    199: int linetype;
                    200: {
                    201:     static int pen_color_24[11] =
                    202:     {
                    203:        IRIS4D_BLACK,           /* reserved for border and numbers */
                    204:        IRIS4D_MAGENTA,         /* reserved for axis traces */
                    205:        IRIS4D_LIGHTCYAN,
                    206:        IRIS4D_RED,
                    207:        IRIS4D_GREEN,
                    208:        IRIS4D_LIGHTMAGENTA,
                    209:        IRIS4D_YELLOW,
                    210:        IRIS4D_LIGHTRED,
                    211:        IRIS4D_LIGHTGREEN,
                    212:        IRIS4D_CYAN,
                    213:        IRIS4D_BROWN,
                    214:     };
                    215:     static int pen_color[8] =
                    216:     {0, 1, 4, 5, 6, 1, 2, 4};
                    217:
                    218:     if (iris24bits) {
                    219:        int pencolor = pen_color_24[linetype < 0 ? linetype + 2 : linetype % 9 + 2];
                    220:
                    221:        RGBcolor(colors24bits[pencolor][0],
                    222:                 colors24bits[pencolor][1],
                    223:                 colors24bits[pencolor][2]);
                    224:        /* Make all lines solid (linestyle 0) upto to the ninth. If more than
                    225:         * 9 colors are needed, start to use the different line styles (1 to 8).
                    226:         */
                    227:        setlinestyle(linetype < 9 ? 0 : (linetype + 2) % 8 + 1);
                    228:     } else {
                    229:        linetype = linetype % 8;
                    230:        color((Colorindex) pen_color[linetype]);
                    231:        setlinestyle(linetype);
                    232:     }
                    233:     return;
                    234: }
                    235:
                    236: TERM_PUBLIC void IRIS4D_move(x, y)
                    237: unsigned int x, y;
                    238: {
                    239:     move2i(x, y);
                    240:     return;
                    241: }
                    242:
                    243: void IRIS4D_cmove(x, y)
                    244: unsigned int x, y;
                    245: {
                    246:     cmov2i(x, y);
                    247:     return;
                    248: }
                    249:
                    250: TERM_PUBLIC void IRIS4D_vector(x, y)
                    251: unsigned int x, y;
                    252: {
                    253:     draw2i(x, y);
                    254:     return;
                    255: }
                    256:
                    257:
                    258: TERM_PUBLIC void IRIS4D_put_text(x, y, str)
                    259: unsigned int x, y;
                    260: char *str;
                    261: {
                    262:     IRIS4D_cmove(x, y - IRIS4D_VCHAR / 2);
                    263:     charstr(str);
                    264:     return;
                    265: }
                    266:
                    267:
                    268: TERM_PUBLIC void IRIS4D_reset()
                    269: {
                    270:     return;
                    271: }
                    272:
                    273: #endif /* TERM_BODY */
                    274:
                    275: #ifdef TERM_TABLE
                    276:
                    277: TERM_TABLE_START(iris4d_driver)
                    278:     "iris4d", "Silicon Graphics IRIS 4D Series Computer",
                    279:     IRIS4D_XMAX, IRIS4D_YMAX, IRIS4D_VCHAR, IRIS4D_HCHAR,
                    280:     IRIS4D_VTIC, IRIS4D_HTIC, IRIS4D_options, IRIS4D_init, IRIS4D_reset,
                    281:     IRIS4D_text, null_scale, IRIS4D_graphics, IRIS4D_move, IRIS4D_vector,
                    282:     IRIS4D_linetype, IRIS4D_put_text, null_text_angle,
                    283:     null_justify_text, do_point, do_arrow, set_font_null
                    284: TERM_TABLE_END(iris4d_driver)
                    285:
                    286: #undef LAST_TERM
                    287: #define LAST_TERM iris4d_driver
                    288:
                    289: #endif /* TERM_TABLE */
                    290: #endif /* TERM_PROTO_ONLY */
                    291:
                    292: #ifdef TERM_HELP
                    293: START_HELP(iris4d)
                    294: "1 iris4d",
                    295: "?commands set terminal iris4d",
                    296: "?set terminal iris4d",
                    297: "?set term iris4d",
                    298: "?terminal iris4d",
                    299: "?term iris4d",
                    300: "?iris4d",
                    301: " The `iris4d` terminal driver supports Silicon Graphics IRIS 4D computers.",
                    302: " Its only option is 8- or 24-bit color depth.  The default is 8.",
                    303: "",
                    304: " Syntax:",
                    305: "       set terminal iris4d {8 | 24}",
                    306: "",
                    307: " The color depth is not really a choice -- the value appropriate for the",
                    308: " hardware should be selected.",
                    309: "",
                    310: " When using 24-bit mode, the colors can be directly specified via the file",
                    311: " .gnuplot_iris4d that is searched in the current directory and then in the",
                    312: " home directory specified by the HOME environment variable.  This file holds",
                    313: " RGB values for the background, border, labels and nine plotting colors, in",
                    314: " that order.  For example, here is a file containing the default colors:",
                    315: "",
                    316: "       85   85   85     Background   (dark gray)",
                    317: "       0    0    0      Boundary     (black)",
                    318: "       170  0    170    Labeling     (magenta)",
                    319: "       85   255  255    Plot Color 1 (light cyan)",
                    320: "       170  0    0      Plot Color 2 (red)",
                    321: "       0    170  0      Plot Color 3 (green)",
                    322: "       255  85   255    Plot Color 4 (light magenta)",
                    323: "       255  255  85     Plot Color 5 (yellow)",
                    324: "       255  85   85     Plot Color 6 (light red)",
                    325: "       85   255  85     Plot Color 7 (light green)",
                    326: "       0    170  170    Plot Color 8 (cyan)",
                    327: "       170  170  0      Plot Color 9 (brown)",
                    328: "",
                    329: " This file must have exactly 12 lines of RGB triples.  No empty lines are",
                    330: " allowed, and anything after the third number on a line is ignored."
                    331: END_HELP(iris4d)
                    332: #endif /* TERM_TABLE */

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