home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-02-04 | 50.3 KB | 1,085 lines |
- /* -> $.CLIB.H.haswin
- *
- * HASWIN library main includes file.
- */
- #ifndef __haswin_h
- #define __haswin_h
- #include <stdio.h>
- #include <kernel.h>
- /*
- * chunks that I know about (10 Sep. 1990)
- * 0x40000 Econet
- * 0x40040 NetFS
- * 0x40080 Font
- * 0x400C0 WIMP
- * 0x40100
- * 0x40140 Sound
- * 0x40180 Sound
- * 0x401C0 Sound
- * 0x40200 NetPrint
- * 0x40240 ADFS
- * 0x40280 Podule
- * 0x402C0
- * 0x40300 WaveSynth
- * 0x40340 IEEE488
- * 0x40380 Debugger
- * 0x403C0
- * 0x40400
- * 0x40440
- * 0x40480 FPEmulator
- * 0x404C0
- * 0x40500 I/O Podule
- * 0x40540 FileCore
- * 0x40580
- * 0x405C0 Shell
- * 0x40600
- * 0x40640
- * 0x40680
- * 0x406C0 HourGlass
- * 0x40700 Draw
- * 0x40740 ColourTrans
- * 0x40780 RamFS
- * 0x407C0
- *
- * 0x80000
- * 0x80040
- * 0x80080
- * 0x800C0
- * 0x80100
- * 0x80140 Pdriver
- * 0x80180
- * 0x801C0 Toolkit
- * 0x80200
- * 0x80240
- * 0x80280
- * 0x802C0
- * 0x80300
- * 0x80340
- * 0x80380
- * 0x803C0
- * 0x80400
- * 0x80440
- * 0x80480
- * 0x804C0
- * 0x80500
- * 0x80540
- * 0x80580
- * 0x805C0
- * 0x80600
- * 0x80640
- * 0x80680 Shared C Library
- * 0x806C0
- * 0x80700 Haswin
- */
-
- /*
- * these are the HASWIN mouse button codes. They should be
- * independent of work area button type, or icon button type and
- * are returned by the routine "haswin_buttonWIMPtoHASWIN()".
- * The routine "haswin_buttonHASWINtoWIMP() converts back to
- * WIMP button codes.
- */
- #define HASWIN_MOUSE_R 0x001
- #define HASWIN_MOUSE_M 0x002
- #define HASWIN_MOUSE_L 0x004
- #define HASWIN_MOUSE_RDRAG 0x010
- #define HASWIN_MOUSE_MDRAG 0x020
- #define HASWIN_MOUSE_LDRAG 0x040
- #define HASWIN_MOUSE_RDOUB 0x100
- #define HASWIN_MOUSE_MDOUB 0x200
- #define HASWIN_MOUSE_LDOUB 0x400
-
-
-
- #define HASWIN_WIMP_Swi 0x400C0
- #define HASWIN_DRAW_Swi 0x40700
- #define HASWIN_PDRIVE_Swi 0x80140
- #define HASWIN_HASWIN_Swi 0x80700
-
- #define HASWIN_PD_Info HASWIN_PDRIVE_Swi+0x00
- /*
- * #define HASWIN_PD_SetInfo HASWIN_PDRIVE_Swi+0x01
- */
- #define HASWIN_PD_CheckFeatures HASWIN_PDRIVE_Swi+0x02
- #define HASWIN_PD_PageSize HASWIN_PDRIVE_Swi+0x03
- /*
- * #define HASWIN_PD_SetPageSize HASWIN_PDRIVE_Swi+0x04
- */
- #define HASWIN_PD_SelectJob HASWIN_PDRIVE_Swi+0x05
- #define HASWIN_PD_CurrentJob HASWIN_PDRIVE_Swi+0x06
- /*
- * #define HASWIN_PD_FontSWI HASWIN_PDRIVE_Swi+0x07
- */
- #define HASWIN_PD_EndJob HASWIN_PDRIVE_Swi+0x08
- #define HASWIN_PD_AbortJob HASWIN_PDRIVE_Swi+0x09
- #define HASWIN_PD_Reset HASWIN_PDRIVE_Swi+0x0A
- #define HASWIN_PD_GiveRectangle HASWIN_PDRIVE_Swi+0x0B
- #define HASWIN_PD_DrawPage HASWIN_PDRIVE_Swi+0x0C
- #define HASWIN_PD_GetRectangle HASWIN_PDRIVE_Swi+0x0D
- #define HASWIN_PD_CancelJob HASWIN_PDRIVE_Swi+0x0E
- #define HASWIN_PD_ScreenDump HASWIN_PDRIVE_Swi+0x0F
- #define HASWIN_PD_EnumerateJobs HASWIN_PDRIVE_Swi+0x10
- /*
- * #define HASWIN_PD_SetPrinter HASWIN_PDRIVE_Swi+0x11
- */
- #define HASWIN_PD_CancelJobWithError HASWIN_PDRIVE_Swi+0x12
- #define HASWIN_PD_SelectIllustration HASWIN_PDRIVE_Swi+0x13
- #define HASWIN_PD_InsertIllustration HASWIN_PDRIVE_Swi+0x14
-
- #define HASWIN_Initialise HASWIN_WIMP_Swi+0x00
- #define HASWIN_Create_window HASWIN_WIMP_Swi+0x01
- #define HASWIN_Create_icon HASWIN_WIMP_Swi+0x02
- #define HASWIN_Delete_window HASWIN_WIMP_Swi+0x03
- #define HASWIN_Delete_icon HASWIN_WIMP_Swi+0x04
- #define HASWIN_Open_window HASWIN_WIMP_Swi+0x05
- #define HASWIN_Close_window HASWIN_WIMP_Swi+0x06
- #define HASWIN_Poll HASWIN_WIMP_Swi+0x07
- #define HASWIN_Redraw_window HASWIN_WIMP_Swi+0x08
- #define HASWIN_Update_window HASWIN_WIMP_Swi+0x09
- #define HASWIN_Get_rectangle HASWIN_WIMP_Swi+0x0A
- #define HASWIN_Get_window_state HASWIN_WIMP_Swi+0x0B
- #define HASWIN_Get_window_info HASWIN_WIMP_Swi+0x0C
- #define HASWIN_Set_icon_state HASWIN_WIMP_Swi+0x0D
- #define HASWIN_Get_icon_state HASWIN_WIMP_Swi+0x0E
- #define HASWIN_Get_pointer_info HASWIN_WIMP_Swi+0x0F
- #define HASWIN_Drag_box HASWIN_WIMP_Swi+0x10
- #define HASWIN_Force_redraw HASWIN_WIMP_Swi+0x11
- #define HASWIN_Set_caret HASWIN_WIMP_Swi+0x12
- #define HASWIN_Get_caret HASWIN_WIMP_Swi+0x13
- #define HASWIN_Create_menu HASWIN_WIMP_Swi+0x14
- #define HASWIN_Decode_menu HASWIN_WIMP_Swi+0x15
- #define HASWIN_Which_icon HASWIN_WIMP_Swi+0x16
- #define HASWIN_Set_extent HASWIN_WIMP_Swi+0x17
- #define HASWIN_Set_pointer_shape HASWIN_WIMP_Swi+0x18
- #define HASWIN_Open_template HASWIN_WIMP_Swi+0x19
- #define HASWIN_Close_template HASWIN_WIMP_Swi+0x1A
- #define HASWIN_Load_template HASWIN_WIMP_Swi+0x1B
- #define HASWIN_Process_key HASWIN_WIMP_Swi+0x1C
- #define HASWIN_Closedown HASWIN_WIMP_Swi+0x1D
- #define HASWIN_Start_task HASWIN_WIMP_Swi+0x1E
- #define HASWIN_Report_error HASWIN_WIMP_Swi+0x1F
- #define HASWIN_Get_window_outline HASWIN_WIMP_Swi+0x20
- #define HASWIN_Poll_idle HASWIN_WIMP_Swi+0x21
- #define HASWIN_Plot_icon HASWIN_WIMP_Swi+0x22
- #define HASWIN_Set_mode HASWIN_WIMP_Swi+0x23
- #define HASWIN_Set_palette HASWIN_WIMP_Swi+0x24
- #define HASWIN_Read_palette HASWIN_WIMP_Swi+0x25
- #define HASWIN_Set_colour HASWIN_WIMP_Swi+0x26
- #define HASWIN_Send_message HASWIN_WIMP_Swi+0x27
- #define HASWIN_Create_sub_menu HASWIN_WIMP_Swi+0x28
- #define HASWIN_Sprite_operation HASWIN_WIMP_Swi+0x29
- #define HASWIN_Base_of_sprites HASWIN_WIMP_Swi+0x2A
- #define HASWIN_Block_copy HASWIN_WIMP_Swi+0x2B
- #define HASWIN_Slot_size HASWIN_WIMP_Swi+0x2C
- #define HASWIN_Read_pix_trans HASWIN_WIMP_Swi+0x2D
- #define HASWIN_Claim_free_memory HASWIN_WIMP_Swi+0x2E
- #define HASWIN_Command_window HASWIN_WIMP_Swi+0x2F
- #define HASWIN_Text_colour HASWIN_WIMP_Swi+0x30
- #define HASWIN_Transfer_block HASWIN_WIMP_Swi+0x31
- #define HASWIN_Read_sys_info HASWIN_WIMP_Swi+0x32
- #define HASWIN_Set_font_colours HASWIN_WIMP_Swi+0x33
- #define HASWIN_Hourglass_on 0x406C0
- #define HASWIN_Hourglass_off 0x406C1
-
- #define HASWIN_UNKNOWN (-1)
- #define HASWIN_FALSE 0
- #define HASWIN_TRUE 1
-
- /*
- * haswin_poll() user routine action flags.
- */
- #define HASWIN_POLL_Nothing 0
- #define HASWIN_POLL_Redraw 1
- #define HASWIN_POLL_Open 2
- #define HASWIN_POLL_Close 3
- #define HASWIN_POLL_Leaving 4
- #define HASWIN_POLL_Entering 5
- #define HASWIN_POLL_Mouse 6
- #define HASWIN_POLL_Drag 7
- #define HASWIN_POLL_Key 8
- #define HASWIN_POLL_Menu 9
- #define HASWIN_POLL_Scroll 10
- #define HASWIN_POLL_Lose_Caret 11
- #define HASWIN_POLL_Gane_Caret 12
- #define HASWIN_POLL_Message 17
- #define MESSAGE_Quit 0x00000
- #define MESSAGE_DataSave 0x00001
- #define MESSAGE_DataSaveAck 0x00002
- #define MESSAGE_DataLoad 0x00003
- #define MESSAGE_DataLoadAck 0x00004
- #define MESSAGE_DataOpen 0x00005
- #define MESSAGE_RAMFetch 0x00006
- #define MESSAGE_RAMTransmit 0x00007
- #define MESSAGE_PreQuit 0x00008
- #define MESSAGE_Palette 0x00009
- #define MESSAGE_FilerOpenDir 0x00400
- #define MESSAGE_FilerCloseDir 0x00401
- #define MESSAGE_HelpRequest 0x00502
- #define MESSAGE_HelpReply 0x00503
- #define MESSAGE_Notify 0x40040
- #define MESSAGE_MenuWarning 0x400C0
- #define MESSAGE_ModeChange 0x400C1
- #define MESSAGE_TaskInitialise 0x400C2
- #define MESSAGE_TaskClosedown 0x400C3
- #define MESSAGE_SlotSize 0x400C4
- #define MESSAGE_SetSlot 0x400C5
- #define MESSAGE_TaskNameRq 0x400C6
- #define MESSAGE_TaskNameIs 0x400C7
- #define MESSAGE_PrintFile 0x80140
- #define MESSAGE_WillPrint 0x80141
- #define MESSAGE_PrintSave 0x80142
- #define MESSAGE_PrintInit 0x80143
- #define MESSAGE_PrintBusy 0x80144
- #define MESSAGE_PrintTypeOdd 0x80145
- #define MESSAGE_PrintTypeKnown 0x80146
- #define MESSAGE_SetPrinter 0x80147
- /*
- * HASWINs own internal message types.
- */
- #define MESSAGE_Haswin_ HASWIN_HASWIN_Swi+0x00
-
- #define HASWIN_POLL_Message_Rec 18
- #define HASWIN_POLL_Message_Ack 19
-
- /*
- * HASWINs own reason codes.
- */
- #define HASWIN_POLL_poll_Open 101 /* poll is going to open a window */
- #define HASWIN_POLL_poll_Close 102 /* poll is going to close a window */
- #define HASWIN_POLL_poll_Menu 103 /* poll is going to open a menu */
- #define HASWIN_POLL_poll_Re_Menu 104 /* poll is going to re-open a menu */
- #define HASWIN_POLL_poll_IHelp 105 /* poll is going to display Icon Help */
- /* for 106 see above */
- #define HASWIN_POLL_poll_MHelp 107 /* poll is going to display Menu Help */
- #define HASWIN_POLL_poll_WHelp 108 /* poll is going to display Wind Help */
- #define HASWIN_POLL_poll_UQuit 109 /* poll is going to force user QUIT */
- #define HASWIN_POLL_poll_MQuit 110 /* poll has received QUIT message */
- #define HASWIN_POLL_PostRedraw 111 /* called AFTER redraw has been done */
- #define HASWIN_POLL_TimeStep 112 /* a time period has passed */
- #define HASWIN_POLL_poll_Load 113 /* going to load a file */
- #define HASWIN_POLL_poll_Save 114 /* going to save a file */
- #define HASWIN_POLL_Done 115 /* some other routine has done this */
- #define HASWIN_POLL_Scrolled 116 /* after HASWIN has worked out the new
- scroll position it used this reason
- code to see if it should move the
- window */
- #define HASWIN_POLL_poll_RAMrx 117 /* going to transfer data in via RAM */
- #define HASWIN_POLL_poll_RAMtx 118 /* going to transfer data out via RAM */
- #define HASWIN_POLL_poll_Print 119 /* going to print a file */
-
- /*
- * useful data buffer for all routines
- */
- typedef union buffer {
- char c[256];
- int i[ 64];
- } buffer;
-
- /*
- * this structure holds a menu. There may be many menus attached to
- * things such as windows or icons.
- *
- */
- typedef struct menu {
- /* these things SHOULD NOT BE ALTERED BY THE USER, THEY ARE FOR HASWIN */
- char *menu; /* menu string */
- int *actual; /* menu data block for menu_decode() */
- char *extra; /* extras string */
- int ifrom; /* icon and window this menu */
- int wfrom; /* came from ( for haswin_poll() ) */
- short topx, topy; /* x, y of top level menu. */
- /* these things are for the user */
- short x, y; /* x, y to adjust mouse by */
- struct window *mhelp; /* help information window for MENU */
- struct window *ihelp; /* help information window for ICON */
- struct window *whelp; /* help information window for WINDOW */
- int (*makemenu)(struct menu *);
- /* pointer to routine to call on menu
- creation. This routine changes or
- creates the fields of the given menu
- block. If it returns HASWIN_TRUE
- the WIMP will create the menu. */
- int (*domenu)(char *, struct menu *);
- /* pointer to routine to call on menu
- selection. It returns HASWIN_FALSE
- to force the menu to close, else
- close menu if SELECT clicked, but
- not if ADJUST clicked. The first
- parameter is the menu selection as
- decoded by SWI(Wimp_DecodeMenu) and
- the second is a pointer to the
- updated menu block for this menu. */
- int (*message)(buffer *, struct menu *);
- /* pointer to routine to call if this
- open menu has a 'generate message'
- bit set somewhere. The first
- parameter is a pointer to the
- message block, and the second is a
- pointer to the menu itself. */
- } menu;
-
- /*
- * This structure holds a colour palette. It is mainly used by the
- * pointer selection bits.
- */
- typedef struct palette {
- int colour[20];
- } palette;
-
- /*
- * the pointer structure is returned by haswin_getpointerinfo
- * and is used by windows to select a pointer automatically on mouse
- * over the window etc.
- * Before use call haswin_getpointerinfo() to fill a pointer structure
- * in. To move/change the pointer set up a pointer structure and then
- * use haswin_setpointer(). haswin_pushpointer() and
- * haswin_poppointer() provide a pointer stack system for temparary
- * pointers within windows.
- * The order of items within this structure is to word align things.
- */
- typedef struct pointer {
- short mx, my; /* mouse X/Y coords (0-1280 max) */
- int ihandle, whandle;
- /* window/icon handles */
- struct window *win; /* window pointer is over */
- struct icon *ic; /* icon pointer is over */
- #define POINTER_MAXDATA 16
- char name[POINTER_MAXDATA];
- /* pointer sprite name */
- signed char activex; /* active x coord. */
- signed char activey; /* active y coord. */
- unsigned char number; /* pointer number 1-4 */
- unsigned char buttons; /* button and key state */
- #define POINTER_MOUSE_R 0x01 /* right mouse button */
- #define POINTER_MOUSE_M 0x02 /* middle mouse button */
- #define POINTER_MOUSE_L 0x04 /* left mouse button */
- #define POINTER_MOUSEBUTTONS 0x07
- #define POINTER_MOUSE_S 0x08 /* Shift pressed down */
- #define POINTER_MOUSE_C 0x10 /* Control pressed down */
- #define POINTER_MOUSE_A 0x20 /* Alt pressed down */
- palette *palette; /* pointer palette colours. */
- /* if palette is non-zero and the sprite does not have its own
- palette then use HASWIN_Set_palette on this one on pointer
- selection. */
- } pointer;
-
- /*
- * to allow carets to be switched between windows within HASWIN we
- * have a caret stack. We may move the caret with haswin_setcaret(),
- * get the current caret with haswin_getcaret(), and push/pop the
- * stack with haswin_pushcaret() and haswin_popcaret().
- */
- typedef struct caret {
- /* these things are for the user */
- struct window *win; /* for non-HASWIN windows this is int */
- struct icon *ic; /* for non-HASWIN windows this is int */
- int x, y, height;
- int colour;
- int flags;
- #define CARET_HEIGHT 0x0000FFFF /* hieght of caret in OS units */
- #define CARET_COLOUR 0x00FF0000 /* colour if USECOLOUR bit set */
- #define CARET_VDU5 0x01000000 /* use a VDU type 5 caret */
- #define CARET_INVIS 0x02000000 /* invisible caret */
- #define CARET_USECOLOUR 0x04000000 /* use COLOUR else use WIMP colour 11 */
- #define CARET_WIMPCOL 0x08000000 /* COLOUR real else WIMP translates */
- #define CARET_WIMPUSE 0x0F000000 /* flags in "flags" used by WIMP */
- #define CARET_REALCOL 0x10000000 /* make colour ACTUAL colour by EOR */
- #define CARET_HASWIN 0x20000000 /* if set caret in a HASWIN window */
- int index;
- } caret;
-
- /*
- * windows are kept in a linked list of these things.
- */
- typedef struct window {
- /* these things SHOULD NOT BE ALTERED BY THE USER, THEY ARE FOR HASWIN */
- char *win; /* actual window definition block */
- int handle; /* window handle */
- char *name; /* window name as read in. */
- short numicons; /* icons in window defn. */
- char button; /* button type 0-15 for click decode */
- int flags; /* WIMP window flags */
- short orgx, orgy; /* graphics origin in WIMP coords. */
- /*
- * flags used internally by WIMP system
- * use haswin routines to alter these.
- * The flags WIMP does not use, or those always ON or OFF may be used
- * for other things, and ANDed out.
- * 1= force to '1' 0= force to '0'
- * X= user setable R= returned by WIMP routines
- * .= not used at all
- * 1XXX XXXX 000R RRRR 0001 XX01 .X00 ..X.
- */
- #define WINDOW_HASWINUSE 0xFFFFFF72 /* WIMP uses these under HASWIN */
- #define WINDOW_MOVEABLE 0x00000002 /* window may move */
- /* 0x00000010 WIMP redraws, NEVER on in HASWIN */
- /* 0x00000020 PANE window, NEVER on in HASWIN */
- #define WINDOW_TRESPASS 0x00000040 /* window may move off screen */
- /* 0x00000100 user scroll ALWAYS on in HASWIN */
- /* 0x00000200 user scroll NEVER on in HASWIN */
- #define WINDOW_GCOL 0x00000400 /* window colours are GCOL numbers */
- #define WINDOW_BACKDROP 0x00000800 /* window cannot have things under it*/
- /* 0x00001000 pass HOT keys thru haswin_processkey
- ALWAYS on in HASWIN */
- /* 0x0000E000 These MUST always be zero */
- /*
- * these are set by the WIMP but can be read
- */
- #define WINDOW_OPEN 0x00010000 /* this window is open */
- #define WINDOW_TOP 0x00020000 /* this window is on top */
- #define WINDOW_FULL_SIZE 0x00040000 /* this window is toggled full size */
- #define WINDOW_TOGGLED 0x00080000 /* current Open_window_request caused
- by toggle to full size */
- #define WINDOW_INPUT 0x00100000 /* window is input focus */
- /* 0x00E00000 These MUST always be zero */
- /*
- * HASWIN always uses the new format window icon flags
- */
- #define WINDOW_BACKICON 0x01000000 /* window has a back icon */
- #define WINDOW_CLOSEICON 0x02000000 /* window has a close icon */
- #define WINDOW_TITLE_BAR 0x04000000 /* window has a title bar */
- #define WINDOW_FULLICON 0x08000000 /* window has a toggle size icon */
- #define WINDOW_V_SCROLL 0x10000000 /* window has a vertical scroll bar */
- #define WINDOW_SIZEICON 0x20000000 /* window has a adjust size icon */
- #define WINDOW_H_SCROLL 0x40000000 /* window has a horizontal scroll bar*/
- /* 0x80000000 use bits 24-30 ALWAYS on in HASWIN*/
- /* flags for a standard window */
- #define WINDOW_STDWINDOW WINDOW_TITLE_BAR|WINDOW_SIZEICON|WINDOW_CLOSEICON|\
- WINDOW_BACKICON|WINDOW_H_SCROLL|WINDOW_V_SCROLL|\
- WINDOW_MOVEABLE|WINDOW_FULLICON
-
-
- /*
- * HASWIN forces some flags on and off as it sees fit, and some are
- * not used (yet). To set the flags correctly do the following:
- *
- flags = (((wanted_flags & WINDOW_WIMPFLAGS) | WINDOW_FLAGS_OR) & ~WINDOW_FLAGS_AND)
- */
-
-
- #define WINDOW_WIMPFLAGS 0x7F000C42 /* HASWIN allows user to change these*/
- #define WINDOW_FLAGS_OR 0x80001100 /* HASWIN uses OR to force these ON*/
- #define WINDOW_FLAGS_AND 0x00E0E230 /* HASWIN uses AND to force these OFF*/
-
- /*
- * Since the WIMP does not use all the flags, or some are forced to
- * TRUE or FALSE, HASWIN can take a few for itself.
- *
- win->flags = (wanted_flags & WINDOW_HASFLAGS)
- */
- #define WINDOW_HASFLAGS 0x80E0F3BD /* HASWIN allows user to change these*/
- #define WINDOW_TEMP 0x00000001 /* delete window on close */
- #define WINDOW_DRAGSEL 0x00000004 /* we may drag select in this window */
- #define WINDOW_DRAGADJ 0x00000008 /* we may drag adjust in this window */
- #define WINDOW_FILER 0x00000010 /* open a filer on ADJUST close */
- #define WINDOW_AUTOTEXT 0x00000020 /* text contents automatic entry */
- #define WINDOW_SELECT 0x00000080 /* select window on mouse entry */
- #define WINDOW_HELPFUL 0x00000100 /* respond to !Help application */
- #define WINDOW_DOCODE 0x00000200 /* execute user code on all actions */
- #define WINDOW_BUTTON_NEVER (ICON_BUTTON_NEVER << 12)
- #define WINDOW_BUTTON_ALWAYS (ICON_BUTTON_ALWAYS << 12)
- #define WINDOW_BUTTON_REPEAT (ICON_BUTTON_REPEAT << 12)
- #define WINDOW_BUTTON_CLICK (ICON_BUTTON_CLICK << 12)
- #define WINDOW_BUTTON_RELEASE (ICON_BUTTON_RELEASE << 12)
- #define WINDOW_BUTTON_DCLICK (ICON_BUTTON_DCLICK << 12)
- #define WINDOW_BUTTON_CLICKDRAG (ICON_BUTTON_CLICKDRAG << 12)
- #define WINDOW_BUTTON_RELEASEDRAG (ICON_BUTTON_RELEASEDRAG << 12)
- #define WINDOW_BUTTON_DOUBLEDRAG (ICON_BUTTON_DOUBLEDRAG << 12)
- #define WINDOW_BUTTON_MENU (ICON_BUTTON_MENU << 12)
- #define WINDOW_BUTTON_EVERYTHING (ICON_BUTTON_EVERYTHING << 12)
- #define WINDOW_BUTTON_RADIO (ICON_BUTTON_RADIO << 12)
- #define WINDOW_BUTTON_SILENT (ICON_BUTTON_SILENT << 12)
- #define WINDOW_BUTTON_13 (ICON_BUTTON_13 << 12)
- #define WINDOW_BUTTON_WRITECLICK (ICON_BUTTON_WRITECLICK << 12)
- #define WINDOW_BUTTON_WRITABLE (ICON_BUTTON_WRITABLE << 12)
- /* default window work area type to use */
- #define WINDOW_BUTTON_DEFAULT WINDOW_BUTTON_EVERYTHING
-
- /* 0x80000000 not used (yet) */
- /* 0x00E00000 these are used by SPRITE_AREA_MASK
- to enable spriteareas to be passed
- in windows. */
- char *picture; /* graphics string for window data */
- struct text *text; /* text area or zero for no area */
- struct window *pane; /* pointer to panes */
- struct window *slide; /* ptr to slides */
- struct window *master; /* ptr to top window of slides/panes */
- struct window *next; /* ptr to next window */
- struct icon *icons; /* ptr to list of icons for window */
- /* these things are for the user */
- short pagex, pagey;
- short scrollx, scrolly;
- /* scroll amounts page/scroll */
- pointer *pointer; /* for SetPointerShape in window */
- caret *caret; /* for caret selection */
- menu *menu; /* menu to open on mouse MENU */
- struct window *help; /* help information window */
- char *helpmsg; /* help string for !Help application */
-
- /* pointer to routine to call on mouse button press if there is
- no other action to perform. */
- /* paramenter 1 - pointer to window structure */
- /* paramenter 2 - pointer to HASWIN_POLL_Mouse buffer */
- int (*mousebutton)(struct window *, buffer *);
-
- /* pointer to routine to call on window redraw */
- /* parameter 1 - pointer to window structure */
- /* parameter 2 - pointer to HASWIN_POLL_Redraw buffer */
- int (*drawroutine)(struct window *, buffer *);
-
- /* pointer to routine to call on window open */
- /* parameter 1 - pointer to window structure */
- /* parameter 2 - pointer to HASWIN_POLL_Open buffer */
- int (*openroutine)(struct window *, buffer *);
-
- /* pointer to routine to call on keypress in window */
- /* parameter 1 - pointer to window structure */
- /* parameter 2 - pointer to HASWIN_POLL_Key buffer */
- int (*keyroutine)(struct window *, buffer *);
-
- /* pointer to routine to call on drag in window */
- /* parameter 1 - pointer to window structure */
- /* parameter 2 - pointer to icon structure */
- /* parameter 3 - pointer to pointer structure */
- /* parameter 4 - pointer to HASWIN_POLL_Drag buffer */
- int (*dragroutine)(struct window *, struct icon *, struct pointer *, buffer *);
- /* this routine is called with buffer == 0 at the start of
- a drag. If it returns HASWIN_TRUE at this point the
- default drag action is performed. This currently makes
- a rubber band drag box. At the end of the drag the
- routine is called again, with buffer pointing to a
- valid HASWIN_POLL_Drag buffer. */
-
-
- } window;
-
- typedef struct text {
- char *text; /* pointer to character data area */
- int xsize,ysize; /* X and Y sizes of data area */
- int xposn,yposn; /* cursor is before this position */
- char fcol, bcol; /* foreground and background colours */
- } text;
-
- #define ICONBAR_LEFT (struct window *)(-2)
- #define ICONBAR_RIGHT (struct window *)(-1)
-
- /*
- * icons are kept in a linked list of these things
- */
- typedef struct icon {
- /* these things SHOULD NOT BE ALTERED BY THE USER, THEY ARE FOR HASWIN */
- int whandle; /* window handle */
- int ihandle; /* icon handle */
- char *name; /* icon name as read in */
- char flags;
- #define ICON_CANQUIT 0x01 /* add Quit to menu for this icon */
- #define ICON_DRAGSEL 0x02 /* icon can be dragged with select */
- #define ICON_DRAGADJ 0x04 /* icon can be dragged with adjust */
- #define ICON_DOCODE 0x08 /* execute user code on all actions */
- char button; /* button type 0-15 for click decode */
- #define ICON_BUTTON_NEVER 0x00 /* does respond to MENU however */
- #define ICON_BUTTON_ALWAYS 0x01
- #define ICON_BUTTON_REPEAT 0x02
- #define ICON_BUTTON_CLICK 0x03
- #define ICON_BUTTON_RELEASE 0x04
- #define ICON_BUTTON_DCLICK 0x05
- #define ICON_BUTTON_CLICKDRAG 0x06
- #define ICON_BUTTON_RELEASEDRAG 0x07
- #define ICON_BUTTON_DOUBLEDRAG 0x08
- #define ICON_BUTTON_MENU 0x09
- #define ICON_BUTTON_EVERYTHING 0x0A
- #define ICON_BUTTON_RADIO 0x0B
- #define ICON_BUTTON_SILENT 0x0C /* special responds to NOTHING */
- #define ICON_BUTTON_13 0x0D
- #define ICON_BUTTON_WRITECLICK 0x0E
- #define ICON_BUTTON_WRITABLE 0x0F
- /* default icon button type to use */
- #define ICON_BUTTON_DEFAULT ICON_BUTTON_EVERYTHING
- int *ic; /* pointer to icon data block */
-
- /* these things are for the user */
- window *window; /* window to open on mouse SELECT */
- menu *menu; /* menu to open on mouse MENU */
- window *help; /* help window for icon */
- char *helpmsg; /* help string for !Help application */
- /* pointer to routine to call on mouse button press */
- /* parameter 1 - pointer to mouse block */
- /* parameter 2 - pointer to icon structure */
- int (*mousebutton)(struct icon *, buffer *);
-
- /* pointer to routine to call on drag of icon in window */
- /* parameter 1 - pointer to window structure */
- /* parameter 2 - pointer to icon structure */
- /* parameter 3 - pointer to pointer structure */
- /* parameter 4 - pointer to HASWIN_POLL_Drag buffer */
- int (*dragroutine)(struct window *, struct icon *, struct pointer *, buffer *);
- /* this routine is called with buffer == 0 at the start of
- a drag. If it returns HASWIN_TRUE at this point the
- default drag action is performed. This currently makes
- a fixed size drag box, the size of the icon. At the
- end of the drag the routine is called again, with buffer
- pointing to a valid HASWIN_POLL_Drag buffer. */
- struct icon *next; /* pointer to next icon */
- } icon;
-
- /*
- * this structure holds the information for printer drivers
- */
- typedef struct pdriver {
- /* information from SWI(PDriver_Info) */
- int version; /* version number */
- int xres, yres; /* X and Y resolutions in dots/inch */
- int features; /* features word */
- char *name; /* description of printer */
- int xhres,yhres; /* X and Y halftone resolution */
- int ident; /* driver internal identity number */
- /* information from SWI(PDriver_PageSize) */
- int xpaper,ypaper; /* X and Y size of paper */
- int lprint,bprint; /* left, bottom of paper print area */
- int rprint,tprint; /* right, top of paper print area */
- /* information from SWI(PDriver_CurrentJob) */
- int jobid; /* file handle of this job. (or 0) */
- /* general HASWIN information */
- char *title; /* title string for job */
- char *fname; /* filename associated with job. */
- int xscale,yscale; /* scale factors <<16 */
- int xsize,ysize; /* current size of picture in printer
- units. */
- short rotate; /* angle of Y axes, clockwise, 0=up */
- } pdriver;
-
- /*
- * VDU variables codes.
- *
- * VDUVAR_<name> are the codes to give the HASWIN routines to get the
- * VDU variable <name>.
- */
-
- #define VDUVAR_ModeFlags 0
- #define VDUVAR_ScrRCol 1
- #define VDUVAR_ScrBRow 2
- #define VDUVAR_NColour 3
- #define VDUVAR_XEigFactor 4
- #define VDUVAR_YEigFactor 5
- #define VDUVAR_LineLength 6
- #define VDUVAR_ScreenSize 7
- #define VDUVAR_YShftFactor 8
- #define VDUVAR_Log2BPP 9
- #define VDUVAR_Log2BPC 10
- #define VDUVAR_XWindLimit 11
- #define VDUVAR_YWindLimit 12
- #define VDUVAR_GWLCol 13
- #define VDUVAR_GWBRow 14
- #define VDUVAR_GWRCol 15
- #define VDUVAR_GWTRow 16
- #define VDUVAR_TWLCol 17
- #define VDUVAR_TWBRow 18
- #define VDUVAR_TWRCol 19
- #define VDUVAR_TWTRow 20
- #define VDUVAR_OrgX 21
- #define VDUVAR_OrgY 22
- #define VDUVAR_GCsX 23
- #define VDUVAR_GCsY 24
- #define VDUVAR_OlderGCsX 25
- #define VDUVAR_OlderGCsY 26
- #define VDUVAR_OldGCsX 27
- #define VDUVAR_OldGCsY 28
- #define VDUVAR_GCsIX 29
- #define VDUVAR_GCsIY 30
- #define VDUVAR_NewPtX 31
- #define VDUVAR_NewPtY 32
- #define VDUVAR_ScreenStart 33
- #define VDUVAR_DisplayStart 34
- #define VDUVAR_TotalScreenSize 35
- #define VDUVAR_GPLFMD 36
- #define VDUVAR_GPLBMD 37
- #define VDUVAR_GFCOL 38
- #define VDUVAR_GBCOL 39
- #define VDUVAR_TForeCol 40
- #define VDUVAR_TBackCol 41
- #define VDUVAR_GFTint 42
- #define VDUVAR_GBTint 43
- #define VDUVAR_TFTint 44
- #define VDUVAR_TBTint 45
- #define VDUVAR_MaxMode 46
- #define VDUVAR_GCharSizeX 47
- #define VDUVAR_GCharSizeY 48
- #define VDUVAR_GCharSpaceX 49
- #define VDUVAR_GCharSpaceY 50
- #define VDUVAR_HLineAddr 51
- #define VDUVAR_TCharSizeX 52
- #define VDUVAR_TCharSizeY 53
- #define VDUVAR_TCharSpaceX 54
- #define VDUVAR_TCharSpaceY 55
- #define VDUVAR_GcolOraEorAddr 56
- #define VDUVAR_WindowWidth 57
- #define VDUVAR_WindowHeight 58
- #define VDUVAR_ModeNumber 59 /* current mode, updated by OS_BYTE(135) */
- #define VDUVAR_CharXsize 60 /* current width of text characters */
- #define VDUVAR_CharYsize 61 /* current hieght of text characters */
- #define VDUVAR_ScreenXsize 62 /* total width of screen on OS units */
- #define VDUVAR_ScreenYsize 63 /* total hieght of screen on OS units */
-
- #define VDUVAR_MAXVARS 64
-
- #define TASK_MAXNAME 32 /* max length of a name of a task */
- #define HASWIN_ACTIVEMAX 256 /* max windows in active list */
- #define HASWIN_SPRITEFILE "<HASwin$Path>Sprites"
- #define HASWIN_TEMPLATEFILE "<HASwin$Path>Templates"
-
- /*
- * forward definitions of all haswin routines for users
- * (some of these are actually #defines)
- */
- #define haswin_bell() {\
- _kernel_swi_regs regs, ans;\
- _kernel_swi(0x107, ®s, &ans);\
- }
- int haswin_addactivelist(int);
- int haswin_addgraphics(window *, char *);
- int haswin_addhaswinsprites(char *);
- int haswin_addspritearea(int **);
- int *haswin_addsprites(char *, int *);
- int haswin_addusersprites(char *);
- int haswin_buttonHASWINtoWIMP(window *, icon *, int);
- int haswin_buttonWIMPtoHASWIN(window *, icon *, int);
- int haswin_canbuttondouble(int);
- int haswin_canbuttondrag(int);
- int haswin_canbuttonselect(int);
- int haswin_canbuttonwrite(int);
- int haswin_canbuttontwice(int);
- void haswin_circle(window *, int, int, int);
- int haswin_clearfileoptions(int);
- void haswin_circlefill(window *, int, int, int);
- int haswin_clearflags(int);
- int haswin_cleargraphics(window *);
- void haswin_clearhaswinsprites(int);
- int haswin_cleariconflags(icon *, int);
- int *haswin_clearsprites(int, int *);
- void haswin_clearusersprites(int);
- int haswin_clearwindowflags(window *, int);
- int haswin_closefiler(char *, char *);
- void haswin_closetemplate(void);
- void haswin_closewindow(window *);
- int haswin_convertscrxtotxt(window *, int);
- int haswin_convertscrxytotxt(window *, int *, int *);
- int haswin_convertscrytotxt(window *, int);
- int haswin_convertscrxtowin(window *, int);
- int haswin_convertscrxytowin(window *, int *, int *);
- int haswin_convertscrytowin(window *, int);
- int haswin_converttxtxtoscr(window *, int);
- int haswin_converttxtytoscr(window *, int);
- int haswin_converttxtxytoscr(window *, int *, int *);
- int haswin_converttxtxtowin(window *, int);
- int haswin_converttxtytowin(window *, int);
- int haswin_converttxtxytowin(window *, int *, int *);
- int haswin_convertwinxtoscr(window *, int);
- int haswin_convertwinxtotxt(window *, int);
- int haswin_convertwinxytoscr(window *, int *, int *);
- int haswin_convertwinxytotxt(window *, int *, int *);
- int haswin_convertwinytoscr(window *, int);
- int haswin_convertwinytotxt(window *, int);
- window *haswin_copywindow(window *);
- icon *haswin_createicon(window *, char *, int, int, int, int, int, int,
- int);
- int haswin_createmenu(window *, icon *, char *, int (*)(char *, menu *),
- int, int);
- void haswin_decodefiletype(int, char *);
- int haswin_deletehaswinsprite(char *);
- int haswin_deletesprite(char *, int *);
- int haswin_deleteusersprite(char *);
- void haswin_deletewindow(window *);
- int haswin_doespdriverexist(void);
- void haswin_draw(window *, int, int);
- void haswin_drawby(window *, int, int);
- int haswin_encodefiletype(char *);
- void haswin_errorbox(char *);
- int haswin_errorprintf(char *, ...);
- void haswin_execcommand(char *);
- void haswin_exit(int);
- int haswin_fileinitialise(void);
- void haswin_fill(window *, int, int);
- int haswin_findallwindows(int *, int);
- int haswin_findfont(char *, int, int, int, int);
- icon *haswin_findiconhandle(window *, int);
- icon *haswin_findiconname(window *, char *);
- icon *haswin_findicontitle(window *, char *);
- window *haswin_findmasterhandle(int);
- window *haswin_findmasterwindow(window *);
- int haswin_findsprite(char *);
- #define SPRITE_AREA_MASK 0x00E00000
- #define SPRITE_HASWIN_AREA 0x00200000
- #define SPRITE_RISCOS_AREA 0x00400000
- #define SPRITE_SYSTEM_AREA 0x00600000
- #define SPRITE_USER_AREA 0x00800000
- #define SPRITE_WIMP_AREA 0x00A00000
-
- int haswin_findtaskid(int);
- int haswin_findtaskidwin(int);
- char *haswin_findtasknamewin(int);
- window *haswin_findwindowhandle(int);
- window *haswin_findwindowname(char *);
- void haswin_finishedfonts(void);
- int haswin_freeblock(void *);
- int haswin_freemenu(menu *);
-
- /*
- * is there a bug in the compiler that does not allow implicit casts
- * to void** but does allow cast to void* ??
- * the #define gets around this by casting explicitly
- */
- #define haswin_freeptr(x) _haswin_freeptr((void **)(x))
- int _haswin_freeptr(void **);
-
- int haswin_free(void *);
- int haswin_forceredraw(window *, int, int, int, int);
- void haswin_gcol(window *, int, int);
- caret *haswin_getcaretinfo(caret *);
- char *haswin_getcommandline(void);
- int haswin_getexternaltaskname(char **, int);
- int haswin_getfileoptions(void);
- #define HASWIN_OPTIONS_ADD 0x0001 /* if set add data files, not replace */
- int haswin_getflags(void);
- int haswin_getfreespacesize(void);
- int haswin_geticonflags(icon *);
- char *haswin_geticonname(icon *);
- char *haswin_geticontitle(icon *);
- int haswin_geticonxmax(icon *);
- int haswin_geticonxmin(icon *);
- int haswin_geticonymax(icon *);
- int haswin_geticonymin(icon *);
- int haswin_getnextslotsize(void);
- palette *haswin_getpalette(palette *);
- pdriver *haswin_getpdriverinfo(pdriver *);
- pointer *haswin_getpointerinfo(pointer *);
- int haswin_getprogramtop(void);
- int haswin_getspritearea(int);
- int *haswin_getstarttime(void);
- int haswin_gettaskid(void);
- int haswin_getthisslotsize(void);
- char *haswin_gettaskname(void);
- int haswin_getuserheapsize(void);
- int haswin_getversion(void);
- int haswin_getwindowbhandle(window *);
- int haswin_getwindowcaret(window *, int *, int *);
- int haswin_getwindowflags(window *);
- char *haswin_getwindowname(window *);
- char *haswin_getwindowtitle(window *);
- int haswin_getwindowxextent(window *);
- int haswin_getwindowxorigin(window *);
- int haswin_getwindowxmax(window *);
- int haswin_getwindowxmin(window *);
- int haswin_getwindowxscroll(window *);
- int haswin_getwindowyextent(window *);
- int haswin_getwindowyorigin(window *);
- int haswin_getwindowymax(window *);
- int haswin_getwindowymin(window *);
- int haswin_getwindowyscroll(window *);
- int haswin_graphicsprintf(window *, char *, ...);
- int haswin_helpreply(char *, buffer *);
- int haswin_holdmousetowindow(window *);
- int haswin_hourglass(int);
- int haswin_icontosprite(icon *, char *, int *);
- int haswin_inactivelist(int);
- int haswin_initerrorhandlers(void);
-
- int haswin_initialise(char *, int, int);
- #define HASWIN_FLAGS_USED 0xFFFF7F /* used HASWIN flags */
- #define HASWIN_FLAGS_STARTED 0x800000 /* initialised WIMP */
- #define HASWIN_FLAGS_TEMPLATE 0x400000 /* a template file is open */
- #define HASWIN_FLAGS_DRAG 0x200000 /* dragbox is on */
- #define HASWIN_FLAGS_EHANDLER 0x100000 /* an error handler is installed */
- #define HASWIN_FLAGS_QUITING 0x080000 /* performing a quit operation */
- #define HASWIN_FLAGS_SAVING 0x040000 /* doing an auto save */
- #define HASWIN_FLAGS_LOADING 0x020000 /* doing an auto load */
- #define HASWIN_FLAGS_PRINTING 0x010000 /* doing an auto print */
- #define HASWIN_FLAGS_KILLWS 0x008000 /* kill <Wimp$Scrap> after autosave */
- #define HASWIN_FLAGS_MEMORY 0x004000 /* memory manager is running */
- #define HASWIN_FLAGS_FILEAUTO 0x002000 /* auto file load/save facility */
- #define HASWIN_FLAGS_TASKIS 0x001000 /* task name required message sent */
- #define HASWIN_FLAGS_RAMGO 0x000800 /* ram transfer in progress */
- #define HASWIN_FLAGS_FILEMENU 0x000400 /* add File> to iconbar icon menus */
- #define HASWIN_FLAGS_INFOWIN 0x000200 /* add Info> to iconbar icon menus */
- #define HASWIN_FLAGS_PRINTER 0x000100 /* printer system initialised */
- /* 0x000080 not used (yet) */
-
- /* above are internal to HASWIN, below are user setable */
- #define HASWIN_INIT_USERFLAGS 0x00007F /* user parts of haswin_flags */
- #define HASWIN_FLAGS_FASTPOLL 0x000040 /* use WIMP_Poll not WIMP_PollIdle */
- /* gives fast return from haswin_poll() routine */
- #define HASWIN_FLAGS_HELPFUL 0x000020 /* respond to Help requests */
- #define HASWIN_FLAGS_PROFILE 0x000010 /* produce profile output */
- #define HASWIN_FLAGS_ONEPROG 0x000008 /* once running prevent any other */
- #define HASWIN_FLAGS_SETSLOT 0x000004 /* we can change memory slot size */
- #define HASWIN_FLAGS_SINGLE 0x000002 /* single tasking operation */
- #define HASWIN_FLAGS_VERBOSE 0x000001 /* error windows from haswin_poll */
-
- int haswin_initmemorymanager(void);
- int haswin_initialisepdriver(void);
- int haswin_initialiseuserheap(int);
- void haswin_internalerror(char *);
- int haswin_interrorprintf(char *, ...);
- int haswin_killmemorymanager(void);
- window *haswin_loadpanewindow(window *, char *, int);
- window *haswin_loadslidewindow(window *, char *, int);
- int haswin_loadusersprites(char *);
- window *haswin_loadwindow(char *, int);
- caret *haswin_makecaret(window *, icon *, int, int, int, int, int, int);
- int haswin_makehaswinsprite(char *, int, int, int);
- menu *haswin_makemenu(menu *, char *, int (*)(struct menu *),
- int (*)(char *, struct menu *),
- int (*)(buffer *, struct menu *));
- window *haswin_makepanewindow(window *, char *, int, int, int, int, int,
- int, int);
- pointer *haswin_makepointer(char *, int, int);
- window *haswin_makeslidewindow(window *, char *, int, int, int, int, int,
- int, int);
- int haswin_makesprite(char *, int *,int, int, int);
- int haswin_makeusersprite(char *, int, int, int);
- int haswin_maketextoverlay(window *, int, int, char, char);
- window *haswin_makewindow(char *, int, int, int, int, int, int, int);
- void *haswin_mallocblock(void *, size_t, char *, char *);
- void *haswin_malloc(size_t, char *, char *);
- int haswin_newiconflags(icon *, int);
- int haswin_newwindowflags(window *, int);
- int haswin_ok_cancel(char *);
- int haswin_ok_cancelprintf(char *, ...);
- #define HASWIN_OK 1
- #define HASWIN_CANCEL 2
-
- int haswin_openfiler(char *, char *);
- int haswin_opentemplate(char *);
- int haswin_openwindow(window *, int, int, int, int, int, int, int);
- void haswin_pdriverclosedown(void);
- int haswin_pdriverendjob(pdriver *);
- pdriver *haswin_pdriverfindjob(int );
- int haswin_pdriverkilljob(pdriver *);
- pdriver *haswin_pdrivermakejob(char *, char *, pdriver *);
- int haswin_pdriverselect(int);
- int haswin_pdriverselectjob(pdriver *);
- int haswin_placepointer(window *, int, int);
- int haswin_poll(void);
- int haswin_pollcomplete(void);
- int haswin_popautofileroutine(void);
- int haswin_popcaret(void);
- int haswin_poploadfileroutine(void);
- int haswin_poppointer(int);
- int haswin_popsavefileroutine(void);
- int haswin_poptemplate(void);
- int haswin_printwindow(window *, char *, char *);
- int haswin_pushautofileroutine(int (*)(char *,buffer *), char *, char *);
- int haswin_pushcaret(caret *);
- int haswin_pushloadfileroutine(int (*)(char *,buffer *), char *, char *);
- int haswin_pushpointer(pointer *, int);
- int haswin_pushsavefileroutine(int (*)(char *,buffer *), char *, char *);
- int haswin_pushtemplate(char *);
- int haswin_readvduvariable(int);
- void *haswin_realloc(void *, size_t, char *, char *);
- int haswin_recreatemenu(void);
- void haswin_rectangle(window *, int, int, int, int);
- void haswin_rectanglefill(window *, int, int, int, int);
- void haswin_redrawwindow(window *, int, int, int, int);
- int haswin_removeactivelist(int);
- #define haswin_removemenu() haswin_createmenu(0, 0, 0, 0, 0, 0)
- int haswin_removespritearea(int **);
- int haswin_reopenwindow(window *);
- int haswin_resizewindow(window *, int, int, int);
- void haswin_restoreerrorhandlers(void);
- void haswin_loadfilemugwatch(int);
- void haswin_savefilemugwatch(int);
- #define HASWIN_MUGWATCH_DOWN (-1)
- #define HASWIN_MUGWATCH_OFF 0
- #define HASWIN_MUGWATCH_UP (+1)
-
- int haswin_saveusersprites(char *);
- #define haswin_selecticon(ic)\
- haswin_seticonstate(ic, 0x00200000, 0x00200000)
- void haswin_setautoloadroutine(int (*)(char *, buffer *), char *);
- int haswin_setcaret(caret *);
- int haswin_setexittrap(int (*)(int));
- int haswin_setfiletype(char *, int);
- int haswin_setfileoptions(int);
- int haswin_setflags(int);
- #define haswin_seticonbcol(ic, col)\
- haswin_seticonstate(ic, 0xF0000000, ( col & 0x0F)<<28)
- int haswin_seticondata(icon *, char *);
- #define haswin_seticonesg(ic, esg)\
- haswin_seticonstate(ic, 0x001F0000, ( esg & 0x1F)<<16)
- #define haswin_seticonfcol(ic, col)\
- haswin_seticonstate(ic, 0x0F000000, ( col & 0x0F)<<24)
- int haswin_seticonflags(icon *, int);
- void haswin_seticonstate(icon *, int, int);
- int haswin_setinfowindow(char *, char *, char *, char *);
- void haswin_setloadfileroutine(int (*)(char *, buffer *), char *, char *);
- void haswin_setpalette(palette *);
- int haswin_setpointer(pointer *, int);
- void haswin_setprintfileroutine(int (*)(char *, buffer *));
- void haswin_setsavefileroutine(int (*)(char *, buffer *), char *, char *);
- void haswin_setramtxroutine(int (*)(void *, int, int, buffer *), int);
- void haswin_setramrxroutine(int (*)(void *, int, int, buffer *), int);
- int haswin_setuserpollroutine(int (*)(int, buffer *));
- int haswin_setwindowflags(window *, int);
- int haswin_setwindoworigin(window *, int, int);
- int haswin_spriteop(char *, _kernel_swi_regs *);
- int haswin_swi(int, _kernel_swi_regs *);
- void haswin_taskclosedown(void);
- int haswin_taskinitialise(char *);
- int haswin_textclearmark(window *, int, int, int, int);
- int haswin_textdeletechar(window *, int, int);
- int haswin_textdeleteline(window *, int);
- int haswin_textgetchar(window *, int, int);
- int haswin_textgetxposn(window *);
- int haswin_textgetyposn(window *);
- int haswin_textgetxsize(window *);
- int haswin_textgetysize(window *);
- int haswin_textinsertchar(window *, int, int);
- int haswin_textinsertline(window *, int);
- text *haswin_textmakearea(text *, int, int, char, char);
- int haswin_textmove(window *, int, int);
- int haswin_textprintf(window *, char *, ...);
- int haswin_textredraw(window *, int, int, int, int);
- int haswin_textscrolldown(window *);
- int haswin_textscrollleft(window *);
- int haswin_textscrollright(window *);
- int haswin_textscrollup(window *);
- int haswin_textsetmark(window *, int, int, int, int);
- int haswin_textvdu(window *, char);
- int haswin_updateallvduvariables(int *);
- void haswin_updatefullwindowinfo(window *);
- int haswin_updatevduvariable(int);
- void haswin_updatewindowinfo(window *);
- #define haswin_unselecticon(ic)\
- haswin_seticonstate(ic, 0x00200000, 0x00000000)
- int haswin_userfree(void *);
- void *haswin_usermalloc(size_t, char *, char *);
- void *haswin_userrealloc(void *, size_t, char *, char *);
- int haswin_validpointer(void *);
- int haswin_windowtosprite(window *, char *, int *);
-
- /*
- * useful graphics primitives
- */
- void graphics_plotxy(int, int, int);
- #define graphics_circle(x, y, r) graphics_move(x, y);\
- graphics_plotxy(149, x+r, y)
- #define graphics_circlefill(x, y, r) graphics_move(x, y);\
- graphics_plotxy(157, x+r, y)
- #define graphics_draw(x, y) graphics_plotxy(5, x, y)
- #define graphics_drawby(x, y) graphics_plotxy(1, x, y)
- #define graphics_fill(x, y) graphics_plotxy(133, x, y)
- #define graphics_gcol(c, g) haswin_swi(OS_WriteI+18, 0);\
- haswin_swi(0x100+(c & 0xFF), 0);\
- haswin_swi(0x100+(g & 0xFF), 0)
- #define graphics_move(x, y) graphics_plotxy(4, x, y)
- #define graphics_moveby(x, y) graphics_plotxy(0, x, y)
- #define graphics_rectangle(x, y, w, h) graphics_move(x, y);\
- graphics_draw(x+w, y);\
- graphics_draw(x+w, y+h);\
- graphics_draw(x, y+h);\
- graphics_draw(x, y)
- #define graphics_rectanglefill(x, y, w, h) graphics_move(x, y);\
- graphics_plotxy(101, x+w, y+h)
-
- #endif
-
-