/* Copyright 1996 Acorn Computers Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* Title: wimp.h * Purpose: C interface to RISC OS Wimp routines. * Author: IDJ * History: 16-Sep-93: IDJ: created * 25-Nov-96: EPW: Updated structures for nested window support */ # ifndef __wimp_h # define __wimp_h #ifndef __toolbox_h #include "objects.toolbox.h" #endif #include "kernel.h" #define wimp_ENULL 0 #define wimp_EREDRAW 1 #define wimp_EOPEN 2 #define wimp_ECLOSE 3 #define wimp_EPTR_LEAVE 4 #define wimp_EPTR_ENTER 5 #define wimp_EBUT 6 #define wimp_EUSER_DRAG 7 #define wimp_EKEY 8 #define wimp_EMENU 9 #define wimp_ESCROLL 10 #define wimp_ELOSE_CARET 11 #define wimp_EGAIN_CARET 12 #define wimp_EPOLL_WORD 13 #define wimp_ESEND 17 #define wimp_ESEND_WANT_ACK 18 #define wimp_EACK 19 #define wimp_ETOOLBOX_EVENT 0x200 #define wimp_EMNULL (1 << wimp_ENULL) #define wimp_EMREDRAW (1 << wimp_EREDRAW) #define wimp_EMOPEN (1 << wimp_EOPEN) #define wimp_EMCLOSE (1 << wimp_ECLOSE) #define wimp_EMPTR_LEAVE (1 << wimp_EPTR_LEAVE) #define wimp_EMPTR_ENTER (1 << wimp_EPTR_ENTER) #define wimp_EMBUT (1 << wimp_EBUT) #define wimp_EMUSER_DRAG (1 << wimp_EUSER_DRAG) #define wimp_EMKEY (1 << wimp_EKEY) #define wimp_EMMENU (1 << wimp_EMENU) #define wimp_EMSCROLL (1 << wimp_ESCROLL) #define wimp_EMLOSE_CARET (1 << wimp_ELOSE_CARET) #define wimp_EMGAIN_CARET (1 << wimp_EGAIN_CARET) #define wimp_EMPOLL_WORD (1 << wimp_EPOLL_WORD) #define wimp_EMSEND (1 << wimp_ESEND) #define wimp_EMSEND_WANT_ACK (1 << wimp_ESEND_WANT_ACK) #define wimp_EMACK (1 << wimp_EACK) /* --- wimp colours --- */ #define wimp_BLACK 7 #define wimp_VERY_LIGHT_GREY 1 /* --- wimp icons --- */ #define wimp_ICONBAR (-2) /* button types */ #define wimp_BUTTON_NEVER 0 #define wimp_BUTTON_ALWAYS 1 #define wimp_BUTTON_AUTO_REPEAT 2 #define wimp_BUTTON_CLICK 3 #define wimp_BUTTON_RELEASE 4 #define wimp_BUTTON_DOUBLE_CLICK 5 #define wimp_BUTTON_CLICK_DRAG 6 #define wimp_BUTTON_RELEASE_DRAG 7 #define wimp_BUTTON_DOUBLE_DRAG 8 #define wimp_BUTTON_MENU_ICON 9 #define wimp_BUTTON_DOUBLE_CLICK_DRAG 10 #define wimp_BUTTON_RADIO 11 #define wimp_BUTTON_WRITE_CLICK_DRAG 14 #define wimp_BUTTON_WRITABLE 15 /* icon flags */ #define wimp_ICONFLAGS_TEXT 0x00000001 #define wimp_ICONFLAGS_SPRITE 0x00000002 #define wimp_ICONFLAGS_HAS_BORDER 0x00000004 #define wimp_ICONFLAGS_HCENTRE 0x00000008 #define wimp_ICONFLAGS_VCENTRE 0x00000010 #define wimp_ICONFLAGS_FILLED 0x00000020 #define wimp_ICONFLAGS_ANTI_ALIASED 0x00000040 #define wimp_ICONFLAGS_NEEDS_HELP 0x00000080 #define wimp_ICONFLAGS_INDIRECT 0x00000100 #define wimp_ICONFLAGS_RJUSTIFY 0x00000200 #define wimp_ICONFLAGS_NO_CANCEL 0x00000400 #define wimp_ICONFLAGS_HALF_SIZE 0x00000800 #define wimp_ICONFLAGS_BUTTON_TYPE 0x00001000 /* multiply by button type you want */ #define wimp_ICONFLAGS_ESG 0x00010000 /* multiply by ESG you want */ #define wimp_ICONFLAGS_INVERT 0x00200000 #define wimp_ICONFLAGS_FADED 0x00400000 #define wimp_ICONFLAGS_DELETED 0x00800000 #define wimp_ICONFLAGS_FORECOL 0x01000000U /* multiply by colour you want */ #define wimp_ICONFLAGS_BACKCOL 0x10000000U /* multiply by colour you want */ typedef struct { int xmin, ymin, xmax, ymax; } wimp_Bbox; typedef union { char text[12]; /* up to 12 bytes of text */ char sprite_name[12]; /* up to 12 bytes of sprite name */ struct { union { char *name; void *sprite_ptr; } sprite; void *sprite_area; /* 0->use the common sprite area */ /* 1->use the wimp sprite area */ int name_len; /* if 0, then use sprite.sprite_ptr */ } indirect_sprite; struct { char *buffer; /* pointer to text buffer */ char *valid_string; /* pointer to validation string */ int buff_len; /* length of text buffer */ } indirect_text; struct { char *buffer; /* pointer to text buffer */ char *valid_string; /* pointer to validation string */ int buff_len; /* length of text buffer */ } indirect_text_and_sprite; } wimp_IconData; typedef struct { wimp_Bbox bbox; /* icon's bounding box */ unsigned int flags; /* icon's flags word */ wimp_IconData data; /* icon's data (12 bytes) */ } wimp_Icon; typedef struct { int window_handle; int icon_handle; } wimp_IconDelete; typedef struct { int window_handle; wimp_Icon icon; } wimp_IconCreate; typedef struct { int window_handle; int icon_handle; unsigned int EOR_word; unsigned int clear_word; } wimp_SetIconState; typedef struct { int window_handle ; int icon_handle ; wimp_Icon icon ; } wimp_GetIconState ; /* --- Wimp menus --- */ #define wimp_KeepMenu 0x5045454b /* 'KEEP' (take note, Ian) */ #define wimp_MENUFLAGS_TICKED 0x00000001 #define wimp_MENUFLAGS_DOTTED_LINE 0x00000002 #define wimp_MENUFLAGS_WRITABLE 0x00000004 #define wimp_MENUFLAGS_SUBMENU_MESSAGE 0x00000008 #define wimp_MENUFLAGS_SUBMENU_OPENABLE 0x00000010 #define wimp_MENUFLAGS_LAST_ITEM 0x00000080 #define wimp_MENUFLAGS_TITLE_INDIRECT 0x00000100 typedef struct { wimp_IconData title; char title_fgnd; char title_bgnd; char worka_fgnd; char worka_bgnd; int width; int height; int vert_gap; } wimp_MenuHeader; typedef struct { wimp_MenuHeader hdr; /* items come here in memory */ } wimp_Menu; typedef struct { int flags; wimp_Menu *submenu; int icon_flags; wimp_IconData icon_data; } wimp_MenuEntry; #define wimp_menu_entry(m, i) (((wimp_MenuEntry*)(&m->hdr + 1)) + i) /* --- wimp Windows --- */ typedef struct { wimp_Bbox box; /* screen coords of work area */ int scx, scy; /* scroll bar positions */ int behind; /* handle to open window behind, or -1 if top */ int flags; /* word of flag bits */ char colours[8]; /* colours */ wimp_Bbox ex; /* maximum extent of work area */ int title_flags; /* icon flags for title bar */ int work_area_flags; /* just button type relevant */ void *sprite_area; /* sprite area pointer for window */ int min_size; /* two 16-bit OS-unit fields, giving min size of window. 0->use title. */ wimp_IconData title; /* title icon data */ int nicons; /* no. of icons in window */ /* icon defs follow here in memory */ } wimp_Window; /* window flags */ #define wimp_WINDOWFLAGS_OLD_HAS_TITLE 0x00000001 /* deprecated */ #define wimp_WINDOWFLAGS_MOVEABLE 0x00000002 #define wimp_WINDOWFLAGS_OLD_VSCROLLBAR 0x00000004 /* deprecated */ #define wimp_WINDOWFLAGS_OLD_HSCROLLBAR 0x00000008 /* deprecated */ #define wimp_WINDOWFLAGS_AUTOREDRAW 0x00000010 #define wimp_WINDOWFLAGS_PANE 0x00000020 #define wimp_WINDOWFLAGS_ALLOW_OFF_SCREEN 0x00000040 #define wimp_WINDOWFLAGS_OLD_NO_BACK_NO_CLOSE 0x00000080 /* deprecated */ #define wimp_WINDOWFLAGS_CLICK_SCROLL_REQUEST 0x00000100 #define wimp_WINDOWFLAGS_AUTOREPEAT_SCROLL_REQUEST 0x00000200 #define wimp_WINDOWFLAGS_GCOL 0x00000400 #define wimp_WINDOWFLAGS_BACKDROP 0x00000800 #define wimp_WINDOWFLAGS_HOT_KEYS 0x00001000 #define wimp_WINDOWFLAGS_FORCE_ON_SCREEN 0x00002000 #define wimp_WINDOWFLAGS_IGNORE_RIGHT_EXTENT 0x00004000 #define wimp_WINDOWFLAGS_IGNORE_LOWER_EXTENT 0x00008000 #define wimp_WINDOWFLAGS_OPEN 0x00010000 #define wimp_WINDOWFLAGS_FULLY_VISIBLE 0x00020000 #define wimp_WINDOWFLAGS_FULL_SIZE 0x00040000 #define wimp_WINDOWFLAGS_TOGGLE_REQUEST 0x00080000 #define wimp_WINDOWFLAGS_INPUT_FOCUS 0x00100000 #define wimp_WINDOWFLAGS_FORCE_ONCE_ON_SCREEN 0x00200000 #define wimp_WINDOWFLAGS_RESERVED1 0x00400000 #define wimp_WINDOWFLAGS_RESERVED2 0x00800000 #define wimp_WINDOWFLAGS_HAS_BACK_ICON 0x01000000 #define wimp_WINDOWFLAGS_HAS_CLOSE_ICON 0x02000000 #define wimp_WINDOWFLAGS_HAS_TITLE_BAR 0x04000000 #define wimp_WINDOWFLAGS_HAS_TOGGLE_ICON 0x08000000 #define wimp_WINDOWFLAGS_HAS_VSCROLLBAR 0x10000000 #define wimp_WINDOWFLAGS_HAS_ADJUST_SIZE_ICON 0x20000000 #define wimp_WINDOWFLAGS_HAS_HSCROLLBAR 0x40000000 #define wimp_WINDOWFLAGS_USE_NEW_FLAGS 0x80000000 typedef struct { int window_handle; /* handle of window to open */ wimp_Bbox visible_area; /* visible area coords */ int scx, scy; /* scroll offsets */ int behind; /* handle to open window behind */ } wimp_OpenWindow; typedef struct { int window_handle; /* handle of window to open */ wimp_Bbox visible_area; /* visible area coords */ int scx, scy; /* scroll offsets */ int behind; /* handle to open window behind */ /* The following requires nested window support in the Wimp */ int window_flags; } wimp_NestedOpenWindow; #define wimp_OpenWindow_TopOfStack (-1) #define wimp_OpenWindow_BottomOfStack (-2) #define wimp_OpenWindow_BehindBackDrop (-3) typedef struct { wimp_OpenWindow open; int flags; /* as passed to Wimp_CreateWindow */ } wimp_GetWindowState; typedef struct { int window_handle; wimp_Window window; } wimp_GetWindowInfo; typedef struct { int window_handle; wimp_Bbox box; } wimp_GetWindowOutline; typedef struct { int window_handle; int icon_handle; int x_caret_offset; int y_caret_offset; int caret_height; int caret_index; } wimp_SetCaretPosition, wimp_GetCaretPosition; /* --- wimp Pointers --- */ /* for sprite op 36 */ #define wimp_POINTER_SHAPEFLAGS_SHAPE_NUMBER 0x00000001 #define wimp_POINTER_SHAPEFLAGS_NOT_SET_SHAPE 0x00000010 #define wimp_POINTER_SHAPEFLAGS_NOT_SET_PALETTE 0x00000020 #define wimp_POINTER_SHAPEFLAGS_NOT_PROG_SHAPE_NUM 0x00000040 /* --- wimp pointer info --- */ typedef struct { int x; int y; int button_state; int window_handle; int icon_handle; } wimp_PointerInfo; /* --- wimp RGB word --- */ typedef struct { char reserved; char red; char green; char blue; } wimp_RGB; /* --- wimp palette block --- */ typedef struct { wimp_RGB colour[16]; wimp_RGB border; wimp_RGB pointer[3]; } wimp_PaletteBlock; /* --- wimp message numbers --- */ #define wimp_MQUIT 0 #define wimp_MDATA_SAVE 1 #define wimp_MDATA_SAVE_ACK 2 #define wimp_MDATA_LOAD 3 #define wimp_MDATA_LOAD_ACK 4 #define wimp_MDATA_OPEN 5 #define wimp_MRAM_FETCH 6 #define wimp_MRAM_TRANSMIT 7 #define wimp_MPRE_QUIT 8 #define wimp_MPALETTE_CHANGE 9 #define wimp_MSAVE_DESKTOP 10 #define wimp_MSHUT_DOWN 14 #define wimp_MSET_PRINTER 0x80147 #define wimp_MFILER_OPEN_DIR 0x400 #define wimp_MFILER_CLOSE_DIR 0x401 #define wimp_MFILER_OPEN_DIR_AT 0x402 #define wimp_MFILER_SELECTION_DIRECTORY 0x403 #define wimp_MFILER_ADD_SELECTION 0x404 #define wimp_MFILER_ACTION 0x405 #define wimp_MFILER_CONTROL_ACTION 0x406 #define wimp_MFILER_SELECTION 0x407 #define wimp_MNOTIFY 0x40040 #define wimp_MMENU_WARNING 0x400c0 #define wimp_MMODE_CHANGE 0x400c1 #define wimp_MTASK_INITIALISE 0x400c2 #define wimp_MTASK_CLOSE_DOWN 0x400c3 #define wimp_MSLOT_SIZE 0x400c4 #define wimp_MSET_SLOT 0x400c5 #define wimp_MTASK_NAME_RQ 0x400c6 #define wimp_MTASK_NAME_IS 0x400c7 #define wimp_MTASK_STARTED 0x400c8 #define wimp_MMENUS_DELETED 0x400c9 #define wimp_MHELP_REQUEST 0x502 #define wimp_MHELP_REPLY 0x503 #define wimp_MTOOLBOX_EVENT Toolbox_SWIChunkBase typedef struct { int size; /* 20<=size<=256, multiple of 4 */ int task_handle; /* task handle of sender (filled in by wimp) */ int my_ref; /* unique ref number (filled in by wimp) */ int your_ref; /* (0==>none) if non-zero, acknowledge */ int action; /* message action code */ } wimp_MsgHdr; typedef struct { int mouse_x; int mouse_y; int buttons; int window_handle; int icon_handle; } wimp_HelpRequest; typedef struct { char text[236]; } wimp_HelpReply; typedef struct { wimp_Menu *submenu; int x; int y; char data[256-sizeof(wimp_MsgHdr)-sizeof(wimp_Menu*)-sizeof(int)-sizeof(int)]; } wimp_MenuWarning; typedef struct { int window_handle; int icon_handle; int x; int y; int approx_size; int filetype; char filename [256-sizeof(wimp_MsgHdr)-6*sizeof(int)]; } wimp_DataSave, wimp_DataSaveAck, wimp_DataLoad, wimp_DataLoadAck; /* The filename is a proposed leafname in Message_DataSave but a full pathname in later life. In Risc OS 3 there is some extra information, word aligned, after the end of the full pathname for Message_DataLoad block which is not indicated by the above data structure. */ typedef struct { void *address; int no_bytes; } wimp_RAMFetch, wimp_RAMTransmit; /* In a RAMFetch, no_bytes is the buffer length, for the Transmit it is the number of copied bytes. */ #define wimp_MAX_MSG_DATA_SIZE (sizeof(wimp_Message)-sizeof(wimp_MsgHdr)) typedef struct { wimp_MsgHdr hdr; union { char chars[236]; int words[59]; wimp_HelpRequest help_request; wimp_HelpReply help_reply; wimp_MenuWarning menu_warning; ToolboxEventMsg toolbox_event_msg; wimp_DataSave data_save; wimp_DataSaveAck data_save_ack; wimp_DataLoad data_load; wimp_DataLoadAck data_load_ack; wimp_RAMFetch ram_fetch; wimp_RAMTransmit ram_transmit; } data; } wimp_Message; /* --- mouse clicks --- */ #define wimp_ADJUST_BUTTON 0x00000001 #define wimp_MENU_BUTTON 0x00000002 #define wimp_SELECT_BUTTON 0x00000004 typedef struct { int window_handle; } wimp_RedrawWindowRequest; typedef struct { wimp_OpenWindow open_block; } wimp_OpenWindowRequest; typedef struct { int window_handle; } wimp_CloseWindowRequest; typedef struct { int window_handle; } wimp_PointerLeavingWindow; typedef struct { int window_handle; } wimp_PointerEnteringWindow; typedef struct { int x; int y; int buttons; int window_handle; int icon_handle; } wimp_MouseClick; typedef struct { wimp_Bbox box; } wimp_UserDragBox; typedef struct { wimp_GetCaretPosition caret; int key_code; } wimp_KeyPressed; typedef struct { int items[256]; } wimp_MenuSelection; typedef struct { wimp_OpenWindow open_block; int x_scroll_direction; int y_scroll_direction; } wimp_ScrollRequest; typedef struct { wimp_GetCaretPosition caret; } wimp_LoseCaret, wimp_GainCaret; typedef struct { int poll_word_address; int poll_word_contents; } wimp_PollWordNonZero; typedef wimp_Message wimp_UserMessageAcknowledge; typedef union { wimp_RedrawWindowRequest redraw_window_request; wimp_OpenWindowRequest open_window_request; wimp_CloseWindowRequest close_window_request; wimp_PointerLeavingWindow pointer_leaving_window; wimp_PointerEnteringWindow pointer_entering_window; wimp_MouseClick mouse_click; wimp_UserDragBox user_drag_box; wimp_KeyPressed key_pressed; wimp_MenuSelection menu_selection; wimp_ScrollRequest scroll_request; wimp_LoseCaret lose_caret; wimp_GainCaret gain_caret; wimp_PollWordNonZero pollword_nonzero; wimp_UserMessageAcknowledge user_message_acknowledge; wimp_Message msg; ToolboxEvent toolbox_event; } wimp_PollBlock; /* type used to pass information to Wimp_DragBox (see PRM 3-145) */ typedef struct _drag_box { int wimp_window; int drag_type; wimp_Bbox dragging_box; wimp_Bbox parent_box; int *workspace; void (*draw)(); void (*remove)(); void (*move)(); } DragBox; /* type used to pass/get info for Wimp_GetWindowState */ typedef struct _window_info { int window; wimp_Bbox visible; int scx,scy; int infront; int flags; } WindowState; typedef struct _redraw_window { int window; wimp_Bbox visible; int scx,scy; wimp_Bbox current; } WindowRedraw; _kernel_oserror *wimp_initialise (int version, char *name, int *messages, int *cversion, int *task); _kernel_oserror *wimp_create_window (wimp_Window *defn, int *handle); _kernel_oserror *wimp_create_icon (int priority, wimp_IconCreate *defn, int *handle); typedef struct { int handle; }wimp_DeleteWindow; _kernel_oserror *wimp_delete_window (wimp_DeleteWindow *block); _kernel_oserror *wimp_delete_icon (wimp_IconDelete *block); _kernel_oserror *wimp_open_window (wimp_OpenWindow *show); _kernel_oserror *wimp_open_window2 (wimp_NestedOpenWindow *show, int parent_handle, unsigned int alignment_flags); _kernel_oserror *wimp_close_window (int *window_handle); _kernel_oserror *wimp_poll (int mask, wimp_PollBlock *block, int *pollword, int *event_code); _kernel_oserror *wimp_redraw_window (WindowRedraw *block, int *more); _kernel_oserror *wimp_update_window (WindowRedraw *block, int *more); _kernel_oserror *wimp_get_rectangle (WindowRedraw *block, int *more); _kernel_oserror *wimp_get_window_state (wimp_GetWindowState *state); _kernel_oserror *wimp_get_window_state2 (wimp_GetWindowState *state, int *parent_handle, unsigned int *alignment_flags); _kernel_oserror *wimp_get_window_info (wimp_GetWindowInfo *block); _kernel_oserror *wimp_set_icon_state (wimp_SetIconState *block); _kernel_oserror *wimp_get_icon_state (wimp_GetIconState *block); _kernel_oserror *wimp_get_pointer_info (wimp_PointerInfo *block); #define CancelDrag 0 _kernel_oserror *wimp_drag_box (DragBox *block); _kernel_oserror *wimp_force_redraw (int window_handle, int xmin, int ymin, int xmax, int ymax); _kernel_oserror *wimp_force_title_redraw (int window_handle); _kernel_oserror *wimp_set_caret_position (int window_handle, int icon_handle, int xoffset, int yoffset, int height, int index); _kernel_oserror *wimp_get_caret_position (wimp_GetCaretPosition *block); #define CloseMenu ((void *) -1) _kernel_oserror *wimp_create_menu (void * handle, int x,int y); _kernel_oserror *wimp_decode_menu (void *data, int *selections, char *buffer); _kernel_oserror *wimp_which_icon (int window_handle, int *icons, unsigned int mask, unsigned int match); _kernel_oserror *wimp_set_extent (int window_handle, wimp_Bbox *area); _kernel_oserror *wimp_set_pointer_shape (int shape, void *data, int width, int height, int activex, int activey); _kernel_oserror *wimp_open_template (char *name); _kernel_oserror *wimp_close_template (void); _kernel_oserror *wimp_load_template (_kernel_swi_regs *regs); _kernel_oserror *wimp_process_key (int keycode); _kernel_oserror *wimp_close_down (int th); _kernel_oserror *wimp_start_task (char *cl, int *handle); int wimp_report_error (_kernel_oserror *er, int flags, char *name, char *sprite, void *area, char *buttons); _kernel_oserror *wimp_get_window_outline (wimp_GetWindowOutline *block); _kernel_oserror *wimp_pollidle (int mask, wimp_PollBlock *block, int time, int *pollword, int *event_code); _kernel_oserror *wimp_plot_icon (wimp_Icon *block); _kernel_oserror *wimp_set_mode (int mode); typedef struct { unsigned int colours[16]; unsigned int border; unsigned int pointer1; unsigned int pointer2; unsigned int pointer3; } Palette; _kernel_oserror *wimp_set_palette (Palette *palette); _kernel_oserror *wimp_read_palette (Palette *palette); _kernel_oserror *wimp_set_colour (int colour); _kernel_oserror *wimp_send_message (int code, void *block, int handle, int icon, int *th); _kernel_oserror *wimp_create_submenu (void * handle, int x,int y); typedef struct { int r3; int r4; int r5; int r6; int r7; }SpriteParams; _kernel_oserror *wimp_sprite_op (int code, char *name, SpriteParams *p); _kernel_oserror *wimp_base_of_sprites (void **rom, void **ram); _kernel_oserror *wimp_block_copy (int handle, int sxmin, int symin, int sxmax, int symax, int dxmin, int dymin); _kernel_oserror *wimp_slot_size (int current, int next, int *current, int *next, int *free); /* readpixtrans and claimfreememory not supported */ _kernel_oserror *wimp_command_window (int type); _kernel_oserror *wimp_text_colour (int colour); _kernel_oserror *wimp_transfer_block (int sh, void *sbuf, int dh, void *dbuf, int size); typedef struct { int r0; int r1; } WimpSysInfo; _kernel_oserror *wimp_read_sys_info (int reason, WimpSysInfo *results); _kernel_oserror *wimp_set_font_colours (int fore, int back); _kernel_oserror *wimp_get_menu_state (int report, int *state, int window, int icon); /* no filter manager interface */ /* do not use these in toolbox applications */ _kernel_oserror *wimp_add_messages (int *list); _kernel_oserror *wimp_remove_messages (int *list); _kernel_oserror *wimp_set_colour_mapping (int which_palette, int *bpp1, int *bpp2, int *bpp4); _kernel_oserror *wimp_text_op (_kernel_swi_regs *regs); /* no extend or set watchdog state */ _kernel_oserror *wimp_resize_icon (int window, int icon, int xmin, int ymin, int xmax, int ymax); #endif