home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d1xx / d165 / plotview.lha / PlotView / Plot2Tek / 4107.h < prev    next >
C/C++ Source or Header  |  1988-11-22  |  7KB  |  187 lines

  1. /* * header for 4107 plot routines */
  2.  
  3. /*  complements to mike edmonds for initially doing this stuff */
  4.  
  5. #include <stdio.h>
  6.  
  7. /*
  8.  *
  9.  * This code supports a Tektronix 4107 graphics display terminal.  
  10.  * Consequently, it will handle most other 41-series
  11.  * terminals with only minor mods.
  12.  *
  13.  * This version modified by Joel Swank
  14.  */
  15.  
  16. #define MAX_XPIXEL    640    /* Pixels in the display        */
  17. #define MAX_YPIXEL    480
  18. #define MAX_XADDR    3500    /* Addresses on the display, really 4096 */
  19. #define MAX_YADDR    3133 
  20. #define CXSIZE        8    /* Character width            */
  21. #define CYSIZE        14    /* Character height            */
  22. #define CHARW        39    /* Character width            */
  23. #define CHARH        59    /* Character height            */
  24. #define BITS        4    /* Number bits needed to encode color     */
  25.  
  26. /*
  27.  * Globalize (most of) these values for the main display code.
  28.  */
  29.  
  30. extern int xcur, ycur, color;
  31. extern int xlow, ylow;
  32. extern float xmag, ymag;
  33.  
  34. #define ON    1        /* Mode switches        */
  35. #define OFF    0
  36. #define ANSI    1
  37. #define TEK    0
  38.  
  39. /*
  40.  * Convert from pixel number to logical address and back.
  41.  */
  42. #define adrconv(adr,in,out)    ( (((adr) * (out)) + ((out) / 2)) / (in) )
  43. #define xpixtoaddr(pix)        adrconv((pix), MAX_XPIXEL, MAX_XADDR)
  44. #define ypixtoaddr(pix)        adrconv((pix), MAX_YPIXEL, MAX_YADDR)
  45. #define xaddrtopix(adr)        adrconv((adr), MAX_XADDR, MAX_XPIXEL)
  46. #define yaddrtopix(adr)        adrconv((adr), MAX_YADDR, MAX_YPIXEL)
  47. /*
  48.  * Switch terminal into various modes.
  49.  */
  50. #define code(sw)        { fputs("\033%!", stdout); encode(sw); }
  51. #define vector_mode()          putchar('\035')
  52. #define alpha_mode()          putchar('\037')
  53. /*
  54.  * Dialog area 
  55.  */
  56. #define daindex(ch,bk,dabk)    { fputs("\033LI", stdout); encode(ch);\
  57.                   encode(bk); encode(dabk); }
  58. #define davisibility(sw)    { fputs("\033LV", stdout); encode(sw); }
  59. #define page()              fputs("\033\014", stdout)
  60. #define    acursor(ind1,ind2)    { fputs("\033TD", stdout);\
  61.                   encode(ind1); encode(ind2); }
  62. #define enable_dia()        { fputs("\033KA1",stdout); }
  63. #define disable_dia()        { fputs("\033KA0",stdout); }
  64. #define dia_lines(num)        { fputs("\033LL",stdout); encode(num); }
  65. #define dia_buf(num)        { fputs("\033LB",stdout); encode(num); }
  66. /*
  67.  * Reports : be sure to cancel bypass mode after reading reports
  68.  */
  69.  
  70. #define report_code()        { fputs("\033#!0",stdout); }
  71. #define report_dabuf()        { fputs("\033IQLB",stdout); }
  72. #define report_dalin()        { fputs("\033IQLL",stdout); }
  73. #define report_aci()        { fputs("\033IQTD",stdout); }
  74. #define bypass_can()        { fputs("\012",stdout); }
  75. /*
  76.  * Cancel whatever's going on.
  77.  */
  78. #define cancel()          fputs("\033KC", stdout)
  79. /*
  80.  * Set color maps.
  81.  */
  82. #define cmode(spec, over, gray) { fputs("\033TM", stdout); \
  83.                   encode(spec); encode(over); encode(gray); }
  84. #define cmap(idx, hue, light, satur) \
  85.                 { fputs("\033TG", stdout); \
  86.                   encode(1); encode(4); encode(idx); \
  87.                   encode(hue); encode(light); encode(satur); }
  88. /*
  89.  * Change line style and color.
  90.  */
  91. #define linestyle(style)    { fputs("\033MV", stdout); \
  92.                   encode(style); }
  93. #define lineindex(index)    { fputs("\033ML", stdout); \
  94.                   encode(index); }
  95. /*
  96.  * Build panels.
  97.  */
  98. #define fillpattern(ptrn)    { fputs("\033MP", stdout); \
  99.                   encode(ptrn); }
  100. #define beginpanel(x,y,border)    { fputs("\033LP", stdout); \
  101.                   encode_xy(x, y); encode(border); }
  102. #define endpanel()        { fputs("\033LE", stdout); }
  103. /*
  104.  * Define char sets.
  105.  */
  106. #define rul()            {fputs("\033)0", stdout);fputs("\036", stdout);}
  107. #define supp()            {fputs("\033)3", stdout);fputs("\036", stdout);}
  108. #define ascii()            {fputs("\037", stdout);}
  109. /*
  110.  * Display graphtext.
  111.  */
  112. #define gtback(tind,dind)    { fputs("\033MB", stdout);\
  113.                   encode(tind); encode(dind); }
  114. #define gtindex(index)        { fputs("\033MT", stdout); encode(index); }
  115. #define gtprecision(prec)    { fputs("\033MQ", stdout); encode(prec); }
  116. #define gtsize(wd, hi, sp)    { fputs("\033MC", stdout); \
  117.                   encode(wd); encode(hi); encode(sp); }
  118. #define gtrotation(angle)    { fputs("\033MR", stdout); encode(angle); }
  119. #define gamode(mode)        { fputs("\033MG", stdout); encode(mode); }
  120. #define gtext(str)        { fputs("\033LT", stdout); \
  121.                   encode(strlen(str)); fputs(str, stdout); }
  122. /*
  123.  * Move and draw commands.
  124.  */
  125. #define mov(x,y)        { fputs("\033LF", stdout); encode_xy(x, y); }
  126. #define drw(x,y)        { fputs("\033LG", stdout); encode_xy(x, y); }
  127. /* mov to point on circumfrence and then give circle point on opposite
  128.    side of circle and origonal point     */
  129. #define circle(x,y,x1,y1)    { fputs("\033UC", stdout);fputs("12+", stdout);\
  130.                   encode_xy(x,y); encode_xy(x1,y1); }
  131.  
  132. /*
  133.  * Segment definitions
  134. */
  135. #define beginseg(segno)        { fputs("\033SO", stdout); encode(segno); }
  136. #define newseg(segno)        { fputs("\033SE", stdout); encode(segno); }
  137. #define nextseg()        { fputs("\033SN", stdout); }
  138. #define prevseg()        { fputs("\033SB", stdout); }
  139. #define endseg()        { fputs("\033SC", stdout); }
  140. #define delallseg()        { fputs("\033SK", stdout); encode(-1); }
  141. #define delseg(segno)        { fputs("\033SK", stdout); encode(segno); }
  142. #define    segpos(segno,x,y)    { fputs("\033SX", stdout); encode(segno); \
  143.                   encode_xy(x, y); }
  144. #define segrot(segno,angle)    { fputs("\033SJ", stdout); encode(segno);\
  145.                   encode(1); encode(0);\
  146.                   encode(1);encode(0); \
  147.                   encode(angle); encode(0); }
  148. #define segxform(segno,angle,x,y) { fputs("\033SJ", stdout); encode(segno);\
  149.                   encode(1); encode(0);\
  150.                   encode(1);encode(0); \
  151.                   encode(angle); encode(0);\
  152.                   encode_xy(x, y); }
  153. #define segpivot(x,y)    { fputs("\033SP", stdout); encode_xy(x, y); }
  154. #define segvis(segno,vis)    { fputs("\033SV", stdout); encode(segno); \
  155.                 encode(vis); }
  156. #define seghilite(segno,vis)    { fputs("\033SH", stdout); encode(segno); \
  157.                 encode(vis); }
  158. /*
  159.  * gin definitions
  160. */
  161. #define gin(dev,num)        { fputs("\033IE", stdout); encode(dev);\
  162.                   encode(num); }
  163. #define ginend(dev)        { fputs("\033ID", stdout); encode(dev); }
  164. #define ginrpt(dev)        { fputs("\033IP", stdout); encode(dev); }
  165. /*
  166.  * macro definitions
  167. */
  168. #define defmac(num,str)        { fputs("\033KD", stdout); encode(num);\
  169.                   encode_str(str); }
  170. #define clrmac(num)        { fputs("\033KD", stdout); encode(num); }
  171. /*
  172.  * viewport and window commands.
  173.  */
  174. #define vatt(snum,wind,bind)    { fputs("\033RA", stdout);\
  175.                   encode(snum); encode(wind); encode(bind); }
  176. #define viewport(xl,yl,xr,yr)    { fputs("\033RV", stdout);\
  177.                   encode_xy(xl,yl); encode_xy(xr,yr); }
  178. #define selview(vnum)        { fputs("\033RC", stdout); encode(vnum); }
  179. #define window(xl,yl,xr,yr)    { fputs("\033RW", stdout);\
  180.                   encode_xy(xl,yl); encode_xy(xr,yr); }
  181.  
  182. /*   misc commands      */
  183.  
  184. #define bel()              putchar('\07');
  185. #define set_aci(fi,si)        { fputs("\033TD", stdout);\
  186.                   encode(fi); encode(si); }
  187.