home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 1 / ARM_CLUB_CD.iso / contents / apps / program / d / interface2 / !Wimp / c / interface
Encoding:
Text File  |  1993-02-12  |  4.2 KB  |  227 lines

  1. /*
  2.  *      interface.c
  3.  */
  4.  
  5. #include <string.h>
  6.  
  7. #include "swis.h"
  8. #include "os.h"
  9. #include "wimp.h"
  10. #include "wimpt.h"
  11.  
  12. #include "interface.h"
  13.  
  14. os_error *interface_slabbutton(wimp_mousestr *mouse)
  15. {
  16.         os_regset regs;
  17.         os_error  *error;
  18.  
  19.         regs.r[1] = (int) mouse;
  20.  
  21.         error = os_swix(Interface_SlabButton, ®s);
  22.  
  23.         return error;
  24. }
  25.  
  26. os_error *interface_render3dwindow(wimp_redrawstr *redraw)
  27. {
  28.         os_regset regs;
  29.         os_error  *error;
  30.  
  31.         regs.r[1] = (int) redraw;
  32.  
  33.         error = os_swix(Interface_Render3dWindow, ®s);
  34.  
  35.         return error;
  36. }
  37.  
  38. os_error *interface_initialise(void)
  39. {
  40.         os_regset regs;
  41.         os_error  *error;
  42.  
  43.         regs.r[0] = (int) wimpt_task();
  44.  
  45.         error = os_swix(Interface_Initialise, ®s);
  46.  
  47.         return error;
  48. }
  49.  
  50. os_error *interface_closedown(void)              
  51. {
  52.         os_regset regs;
  53.         os_error  *error;
  54.  
  55.         regs.r[0] = (int) wimpt_task();
  56.  
  57.         error = os_swix(Interface_CloseDown, ®s);
  58.  
  59.         return error;
  60. }
  61.  
  62. os_error *interface_setworkareapointer(wimp_pointerstr *pointer)
  63. {
  64.         os_regset regs;
  65.         os_error  *error;
  66.  
  67.         regs.r[1] = (int) pointer;
  68.  
  69.         error = os_swix(Interface_SetWorkareaPointer, ®s);
  70.  
  71.         return error;
  72. }
  73.  
  74. os_error *interface_removeworkareapointer(wimp_pointerstr *pointer)
  75.      {
  76.           os_regset regs;
  77.           os_error  *error;
  78.  
  79.           regs.r[0] = (int) wimpt_task();
  80.           regs.r[1] = (int) pointer;
  81.  
  82.           error = os_swix(Interface_RemoveWorkareaPointer, ®s);
  83.  
  84.           return error;
  85.      }                              
  86.  
  87.  
  88. os_error *interface_poll(int reason)
  89. {
  90.         os_regset regs;
  91.         os_error  *error;
  92.  
  93.         regs.r[0] = (int) reason;
  94.         regs.r[2] = (int) wimpt_task();
  95.  
  96.         error = os_swix(Interface_Poll, ®s);
  97.  
  98.         return error;
  99. }
  100.  
  101. os_error *interface_sendhelp(wimp_msghdr *msg)
  102. {
  103.         os_regset regs;
  104.         os_error  *error;
  105.           
  106.         regs.r[1] = (int) msg;
  107.  
  108.         error = os_swix(Interface_SendHelp, ®s);
  109.  
  110.         return error;
  111. }
  112.  
  113. os_error *interface_preprocesskey(wimp_eventstr *event)
  114. {
  115.         os_regset regs;
  116.         os_error  *error;
  117.  
  118.         regs.r[0] = (int) event->e;
  119.         regs.r[1] = (int) &event->data;
  120.         regs.r[2] = wimpt_task();
  121.  
  122.         error = os_swix(Interface_PreProcessKey, ®s);
  123.  
  124.         return error;
  125. }
  126.  
  127. os_error *interface_plot3dicon(wimp_wstate *wstate, wimp_icon *icon)
  128. {
  129.         os_regset regs;
  130.         os_error  *error;
  131.  
  132.         regs.r[0] = (int) wstate;
  133.         regs.r[1] = (int) icon;
  134.  
  135.         error = os_swix(Interface_Plot3dIcon, ®s);
  136.  
  137.         return error;
  138. }
  139.  
  140. os_error *interface_boundingbox(wimp_icon *icon) 
  141. {
  142.         os_regset regs;
  143.         os_error  *error;
  144.  
  145.         regs.r[1] = (int) icon;
  146.  
  147.         error = os_swix(Interface_BoundingBox, ®s);
  148.  
  149.         return error;
  150. }
  151.  
  152. /* secondary functions */
  153.  
  154. void interface_slabicon(wimp_w w, wimp_i i)
  155. {
  156.         wimp_mousestr mouse;
  157.  
  158.         mouse.w = w;
  159.         mouse.bbits = 4;
  160.         mouse.i = i;
  161.  
  162.         wimpt_complain(interface_slabbutton(&mouse));
  163.  
  164.         return;
  165. }
  166.  
  167. void interface_unslabicon(wimp_w w, wimp_i i)
  168. {
  169.         wimp_mousestr mouse;
  170.  
  171.         mouse.w = w;
  172.         mouse.bbits = 0;
  173.         mouse.i = i;
  174.  
  175.         wimpt_complain(interface_slabbutton(&mouse));
  176.  
  177.         return;
  178. }
  179.  
  180. void interface_autoredraw(wimp_redrawstr *redraw)
  181. {
  182.         BOOL more;
  183.  
  184.         wimpt_complain(wimp_redraw_wind(redraw, &more));
  185.  
  186.         while (more)
  187.         {
  188.                 wimpt_complain(interface_render3dwindow(redraw));
  189.  
  190.                 wimp_get_rectangle(redraw, &more);
  191.         }
  192.  
  193.         return;
  194. }
  195.  
  196. void interface_setpointer(wimp_w w, char *name)
  197. {
  198.         wimp_pointerstr pointer;
  199.  
  200.         pointer.w = w;
  201.         pointer.box.x0 = -1;
  202.         pointer.box.x1 = -1;
  203.         pointer.box.y0 = -1;
  204.         pointer.box.y1 = -1;
  205.  
  206.         strcpy(pointer.validstring, name);
  207.  
  208.         wimpt_complain(interface_setworkareapointer(&pointer));
  209.  
  210.         return;
  211. }
  212.  
  213. void interface_removepointer(wimp_w w)
  214. {
  215.         wimp_pointerstr pointer;
  216.  
  217.         pointer.w = w;
  218.         pointer.box.x0 = -1;
  219.         pointer.box.x1 = -1;
  220.         pointer.box.y0 = -1;
  221.         pointer.box.y1 = -1;
  222.  
  223.         wimpt_complain(interface_removeworkareapointer(&pointer));
  224.  
  225.         return;
  226. }
  227.