home *** CD-ROM | disk | FTP | other *** search
/ Acorn User 4 / AUCD4.iso / acornuser / 1997 / dec1997 / regulars / C / !Skeleton / h / AUlib
Text File  |  1997-10-06  |  5KB  |  158 lines

  1. /* AULib.h - a header file for the Acorn User WIMP C library */
  2. /* Modified 6/10/97 by SJPM */
  3.  
  4. #ifndef AULIB_H
  5. #define AULIB_H
  6.  
  7. /* #Include the appropriate files - swis.h and kernel.h hold the information
  8.  * we need to call SWI functions from within C */
  9.  
  10. #include <stdio.h>
  11. #include <string.h>
  12. #include <stdlib.h>
  13. #include "swis.h"
  14. #include "kernel.h"
  15.  
  16. /* A few #defines to set up some constants */
  17.  
  18. #define IBAR_ONRIGHT    -1
  19. #define IBAR_ONLEFT    -2
  20. #define IBAR_PRIOR_APP    0
  21.  
  22. /* #Defines for icon flags */
  23. #define ICON_ISTEXT    1u << 0
  24. #define ICON_ISSPRITE    1u << 1
  25. #define ICON_HASBORDER    1u << 2
  26. #define ICON_HCENTRE    1u << 3
  27. #define ICON_VCENTRE    1u << 4
  28. #define ICON_ISFILLED    1u << 5
  29. #define ICON_CLICKNOTIFIESONCE    3u << 12 
  30.  
  31. /* These are for a StyleGuide-compliant square iconbar icon - without text */
  32. #define IBAR_BBOX_MINX    0
  33. #define IBAR_BBOX_MINY    0
  34. #define IBAR_BBOX_MAXX    68
  35. #define IBAR_BBOX_MAXY    68
  36.  
  37. /* These are for a StyleGuide-compliant square iconbar icon - with text */
  38. #define IBART_BBOX_MINX    0
  39. #define IBART_BBOX_MINY    20
  40. #define IBART_BBOX_MAXX    68
  41. #define IBART_BBOX_MAXY    84
  42.  
  43. /* #Defines for menu creation */
  44.  
  45. #define MENU_TITLEFORE    7u
  46. #define MENU_TITLEBACK    2u << 8
  47. #define MENU_WORKFORE    7u << 16
  48. #define MENU_WORKBACK    0u << 24 /* these define colours */
  49. #define MENU_TICK    1u << 0
  50. #define MENU_DOTTED    1u << 1
  51. #define MENU_LASTITEM    1u << 7
  52. #define MENU_SHADED    1u << 22
  53.  
  54. #define MENUITEM_FORE    7u << 24
  55. #define MENUITEM_BACK    0u << 28
  56.  
  57. #define MENU_WIDTH    172 /* could be more intelligent, but it's a start */
  58. #define MENU_HEIGHT    44 /* by order of the Style Guide */
  59. #define MENU_VERTGAP    0
  60.  
  61. /* Message types */
  62.  
  63. #define MESSAGE_QUIT    0
  64. #define MESSAGE_DATASAVE    1
  65. #define MESSAGE_DATASAVEACK    2
  66. #define MESSAGE_DATALOAD    3
  67. #define MESSAGE_DATALOADACK    4
  68. #define MESSAGE_PALETTECHANGE    9
  69. #define MESSAGE_MODECHANGE    0x400c1
  70.  
  71.  
  72. /* Sizes for block definitions */
  73.  
  74. #define ICON_BLOCK_SIZE    40
  75.  
  76. /* Other miscellaneous definitions */
  77.  
  78. #define SAVEDRAG_TYPE    5
  79.  
  80. /* Colour definitions (RGB values) */
  81.  
  82. #define COLOUR_WHITE    0xffffff00
  83. #define COLOUR_BLACK    0x00000000
  84. #define COLOUR_RED    0x0000ff00
  85. #define COLOUR_GREEN    0x00ff0000
  86. #define COLOUR_BLUE    0xff000000
  87. #define COLOUR_PURPLE    0xff00ff00
  88. #define COLOUR_CYAN    0xffff0000
  89. #define COLOUR_YELLOW    0x00ffff00
  90.  
  91. /* Structure definitions */
  92.  
  93. typedef struct window_data {
  94.     int    win_handle;
  95.     unsigned char    *buffer;
  96.     unsigned char    *workspace;
  97.     char *win_name;
  98. } window_data;
  99.  
  100. typedef struct pointer_data {
  101.     long int    mouse_x;
  102.     long int    mouse_y;
  103.     long int    button_state;
  104.     long int    win_handle;
  105.     long int    icon_handle;
  106. } pointer_data;
  107.  
  108. typedef struct menu_element {
  109.     long int flags;
  110.     long int submenu;
  111.     long int menu_iconflags;
  112.     char menu_text[12];
  113.     struct menu_element *next_menuelem;
  114. } menu_element;
  115.  
  116. typedef struct menu_data {
  117.     char title[12];
  118.     int size;
  119.     long int colours;
  120.     long int width;
  121.     long int height;
  122.     long int vert_gap;
  123.     unsigned char* datablock;
  124.     menu_element *next_menuelem;
  125. } menu_data;
  126.  
  127. /* Prototyping */
  128. extern int    au_initialise(int, char *, long int[]);
  129. extern void    au_closedown(int);
  130. extern int    au_create_iconbar_icon(int, unsigned long int, unsigned long int, char *);
  131. extern void    au_wordtobyte(unsigned long int, unsigned char[], int);
  132. extern unsigned long int    au_bytetoword(unsigned char[], int);
  133. extern void    au_opentemplate(char *);
  134. extern void    au_closetemplate(void);
  135. extern int    au_loadtemplate(char *, window_data *, int);
  136. extern int    au_report_error(int, char *, int, char *);
  137. extern void    au_openwin_from_templatedata(window_data *, long int);
  138. extern int    au_wimp_poll(int, unsigned char *);
  139. extern void    au_icon_text_change(char *, unsigned long int, unsigned long int);
  140. extern char    *au_get_ptr_to_icontext(unsigned long int, unsigned long int);
  141. extern void    au_buildmenu(char *, menu_data *);
  142. extern void    au_addtomenu(char *, long int, long int, long int, menu_data *);
  143. extern void    au_createmenu(menu_data *);
  144. extern void    au_openmenu(menu_data *, int, int);
  145. extern void    au_icon_get_text(char *, unsigned long int, unsigned long int);
  146. extern void    au_losecaret(void);
  147. extern void    au_dragbox(unsigned long int, unsigned long int);
  148. extern void    au_geticoninfo(unsigned long int, unsigned long int, unsigned char *);
  149. extern void    au_getpointerinfo(pointer_data *);
  150. extern void    au_datasave(pointer_data, int, int, char*);
  151. extern int    au_findfont(char*, int, int);
  152. extern void    au_selectfont(int);
  153. extern void    au_setfontcolours(int, int);
  154. extern void    au_fontpaint(char*, int, int);
  155. extern void    au_losefont(int);
  156. extern void    au_convertwindow_to_screen(unsigned char*, int*, int*);
  157. #endif
  158.