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

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

1.1       maekawa     1: /*
                      2:  * $Id: tkcanvas.trm,v 1.7 1998/04/14 00:18:11 drd Exp $
                      3:  *
                      4:  */
                      5:
                      6: /* GNUPLOT - tkcanvas.trm */
                      7:
                      8: /*[
                      9:  * Copyright 1990 - 1993, 1998
                     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:  *  Tk/Tcl canvas widgets
                     43:  *
                     44:  * AUTHORS - original dxy.trm
                     45:  *  Martin Yii, eln557h@monu3.OZ
                     46:  *  Further modified Jan 1990 by Russell Lang, rjl@monu1.cc.monash.oz
                     47:  *
                     48:  * Port to the Tk/Tcl canvas widget
                     49:  *  D. Jeff Dionne, July 1995 jeff@ryeham.ee.ryerson.ca
                     50:  *  Alex Woo, woo@playfair.stanford.edu
                     51:  *
                     52:  * send your comments or suggestions to (info-gnuplot@dartmouth.edu).
                     53:  *
                     54:  */
                     55:
                     56: /*
                     57:  * adapted to the new terminal layout by Alex Woo (Sept. 1996)
                     58:  */
                     59:
                     60: #include "driver.h"
                     61:
                     62: #ifdef TERM_REGISTER
                     63: register_term(tkcanvas)
                     64: #endif
                     65:
                     66: #ifdef TERM_PROTO
                     67: TERM_PUBLIC void TK_init __PROTO((void));
                     68: TERM_PUBLIC void TK_graphics __PROTO((void));
                     69: TERM_PUBLIC void TK_text __PROTO((void));
                     70: TERM_PUBLIC void TK_linetype __PROTO((int linetype));
                     71: TERM_PUBLIC void TK_move __PROTO((unsigned int x, unsigned int y));
                     72: TERM_PUBLIC void TK_vector __PROTO((unsigned int x, unsigned int y));
                     73: TERM_PUBLIC void TK_put_text __PROTO((unsigned int x, unsigned int y, char *str));
                     74: TERM_PUBLIC void TK_reset __PROTO((void));
                     75:
                     76: #define TK_XMAX 1000
                     77: #define TK_YMAX 1000
                     78:
                     79: #define TK_XLAST (TK_XMAX - 1)
                     80: #define TK_YLAST (TK_XMAX - 1)
                     81:
                     82: #define TK_VCHAR       (25)    /* double actual height of characters */
                     83: #define TK_HCHAR       (16)    /* actual width including spacing */
                     84: #define TK_VTIC        (18)
                     85: #define TK_HTIC        (18)
                     86: #endif /* TERM_PROTO */
                     87:
                     88: #ifndef TERM_PROTO_ONLY
                     89: #ifdef TERM_BODY
                     90:
                     91: static int tk_angle = 0;
                     92: static int tk_lastx;
                     93: static int tk_lasty;
                     94: static int tk_color = 0;
                     95: static char *tk_colors[] = { "black", "gray", "red", "blue", "green", "brown", "magenta", "cyan" };
                     96:
                     97: TERM_PUBLIC void TK_init()
                     98: {
                     99:     fputs("\
                    100: proc gnuplot can {\n\
                    101: $can delete all\n\
                    102: set cmx [lindex [$can configure -width] 4]\n\
                    103: set cmy [lindex [$can configure -height] 4]\n",
                    104:          gpoutfile);
                    105:
                    106:     tk_lastx = tk_lasty = tk_color = 0;
                    107: }
                    108:
                    109:
                    110: TERM_PUBLIC void TK_graphics()
                    111: {
                    112: }
                    113:
                    114:
                    115: TERM_PUBLIC void TK_reset()
                    116: {
                    117: }
                    118:
                    119: TERM_PUBLIC void TK_linetype(linetype)
                    120: int linetype;
                    121: {
                    122:     tk_color = (linetype + 2) & 7;
                    123: }
                    124:
                    125: TERM_PUBLIC void TK_move(x, y)
                    126: unsigned int x, y;
                    127: {
                    128:     tk_lastx = x;
                    129:     tk_lasty = 1000 - y;
                    130: }
                    131:
                    132:
                    133: TERM_PUBLIC void TK_vector(x, y)
                    134: unsigned int x, y;
                    135: {
                    136:     y = 1000 - y;
                    137:     fprintf(gpoutfile,
                    138:            "$can create line [expr $cmx * %d /1000] [expr $cmy * %d /1000] [expr $cmx * %d /1000] [expr $cmy * %d /1000] -fill %s\n",
                    139:            tk_lastx, tk_lasty, x, y, tk_colors[tk_color]);
                    140:     tk_lastx = x;
                    141:     tk_lasty = y;
                    142: }
                    143:
                    144:
                    145: TERM_PUBLIC void TK_put_text(x, y, str)
                    146: unsigned int x, y;
                    147: char *str;
                    148: {
                    149:     y = 1000 - y;
                    150:     fprintf(gpoutfile,
                    151:            "$can create text [expr $cmx * %d /1000] [expr $cmy * %d /1000] -text {%s} -fill %s -anchor w\n",
                    152:            x, y, str, tk_colors[tk_color]);
                    153: }
                    154:
                    155: TERM_PUBLIC void TK_text()
                    156: {
                    157:     fputs("}\n", gpoutfile);
                    158:     fflush(gpoutfile);
                    159: }
                    160:
                    161:
                    162: #endif /* TERM_BODY */
                    163:
                    164: #ifdef TERM_TABLE
                    165: TERM_TABLE_START(tkcanvas)
                    166:     "tkcanvas", "Tk/Tcl canvas widget",
                    167:     TK_XMAX, TK_YMAX, TK_VCHAR, TK_HCHAR,
                    168:     TK_VTIC, TK_HTIC, options_null, TK_init, TK_reset,
                    169:     TK_text, null_scale, TK_graphics, TK_move, TK_vector,
                    170:     TK_linetype, TK_put_text, null_text_angle,
                    171:     null_justify_text, do_point, do_arrow, set_font_null
                    172: TERM_TABLE_END(tkcanvas)
                    173:
                    174: #undef LAST_TERM
                    175: #define LAST_TERM tkcanvas
                    176:
                    177: #endif /* TERM_TABLE */
                    178: #endif /* TERM_PROTO_ONLY */
                    179:
                    180: #ifdef TERM_HELP
                    181: START_HELP(tkcanvas)
                    182: "1 tkcanvas",
                    183: "?commands set terminal tkcanvas",
                    184: "?set terminal tkcanvas",
                    185: "?set term tkcanvas",
                    186: "?terminal tkcanvas",
                    187: "?term tkcanvas",
                    188: "?tkcanvas",
                    189: " This terminal driver generates tk canvas widget commands.  To use it, rebuild",
                    190: " `gnuplot` (after uncommenting or inserting the appropriate line in \"term.h\"),",
                    191: " then",
                    192: "",
                    193: "  gnuplot> set term tkcanvas",
                    194: "  gnuplot> set output 'plot.file'",
                    195: "",
                    196: " After invoking \"wish\", execute the following sequence of tcl commands:",
                    197: "",
                    198: "  % source plot.file",
                    199: "  % canvas .c",
                    200: "  % pack .c",
                    201: "  % gnuplot .c",
                    202: "",
                    203: " The code generated by `gnuplot` creates a tcl procedure called \"gnuplot\"",
                    204: " that takes the name of a canvas as its argument.  When the procedure is,",
                    205: " called, it clears the canvas, finds the size of the canvas and draws the plot",
                    206: " in it, scaled to fit.",
                    207: "",
                    208: " The current version of `tkcanvas` supports neither `multiplot` nor `replot`."
                    209: END_HELP(tkcanvas)
                    210: #endif

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