home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Fish 1
/
GoldFishApril1994_CD1.img
/
d1xx
/
d165
/
plotview
/
plot2tek
/
4107.h
< prev
next >
Wrap
C/C++ Source or Header
|
1988-11-22
|
7KB
|
187 lines
/* * header for 4107 plot routines */
/* complements to mike edmonds for initially doing this stuff */
#include <stdio.h>
/*
*
* This code supports a Tektronix 4107 graphics display terminal.
* Consequently, it will handle most other 41-series
* terminals with only minor mods.
*
* This version modified by Joel Swank
*/
#define MAX_XPIXEL 640 /* Pixels in the display */
#define MAX_YPIXEL 480
#define MAX_XADDR 3500 /* Addresses on the display, really 4096 */
#define MAX_YADDR 3133
#define CXSIZE 8 /* Character width */
#define CYSIZE 14 /* Character height */
#define CHARW 39 /* Character width */
#define CHARH 59 /* Character height */
#define BITS 4 /* Number bits needed to encode color */
/*
* Globalize (most of) these values for the main display code.
*/
extern int xcur, ycur, color;
extern int xlow, ylow;
extern float xmag, ymag;
#define ON 1 /* Mode switches */
#define OFF 0
#define ANSI 1
#define TEK 0
/*
* Convert from pixel number to logical address and back.
*/
#define adrconv(adr,in,out) ( (((adr) * (out)) + ((out) / 2)) / (in) )
#define xpixtoaddr(pix) adrconv((pix), MAX_XPIXEL, MAX_XADDR)
#define ypixtoaddr(pix) adrconv((pix), MAX_YPIXEL, MAX_YADDR)
#define xaddrtopix(adr) adrconv((adr), MAX_XADDR, MAX_XPIXEL)
#define yaddrtopix(adr) adrconv((adr), MAX_YADDR, MAX_YPIXEL)
/*
* Switch terminal into various modes.
*/
#define code(sw) { fputs("\033%!", stdout); encode(sw); }
#define vector_mode() putchar('\035')
#define alpha_mode() putchar('\037')
/*
* Dialog area
*/
#define daindex(ch,bk,dabk) { fputs("\033LI", stdout); encode(ch);\
encode(bk); encode(dabk); }
#define davisibility(sw) { fputs("\033LV", stdout); encode(sw); }
#define page() fputs("\033\014", stdout)
#define acursor(ind1,ind2) { fputs("\033TD", stdout);\
encode(ind1); encode(ind2); }
#define enable_dia() { fputs("\033KA1",stdout); }
#define disable_dia() { fputs("\033KA0",stdout); }
#define dia_lines(num) { fputs("\033LL",stdout); encode(num); }
#define dia_buf(num) { fputs("\033LB",stdout); encode(num); }
/*
* Reports : be sure to cancel bypass mode after reading reports
*/
#define report_code() { fputs("\033#!0",stdout); }
#define report_dabuf() { fputs("\033IQLB",stdout); }
#define report_dalin() { fputs("\033IQLL",stdout); }
#define report_aci() { fputs("\033IQTD",stdout); }
#define bypass_can() { fputs("\012",stdout); }
/*
* Cancel whatever's going on.
*/
#define cancel() fputs("\033KC", stdout)
/*
* Set color maps.
*/
#define cmode(spec, over, gray) { fputs("\033TM", stdout); \
encode(spec); encode(over); encode(gray); }
#define cmap(idx, hue, light, satur) \
{ fputs("\033TG", stdout); \
encode(1); encode(4); encode(idx); \
encode(hue); encode(light); encode(satur); }
/*
* Change line style and color.
*/
#define linestyle(style) { fputs("\033MV", stdout); \
encode(style); }
#define lineindex(index) { fputs("\033ML", stdout); \
encode(index); }
/*
* Build panels.
*/
#define fillpattern(ptrn) { fputs("\033MP", stdout); \
encode(ptrn); }
#define beginpanel(x,y,border) { fputs("\033LP", stdout); \
encode_xy(x, y); encode(border); }
#define endpanel() { fputs("\033LE", stdout); }
/*
* Define char sets.
*/
#define rul() {fputs("\033)0", stdout);fputs("\036", stdout);}
#define supp() {fputs("\033)3", stdout);fputs("\036", stdout);}
#define ascii() {fputs("\037", stdout);}
/*
* Display graphtext.
*/
#define gtback(tind,dind) { fputs("\033MB", stdout);\
encode(tind); encode(dind); }
#define gtindex(index) { fputs("\033MT", stdout); encode(index); }
#define gtprecision(prec) { fputs("\033MQ", stdout); encode(prec); }
#define gtsize(wd, hi, sp) { fputs("\033MC", stdout); \
encode(wd); encode(hi); encode(sp); }
#define gtrotation(angle) { fputs("\033MR", stdout); encode(angle); }
#define gamode(mode) { fputs("\033MG", stdout); encode(mode); }
#define gtext(str) { fputs("\033LT", stdout); \
encode(strlen(str)); fputs(str, stdout); }
/*
* Move and draw commands.
*/
#define mov(x,y) { fputs("\033LF", stdout); encode_xy(x, y); }
#define drw(x,y) { fputs("\033LG", stdout); encode_xy(x, y); }
/* mov to point on circumfrence and then give circle point on opposite
side of circle and origonal point */
#define circle(x,y,x1,y1) { fputs("\033UC", stdout);fputs("12+", stdout);\
encode_xy(x,y); encode_xy(x1,y1); }
/*
* Segment definitions
*/
#define beginseg(segno) { fputs("\033SO", stdout); encode(segno); }
#define newseg(segno) { fputs("\033SE", stdout); encode(segno); }
#define nextseg() { fputs("\033SN", stdout); }
#define prevseg() { fputs("\033SB", stdout); }
#define endseg() { fputs("\033SC", stdout); }
#define delallseg() { fputs("\033SK", stdout); encode(-1); }
#define delseg(segno) { fputs("\033SK", stdout); encode(segno); }
#define segpos(segno,x,y) { fputs("\033SX", stdout); encode(segno); \
encode_xy(x, y); }
#define segrot(segno,angle) { fputs("\033SJ", stdout); encode(segno);\
encode(1); encode(0);\
encode(1);encode(0); \
encode(angle); encode(0); }
#define segxform(segno,angle,x,y) { fputs("\033SJ", stdout); encode(segno);\
encode(1); encode(0);\
encode(1);encode(0); \
encode(angle); encode(0);\
encode_xy(x, y); }
#define segpivot(x,y) { fputs("\033SP", stdout); encode_xy(x, y); }
#define segvis(segno,vis) { fputs("\033SV", stdout); encode(segno); \
encode(vis); }
#define seghilite(segno,vis) { fputs("\033SH", stdout); encode(segno); \
encode(vis); }
/*
* gin definitions
*/
#define gin(dev,num) { fputs("\033IE", stdout); encode(dev);\
encode(num); }
#define ginend(dev) { fputs("\033ID", stdout); encode(dev); }
#define ginrpt(dev) { fputs("\033IP", stdout); encode(dev); }
/*
* macro definitions
*/
#define defmac(num,str) { fputs("\033KD", stdout); encode(num);\
encode_str(str); }
#define clrmac(num) { fputs("\033KD", stdout); encode(num); }
/*
* viewport and window commands.
*/
#define vatt(snum,wind,bind) { fputs("\033RA", stdout);\
encode(snum); encode(wind); encode(bind); }
#define viewport(xl,yl,xr,yr) { fputs("\033RV", stdout);\
encode_xy(xl,yl); encode_xy(xr,yr); }
#define selview(vnum) { fputs("\033RC", stdout); encode(vnum); }
#define window(xl,yl,xr,yr) { fputs("\033RW", stdout);\
encode_xy(xl,yl); encode_xy(xr,yr); }
/* misc commands */
#define bel() putchar('\07');
#define set_aci(fi,si) { fputs("\033TD", stdout);\
encode(fi); encode(si); }