home *** CD-ROM | disk | FTP | other *** search
/ Boston 2 / boston-2.iso / DOS / PROGRAM / C / TEGL / TEGLSYS.ZIP / TEGLSYS.H < prev    next >
Text File  |  1990-06-29  |  42KB  |  1,421 lines

  1. /*---------------------------------------------------------------------------*
  2.  |               TEGL Windows ToolKit II                 |
  3.  |          Copyright (C) 1990, TEGL Systems Corporation             |
  4.  |                All Rights Reserved.                 |
  5.  *---------------------------------------------------------------------------*/
  6. /* teglcond.h                          */
  7. /* conditional defines and compatability defines      */
  8.  
  9. /* only define one of these for the compiler */
  10. #define TURBOC
  11. /* #define QUICKC */
  12.  
  13. #ifdef TURBOC
  14. #ifdef QUICKC
  15. #error Can only define one compiler.
  16. #endif
  17. #endif
  18.  
  19. #ifndef TURBOC
  20. #ifndef QUICKC
  21. #error No compiler defined.
  22. #endif
  23. #endif
  24.  
  25. /* #define TRACE */
  26. #ifdef TRACE
  27. #define trace(fmt,itm)     printf(fmt,itm); getch()
  28. #else
  29. #define trace(fmt,itm)
  30. #endif
  31.  
  32.  
  33. /* define to build the demonstrator version of the library */
  34.  
  35. #define TEGLDEMO
  36.  
  37.  
  38. /* define if the virtual memory manager is NOT to be used  */
  39.  
  40. /* #define NOVIRT */
  41.  
  42. /* define if the graphics libraries from TURBO C or QUICK C are */
  43. /* not to be used. */
  44.  
  45. /* #define NOGR */
  46.  
  47. /* common defines */
  48.  
  49. #define MK_FP(seg,ofs)    ((void far *) \
  50.                (((unsigned long)(seg) << 16) | (unsigned)(ofs)))
  51.  
  52. #ifdef QUICKC
  53.  
  54. #define random( max ) ((rand() % (int)((max) - (0))) + (0) + 1)
  55. #define poke(a,b,c)  (*((int far*) MK_FP((a),(b))) = (int) (c))
  56.  
  57. #define sound( n )
  58. #define nosound()
  59. #define delay( n )
  60. /* TURBO C's and QUICK C's dos.h are largely compatible */
  61. /* just a few name changes are required.  */
  62.  
  63. #define time  dostime_t
  64. #define gettime  _dos_gettime
  65. #define ti_sec     second
  66.  
  67. #define dfree  diskfree_t
  68. #define df_avail  avail_clusters
  69. #define df_total  total_clusters
  70. #define df_bsec   bytes_per_sector
  71. #define df_sclus  sectors_per_cluster
  72. #define findnext  _dos_findnext
  73.  
  74. #define WILDCARDS 0x01
  75. #define EXTENSION 0x02
  76. #define FILENAME  0x04
  77. #define DIRECTORY 0x08
  78. #define DRIVE      0x10
  79.  
  80. #define MAXPATH   80
  81. #define MAXDRIVE  3
  82. #define MAXDIR      66
  83. #define MAXFILE   9
  84. #define MAXEXT      5
  85.  
  86. #define FA_RDONLY    0x01        /* Read only attribute */
  87. #define FA_HIDDEN    0x02        /* Hidden file */
  88. #define FA_SYSTEM    0x04        /* System file */
  89. #define FA_LABEL    0x08        /* Volume label */
  90. #define FA_DIREC    0x10        /* Directory */
  91. #define FA_ARCH     0x20        /* Archive */
  92.  
  93. #endif
  94.  
  95. #ifndef FALSE
  96. #define FALSE 0
  97. #define TRUE  1
  98. #endif
  99.  
  100.  
  101. #ifdef QUICKC
  102. #ifndef NOGR
  103. #define MSGRAPH
  104. #endif
  105. #endif
  106.  
  107. /* make sure demo defines are correct */
  108.  
  109. #ifdef TEGLDEMO
  110.  
  111. #ifndef NOVIRT
  112. #define NOVIRT
  113. #endif
  114.  
  115. #ifdef TURBOC
  116. #ifdef NOGR
  117. #undef NOGR
  118. #endif
  119. #endif
  120.  
  121. #endif
  122. /* extendc.c */
  123.  
  124. extern char *fexpand (char *ipath);
  125.  
  126. extern void dos_getpath(unsigned char drive, char far *pathname);
  127.  
  128. extern int appendwildcards(char *FilePath);
  129.  
  130.  
  131. /*  fastgrph.c */
  132.  
  133. #define A_ "\xc1"
  134. #define B_ "\xc2"
  135. #define C_ "\xc3"
  136. #define D_ "\xc4"
  137. #define E_ "\xc5"
  138. #define F_ "\xc6"
  139. #define G_ "\xc7"
  140. #define H_ "\xc8"
  141. #define I_ "\xc9"
  142. #define J_ "\xca"
  143. #define K_ "\xcb"
  144. #define L_ "\xcc"
  145. #define M_ "\xcd"
  146. #define N_ "\xce"
  147. #define O_ "\xcf"
  148. #define P_ "\xd0"
  149. #define Q_ "\xd1"
  150. #define R_ "\xd2"
  151. #define S_ "\xd3"
  152. #define T_ "\xd4"
  153. #define U_ "\xd5"
  154. #define V_ "\xd6"
  155. #define W_ "\xd7"
  156. #define X_ "\xd8"
  157. #define Y_ "\xd9"
  158. #define Z_ "\xda"
  159.  
  160.  
  161. typedef void (far *vmode)(void);
  162.  
  163. typedef unsigned masktype[2][16];
  164.  
  165. typedef void (*fontptr)();
  166.  
  167. typedef struct vidid {
  168.      unsigned char  video0type;
  169.      unsigned char  display0type;
  170.  
  171.      unsigned char  video1type;
  172.      unsigned char  display1type;
  173. } vidid;
  174.  
  175. #define FGNORM    0x00
  176. #define FGAND    0x08
  177. #define FGOR    0x10
  178. #define FGXOR    0x18
  179. #define FGNOT    0x80
  180.  
  181. #define TG_MDA           0x01
  182. #define TG_CGA           0x02
  183. #define TG_EGA           0x03
  184. #define TG_MCGA        0x04
  185. #define TG_VGA           0x05
  186. #define TG_HGC           0x80
  187. #define TG_HGCPLUS       0x81
  188. #define TG_INCOLOR       0x82
  189.  
  190. #define TG_MDADISPLAY       0x01
  191. #define TG_CGADISPLAY       0x02
  192. #define TG_EGACOLORDISPLAY 0x03
  193. #define TG_PS2MONODISPLAY  0x04
  194. #define TG_PS2COLORDISPLAY 0x05
  195.  
  196. extern unsigned jagged;
  197. extern unsigned rmwbits;
  198. extern unsigned activepage;
  199. extern unsigned mousecolor;
  200. extern unsigned mousehotspot_xofs;
  201. extern unsigned mousehotspot_yofs;
  202. extern unsigned teglfillmask;
  203.  
  204. extern char videochoicescga640x200x2;
  205. extern char videochoicesega640x350x16;
  206. extern char videochoicesvga640x480x16;
  207. extern char videochoicesherc720x348x2;
  208. extern unsigned char propagatedpixel[16];
  209. extern char proportionalfont;
  210. extern int initdrivercode;
  211.  
  212. typedef unsigned far (*teglgrfunc01)(unsigned,unsigned);
  213. typedef unsigned far (*teglgrfunc02)(unsigned,unsigned,void*);
  214. typedef unsigned long far (*teglgrfunc03)(unsigned,unsigned,unsigned,unsigned);
  215.  
  216. typedef void far (*teglgrproc01)(unsigned,unsigned,unsigned,unsigned,unsigned);
  217. typedef void far (*teglgrproc02)(unsigned,unsigned,unsigned);
  218. typedef void far (*teglgrproc03)(unsigned,unsigned,void*,unsigned);
  219. typedef void far (*teglgrproc04)(unsigned,unsigned,unsigned,unsigned,void*);
  220. typedef void far (*teglgrproc05)(unsigned,unsigned,unsigned,unsigned,void*,void*);
  221. typedef void far (*teglgrproc06)(unsigned,unsigned,void*,void*);
  222. typedef void far (*teglgrproc07)(unsigned,unsigned,unsigned,unsigned);
  223. typedef void far (*teglgrproc08)(void);
  224. typedef void far (*teglgrproc09)(unsigned,unsigned);
  225.  
  226. extern teglgrfunc01 getpixs;
  227. extern teglgrfunc02 extractpixs;
  228. extern teglgrfunc03 bigimagesize;
  229. extern teglgrproc01 fastline;
  230. extern teglgrproc02 putpixs;
  231. extern teglgrproc03 putbiti;
  232. extern teglgrproc04 getbiti;
  233. extern teglgrproc05 extractimg;
  234. extern teglgrproc06 overlayimg;
  235. extern teglgrproc07 teglwrtchar;
  236. extern teglgrproc08 mcursoroff;
  237. extern teglgrproc09 mcursoron;
  238. extern teglgrproc09 msetpos;
  239.  
  240. /*
  241. extern unsigned getpixs(unsigned x, unsigned y);
  242. extern unsigned extractpixs(unsigned x, unsigned y, void * buffer);
  243. extern unsigned long bigimagesize(unsigned x,unsigned y,unsigned x1,unsigned y1);
  244. extern void fastline(unsigned x, unsigned y, unsigned x1, unsigned y2, unsigned n);
  245. extern void putpixs(unsigned x, unsigned y, unsigned n);
  246. extern void putbiti(unsigned x, unsigned y, void * buffer, unsigned rmwbits);
  247. extern void getbiti(unsigned x, unsigned y, unsigned x1, unsigned y1, void * buffer);
  248. extern void extractimg(unsigned x, unsigned y, unsigned x1, unsigned y1, void * buff1, void * buff2);
  249. extern void overlayimg(unsigned x, unsigned y, void * buff1, void * buff2);
  250. extern void teglwrtchar(int c,int x,int y,int color);
  251. extern void mcursoroff(void);
  252. extern void mcursoron(unsigned xpos,unsigned ypos);
  253. extern void msetpos(unsigned xpos,unsigned ypos);
  254. */
  255.  
  256. extern void putpict(unsigned x, unsigned y, unsigned char *buf, unsigned n);
  257.  
  258. extern void pictsize(unsigned * w, unsigned * h, unsigned char *buf);
  259.  
  260. extern void swapbytes(void * buff1, void * buff2, long bytestoswap);
  261.  
  262. extern int teglcharwidth(int  c);
  263.  
  264. extern int teglcharheight(void);
  265.  
  266. extern void videoid(vidid far * v);
  267.  
  268.  
  269. extern int tegltextwidth(char * mystr);
  270.  
  271. extern void outtegltextxy(int x,int y,char *mystr);
  272.  
  273. extern void fmttegltextxy(int x, int y, char *format,...);
  274.  
  275. #define setproportional(onoff) proportionalfont = onoff
  276.  
  277. #define setteglfont(f) fonttable = f
  278.  
  279.  
  280. extern void xorcornerbox(int x, int y, int x1, int y1, int color);
  281.  
  282. extern void xorbox(int x, int y, int x1, int y1, int color);
  283.  
  284. extern void flipapage(void);
  285.  
  286. extern void flipvpage(void);
  287.  
  288. extern void setapage(unsigned pagenum);
  289.  
  290. extern void setvpage(unsigned pagenum);
  291.  
  292. extern unsigned videopage(void);
  293.  
  294. extern void abort_msg(char * msg);
  295.  
  296.  
  297. extern void ega640x350x16(void);
  298.  
  299. extern void vga640x480x16(void);
  300.  
  301. extern void herc720x348x2(void);
  302.  
  303. extern void cga640x200x2(void);
  304.  
  305. extern void videoautodetect(void);
  306.  
  307. extern char * videomodestring(char vtype, char dtype);
  308.  
  309. extern void setvideochoices(unsigned v, char accept);
  310.  
  311.  
  312. extern fontptr fonttable;
  313.  
  314. extern unsigned evgagetpixs(unsigned x,unsigned y);
  315. extern unsigned evgaextractpixs(unsigned x,unsigned y,void * buffer);
  316. extern unsigned long evgaimagesize(unsigned x,unsigned y,unsigned x1,unsigned y1);
  317. extern void evgafastline(unsigned x,unsigned y,unsigned x1,unsigned y2,unsigned n);
  318. extern void evgaputpixs(unsigned x,unsigned y,unsigned n);
  319. extern void evgaputbiti(unsigned x,unsigned y,void * buffer,unsigned rmwbits);
  320. extern void evgagetbiti(unsigned x,unsigned y,unsigned x1,unsigned y1,void * buffer);
  321. extern void evgaextractimg(unsigned x,unsigned y,unsigned x1,unsigned y1,void * buff1,void * buff2);
  322. extern void evgaoverlayimg(unsigned x,unsigned y,void * buff1,void * buff2);
  323. extern void evgawrtchar(unsigned c,unsigned x,unsigned y,unsigned color);
  324. extern void evgamcursoroff(void);
  325. extern void evgamcursoron(unsigned xpos,unsigned ypos);
  326. extern void evgamsetpos(unsigned xpos,unsigned ypos);
  327.  
  328. extern unsigned hercgetpixs(unsigned x,unsigned y);
  329. extern unsigned hercextractpixs(unsigned x,unsigned y,void * buffer);
  330. extern unsigned long hercimagesize(unsigned x,unsigned y,unsigned x1,unsigned y1);
  331. extern void hercfastline(unsigned x,unsigned y,unsigned x1,unsigned y2,unsigned n);
  332. extern void hercputpixs(unsigned x,unsigned y,unsigned n);
  333. extern void hercputbiti(unsigned x,unsigned y,void * buffer,unsigned rmwbits);
  334. extern void hercgetbiti(unsigned x,unsigned y,unsigned x1,unsigned y1,void * buffer);
  335. extern void hercextractimg(unsigned x,unsigned y,unsigned x1,unsigned y1,void * buff1,void * buff2);
  336. extern void hercoverlayimg(unsigned x,unsigned y,void * buff1,void * buff2);
  337. extern void hercwrtchar(unsigned c,unsigned x,unsigned y,unsigned color);
  338. extern void hercmcursoroff(void);
  339. extern void hercmcursoron(unsigned xpos,unsigned ypos);
  340. extern void hercmsetpos(unsigned xpos,unsigned ypos);
  341.  
  342. extern unsigned cgagetpixs(unsigned x,unsigned y);
  343. extern unsigned cgaextractpixs(unsigned x,unsigned y,void * buffer);
  344. extern unsigned long cgaimagesize(unsigned x,unsigned y,unsigned x1,unsigned y1);
  345. extern void cgafastline(unsigned x,unsigned y,unsigned x1,unsigned y2,unsigned n);
  346. extern void cgaputpixs(unsigned x,unsigned y,unsigned n);
  347. extern void cgaputbiti(unsigned x,unsigned y,void * buffer,unsigned rmwbits);
  348. extern void cgagetbiti(unsigned x,unsigned y,unsigned x1,unsigned y1,void * buffer);
  349. extern void cgaextractimg(unsigned x,unsigned y,unsigned x1,unsigned y1,void * buff1,void * buff2);
  350. extern void cgaoverlayimg(unsigned x,unsigned y,void * buff1,void * buff2);
  351. extern void cgawrtchar(unsigned c,unsigned x,unsigned y,unsigned color);
  352. extern void cgamcursoroff(void);
  353. extern void cgamcursoron(unsigned xpos,unsigned ypos);
  354. extern void cgamsetpos(unsigned xpos,unsigned ypos);
  355.  
  356. extern void  font09(void);
  357. extern void  font07(void);
  358. extern void  font14(void);
  359. extern void  oenglish(void);
  360. extern void  pc24(void);
  361. extern void  future(void);
  362. extern void  pc9(void);
  363.  
  364. #ifndef TEGLDEMO
  365. extern void  countdwn(void);
  366. extern void  script(void);
  367. extern void  ocr(void);
  368. extern void  fraktur(void);
  369. extern void  italic(void);
  370. extern void  georgian(void);
  371. extern void  apls7(void);
  372. extern void  gaelic(void);
  373. extern void  litalic(void);
  374. extern void  pc3270(void);
  375. extern void  m3270(void);
  376. extern void  ega09(void);
  377. extern void  broadway(void);
  378. extern void  script2(void);
  379. extern void  lcdfont(void);
  380. extern void  light14(void);
  381. extern void  brdwx19(void);
  382. extern void  sansx19(void);
  383. extern void  wndwx19(void);
  384. extern void  light9(void);
  385. #endif
  386.  
  387. /* virtmem.c */
  388.  
  389. #define MK_FP(seg,ofs)    ((void far *) \
  390.                (((unsigned long)(seg) << 16) | (unsigned)(ofs)))
  391.  
  392. typedef int    (*allocerror) (unsigned long heapsize);
  393.  
  394. typedef struct freelistrec *freelistptr;
  395. typedef struct freelistrec {
  396.     void far       *orgptr;
  397.     void far       *endptr;
  398. }        freelistrec;
  399.  
  400. #define ORGPTR_FP(fp) ((freelistptr) (fp))->orgptr
  401.  
  402. #define ENDPTR_FP(fp) ((freelistptr) (fp))->endptr
  403.  
  404.  
  405. typedef struct ofsseg *segofs;
  406. typedef struct ofsseg {
  407.     unsigned    offset;
  408.     unsigned    segment;
  409. }        ofsseg;
  410.  
  411. #define OFFSET_FP(fp) ((segofs) &(fp))->offset
  412.  
  413. #define SEGMENT_FP(fp) ((segofs) &(fp))->segment
  414.  
  415. #define NORM_FP(fp)  MK_FP(SEGMENT_FP(fp)+(OFFSET_FP(fp) >> 4),(OFFSET_FP(fp) & 0x000F))
  416.  
  417. #define LINEAR_FP(fp) ((unsigned long) SEGMENT_FP(fp)<<4) + ((unsigned long) OFFSET_FP(fp))
  418.  
  419. #define POINTER_FP(fp) MK_FP( (unsigned)((fp) >> 4),(unsigned)((fp) & 0x000F))
  420.  
  421. #define PTRDIFF_FP(fp1,fp2) ((unsigned long) LINEAR_FP(fp1)) - ((unsigned long) LINEAR_FP(fp2))
  422.  
  423. extern void far       *freeptr;
  424. extern void far       *heaporg;
  425. extern void far       *heapptr;
  426. extern unsigned        freemin;
  427. extern unsigned long   hugemin;
  428. extern allocerror      hugeheaperror;
  429. extern unsigned long   heapmemmax;
  430. extern char           heapmeminit;
  431.  
  432. #define reservehugeminimum(minsize) hugemin = minsize
  433.  
  434. #define setheapmemmaxsize(maxsize) heapmemmax = maxsize
  435.  
  436. extern char initheap(void);
  437.  
  438. extern void far * cgetmem(unsigned long heapsize);
  439.  
  440. extern unsigned long reservedmemavail(void);
  441.  
  442. extern unsigned long reservedmaxavail(void);
  443.  
  444. extern unsigned long cmaxavail(void);
  445.  
  446. extern unsigned long cmemavail(void);
  447.  
  448. extern void far * fgetmem(unsigned long heapsize);
  449.  
  450. extern void cfreemem(void far * freeorgptr,unsigned long heapsize);
  451.  
  452.  
  453. typedef struct emsblock *emsblockptr;
  454. typedef struct emsfilerec *emsfile;
  455.  
  456. typedef struct emsblock {
  457.     emsblockptr    nextblockptr;
  458.     unsigned    handle; /* Multiple handles */
  459.     unsigned    emspage;/* Pages allocated */
  460. }        emsblock;
  461.  
  462. typedef struct emsfilerec {
  463.     unsigned    pageoffset;    /* current offset within page */
  464.     unsigned    baseaddress;
  465.     unsigned long    emsposition;
  466.     unsigned    totalpages;    /* Total number of 16k pages */
  467.     emsblockptr    rootblkptr;
  468. }        emsfilerec;
  469.  
  470. #ifndef NOVIRT
  471.  
  472. extern unsigned ems_status;
  473.  
  474. #define virtsound(yesno) virtualsound = yesno
  475.  
  476. #define useharddisk(yesno) triedems = yesno
  477.  
  478. #define setvirtdskemsmax(maxsize) virtdskemsinitpages = maxsize
  479.  
  480. typedef void    (*errorproc) (int errcode);
  481.  
  482. typedef char    signate[5];
  483.  
  484. typedef struct vdskfreerecord *vdskfreeptr;
  485. typedef struct vdskfilerecord *vdskfile;
  486.  
  487. typedef struct vdskfreerecord {
  488.     vdskfreeptr    nextvdskfree;
  489.     unsigned long    startblock;
  490.     unsigned long    endblock;
  491.     signate     signature;
  492.     char        blockfree;
  493. }        vdskfreerecord;
  494.  
  495. typedef struct vdskblocksizerecord {
  496.     unsigned long    bsize;
  497.     unsigned long    realsize;
  498.     signate     signature;
  499.     char        blockfree;
  500.     unsigned    chksum;
  501. }        vdskblocksizerecord;
  502.  
  503.  
  504. typedef struct vdskfilerecord {
  505.     vdskfreeptr    vdskfreeptrchain;
  506.     unsigned long    vdsktopoffile;
  507.     unsigned    vdskattribute;
  508.     unsigned long    vdskpacketsave;
  509.     char           *vdskfilename;
  510.     char        emstype;/* Selector */
  511.     union v {
  512.         int        vdskheapfile;
  513.         emsfile     vemsheapfile;
  514.     }        v;
  515. }        vdskfilerecord;
  516.  
  517. /*$$$*/
  518. /*
  519. enum { vdskreadwrite = 1};
  520. enum { vdsktemporary = 2};
  521. */
  522. #define vdskreadwrite  1
  523. #define vdsktemporary  2
  524.  
  525. extern unsigned vdskstatus;
  526. extern errorproc vdskerror;
  527. extern char virtualsound;
  528.  
  529.  
  530. extern char emminstalled(void);
  531.  
  532. extern unsigned emspagesavailable(unsigned * total_ems_pages,unsigned * pages_available);
  533.  
  534. extern unsigned allocateexpandedmemorypages(unsigned pages_needed,unsigned * handle);
  535.  
  536. extern unsigned mapexpandedmemorypages(unsigned handle,unsigned logical_page,unsigned physical_page);
  537.  
  538. extern unsigned getpageframebaseaddress(unsigned * page_frame_address);
  539.  
  540. extern unsigned deallocateexpandedmemorypages(unsigned handle);
  541.  
  542. extern unsigned getversionnumber(char * version_string);
  543.  
  544. extern unsigned gethandlecountused(unsigned * numberofhandles);
  545.  
  546. extern unsigned getpagesownedbyhandle(unsigned handle,unsigned * pagesowned);
  547.  
  548. extern unsigned virtdskemsinitpages;
  549.  
  550. extern char triedems;
  551.  
  552. extern emsfile emsopen(unsigned minimumpages);
  553.  
  554. extern void emsseek(emsfile emsramfile,unsigned long position);
  555.  
  556. extern void emsblockwrite(emsfile emsramfile,char *buffer,unsigned long bytestowrite);
  557.  
  558. extern void emsblockread(emsfile emsramfile,char *buffer,unsigned long bytestoread);
  559.  
  560. extern void emsclose(emsfile emsramfile);
  561.  
  562. extern errorproc virtualerror;
  563.  
  564. extern void movefromvirtual(char far * dataptr,unsigned long virtualheapptr);
  565.  
  566. extern unsigned long movetovirtual(char far * dataptr,unsigned long heapsize);
  567.  
  568. extern void freevirtual(unsigned long virtualheapptr);
  569.  
  570. extern unsigned long vdskgetmem(vdskfile vdskpacket,unsigned long heapsize,char *signature);
  571.  
  572. extern void vdskfreemem(vdskfile vdskpacket,unsigned long vdskheapptr);
  573.  
  574. extern void vdskwriteheapdata(vdskfile vdskpacket,char far * dataptr,unsigned long vdskheapptr);
  575.  
  576. extern void vdskreadheapdata(vdskfile vdskpacket,char far * dataptr,unsigned long vdskheapptr);
  577.  
  578. extern void vdskcloseheapfile(vdskfile vdskpacket);
  579.  
  580. extern vdskfile vdskopenheapfile(char *vdskfilename,unsigned vdskattribute);
  581.  
  582. extern vdskfile vemsopenheapfile(int initialalloc);
  583.  
  584. extern unsigned long virtualmemused(void);
  585.  
  586. #endif    /* NOVIRT */
  587. /*  teglintr.c */
  588.  
  589. typedef char (far *keybrdcallproc)(void);
  590.  
  591. typedef struct keyflags *keyrecptr;
  592. typedef struct keyflags {
  593.      keyrecptr    nextkeyflag;
  594.      char          repeatkey;
  595.      unsigned     keycode;
  596.      keybrdcallproc keycall;
  597. } keyflags;
  598.  
  599. typedef struct timeflags *timerecptr;
  600. typedef struct timeflags {
  601.       timerecptr  nexttimeflag;
  602.       unsigned    timercount;
  603.       unsigned    timerstart;
  604.       char          timerflag;
  605. } timeflags;
  606.  
  607. #define sk_rightshift  0x01
  608. #define sk_leftshift   0x02
  609. #define sk_ctrlshift   0x04
  610. #define sk_altshift    0x08
  611. #define sk_scrolllock  0x10
  612. #define sk_numlock     0x20
  613. #define sk_capslock    0x40
  614. #define sk_inslock     0x80
  615. #define bios_data      0x40
  616.  
  617. extern    char scancodetable[127];
  618. extern    char controlbreakflag;
  619. extern    char kbmousebusy;
  620. extern    unsigned char far *kb_flag;
  621. extern    unsigned mouse_event;
  622. extern    int mouse_xcoord;
  623. extern    int mouse_ycoord;
  624. extern    char mouse_installed;
  625. extern    char mouseshow;
  626. extern    unsigned mouse_buttons;
  627. extern    masktype mousemask;
  628.  
  629. extern    unsigned leftbuttonpress;
  630. extern    unsigned leftpressxcoord;
  631. extern    unsigned leftpressycoord;
  632. extern    unsigned leftbuttonrelease;
  633. extern    unsigned leftreleasexcoord;
  634. extern    unsigned leftreleaseycoord;
  635.  
  636. extern    unsigned rightbuttonpress;
  637. extern    unsigned rightpressxcoord;
  638. extern    unsigned rightpressycoord;
  639.  
  640. extern    unsigned rightbuttonrelease;
  641. extern    unsigned rightreleasexcoord;
  642. extern    unsigned rightreleaseycoord;
  643.  
  644. extern masktype pointinghand;
  645. extern masktype hourglass;
  646. extern masktype standard;
  647. extern masktype diagcross;
  648. extern masktype checkmark;
  649.  
  650. /*------------------------------------------------------------------------*
  651.  |  Mouse Cursor Routines                          |
  652.  *------------------------------------------------------------------------*/
  653.  
  654. extern void resetkeyboard(void);
  655.  
  656. extern void setmousesensitivity(unsigned x_sense,unsigned y_sense,unsigned threshold);
  657.  
  658. extern void getmousesensitivity(unsigned *x_sense,unsigned *y_sense,unsigned *threshold);
  659.  
  660. extern void showmouse(void);
  661.  
  662. extern void hidemouse(void);
  663.  
  664. extern void setmouseposition(unsigned mousex,unsigned mousey);
  665.  
  666. extern void setmousepos(unsigned xpos,unsigned ypos);
  667.  
  668. extern void cursorshape(masktype shape);
  669.  
  670. extern unsigned mouseposition(unsigned *mousex,unsigned *mousey);
  671.  
  672. extern void setmousehotspot(unsigned x,unsigned y);
  673.  
  674. extern void setmousecolor(unsigned color);
  675.  
  676. extern void setkeyboardmouse(char on_off);
  677.  
  678. extern void setkbsteps(unsigned xsteps,unsigned ysteps,unsigned sfxsteps,unsigned sfysteps);
  679.  
  680. extern void getkbsteps(unsigned *xsteps,unsigned *ysteps,unsigned *sfxsteps,unsigned *sfysteps);
  681.  
  682. extern void getbuttonreleaseinfo(unsigned button,unsigned *buttonstat,
  683.           unsigned *buttonrelease,unsigned *xpos,unsigned *ypos);
  684.  
  685. extern void getbuttonpressinfo(unsigned button,unsigned *buttonstat,
  686.           unsigned *buttonpresses,unsigned *xpos,unsigned *ypos);
  687.  
  688. extern void clearbuttoninfo(void);
  689.  
  690. extern void swaptimerout(void);
  691.  
  692. extern void swaptimerin(void);
  693.  
  694. extern void settimerstart(timerecptr *timepiece,unsigned timeset);
  695.  
  696. extern void resettimerflag(timerecptr timepiece);
  697.  
  698. extern void droptimercount(timerecptr timepiece);
  699.  
  700. extern void timerswitch(char onoff);
  701.  
  702. extern void swapteglintroff(void);
  703.  
  704. extern void swapteglintron(void);
  705.  
  706. extern void setmouseminmax(unsigned minx,unsigned miny,unsigned maxx,unsigned maxy);
  707.  
  708. extern unsigned teglreadkey(void);
  709.  
  710. extern char teglkeypressed(void);
  711.  
  712. extern void addcapturekey(unsigned keycode,char repeatkey,keybrdcallproc keycall);
  713.  
  714. extern void deletecapturekey(unsigned keycode);
  715.  
  716. extern unsigned key(unsigned char shiftbits,unsigned char keycode);
  717.  
  718. extern char nilkeycallproc(void);
  719.  
  720. extern void setshiftkeys(unsigned char shiftflag,char onoff);
  721.  
  722. extern void frozenmouse(void);
  723.  
  724. extern char freezemouse(unsigned x,unsigned y,unsigned x1,unsigned y1);
  725.  
  726. extern void unfreezemouse(char mshow);
  727.  
  728. extern void init_teglintr(void);
  729.  
  730. extern unsigned initmouse(void);
  731.  
  732. extern void mousereset(void);
  733.  
  734. /*  teglunit.c */
  735.  
  736. #define MSSENSE   TRUE
  737. #define MSCLICK   FALSE
  738.  
  739. typedef struct timetickstk far *timetickptr;
  740. typedef struct keyclickstk far *keyclickptr;
  741. typedef struct msclickstk far  *msclickptr;
  742. typedef struct imagestack far *imagestkptr;
  743.  
  744. typedef unsigned far (*callproc)(imagestkptr,msclickptr);
  745.  
  746. typedef struct xyx1y1rec {
  747.           unsigned x,y,x1,y1;
  748.          } xyx1y1rec;
  749.  
  750. typedef struct timetickstk {
  751.           timetickptr  nexttimetick;
  752.           timerecptr   timepiece;
  753.           callproc     entrycallproc;
  754.           imagestkptr  fs;
  755.           msclickptr   ms;
  756.          } timetickstk;
  757.  
  758. typedef struct keyclickstk {
  759.           keyclickptr  nextkeyclick;
  760.           unsigned     keycode;
  761.           callproc     entrycallproc;
  762.           imagestkptr  fs;
  763.           msclickptr   ms;
  764.          } keyclickstk;
  765.  
  766. typedef struct msclickstk {
  767.           msclickptr   nextmsclick;
  768.           unsigned     clicknumber;
  769.           xyx1y1rec    ms;
  770.           char           msactive;
  771.           callproc     entrycallproc;
  772.           char           senseactivate;
  773.          } msclickstk;
  774.  
  775. typedef struct imagestack {
  776.           imagestkptr  nxtptr;
  777.           imagestkptr  lstptr;
  778.           unsigned     signature;
  779.           char           prepareupdate;
  780.           unsigned     preparecount;
  781.           char           mouseshow;
  782.           unsigned     frameactive;
  783.           unsigned     x,y,x1,y1;
  784.           long           imagesize;
  785.           void *       imagesave;
  786.           char           imagelock;
  787.           char           imageinuse;
  788.           char           imagepageout;
  789.           long           imagepageptr;
  790.           char           movable;
  791.           callproc     movecallproc;
  792.           xyx1y1rec    restrictmovef;
  793.           xyx1y1rec    minmaxstretch;
  794.           callproc     resizecallproc;
  795.           imagestkptr  partialstack;
  796.           char           imageactive;
  797.           imagestkptr  relatedstack;
  798.           msclickptr   relatedmsclick;
  799.           keyclickptr  keyptr;
  800.           msclickptr   msptr;
  801.           unsigned     msclickcount;
  802.          } imagestack;
  803.  
  804.  
  805. extern    imagestkptr  stackptr;
  806. extern    keyclickptr  keystackptr;
  807. extern    timetickptr  timestackptr;
  808.  
  809. extern    int         activeevents;
  810. extern    unsigned     functionkeycode;
  811. extern    char         autorotateup;
  812. extern    callproc     ctrlbreakproc;
  813.  
  814. extern char far keybrdnextclick(void);
  815.  
  816. extern char far crclickpress(void);
  817.  
  818. extern char far crclickrelease(void);
  819.  
  820. extern void toggleoptionbar(imagestkptr fs,msclickptr opt,msclickptr lastopt);
  821.  
  822. extern char frameexist(imagestkptr fs);
  823.  
  824. extern unsigned countframes(void);
  825.  
  826. extern void pushimage(unsigned x,unsigned y,unsigned x1,unsigned y1);
  827.  
  828. extern void popimage(void);
  829.  
  830. extern void prepareforpartialupdate(imagestkptr frame,unsigned x,unsigned y,unsigned x1,unsigned y1);
  831.  
  832. #define prepareforupdate(fs) prepareforpartialupdate(fs,fs->x,fs->y,fs->x1,fs->y1);
  833.  
  834. extern imagestkptr preparepartialimage(imagestkptr frame,imagestkptr tempimagebuff,
  835.                 unsigned x,unsigned y,unsigned x1,unsigned y1);
  836.  
  837. #define prepareimageupdate(f,g) preparepartialimage(f,g,f->x,f->y,f->x1,f->y1)
  838.  
  839. extern void commitupdate(void);
  840.  
  841. extern void rotatestackimage(imagestkptr frame1,imagestkptr frame2);
  842.  
  843. extern void rotateunderstackimage(imagestkptr frame1,imagestkptr frame2);
  844.  
  845. extern void moveframe(int *fx,int *fy,int *fx1,int *fy1,int rx,int ry,int rx1,int ry1,int color);
  846.  
  847. extern imagestkptr frameselectandmove(unsigned mxpos,unsigned mypos);
  848.  
  849. #define setmoverestrictions(f,x_,y_,x1_,y1_) f->restrictmovef.x=x_;f->restrictmovef.y=y_;f->restrictmovef.x1=x1_;f->restrictmovef.y1=y1_
  850.  
  851. #define setframemobility(fs,mv) fs->movable=mv
  852.  
  853. #define setmoveframecallproc(fs,ecp) fs->movecallproc=ecp
  854.  
  855. extern void linkfs(imagestkptr nfs,imagestkptr cfs);
  856.  
  857. extern void linkunderfs(imagestkptr nfs,imagestkptr cfs);
  858.  
  859. extern void unlinkfs(imagestkptr cfs);
  860.  
  861. extern void hideimage(imagestkptr frame);
  862.  
  863. extern void showimage(imagestkptr frame,unsigned x,unsigned y);
  864.  
  865. extern void movestackimage(imagestkptr frame,unsigned x,unsigned y);
  866.  
  867. extern void dropstackimage(imagestkptr frame);
  868.  
  869. extern void createimagebuffer(imagestkptr *imagebuffer,unsigned x,unsigned y,unsigned x1,unsigned y1);
  870.  
  871. extern void dropimagebuffer(imagestkptr imagebuffer);
  872.  
  873. extern void freeimagebuffer(imagestkptr fs);
  874.  
  875. extern imagestkptr getpartialfrontimage(imagestkptr frame,unsigned x,unsigned y,unsigned x1,unsigned y1);
  876.  
  877. #define getfrontimage(f) getpartialfrontimage(f,f->x,f->y,f->x1,f->y1)
  878.  
  879. extern void getfsimage(unsigned x,unsigned y,imagestkptr fs);
  880.  
  881. extern void putfsimage(unsigned x,unsigned y,imagestkptr fs,unsigned rmwbits);
  882.  
  883. #define setimagecoordinates(fs,a,b,c,d) fs->x=a; fs->y=b; fs->x1=c; fs->y1=d
  884.  
  885. #define clearkeyboardbuf() while (kbhit()) getch()
  886.  
  887. #define clearteglkeyboardbuf() while (teglkeypressed()) teglreadkey()
  888.  
  889. #define setautorotate(onoff) autorotateup = onoff
  890.  
  891. extern imagestkptr findframe(unsigned mxpos,unsigned mypos);
  892.  
  893. extern void resetframeactive(imagestkptr fs, char active);
  894.  
  895. extern msclickptr findmouseclickptr(imagestkptr frame,unsigned clicknumber);
  896.  
  897. extern void resetmouseclicks(imagestkptr frame,msclickptr clickptr);
  898.  
  899. extern void resetmsclicksense(imagestkptr frame,char newsense);
  900.  
  901. extern void resetmsclickcallproc(imagestkptr frame,unsigned mouseclicknumber,callproc entrycallproc);
  902.  
  903. extern void resetmsclickactive(imagestkptr frame,unsigned mouseclicknumber,char active);
  904.  
  905. extern void definemouseclickarea(imagestkptr frame,unsigned x,unsigned y,unsigned x1,
  906.                  unsigned y1,char active,callproc entrycallproc,char sense);
  907.  
  908. extern msclickptr checkmouseclickpos(imagestkptr frame,unsigned mxpos,unsigned mypos);
  909.  
  910. extern void defineglobalkeyclickarea(imagestkptr fs,msclickptr ms,unsigned keycode,char repeatkey,callproc entrycallproc);
  911.  
  912. extern void definelocalkeyclickarea(imagestkptr fs,msclickptr ms,unsigned keycode,char repeatkey,callproc entrycallproc);
  913.  
  914. extern keyclickptr findkeyclickptr(imagestkptr frame,unsigned keycode);
  915.  
  916. extern void dropkeyclick(imagestkptr frame,unsigned keycode,callproc entrycallproc);
  917.  
  918. extern void resetkeyclickcallproc(imagestkptr frame,unsigned keycode,callproc entrycallproc);
  919.  
  920. extern void pressbutton(imagestkptr fs,msclickptr mouseopt);
  921.  
  922. extern char visualbuttonpress(imagestkptr fs,msclickptr mouseopt);
  923.  
  924. extern msclickptr checkformouseselect(imagestkptr frame);
  925.  
  926. extern unsigned selectmenu(imagestkptr frame,msclickptr mouseclickpos);
  927.  
  928. #ifndef NOVIRT
  929. extern char pageoutimagestack(unsigned long memrequest);
  930.  
  931. extern void pageoutfs(imagestkptr fs);
  932.  
  933. extern void pageinfs(imagestkptr fs);
  934. #endif
  935.  
  936. #ifdef NOVIRT
  937. #define useimage(fs)
  938. #else
  939. #define useimage(fs) pageinfs(fs); fs->imageinuse=TRUE
  940. #endif
  941.  
  942. #define unuseimage(fs) fs->imageinuse=FALSE
  943.  
  944. #ifdef NOVIRT
  945. #define lockimage(fs)
  946. #else
  947. #define lockimage(fs) pageinfs(fs); fs->imagelock = TRUE
  948. #endif
  949.  
  950. #define unlockimage(fs) fs->imagelock = FALSE
  951.  
  952.  
  953. extern void teglsupervisor(void);
  954.  
  955. extern void checkctrlbreak(void);
  956.  
  957. #define setctrlbreakfs(cbp) ctrlbreakproc = cbp
  958.  
  959. extern void settimertick(unsigned timerinterrupt,callproc entrycallproc,imagestkptr fs,msclickptr ms);
  960.  
  961. extern void droptimertick(unsigned timerinterrupt,callproc entrycallproc);
  962.  
  963. /* $$$ duplicate  definintion
  964. extern char crclickpress(void);
  965. extern char crclickrelease(void);
  966. */
  967.  
  968. extern char overlap(unsigned ax1,unsigned ax2,unsigned bx1,unsigned bx2,unsigned *nx1,unsigned *nx2);
  969.  
  970. extern char overlaparea(unsigned ax,unsigned ay,unsigned ax1,unsigned ay1,
  971.             unsigned bx,unsigned by,unsigned bx1,unsigned by1,
  972.             unsigned *cx,unsigned *cy,unsigned *cx1,unsigned *cy1);
  973.  
  974. extern void teglinit(vmode videomode,unsigned long hugeminimum);
  975.  
  976.  
  977. /* teglgrph.c */
  978.  
  979. typedef struct teglconstants {
  980.              unsigned       teglbackcolor;
  981.              unsigned       teglbordercolor;
  982.              unsigned char teglbackpattern[8];
  983.              char       teglbordershow;
  984.              char       tegluserpattern;
  985.              unsigned       teglfillstyle;
  986.  
  987.              unsigned       shadowcolor;
  988.              unsigned       shadowbordercolor;
  989.              unsigned char shadowfillpattern[8];
  990.              char       shadowuserpattern;
  991.              unsigned       shadowfillstyle;
  992.  
  993.              fontptr       shadowtexttype;
  994.              char       defaulttexthighlight;
  995.              unsigned       defaulttexthcolor;
  996.              unsigned       defaulttextscolor;
  997.  
  998.              unsigned       extendtexthcolor;
  999.              unsigned       extendtextscolor;
  1000.              unsigned       extendtextcolor;
  1001.  
  1002.              unsigned       shifttextcolor;
  1003.              unsigned       shifttextscolor;
  1004.  
  1005.              unsigned       zipduration;
  1006.          } teglconstants;
  1007.  
  1008. extern teglconstants tg;
  1009. extern teglconstants herc_tg;
  1010.  
  1011. extern void drawlongbutton(unsigned x,unsigned y,unsigned ln);
  1012.  
  1013. #define setshadowcolor(b) tg.shadowcolor = b
  1014.  
  1015. #define setshadowbordercolor(b) tg.shadowbordercolor = b
  1016.  
  1017. #define setshadowfillpattern(bp) memcpy(tg.shadowfillpattern,bp,sizeof(tg.shadowfillpattern)); tg.shadowuserpattern=TRUE
  1018.  
  1019. #define settgconstants(bp) memcpy(tg,bp,sizeof(tg))
  1020.  
  1021. #define setshadowfillstyle(p) tg.shadowuserpattern=FALSE; tg.shadowfillstyle=p
  1022.  
  1023. extern void shadowbox(unsigned x,unsigned y,unsigned x1,unsigned y1);
  1024.  
  1025. extern void shadowtext(unsigned x,unsigned y,unsigned color,char * textstr);
  1026.  
  1027. #define setshadowtexttype(tt) tg.shadowtexttype = tt
  1028.  
  1029. #define setshadowtextshadow(c) tg.defaulttextscolor = c
  1030.  
  1031. #define setshadowtexthighlight(c) tg.defaulttexthighlight=TRUE; tg.defaulttexthcolor=c
  1032.  
  1033. #define shadowtexthighlightoff() tg.defaulttexthighlight=FALSE
  1034.  
  1035. extern void shadowboxtext(unsigned x,unsigned y,unsigned txtlen,char *textstr);
  1036.  
  1037. extern void extendtextxy(unsigned x, unsigned y, char *msg);
  1038.  
  1039. extern void shifttextxy(unsigned x, unsigned y, char *msg);
  1040.  
  1041. #define setteglbordershow(bs) tg.teglbordershow = bs
  1042.  
  1043. #define setteglbackcolor(b) tg.teglbackcolor = b
  1044.  
  1045. #define setteglbordercolor(b) tg.teglbordercolor = b
  1046.  
  1047. #define setteglfillpattern(bp) memcpy(tg.teglbackpattern,bp,sizeof(tg.teglbackpattern)); tg.tegluserpattern = TRUE
  1048.  
  1049. #define setteglfillstyle(p) tg.tegluserpattern = FALSE; tg.teglfillstyle = p
  1050.  
  1051. extern void clearteglscreen(void);
  1052.  
  1053. extern void movebox(int ax,int ay,int x,int y,int x1,int y1);
  1054.  
  1055. extern void ziptobox(int ax, int ay,int ax1,int ay1,int x,int y,int x1,int y1);
  1056.  
  1057. extern void zipfrombox(int ax,int ay,int ax1,int ay1,int x,int y,int x1,int y1);
  1058.  
  1059. extern unsigned collapsetoiconshow(imagestkptr fs, msclickptr mouseclickpos);
  1060.  
  1061. extern unsigned collapsetomsclick(imagestkptr fs, msclickptr mouseclickpos);
  1062.  
  1063. extern void explodefrommsclick(imagestkptr frame, msclickptr mouseclickpos, unsigned x, unsigned y, unsigned x1, unsigned y1);
  1064.  
  1065. extern void explodefromiconhide(imagestkptr frame, msclickptr mouseclickpos, unsigned x, unsigned y, unsigned x1, unsigned y1);
  1066.  
  1067. extern void putuserbuttonclick(imagestkptr fs, unsigned x, unsigned y, char *msg);
  1068.  
  1069. extern void defineuserbuttonclick(imagestkptr fs, unsigned x, unsigned y, char *msg,callproc entrycallproc);
  1070.  
  1071. extern void definebuttonclick(imagestkptr fs, unsigned x, unsigned y, char * button, callproc entrycallproc);
  1072.  
  1073. extern void definelongbuttonclick(imagestkptr fs, unsigned x, unsigned y, unsigned ln, char *msg, callproc entrycallproc);
  1074.  
  1075.  
  1076. /* teglmenu.c */
  1077.  
  1078. typedef struct optionentry *optioneptr;
  1079. typedef struct optionmenu *optionmptr;
  1080. typedef struct omevents *omeventptr;
  1081.  
  1082. typedef struct omevents {
  1083.           omeventptr     nextomevent;
  1084.           msclickptr     optionms;
  1085.           imagestkptr     optionfs;
  1086.           optionmptr     optionmn;
  1087.           unsigned char  optiontype;
  1088.          } omevents;
  1089.  
  1090. typedef struct optionmenu {
  1091.           optionmptr     nextom;
  1092.           unsigned     numofentries;
  1093.           unsigned     maxwidth;
  1094.           unsigned     padding;
  1095.           fontptr     fonttype;
  1096.           optioneptr     firstentry;
  1097.           optioneptr     currententry;
  1098.          } optionmenu;
  1099.  
  1100. typedef struct optionentry {
  1101.           optioneptr     nextoe;
  1102.           char         entryline[41];
  1103.           char         entryactive;
  1104.           int         entrycolor;
  1105.           callproc     entrycallproc;
  1106.          } optionentry;
  1107.  
  1108.  
  1109. typedef struct menuconstants {
  1110.           unsigned     barmenumargin;
  1111.           unsigned     barmenucolor;
  1112.           unsigned     bartextcolor;
  1113.           unsigned     barbordercolor;
  1114.           char         barbordershow;
  1115.           unsigned     barfillstyle;
  1116.           char         barshadowtext;
  1117.           unsigned     ominactivecolor;
  1118.           unsigned     omactivecolor;
  1119.           unsigned     ombordercolor;
  1120.           char         hidesubmenu;
  1121.          } menuconstants;
  1122.  
  1123. /*$$$*/
  1124. /*
  1125. enum { upperright   = 0 };
  1126. enum { upperleft    = 1 };
  1127. enum { lowerright   = 2 };
  1128. enum { lowerleft    = 3 };
  1129. enum { notoggleentry = 4 };
  1130. enum { notoggleexit = 8 };
  1131. */
  1132. #define upperright     0
  1133. #define upperleft      1
  1134. #define lowerright     2
  1135. #define lowerleft      3
  1136. #define notoggleentry  4
  1137. #define notoggleexit   8
  1138.  
  1139.  
  1140. extern menuconstants mc;
  1141.  
  1142. extern menuconstants herc_mc;
  1143.  
  1144. #define setmcconstants(bp) memcpy(&mc,bp,sizeof(mc))
  1145.  
  1146. extern void togglecheckmark(unsigned omnum,unsigned oenum,char status);
  1147.  
  1148. extern void toggleentrystatus(unsigned omnum,unsigned oenum,char status);
  1149.  
  1150. extern optionmptr createoptionmenu(fontptr fonttype);
  1151.  
  1152. extern void replaceoptiontext(unsigned omnum,unsigned oenum,char *entrystr);
  1153.  
  1154. extern void defineoptions(optionmptr om,char *entrystr,char active,callproc entrycallproc);
  1155.  
  1156. extern void resizeoptionmenu(optionmptr om,fontptr fonttype);
  1157.  
  1158. extern optionmptr createshadowom(optionmptr om,fontptr fonttype);
  1159.  
  1160. extern void resetoptionmenuevents(void);
  1161.  
  1162. extern void defineoptionclickarea(imagestkptr fs,unsigned x,unsigned y,
  1163.     unsigned x1,unsigned y1,optionmptr om,char sense,unsigned char omtype);
  1164.  
  1165. extern void createbarmenu(unsigned x,unsigned y,unsigned ln);
  1166.  
  1167. extern void outbaroption(char *entrystr,optionmptr om);
  1168.  
  1169.  
  1170.  
  1171. #define setoptionmenucolors(a,i) mc.omactivecolor=a; mc.ominactivecolor=i
  1172.  
  1173. #define setoptionmenubordercolor(c) mc.ombordercolor = c
  1174.  
  1175. #define setbarmenumargin(m) mc.barmenumargin = m
  1176.  
  1177. #define setbarmenucolor(c) mc.barmenucolor = c
  1178.  
  1179. #define setbartextcolor(c) mc.bartextcolor = c
  1180.  
  1181. #define setbarbordercolor(c) mc.barbordershow=TRUE; mc.barbordercolor=c
  1182.  
  1183. #define setbarborderoff() mc.barbordershow = FALSE
  1184.  
  1185. #define setbarfillstyle(p) mc.barfillstyle = p
  1186.  
  1187. #define setbarshadowtext(onoff) mc.barshadowtext = onoff
  1188.  
  1189. #define sethidesubmenu(onoff) mc.hidesubmenu = onoff
  1190.  
  1191.  
  1192.  
  1193.  
  1194. /* teglicon.c */
  1195.  
  1196. extern unsigned char         imageCREDITS[1613];
  1197. extern unsigned char         imageTRASH[846];
  1198. extern unsigned char         imageOK[413];
  1199. extern unsigned char         imageCANCEL[640];
  1200. extern unsigned char         imageBLANKBUT[162];
  1201. extern unsigned char         imageLBUT[101];
  1202. extern unsigned char         imageMBUT[35];
  1203. extern unsigned char         imageRBUT[79];
  1204. extern unsigned char         imageDOWN[89];
  1205. extern unsigned char         imageUP[93];
  1206. extern unsigned char         imageRIGHT[75];
  1207. extern unsigned char         imageLEFT[80];
  1208. extern unsigned char         imageR[54];
  1209. extern unsigned char         imageC[48];
  1210. extern unsigned char         imageTIGER[130];
  1211. extern unsigned char         imageLAST[472];
  1212. extern unsigned char         imageNEXT[511];
  1213. extern unsigned char         imageQUESTION[387];
  1214. extern unsigned char         imageVS[212];
  1215. extern unsigned char         imageMC[340];
  1216. extern unsigned char         imageTINYTEGL[129];
  1217. extern unsigned char         gridfill[8];
  1218.  
  1219.  
  1220. /* teglfsio.c */
  1221.  
  1222. typedef struct frameiorec *frameioptr;
  1223. typedef struct frameiorec {
  1224.          frameioptr   nextframeio;
  1225.          imagestkptr  fs;
  1226.          unsigned         x, y;
  1227.          unsigned         minx, maxx;
  1228.          unsigned         miny, maxy;
  1229.           } frameiorec;
  1230.  
  1231. extern frameioptr findfsio(imagestkptr  frame);
  1232.  
  1233. extern void openfsio(imagestkptr frame, unsigned x, unsigned y, unsigned x1, unsigned y1);
  1234.  
  1235. extern void closefsio(imagestkptr frame);
  1236.  
  1237. extern void writefs(imagestkptr fs, char * textstr);
  1238.  
  1239. extern void getmargins(imagestkptr frame, unsigned * x, unsigned * y, unsigned * x1, unsigned * y1);
  1240.  
  1241. extern void setmargins(imagestkptr frame, unsigned x, unsigned y, unsigned x1, unsigned y1);
  1242.  
  1243. extern void gotofsxy(imagestkptr frame, unsigned x, unsigned y);
  1244.  
  1245. extern unsigned fsiowherey(imagestkptr frame);
  1246.  
  1247. extern unsigned fsiowherex(imagestkptr frame);
  1248.  
  1249. extern void scrollup(imagestkptr fs);
  1250.  
  1251. extern void scrolldown(imagestkptr fs);
  1252.  
  1253.  
  1254. /* debugunt.c */
  1255.  
  1256. extern unsigned showcoordinates(imagestkptr frame,msclickptr mouseclickpos);
  1257.  
  1258. extern unsigned showmousexycoords(imagestkptr fs, msclickptr mouseclickpos);
  1259.  
  1260. extern unsigned showbuttonstatus(imagestkptr frame,msclickptr mouseclickpos);
  1261.  
  1262.  
  1263. /* fonttest.c */
  1264.  
  1265. #ifdef TEGLDEMO
  1266. #define MAXFONTS 7
  1267. #else
  1268. #define MAXFONTS 27
  1269. #endif
  1270.  
  1271. unsigned closefontwindow(imagestkptr frame,msclickptr mouseclickpos);
  1272.  
  1273. char *fontname(unsigned fontnum);
  1274.  
  1275. void createfontwindow(unsigned fontnum);
  1276.  
  1277. unsigned showonefont(imagestkptr frame,msclickptr mouseclickpos);
  1278.  
  1279. unsigned showfonts(imagestkptr frame,msclickptr mouseclickpos);
  1280.  
  1281.  
  1282. /* sensems.c */
  1283.  
  1284. extern void setmousesense(int x, int y);
  1285.  
  1286. /* soundunt.c */
  1287.  
  1288. extern  char       beepstatus;
  1289.  
  1290. extern  unsigned   beepdivisor;
  1291.  
  1292. extern unsigned asksoundsense(imagestkptr frame, msclickptr mouseclickpos);
  1293.  
  1294. extern void beep(unsigned tone, unsigned n, unsigned duration);
  1295.  
  1296. extern void slidebeep(unsigned tone1, unsigned tone2, unsigned n);
  1297.  
  1298. extern void soundswitch(char onoff);
  1299.  
  1300.  
  1301. /* selectfl.c */
  1302.  
  1303. extern char selectafile(int x,int y,char *path,char *fileselected);
  1304.  
  1305. extern void editstring(imagestkptr fs,int x,int y,int maxlen,char *textstr);
  1306.  
  1307.  
  1308. /* animate.c */
  1309.  
  1310. typedef struct coordinates {
  1311.     int x, y;
  1312. } coordinates;
  1313.  
  1314. typedef struct animateframe *aframeptr;
  1315. typedef struct animateframe {
  1316.     aframeptr    nextframe;        /* next char *, can be circular buffer */
  1317.     char        *imagepic;         /* image for display */
  1318.     unsigned     tonehz;           /* 0 turns off tone */
  1319.     unsigned     tonedelay;
  1320.     coordinates  movement;         /* next increment */
  1321.     unsigned     imgdelay;         /* delay before next image is placed */
  1322.     unsigned     imagesz;          /* size of image */
  1323.     unsigned     height, width;    /* length and width of image */
  1324.     unsigned     color;            /* color for putpict */
  1325. } animateframe;
  1326.  
  1327. typedef struct sequenceset *sequenceptr;
  1328. typedef struct sequenceset {
  1329.     sequenceptr  nextsequence;
  1330.     unsigned     sequencenum;
  1331.     aframeptr    sequenceframe;
  1332. } sequenceset;
  1333.  
  1334. typedef struct animateobject {
  1335.     aframeptr    currentframe;     /* char * to current picture frame */
  1336.     aframeptr    firstframe;       /* first image char * */
  1337.     sequenceptr  sequenceframe;
  1338.     unsigned     framenumber;
  1339.     coordinates  cc;
  1340. } animateobject;
  1341.  
  1342.  
  1343. extern void init(animateobject * ao);
  1344.  
  1345. extern void origin(animateobject * ao, unsigned ox, unsigned oy);
  1346.  
  1347. extern void getorigin(animateobject * ao, int *lastox, int *lastoy);
  1348.  
  1349. extern void resetframe(animateobject * ao, unsigned startframe);
  1350.  
  1351. extern unsigned currentframenumber(animateobject * ao);
  1352.  
  1353. extern unsigned destination(animateobject * ao, int dx, int dy);
  1354.  
  1355. extern void addframe(animateobject * ao, char *pp, int mx, int my, unsigned ht, unsigned wd, unsigned dy, unsigned hz, unsigned hzdy, unsigned co);
  1356.  
  1357. extern void sequence(animateobject * ao, unsigned seqnum);
  1358.  
  1359. extern void resetsequence(animateobject * ao);
  1360.  
  1361. extern void animateinit(void);
  1362.  
  1363. extern void animate(animateobject * ao, unsigned numframe);
  1364.  
  1365. extern void animatecomplete(animateobject * ao);
  1366.  
  1367. extern void anim_init(int argc, char **argv);
  1368.  
  1369.  
  1370. /* tegleasy.c */
  1371.  
  1372. #ifndef NULL
  1373. #define NULL  0L
  1374. #endif
  1375.  
  1376. extern int displayadaptor;
  1377.  
  1378. extern unsigned long reservemem;
  1379.  
  1380. extern char enablecontrolbreak;
  1381.  
  1382. extern fontptr easyfont, fontstore;
  1383.  
  1384.  
  1385. extern void activebutton(unsigned x,unsigned y,char * s,callproc p);
  1386.  
  1387. extern int coltox(int col);
  1388.  
  1389. extern void errmess(unsigned x,unsigned y,char * s);
  1390.  
  1391. extern void fitframe(unsigned * x,unsigned * y,unsigned * width,unsigned * height);
  1392.  
  1393. extern void framefromicon(imagestkptr ifs,msclickptr ms,unsigned x,unsigned y,unsigned x1,unsigned y1);
  1394.  
  1395. extern void frametext(imagestkptr ifs,int row,int col,char * s);
  1396.  
  1397. extern unsigned getmousey(imagestkptr ifs);
  1398.  
  1399. extern char getyesno(unsigned x,unsigned y,char * s);
  1400.  
  1401. extern void easytegl(void);
  1402.  
  1403. extern int lastcol(imagestkptr ifs);
  1404.  
  1405. extern int lastrow(imagestkptr ifs);
  1406.  
  1407. extern unsigned quit(imagestkptr frame,msclickptr mouseclickpos);
  1408.  
  1409. extern void quickframe(imagestkptr * ifs,unsigned *x,unsigned *y,unsigned *width,unsigned *height);
  1410.  
  1411. #define outframetextxy(f,x_,y_,s) outtegltextxy(f->x+x_,f->y+y_,s)
  1412.  
  1413. #define restoretext() fonttable = fontstore
  1414.  
  1415. extern int rowtoy(int row);
  1416.  
  1417. #define seteasyfont(p) easyfont = p
  1418.  
  1419. #define selecteasytext() fontstore=fonttable; fonttable=easyfont
  1420.  
  1421.