home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 5 / FreshFish_July-August1994.bin / bbs / dev / alst-3.04.lha / ALSt-3.04 / src / stdwin.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-05-14  |  8.1 KB  |  270 lines

  1. /* STDWIN INTERFACE */
  2.  
  3. #ifndef __STDWIN_H__    /* Guard against multiple inclusion */
  4. #define __STDWIN_H__
  5.  
  6. #include "_ARGS.h"    /* Definition of _ARGS() macro */
  7.  
  8.  
  9. /***********************************/
  10. /* Section 1.  Types and constants */
  11. /***********************************/
  12.  
  13.  
  14. /* These structs are implementation-dependent, the user only sees
  15.    pointers to them */
  16.  
  17. #define WINDOW struct _window
  18. #define MENU struct _menu
  19. #define CURSOR struct _cursor
  20.  
  21.  
  22. /* Fake window type used by the wgettag() and wsettag() macros */
  23.  
  24. struct _fakewindow {
  25.     short tag;
  26. };
  27.  
  28. #define _FAKEWINDOW struct _fakewindow
  29.  
  30.  
  31. /* EVENT struct */
  32.  
  33. struct _event {
  34.     int type;
  35.     WINDOW *window;
  36.     union {
  37.     /* case WE_CHAR: */
  38.         int character;
  39.     /* case WE_COMMAND: */
  40.         int command;
  41.     /* case WE_MENU: */
  42.         struct { int id; int item; } m;
  43.     /* case WE_DRAW: */
  44.         struct { int left, top, right, bottom; } area;
  45.     /* case WE_MOUSE_DOWN, WE_MOUSE_MOVE, WE_MOUSE_UP: */
  46.         struct {
  47.             int h;
  48.             int v;
  49.             int clicks;
  50.             int button;
  51.             int mask;
  52.         } where;
  53.     /* case WE_LOST_SEL: */
  54.         int sel;
  55.     } u;
  56. };
  57.  
  58. #define EVENT struct _event
  59.  
  60.  
  61. /* Event types */
  62. /* XXX Should be reordered */
  63.  
  64. #define WE_NULL        0    /* (Used internally) */
  65. #define WE_ACTIVATE    1    /* Window became active */
  66. #define WE_CHAR        2    /* Character typed at keyboard */
  67. #define WE_COMMAND    3    /* Special command, function key etc. */
  68. #define WE_MOUSE_DOWN    4    /* Mouse button pressed */
  69. #define WE_MOUSE_MOVE    5    /* Mouse moved with button down */
  70. #define WE_MOUSE_UP    6    /* Mouse button released */
  71. #define WE_MENU        7    /* Menu item selected */
  72. #define WE_SIZE        8    /* Window size changed */
  73. #define WE_MOVE        9    /* Window moved (reserved) */
  74. #define WE_DRAW        10    /* Request to redraw part of window */
  75. #define WE_TIMER    11    /* Window's timer went off */
  76. #define WE_DEACTIVATE    12    /* Window became inactive */
  77. #define WE_EXTERN    13    /* Externally generated event (Amoeba) */
  78. #define WE_KEY        14    /* Low-level key event (reserved) */
  79. #define WE_LOST_SEL    15    /* Lost selection */
  80. #define WE_CLOSE    16    /* User wants to close window */
  81.  
  82.  
  83. /* Special keys reported by WE_COMMAND */
  84. /* XXX Should become key events */
  85.  
  86. #define WC_CLOSE    1    /* Now a separate event! */
  87. /* The following four are arrow keys */
  88. #define WC_LEFT        2
  89. #define WC_RIGHT    3
  90. #define WC_UP        4
  91. #define WC_DOWN        5
  92. /* ASCII keys */
  93. #define WC_CANCEL    6
  94. #define WC_BACKSPACE    7
  95. #define WC_TAB        8
  96. #define WC_RETURN    9
  97. /* IBM-PC keys -- not in all implementations */
  98. /* XXX Should be done differently */
  99. #define WC_HOME        10
  100. #define WC_END        11
  101. #define WC_CLEAR    12
  102. #define WC_INS        13
  103. #define WC_DEL        14
  104. #define WC_PAGE_UP    15
  105. #define WC_PAGE_DOWN    16
  106. #define WC_META_LEFT    17
  107. #define WC_META_RIGHT    18
  108. #define WC_META_HOME    19
  109. #define WC_META_END    20
  110. #define WC_META_PAGE_UP    21
  111. #define WC_META_PAGE_DOWN    22
  112. /* XXX Should have entries for Alt-letter and F1-F10 etc. ? */
  113.  
  114.  
  115. /* Codes for selections (e.u.sel for WE_LOST_SEL) */
  116.  
  117. #define WS_CLIPBOARD    0
  118. #define WS_PRIMARY    1
  119. #define WS_SECONDARY    2
  120.  
  121.  
  122. /* TEXTATTR struct */
  123.  
  124. /* The contents of a text attributes struct are disclosed here because
  125.    the interface allows the programmer to declare objects of this type.
  126.    (I'm not so sure anymore that this is the right thing to do!) */
  127.  
  128. struct _textattr {
  129.     short font;
  130.     unsigned char size;
  131.     unsigned char style;
  132. };
  133.  
  134. #define TEXTATTR struct _textattr
  135.  
  136.  
  137. /*************************************/
  138. /* Section 2.  Function declarations */
  139. /*************************************/
  140.  
  141.  
  142. void wargs _ARGS((int *pargc, char ***pargv));
  143. void winit _ARGS((void));
  144. void winitargs _ARGS((int *pargc, char ***pargv));
  145. void wdone _ARGS((void));
  146.  
  147. void wgetscrsize _ARGS((int *pwidth, int *pheight));
  148. void wgetscrmm _ARGS((int *pmmwidth, int *pmmheight));
  149.  
  150. void wsetmaxwinsize _ARGS((int width, int height));
  151. void wsetdefwinsize _ARGS((int width, int height));
  152. void wsetdefwinpos _ARGS((int h, int v));
  153. void wgetdefwinsize _ARGS((int *pwidth, int *pheight));
  154. void wgetdefwinpos _ARGS((int *ph, int *pv));
  155.  
  156. WINDOW *wopen _ARGS((char *title,
  157.         void (*drawproc)(/*WINDOW *win,
  158.                 int left, int top, int right, int bottom*/)));
  159. void wclose _ARGS((WINDOW *win));
  160. #define wgettag(win) (((_FAKEWINDOW *)(win)) -> tag)
  161. #define wsettag(win, newtag) (((_FAKEWINDOW *)(win)) -> tag = (newtag))
  162. void wsetactive _ARGS((WINDOW *win));
  163. WINDOW *wgetactive _ARGS((void));
  164. void wgetwinsize _ARGS((WINDOW *win, int *width, int *height));
  165. void wsetdocsize _ARGS((WINDOW *win, int width, int height));
  166. void wgetdocsize _ARGS((WINDOW *win, int *width, int *height));
  167. void wsettitle _ARGS((WINDOW *win, char *title));
  168. char *wgettitle _ARGS((WINDOW *win)); /* Returns pointer to static data */
  169.  
  170. void wsetorigin _ARGS((WINDOW *win, int h, int v));
  171. void wgetorigin _ARGS((WINDOW *win, int *h, int *v));
  172. void wshow _ARGS((WINDOW *win, int left, int top, int right, int bottom));
  173. void wchange _ARGS((WINDOW *win, int left, int top, int right, int bottom));
  174. void wscroll _ARGS((WINDOW *win, int left, int top, int right, int bottom,
  175.     int dh, int dv));
  176.  
  177. void wfleep _ARGS((void));
  178. void wmessage _ARGS((char *str));
  179. void wperror _ARGS((char *name));
  180. /*bool*/int waskstr _ARGS((char *prompt, char *buf, int buflen));
  181. int waskync _ARGS((char *question, int dflt));
  182. /*bool*/int waskfile _ARGS((char *prompt, char *buf, int buflen,
  183.                         /*bool*/int newfile));
  184.  
  185. void wsetcaret _ARGS((WINDOW *win, int h, int v));
  186. void wnocaret _ARGS((WINDOW *win));
  187.  
  188. void wsettimer _ARGS((WINDOW *win, int deciseconds));
  189.  
  190. MENU *wmenucreate _ARGS((int id, char *title));
  191. void wmenudelete _ARGS((MENU *mp));
  192. int wmenuadditem _ARGS((MENU *mp, char *text, int shortcut));
  193. void wmenusetitem _ARGS((MENU *mp, int i, char *text));
  194. void wmenusetdeflocal _ARGS((/*bool*/int local));
  195. void wmenuattach _ARGS((WINDOW *win, MENU *mp));
  196. void wmenudetach _ARGS((WINDOW *win, MENU *mp));
  197. void wmenuenable _ARGS((MENU *mp, int item, int flag));
  198. void wmenucheck _ARGS((MENU *mp, int item, int flag));
  199.  
  200. /* The following is only available in termcap stdwin: */
  201. void wsetshortcut _ARGS((int id, int item, char *keys));
  202.  
  203. void wgetevent _ARGS((EVENT *ep));
  204. /*bool*/int wpollevent _ARGS((EVENT *ep));
  205. void wungetevent _ARGS((EVENT *ep));
  206. void wupdate _ARGS((WINDOW *win));
  207. void wbegindrawing _ARGS((WINDOW *win));
  208. void wenddrawing _ARGS((WINDOW *win));
  209. void wflush _ARGS((void));
  210.  
  211. void wdrawline _ARGS((int h1, int v1, int h2, int v2));
  212. void wxorline _ARGS((int h1, int v1, int h2, int v2));
  213. void wdrawcircle _ARGS((int h, int v, int radius));
  214. void wdrawelarc _ARGS((int h, int v, int hrad, int vrad, int ang1, int ang2));
  215. void wdrawbox _ARGS((int left, int top, int right, int bottom));
  216. void werase _ARGS((int left, int top, int right, int bottom));
  217. void wpaint _ARGS((int left, int top, int right, int bottom));
  218. void winvert _ARGS((int left, int top, int right, int bottom));
  219. void wshade _ARGS((int left, int top, int right, int bottom, int percent));
  220.  
  221. void wcliprect _ARGS((int left, int top, int right, int bottom));
  222. void wnoclip _ARGS((void));
  223.  
  224. void wdrawtext _ARGS((int h, int v, char *str, int len));
  225. void wdrawchar _ARGS((int h, int v, int c));
  226. int wlineheight _ARGS((void));
  227. int wbaseline _ARGS((void));
  228. int wtextwidth _ARGS((char *str, int len));
  229. int wcharwidth _ARGS((int c));
  230. int wtextbreak _ARGS((char *str, int len, int width));
  231.  
  232. void wgettextattr _ARGS((TEXTATTR *attr));
  233. void wsettextattr _ARGS((TEXTATTR *attr));
  234. void wgetwintextattr _ARGS((WINDOW *win, TEXTATTR *attr));
  235. void wsetwintextattr _ARGS((WINDOW *win, TEXTATTR *attr));
  236.  
  237. void wsetplain _ARGS((void));
  238. void wsethilite _ARGS((void));
  239. void wsetinverse _ARGS((void));
  240. void wsetitalic _ARGS((void));
  241. void wsetbold _ARGS((void));
  242. void wsetbolditalic _ARGS((void));
  243. void wsetunderline _ARGS((void));
  244.  
  245. void wsetfont _ARGS((char *fontname));
  246. void wsetsize _ARGS((int pointsize));
  247.  
  248. /* Setting the mouse cursor for a window */
  249. CURSOR *wfetchcursor _ARGS((char *name));
  250. void wsetwincursor _ARGS((WINDOW *win, CURSOR *cursor));
  251.  
  252. /* X11 Selection interface */
  253. /*bool*/int wsetselection _ARGS((WINDOW *, int, char *, int));
  254. void wresetselection _ARGS((int));
  255. char *wgetselection _ARGS((int, int *));
  256.  
  257. /* Cut buffer interface */
  258. void wsetcutbuffer _ARGS((int, char *, int));
  259. char *wgetcutbuffer _ARGS((int, int *));
  260. void wrotatecutbuffers _ARGS((int));
  261. void wsetclip _ARGS((char *, int));
  262. char *wgetclip _ARGS((void));
  263.  
  264.  
  265. /* Pull in definitions for TEXTEDIT package */
  266.  
  267. #include "stdwtext.h"
  268.  
  269. #endif /* __STDWIN_H__ */
  270.