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

File: [local] / OpenXM_contrib / gnuplot / term / Attic / iris4d.trm (download)

Revision 1.1.1.2 (vendor branch), Sat Jan 22 14:16:26 2000 UTC (24 years, 4 months ago) by maekawa
Branch: GNUPLOT
CVS Tags: maekawa-ipv6, VERSION_3_7_3, VERSION_3_7_1, RELEASE_20000124, RELEASE_1_2_3, RELEASE_1_2_2_KNOPPIX_b, RELEASE_1_2_2_KNOPPIX, RELEASE_1_2_2, RELEASE_1_2_1, RELEASE_1_1_3, RELEASE_1_1_2
Changes since 1.1.1.1: +1 -1 lines

Import gnuplot 3.7.1

/*
 * $Id: iris4d.trm,v 1.6 1998/12/14 18:40:12 lhecking Exp $
 *
 */

/* GNUPLOT - iris4d.trm */

/*[
 * Copyright 1990 - 1993, 1998   Thomas Williams, Colin Kelley
 *
 * 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:
 *   IRIS terminals
 *
 * AUTHORS
 *   John H. Merritt 
 *           (Applied Research Corporation) 7/1/89
 *           INTERNET: merritt@iris613.gsfc.nasa.gov
 * 
 * send your comments or suggestions to (info-gnuplot@dartmouth.edu).
 * 
 */
/*
 * adapted to the new terminal layout by Stefan Bodewig (Dec. 1995)
 */

#include "driver.h"

#ifdef TERM_REGISTER
register_term(iris4d)
#endif

#ifdef TERM_PROTO
TERM_PUBLIC void IRIS4D_options __PROTO((void));
TERM_PUBLIC void IRIS4D_init __PROTO((void));
TERM_PUBLIC void IRIS4D_graphics __PROTO((void));
TERM_PUBLIC void IRIS4D_text __PROTO((void));
TERM_PUBLIC void IRIS4D_linetype __PROTO((int linetype));
TERM_PUBLIC void IRIS4D_move __PROTO((unsigned int x, unsigned int y));
TERM_PUBLIC void IRIS4D_vector __PROTO((unsigned int x, unsigned int y));
TERM_PUBLIC void IRIS4D_put_text __PROTO((unsigned int x, unsigned int y, char *str));
TERM_PUBLIC void IRIS4D_reset __PROTO((void));
#define IRIS4D_XMAX 1024
#define IRIS4D_YMAX 1024
#define IRIS4D_VCHAR (IRIS4D_YMAX/30)
#define IRIS4D_HCHAR (IRIS4D_XMAX/72)
#define IRIS4D_VTIC (IRIS4D_YMAX/80)
#define IRIS4D_HTIC (IRIS4D_XMAX/80)
#endif /* TERM_PROTO */

#ifndef TERM_PROTO_ONLY
#ifdef TERM_BODY
void IRIS4D_cmove __PROTO((unsigned int x, unsigned int y));
#include <gl.h>

#define IRIS4DRC    ".gnuplot_iris4d"

#define IRIS4D_XLAST (IRIS4D_XMAX - 1)
#define IRIS4D_YLAST (IRIS4D_YMAX - 1)


static short colors24bits[][3] =
{
    {85, 85, 85},		/* 0. BACK GROUND ( DARKGRAY ) */
    {0, 0, 0},			/* 1. BLACK */
    {170, 0, 170},		/* 2. MAGENTA */
    {85, 255, 255},		/* 3. LIGHTCYAN */
    {170, 0, 0},		/* 4. RED */
    {0, 170, 0},		/* 5. GREEN */
    {255, 85, 255},		/* 6. LIGHTMAGENTA */
    {255, 255, 85},		/* 7. YELLOW */
    {255, 85, 85},		/* 8. LIGHTRED */
    {85, 255, 85},		/* 9. LIGHTGREEN */
    {0, 170, 170},		/* 10. CYAN */
    {170, 170, 0},		/* 11. BROWN */
};
#define COLOR24_SIZE (sizeof(colors24bits) / (sizeof(short) * 3))

static iris24bits = FALSE;

#define IRIS4D_BACKGROUND	0
#define IRIS4D_BLACK		1
#define IRIS4D_MAGENTA		2
#define IRIS4D_LIGHTCYAN	3
#define IRIS4D_RED		4
#define IRIS4D_GREEN		5
#define IRIS4D_LIGHTMAGENTA	6
#define IRIS4D_YELLOW		7
#define IRIS4D_LIGHTRED		8
#define IRIS4D_LIGHTGREEN	9
#define IRIS4D_CYAN		10
#define IRIS4D_BROWN		11

TERM_PUBLIC void IRIS4D_options()
{
    int i = 0;
    struct value a;

    if (!END_OF_COMMAND) {
	i = (int) real(const_express(&a));
    }
    iris24bits = (i == 24);

    sprintf(term_options, "%s", iris24bits ? "24" : "8");
}

TERM_PUBLIC void IRIS4D_init()
{
    int i;
    char homedirfile[80], line[80];
    FILE *f;

    foreground();
    winopen("Gnuplot");
    if (iris24bits) {
	RGBmode();
	gconfig();
    }
    /* BAD CODING STYLE! What about error checking? lh */
    strcat(strcat(strcpy(homedirfile, getenv("HOME")), "/"), IRIS4DRC);
    if ((f = fopen(IRIS4DRC, "r")) != NULL ||
	(f = fopen(homedirfile, "r")) != NULL) {
	int c1, c2, c3;
	for (i = 0; i < COLOR24_SIZE; i++) {
	    if (fgets(line, 79, f) == NULL ||
		sscanf(line, "%d %d %d", &c1, &c2, &c3) != 3)
		int_error("Iris4d color file terminated prematurely or wrong format.\n", NO_CARET);
	    colors24bits[i][0] = c1;
	    colors24bits[i][1] = c2;
	    colors24bits[i][2] = c3;
	}

	fclose(f);
    }
    deflinestyle(1, 0x3FFF);	/* long dash */
    deflinestyle(2, 0x5555);	/* dotted */
    deflinestyle(3, 0x3333);	/* short dash */
    deflinestyle(4, 0xB5AD);	/* dotdashed */
    deflinestyle(5, 0x0F0F);	/* dashed */
    deflinestyle(6, 0xBBBB);	/* dotdashed */
    deflinestyle(7, 0x3F3F);	/* mid-long dash */
    deflinestyle(8, 0x7777);	/* mid-long dash */

    return;
}

TERM_PUBLIC void IRIS4D_graphics()
{
    reshapeviewport();
    ortho2((Coord) 0, (Coord) IRIS4D_XMAX, (Coord) 0, (Coord) IRIS4D_YMAX);
    if (iris24bits)
	RGBcolor(colors24bits[IRIS4D_BACKGROUND][0],
		 colors24bits[IRIS4D_BACKGROUND][1],
		 colors24bits[IRIS4D_BACKGROUND][2]);
    else
	color(WHITE);

    clear();

    return;
}

TERM_PUBLIC void IRIS4D_text()
{
    gflush();			/* flush buffer */
    return;			/* enter text from another window!!! */
}

TERM_PUBLIC void IRIS4D_linetype(linetype)
int linetype;
{
    static int pen_color_24[11] =
    {
	IRIS4D_BLACK,		/* reserved for border and numbers */
	IRIS4D_MAGENTA,		/* reserved for axis traces */
	IRIS4D_LIGHTCYAN,
	IRIS4D_RED,
	IRIS4D_GREEN,
	IRIS4D_LIGHTMAGENTA,
	IRIS4D_YELLOW,
	IRIS4D_LIGHTRED,
	IRIS4D_LIGHTGREEN,
	IRIS4D_CYAN,
	IRIS4D_BROWN,
    };
    static int pen_color[8] =
    {0, 1, 4, 5, 6, 1, 2, 4};

    if (iris24bits) {
	int pencolor = pen_color_24[linetype < 0 ? linetype + 2 : linetype % 9 + 2];

	RGBcolor(colors24bits[pencolor][0],
		 colors24bits[pencolor][1],
		 colors24bits[pencolor][2]);
	/* Make all lines solid (linestyle 0) upto to the ninth. If more than
	 * 9 colors are needed, start to use the different line styles (1 to 8).
	 */
	setlinestyle(linetype < 9 ? 0 : (linetype + 2) % 8 + 1);
    } else {
	linetype = linetype % 8;
	color((Colorindex) pen_color[linetype]);
	setlinestyle(linetype);
    }
    return;
}

TERM_PUBLIC void IRIS4D_move(x, y)
unsigned int x, y;
{
    move2i(x, y);
    return;
}

void IRIS4D_cmove(x, y)
unsigned int x, y;
{
    cmov2i(x, y);
    return;
}

TERM_PUBLIC void IRIS4D_vector(x, y)
unsigned int x, y;
{
    draw2i(x, y);
    return;
}


TERM_PUBLIC void IRIS4D_put_text(x, y, str)
unsigned int x, y;
char *str;
{
    IRIS4D_cmove(x, y - IRIS4D_VCHAR / 2);
    charstr(str);
    return;
}


TERM_PUBLIC void IRIS4D_reset()
{
    return;
}

#endif /* TERM_BODY */

#ifdef TERM_TABLE

TERM_TABLE_START(iris4d_driver)
    "iris4d", "Silicon Graphics IRIS 4D Series Computer",
    IRIS4D_XMAX, IRIS4D_YMAX, IRIS4D_VCHAR, IRIS4D_HCHAR,
    IRIS4D_VTIC, IRIS4D_HTIC, IRIS4D_options, IRIS4D_init, IRIS4D_reset,
    IRIS4D_text, null_scale, IRIS4D_graphics, IRIS4D_move, IRIS4D_vector,
    IRIS4D_linetype, IRIS4D_put_text, null_text_angle,
    null_justify_text, do_point, do_arrow, set_font_null
TERM_TABLE_END(iris4d_driver)

#undef LAST_TERM
#define LAST_TERM iris4d_driver

#endif /* TERM_TABLE */
#endif /* TERM_PROTO_ONLY */

#ifdef TERM_HELP
START_HELP(iris4d)
"1 iris4d",
"?commands set terminal iris4d",
"?set terminal iris4d",
"?set term iris4d",
"?terminal iris4d",
"?term iris4d",
"?iris4d",
" The `iris4d` terminal driver supports Silicon Graphics IRIS 4D computers.",
" Its only option is 8- or 24-bit color depth.  The default is 8.",
"",
" Syntax:",
"       set terminal iris4d {8 | 24}",
"",
" The color depth is not really a choice -- the value appropriate for the",
" hardware should be selected.",
"",
" When using 24-bit mode, the colors can be directly specified via the file",
" .gnuplot_iris4d that is searched in the current directory and then in the",
" home directory specified by the HOME environment variable.  This file holds",
" RGB values for the background, border, labels and nine plotting colors, in",
" that order.  For example, here is a file containing the default colors:",
"",
"       85   85   85     Background   (dark gray)",
"       0    0    0      Boundary     (black)",
"       170  0    170    Labeling     (magenta)",
"       85   255  255    Plot Color 1 (light cyan)",
"       170  0    0      Plot Color 2 (red)",
"       0    170  0      Plot Color 3 (green)",
"       255  85   255    Plot Color 4 (light magenta)",
"       255  255  85     Plot Color 5 (yellow)",
"       255  85   85     Plot Color 6 (light red)",
"       85   255  85     Plot Color 7 (light green)",
"       0    170  170    Plot Color 8 (cyan)",
"       170  170  0      Plot Color 9 (brown)",
"",
" This file must have exactly 12 lines of RGB triples.  No empty lines are",
" allowed, and anything after the third number on a line is ignored."
END_HELP(iris4d)
#endif /* TERM_TABLE */