home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 5 / DATAFILE_PDCD5.iso / utilities / d / desklib / !DeskLib / h / Wimp < prev    next >
Encoding:
Text File  |  1996-10-16  |  17.1 KB  |  780 lines

  1.  
  2. #ifndef __Desk_Wimp_h
  3. #define __Desk_Wimp_h
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. #ifndef __Desk_Core_h
  8. #include "Desk.Core.h"
  9. #endif
  10. #define Desk_wimp_MAXNAME 12
  11. typedef struct
  12. {
  13. int x, y;
  14. } Desk_wimp_point;
  15. typedef Desk_wimp_point Desk_wimp_coord;
  16. typedef struct
  17. {
  18. Desk_wimp_point min;
  19. Desk_wimp_point max;
  20. } Desk_wimp_rect;
  21. typedef Desk_wimp_rect Desk_wimp_box;
  22. typedef int Desk_window_handle;
  23. typedef int Desk_icon_handle;
  24. typedef int Desk_task_handle;
  25. #define Desk_colour_WHITE 0
  26. #define Desk_colour_GREY0 0
  27. #define Desk_colour_GREY1 1
  28. #define Desk_colour_GREY2 2
  29. #define Desk_colour_GREY3 3
  30. #define Desk_colour_GREY4 4
  31. #define Desk_colour_GREY5 5
  32. #define Desk_colour_GREY6 6
  33. #define Desk_colour_GREY7 7
  34. #define Desk_colour_BLACK 7
  35. #define Desk_colour_DARK_BLUE 8
  36. #define Desk_colour_YELLOW 9
  37. #define Desk_colour_GREEN 10
  38. #define Desk_colour_RED 11
  39. #define Desk_colour_CREAM 12
  40. #define Desk_colour_ARMY_GREEN 13
  41. #define Desk_colour_ORANGE 14
  42. #define Desk_colour_LIGHT_BLUE 15
  43. #define Desk_colour_TRANSPARENT 255 
  44. typedef union
  45. {
  46. int value;
  47. struct
  48. {
  49. unsigned int wimpcolour : 4;
  50. unsigned int gcolaction : 3;
  51. unsigned int foreback : 1;
  52. unsigned int padding : 24;
  53. } data;
  54. } Desk_wimp_colour;
  55. typedef union
  56. {
  57. int value;
  58. struct
  59. {
  60. char gcol;
  61. char red;
  62. char green;
  63. char blue;
  64. } data;
  65. } Desk_palette_entry;
  66. typedef struct
  67. {
  68. Desk_palette_entry colour[16];
  69. Desk_palette_entry border;
  70. Desk_palette_entry mouse1;
  71. Desk_palette_entry mouse2;
  72. Desk_palette_entry mouse3;
  73. } Desk_palette_block;
  74. #define Desk_iconbtype_NEVER 0
  75. #define Desk_iconbtype_ALWAYS 1
  76. #define Desk_iconbtype_AUTOREPEAT 2
  77. #define Desk_iconbtype_CLICK 3
  78. #define Desk_iconbtype_RELEASE 4
  79. #define Desk_iconbtype_DOUBLECLICK 5
  80. #define Desk_iconbtype_CLICKDRAG 6
  81. #define Desk_iconbtype_RELEASEDRAG 7
  82. #define Desk_iconbtype_DOUBLEDRAG 8
  83. #define Desk_iconbtype_MENU 9
  84. #define Desk_iconbtype_DOUBLECLICKDRAG 10
  85. #define Desk_iconbtype_RADIO 11
  86. #define Desk_iconbtype_RESERVED1 12
  87. #define Desk_iconbtype_RESERVED2 13
  88. #define Desk_iconbtype_WRITECLICKDRAG 14
  89. #define Desk_iconbtype_WRITABLE 15
  90. #define Desk_iconbar_RIGHT -1
  91. #define Desk_iconbar_LEFT -2
  92. #define Desk_window_ICONBAR -2
  93. #define Desk_icon_TEXT 0x00000001 
  94. #define Desk_icon_SPRITE 0x00000002 
  95. #define Desk_icon_BORDER 0x00000004 
  96. #define Desk_icon_HCENTRE 0x00000008 
  97. #define Desk_icon_VCENTRE 0x00000010 
  98. #define Desk_icon_FILLED 0x00000020 
  99. #define Desk_icon_FONT 0x00000040 
  100. #define Desk_icon_NEEDSHELP 0x00000080 
  101. #define Desk_icon_INDIRECTED 0x00000100 
  102. #define Desk_icon_RJUSTIFY 0x00000200 
  103. #define Desk_icon_ALLOWADJUST 0x00000400 
  104. #define Desk_icon_HALVESPRITE 0x00000800 
  105. #define Desk_icon_BUTTONTYPE 0x00001000 
  106. #define Desk_icon_SELECTED 0x00200000 
  107. #define Desk_icon_SHADED 0x00400000 
  108. #define Desk_icon_DELETED 0x00800000 
  109. #define Desk_icon_FORECOLOUR 0x01000000 
  110. #define Desk_icon_BACKCOLOUR 0x10000000 
  111. #define Desk_iconvalid_ALLOW 'A'
  112. #define Desk_iconvalid_BORDERTYPE 'R'
  113. #define Desk_iconvalid_DISPLAY 'D'
  114. #define Desk_iconvalid_FONTCOLOURS 'F'
  115. #define Desk_iconvalid_LINESPACE 'L'
  116. #define Desk_iconvalid_SPRITENAME 'S'
  117. #define Desk_iconborder_PLINTH 0
  118. #define Desk_iconborder_SURROUND 1
  119. #define Desk_iconborder_OKBUTTON 2
  120. #define Desk_iconborder_INDENT 3
  121. typedef union
  122. {
  123. unsigned int value;
  124. struct
  125. {
  126. unsigned int garbage1 : 6; 
  127. unsigned int font : 1; 
  128. unsigned int garbage2 : 17; 
  129. unsigned int handle : 8; 
  130. } font;
  131. struct
  132. {
  133. unsigned int text : 1;
  134. unsigned int sprite : 1;
  135. unsigned int border : 1;
  136. unsigned int hcentre : 1;
  137. unsigned int vcentre : 1;
  138. unsigned int filled : 1;
  139. unsigned int font : 1;
  140. unsigned int needshelp : 1;
  141. unsigned int indirected : 1;
  142. unsigned int rightjustify : 1;
  143. unsigned int allowadjust : 1;
  144. unsigned int halfsize : 1;
  145. unsigned int buttontype : 4;
  146. unsigned int esg : 5;
  147. unsigned int selected : 1;
  148. unsigned int shaded : 1;
  149. unsigned int deleted : 1;
  150. unsigned int foreground : 4;
  151. unsigned int background : 4;
  152. } data;
  153. } Desk_icon_flags;
  154. typedef struct
  155. {
  156. char *buffer;
  157. char *validstring;
  158. unsigned int bufflen;
  159. } Desk_icon_indtext;
  160. typedef struct
  161. {
  162. const char *name;
  163. void *spritearea;
  164. unsigned int nameisname;
  165. } Desk_icon_indsprite;
  166. typedef union
  167. {
  168. char text[Desk_wimp_MAXNAME];
  169. Desk_icon_indtext indirecttext;
  170. char spritename[Desk_wimp_MAXNAME];
  171. Desk_icon_indsprite indirectsprite;
  172. } Desk_icon_data;
  173. typedef struct
  174. {
  175. Desk_wimp_box workarearect;
  176. Desk_icon_flags flags;
  177. Desk_icon_data data;
  178. } Desk_icon_block;
  179. typedef struct
  180. {
  181. Desk_window_handle window;
  182. Desk_icon_block icondata;
  183. } Desk_icon_createblock;
  184. typedef union
  185. {
  186. struct
  187. {
  188. unsigned int hastitle : 1; 
  189. unsigned int moveable : 1;
  190. unsigned int hasvscroll : 1; 
  191. unsigned int hashscroll : 1; 
  192. unsigned int autoredraw : 1;
  193. unsigned int pane : 1;
  194. unsigned int nobounds : 1;
  195. unsigned int nobackclose : 1; 
  196. unsigned int scrollrq : 1;
  197. unsigned int scrollrqdebounced : 1;
  198. unsigned int realcolours : 1;
  199. unsigned int backwindow : 1;
  200. unsigned int hotkeys : 1;
  201. unsigned int keeponscreen : 1;
  202. unsigned int ignoreright : 1;
  203. unsigned int ignorebottom : 1;
  204. unsigned int open : 1;
  205. unsigned int top : 1;
  206. unsigned int fullsize : 1;
  207. unsigned int istoggling : 1;
  208. unsigned int focus : 1;
  209. unsigned int forceonce : 1;
  210. unsigned int dummy22 : 1;
  211. unsigned int dummy23 : 1;
  212. unsigned int backicon : 1;
  213. unsigned int closeicon : 1;
  214. unsigned int titlebar : 1;
  215. unsigned int toggleicon : 1;
  216. unsigned int vscroll : 1;
  217. unsigned int adjusticon : 1;
  218. unsigned int hscroll : 1;
  219. unsigned int newflags : 1; 
  220. } data;
  221. int value;
  222. } Desk_window_flags;
  223. typedef struct 
  224. int x : 16; 
  225. int y : 16; 
  226. } Desk_window_minsize;
  227. typedef enum
  228. {
  229. Desk_windowcol_TITLEFORE = 0,
  230. Desk_windowcol_TITLEBACK,
  231. Desk_windowcol_WORKFORE,
  232. Desk_windowcol_WORKBACK,
  233. Desk_windowcol_SCROLLBACK,
  234. Desk_windowcol_SCROLLFORE,
  235. Desk_windowcol_TITLEHILITE
  236. } Desk_window_colourindices;
  237. typedef struct
  238. {
  239. Desk_wimp_box screenrect;
  240. Desk_wimp_point scroll;
  241. Desk_window_handle behind;
  242. Desk_window_flags flags;
  243. char colours[8];
  244. Desk_wimp_box workarearect;
  245. Desk_icon_flags titleflags;
  246. Desk_icon_flags workflags;
  247. void *spritearea;
  248. Desk_window_minsize minsize;
  249. Desk_icon_data title;
  250. unsigned int numicons;
  251. } Desk_window_block;
  252. typedef struct
  253. {
  254. Desk_window_handle window;
  255. Desk_wimp_box screenrect;
  256. Desk_wimp_point scroll;
  257. Desk_window_handle behind;
  258. } Desk_window_openblock;
  259. typedef struct
  260. {
  261. Desk_window_openblock openblock;
  262. Desk_window_flags flags;
  263. } Desk_window_state;
  264. typedef struct
  265. {
  266. Desk_window_handle window;
  267. Desk_window_block block;
  268. } Desk_window_info;
  269. typedef struct
  270. {
  271. Desk_window_handle window;
  272. Desk_wimp_box rect;
  273. Desk_wimp_point scroll;
  274. Desk_wimp_box cliprect;
  275. } Desk_window_redrawblock;
  276. typedef struct
  277. {
  278. Desk_window_handle window;
  279. Desk_wimp_box screenrect;
  280. } Desk_window_outline;
  281. #define Desk_button_ADJUST 0x00000001
  282. #define Desk_button_MENU 0x00000002
  283. #define Desk_button_SELECT 0x00000004
  284. #define Desk_button_DRAGADJUST 0x00000010
  285. #define Desk_button_DRAGSELECT 0x00000040
  286. #define Desk_button_CLICKADJUST 0x00000100
  287. #define Desk_button_CLICKSELECT 0x00000400
  288. #define Desk_button2_CLICKADJUST 0x00000001 
  289. #define Desk_button2_CLICKSELECT 0x00000004 
  290. #define Desk_button2_DRAGADJUST 0x00000010 
  291. #define Desk_button2_DRAGSELECT 0x00000040 
  292. #define Desk_button2_ADJUST 0x00000100 
  293. #define Desk_button2_MENU 0x00000200 
  294. #define Desk_button2_SELECT 0x00000400 
  295. typedef union
  296. {
  297. unsigned int value;
  298. struct
  299. {
  300. unsigned int adjust : 1;
  301. unsigned int menu : 1;
  302. unsigned int select : 1;
  303. unsigned int dummy3 : 1;
  304. unsigned int dragadjust : 1;
  305. unsigned int dummy5 : 1;
  306. unsigned int dragselect : 1;
  307. unsigned int dummy7 : 1;
  308. unsigned int clickadjust : 1;
  309. unsigned int dummy9 : 1;
  310. unsigned int clickselect : 1;
  311. } data;
  312. struct
  313. {
  314. unsigned int clickadjust : 1;
  315. unsigned int dummy1 : 1;
  316. unsigned int clickselect : 1;
  317. unsigned int dummy3 : 1;
  318. unsigned int dragadjust : 1;
  319. unsigned int dummy5 : 1;
  320. unsigned int dragselect : 1;
  321. unsigned int dummy7 : 1;
  322. unsigned int adjust : 1;
  323. unsigned int menu : 1;
  324. unsigned int select : 1;
  325. }
  326. data2; 
  327. } Desk_button_state;
  328. typedef struct
  329. {
  330. Desk_wimp_point pos;
  331. Desk_button_state button;
  332. Desk_window_handle window;
  333. Desk_icon_handle icon;
  334. } Desk_mouse_block;
  335. typedef struct
  336. {
  337. int shapenumber;
  338. char *shapedata;
  339. unsigned int width;
  340. unsigned int height;
  341. Desk_wimp_point active;
  342. } Desk_pointer_shapeblock;
  343. typedef enum
  344. {
  345. Desk_drag_MOVEWINDOW = 1,
  346. Desk_drag_RESIZEWINDOW,
  347. Desk_drag_SCROLLX,
  348. Desk_drag_SCROLLY,
  349. Desk_drag_FIXEDBOX,
  350. Desk_drag_RUBBERBOX,
  351. Desk_drag_INVISIBLE,
  352. Desk_drag_USERFIXEDBBOX,
  353. Desk_drag_USERRUBBERBOX,
  354. Desk_drag_USERFIXEDNC,
  355. Desk_drag_USERRUBBERNC
  356. } Desk_drag_type;
  357. typedef struct
  358. {
  359. Desk_window_handle window;
  360. Desk_drag_type type;
  361. Desk_wimp_box screenrect;
  362. Desk_wimp_box parent;
  363. } Desk_drag_block;
  364. #define Desk_error_flags_newtype_OLDERROR 0
  365. #define Desk_error_flags_newtype_INFOREPORT 1
  366. #define Desk_error_flags_newtype_ERROR 2
  367. #define Desk_error_flags_newtype_PROGRAM 3
  368. #define Desk_error_flags_newtype_QUESTION 4
  369. typedef union
  370. {
  371. unsigned int value;
  372. struct
  373. {
  374. unsigned int ok : 1;
  375. unsigned int cancel : 1;
  376. unsigned int highlightcancel : 1;
  377. unsigned int noprompt : 1;
  378. unsigned int noprefix : 1;
  379. unsigned int nowait : 1;
  380. unsigned int closebox : 1;
  381. unsigned int nobeep : 1;
  382. unsigned int format350 : 1;
  383. unsigned int type350 : 3;
  384. } data;
  385. } Desk_error_flags;
  386. typedef struct Desk_menu_block *Desk_menu_ptr;
  387. typedef union
  388. {
  389. unsigned int value;
  390. struct
  391. {
  392. unsigned int ticked : 1;
  393. unsigned int dotted : 1;
  394. unsigned int writable : 1;
  395. unsigned int notifysub : 1;
  396. unsigned int openshaded : 1;
  397. unsigned int dummy2 : 2;
  398. unsigned int last : 1;
  399. unsigned int indtitle : 1;
  400. unsigned int dummy13 : 13;
  401. unsigned int shaded : 1;
  402. unsigned int dummy1 : 1;
  403. unsigned int foreground : 4;
  404. unsigned int background : 4;
  405. } data;
  406. } Desk_menu_flags;
  407. typedef union
  408. {
  409. Desk_menu_ptr menu;
  410. Desk_window_handle window;
  411. int value;
  412. } Desk_menu_submenu;
  413. typedef struct
  414. {
  415. Desk_menu_flags menuflags;
  416. Desk_menu_submenu submenu;
  417. Desk_icon_flags iconflags;
  418. Desk_icon_data icondata;
  419. } Desk_menu_item;
  420. typedef struct Desk_menu_block
  421. {
  422. char title [Desk_wimp_MAXNAME];
  423. char titlefore, titleback, workfore, workback;
  424. unsigned int width;
  425. unsigned int height;
  426. unsigned int gap;
  427. } Desk_menu_block;
  428. typedef int Desk_key_press;
  429. typedef struct
  430. {
  431. Desk_window_handle window;
  432. Desk_icon_handle icon;
  433. Desk_wimp_point offset;
  434. int height;
  435. int index;
  436. } Desk_caret_block;
  437. typedef struct
  438. {
  439. Desk_caret_block caret;
  440. Desk_key_press code;
  441. } Desk_key_block;
  442. typedef struct
  443. {
  444. int address;
  445. int contents;
  446. } Desk_pollword_block;
  447. typedef enum
  448. {
  449. Desk_message_QUIT = 0,
  450. Desk_message_CLOSEDOWN = 0,
  451. Desk_message_DATASAVE = 1,
  452. Desk_message_DATASAVEACK = 2,
  453. Desk_message_DATASAVEOK = 2,
  454. Desk_message_DATALOAD = 3,
  455. Desk_message_DATALOADACK = 4,
  456. Desk_message_DATALOADOK = 4,
  457. Desk_message_DATAOPEN,
  458. Desk_message_RAMFETCH,
  459. Desk_message_RAMTRANSMIT,
  460. Desk_message_PREQUIT,
  461. Desk_message_PALETTECHANGE,
  462. Desk_message_SAVEDESK,
  463. Desk_message_DEVICECLAIM,
  464. Desk_message_DEVICEINUSE,
  465. Desk_message_DATASAVED,
  466. Desk_message_CLAIMENTITY = 15,
  467. Desk_message_DATAREQUEST = 16,
  468. Desk_message_RELEASEENTITY = 19,
  469. Desk_message_FILEROPENDIR = 0x400,
  470. Desk_message_FILERCLOSEDIR,
  471. Desk_message_FILEROPENDIRAT,
  472. Desk_message_FILERSELECTIONDIRECTORY,
  473. Desk_message_FILERADDSELECTION,
  474. Desk_message_FILERACTION,
  475. Desk_message_FILERCONTROLACTION,
  476. Desk_message_FILERSELECTION,
  477. Desk_message_HELPREQUEST = 0x502,
  478. Desk_message_HELPREPLY,
  479. Desk_message_NOTIFY = 0x40040,
  480. Desk_message_MENUWARNING = 0x400C0,
  481. Desk_message_MENUWARN = 0x400C0,
  482. Desk_message_MODECHANGE,
  483. Desk_message_TASKINITIALISE = 0x400C2,
  484. Desk_message_INITTASK = 0x400C2,
  485. Desk_message_TASKCLOSEDOWN = 0x400C3,
  486. Desk_message_CLOSETASK = 0x400C3,
  487. Desk_message_SLOTSIZE = 0x400C4,
  488. Desk_message_SLOTCHANGE = 0x400C4,
  489. Desk_message_SETSLOT = 0x400C5,
  490. Desk_message_TASKNAMERQ,
  491. Desk_message_TASKNAMEIS,
  492. Desk_message_TASKSTARTED,
  493. Desk_message_MENUSDELETED, 
  494. Desk_message_WINDOWINFO = 0x400CC, 
  495. Desk_message_POPUPRQ = 0x46D40, 
  496. Desk_message_POPUPREQUEST = 0x46D40,
  497. Desk_message_POPUPSTATE,
  498. Desk_message_POPUPCLOSED,
  499. Desk_message_PRINTFILE = 0x80140,
  500. Desk_message_WILLPRINT,
  501. Desk_message_PRINTSAVE,
  502. Desk_message_PRINTINIT,
  503. Desk_message_PRINTERROR,
  504. Desk_message_PRINTTYPEODD,
  505. Desk_message_PRINTTYPEKNOWN,
  506. Desk_message_SETPRINTER,
  507. Desk_message_PSPRINTERQUERY = 0x8014c,
  508. Desk_message_PSPRINTERACK,
  509. Desk_message_PSPRINTERMODIFIED,
  510. Desk_message_PSPRINTERDEFAULTS,
  511. Desk_message_PSPRINTERDEFAULTED,
  512. Desk_message_PSPRINTERNOTPS,
  513. Desk_message_RESETPRINTER,
  514. Desk_message_PSISFONTPRINTRUNNING,
  515. Desk_message_TASKWINDOW_INPUT = 0x808c0,
  516. Desk_message_TASKWINDOW_OUTPUT,
  517. Desk_message_TASKWINDOW_EGO,
  518. Desk_message_TASKWINDOW_MORIO,
  519. Desk_message_TASKWINDOW_MORITE,
  520. Desk_message_TASKWINDOW_NEWTASK,
  521. Desk_message_TASKWINDOW_SUSPEND,
  522. Desk_message_TASKWINDOW_RESUME
  523. } Desk_message_action;
  524. typedef int Desk_message_destinee; 
  525. typedef struct
  526. {
  527. unsigned int size;
  528. Desk_task_handle sender;
  529. unsigned int myref;
  530. unsigned int yourref;
  531. Desk_message_action action;
  532. } Desk_message_header;
  533. typedef struct
  534. {
  535. Desk_window_handle window;
  536. Desk_icon_handle icon;
  537. Desk_wimp_point pos;
  538. int estsize;
  539. int filetype;
  540. char leafname[12];
  541. } Desk_message_datasave;
  542. typedef struct
  543. {
  544. Desk_window_handle window; 
  545. Desk_icon_handle icon; 
  546. Desk_wimp_point pos;
  547. int estsize;
  548. int filetype;
  549. char filename[212];
  550. } Desk_message_datasaveack;
  551. typedef struct
  552. {
  553. Desk_window_handle window;
  554. Desk_icon_handle icon;
  555. Desk_wimp_point pos;
  556. int size;
  557. int filetype;
  558. char filename[212];
  559. } Desk_message_dataload;
  560. typedef struct 
  561. {
  562. Desk_window_handle window;
  563. Desk_icon_handle icon;
  564. Desk_wimp_point pos;
  565. int size;
  566. int filetype;
  567. char filename[212];
  568. } Desk_message_dataloadack;
  569. typedef Desk_message_dataload Desk_message_dataopen;
  570. typedef struct
  571. {
  572. char *buffer;
  573. int buffsize;
  574. } Desk_message_ramfetch;
  575. typedef struct
  576. {
  577. char *buffer; 
  578. int byteswritten;
  579. } Desk_message_ramtransmit;
  580. typedef union {
  581. unsigned int value;
  582. struct {
  583. unsigned int caretorselectionclaim : 2;
  584. unsigned int clipboardclaim : 1;
  585. }
  586. data;
  587. }
  588. Desk_message_claimentity;
  589. typedef union {
  590. unsigned int value;
  591. struct {
  592. unsigned int caretorselectionrelease : 2;
  593. unsigned int clipboardrelease : 1;
  594. }
  595. data;
  596. }
  597. Desk_message_releaseentity;
  598. typedef struct {
  599. Desk_window_handle window;
  600. void* reference;
  601. Desk_wimp_point pos;
  602. union {
  603. int value;
  604. struct {
  605. unsigned int unused_0_1 : 2;
  606. unsigned int clipboard : 1;
  607. }
  608. data;
  609. }
  610. flags;
  611. int filetypes[ 54]; 
  612. }
  613. Desk_message_datarequest;
  614. typedef struct
  615. {
  616. Desk_mouse_block where; 
  617. } Desk_message_helprequest;
  618. typedef struct
  619. {
  620. char text[200];
  621. } Desk_message_helpreply;
  622. typedef struct
  623. {
  624. int filler[5];
  625. int filetype;
  626. char filename[212];
  627. } Desk_message_print;
  628. typedef struct
  629. {
  630. int id; 
  631. Desk_wimp_point openpos; 
  632. int selection[10]; 
  633. } Desk_message_menuwarn;
  634. typedef struct
  635. {
  636. Desk_window_handle window;
  637. Desk_task_handle task;
  638. char title[20];
  639. } Desk_message_iconize;
  640. typedef struct
  641. {
  642. Desk_window_handle window;
  643. int dummy;
  644. char spritename[8];
  645. char title[20];
  646. } Desk_message_windowinfo;
  647. typedef struct
  648. {
  649. Desk_message_header header;
  650. union
  651. {
  652. char bytes [236];
  653. int words [59];
  654. Desk_message_datasave datasave;
  655. Desk_message_datasaveack datasaveack;
  656. Desk_message_dataload dataload;
  657. Desk_message_dataopen dataopen;
  658. Desk_message_ramfetch ramfetch;
  659. Desk_message_ramtransmit ramtransmit;
  660. Desk_message_claimentity claimentity;
  661. Desk_message_releaseentity releaseentity;
  662. Desk_message_datarequest datarequest;
  663. Desk_message_helprequest helprequest;
  664. Desk_message_helpreply helpreply;
  665. Desk_message_print print;
  666. Desk_message_menuwarn menuwarn;
  667. Desk_message_iconize iconize;
  668. Desk_message_windowinfo windowinfo;
  669. #if 0
  670. Desk_message_popuprequest popuprequest; 
  671. Desk_message_popupstate popupstate; 
  672. #endif
  673. } data;
  674. } Desk_message_block;
  675. #define Desk_wimp_NUMBEROFEVENTS 20
  676. typedef enum
  677. {
  678. Desk_event_ANY = -99, 
  679. Desk_event_NULL = 0,
  680. Desk_event_REDRAW,
  681. Desk_event_OPEN,
  682. Desk_event_CLOSE,
  683. Desk_event_PTRLEAVE,
  684. Desk_event_PTRENTER,
  685. Desk_event_CLICK = 6,
  686. Desk_event_BUTTON = 6,
  687. Desk_event_USERDRAG,
  688. Desk_event_KEY,
  689. Desk_event_MENU,
  690. Desk_event_SCROLL,
  691. Desk_event_LOSECARET,
  692. Desk_event_GAINCARET,
  693. Desk_event_NONZEROPOLLWORD,
  694. Desk_event_USERMESSAGE = 17,
  695. Desk_event_SEND = 17,
  696. Desk_event_USERMESSAGERECORDED = 18,
  697. Desk_event_SENDWANTACK = 18,
  698. Desk_event_USERMESSAGEACK = 19,
  699. Desk_event_ACK = 19
  700. } Desk_event_type;
  701. typedef union
  702. {
  703. unsigned int value;
  704. struct
  705. {
  706. unsigned int null : 1;
  707. unsigned int redraw : 1;
  708. unsigned int open : 1;
  709. unsigned int close : 1;
  710. unsigned int ptrleave : 1;
  711. unsigned int ptrenter : 1;
  712. unsigned int click : 1;
  713. unsigned int userdrag : 1;
  714. unsigned int key : 1;
  715. unsigned int menu : 1;
  716. unsigned int scroll : 1;
  717. unsigned int losecaret : 1;
  718. unsigned int gaincaret : 1;
  719. unsigned int nonzeropollword : 1;
  720. unsigned int dummy14 : 1;
  721. unsigned int dummy15 : 1;
  722. unsigned int dummy16 : 1;
  723. unsigned int usermessage : 1;
  724. unsigned int usermessagerecorded : 1;
  725. unsigned int usermessageack : 1;
  726. unsigned int dummy20 : 1;
  727. unsigned int dummy21 : 1;
  728. unsigned int r3ispollwordptr : 1;
  729. unsigned int highprioritypoll : 1;
  730. unsigned int keepfpregisters : 1;
  731. } data;
  732. } Desk_event_pollmask;
  733. typedef struct
  734. {
  735. Desk_window_openblock openblock;
  736. Desk_wimp_point direction;
  737. } Desk_scroll_rq;
  738. typedef union
  739. {
  740. Desk_caret_block caret;
  741. Desk_key_block key;
  742. Desk_pollword_block pollword;
  743. Desk_window_openblock openblock;
  744. Desk_message_block message;
  745. Desk_mouse_block mouse;
  746. Desk_wimp_box screenrect;
  747. int selection[10];
  748. Desk_scroll_rq scroll;
  749. char bytes [256];
  750. int words [64];
  751. } Desk_event_data;
  752. typedef struct
  753. {
  754. Desk_event_type type;
  755. Desk_event_data data;
  756. } Desk_event_pollblock;
  757. typedef struct
  758. {
  759. char fonts[256];
  760. } Desk_font_array;
  761. typedef struct
  762. {
  763. Desk_window_block *buffer;
  764. char *workfree;
  765. char *workend;
  766. Desk_font_array *font;
  767. char *name;
  768. unsigned int index;
  769. } Desk_template_block;
  770. typedef struct
  771. {
  772. Desk_wimp_point mul;
  773. Desk_wimp_point div;
  774. } Desk_scale_block;
  775. #ifdef __cplusplus
  776. }
  777. #endif
  778. #endif
  779.