Files
FireBee_Setup-Dev/devtools/ahcccf.bin/include/mt_gem.h
2023-06-12 09:14:09 +02:00

2612 lines
98 KiB
C

/*
* $Id: mt_gem.h.in,v 1.71 2005/12/19 20:03:32 a_bercegeay Exp $
*/
/**@file
* main GEMlib header
*/
#ifndef _MT_GEMLIB_H_
# define _MT_GEMLIB_H_
# include <compiler.h>
#ifndef INT16 /* keep compatibility with Mgemlib */
#define INT16 short /**< 16 bits signed integer */
#endif
# ifdef __GEMLIB_OLDBIND /* Backward-compatibility */
# undef _MT_GEMLIB_H_ /* For old bindings, these header had to be multi-included. */
# ifndef __GEMLIB_HAVE_DEFS /* first include via aesbind/vdibind/gemfast */
# define __GEMLIB_HAVE_DEFS
# else
# undef __GEMLIB_DEFS
# endif
# else /* New include scheme: one header defines all */
# define __GEMLIB_DEFS /**< told the compiler to parse both AES and VDI definitions */
# ifndef _GEM_VDI_P_
# define __GEMLIB_AES /**< told the compiler to parse AES prototypes */
# endif
# ifndef _GEM_AES_P_
# define __GEMLIB_VDI /**< told the compiler to parse VDI prototypes */
# endif
# endif
__BEGIN_DECLS
/*******************************************************************************
* The version of the gem-lib
*/
/* Major and minor version number of the GEMLib package. Use these macros
to test for features in specific releases. */
#define __GEMLIB__ __GEMLIB_MAJOR__ /**< tell the world this is GEMLIB */
#define __GEMLIB_MAJOR__ 0 /**< MAJOR version number of gemlib */
#define __GEMLIB_MINOR__ 43 /**< MINOR version number of gemlib */
#define __GEMLIB_REVISION__ 6 /**< REVISION version number of gemlib */
#define __GEMLIB_BETATAG__ "" /**< BETATAG of gemlib */
/* the other name of this release is MGEMLIB 42 */
#define MGEMLIB 42 /**< this gemlib is compatible with MGEMLIB */
#define __MGEMLIB__ 42 /**< another identifier for MGEMLIB */
#ifdef __GEMLIB_DEFS
/*******************************************************************************
* The AES specific stuff from old gemfast.h
*/
#define NIL 0 /**< TODO */
#define DESKTOP_HANDLE 0 /**< TODO */
#define DESK DESKTOP_HANDLE /**< TODO */
/* mt_appl_control() mode */
#define APC_HIDE 10 /**< Hide application -- see mt_appl_control() */
#define APC_SHOW 11 /**< Show application -- see mt_appl_control() */
#define APC_TOP 12 /**< Bring application to front -- see mt_appl_control() */
#define APC_HIDENOT 13 /**< Hide all applications except the one referred to by ap_cid -- see mt_appl_control() */
#define APC_INFO 14 /**< Get the application parameter -- see mt_appl_control() */
#define APC_MENU 15 /**< The last used menu tree is returned -- see mt_appl_control() */
#define APC_WIDGETS 16 /**< Inquires or sets the 'default' positions of the window widgets -- see mt_appl_control() */
/* APC_INFO bits */
#define APCI_HIDDEN 0x01 /**< the application is hidden -- subopcode for #APC_INFO */
#define APCI_HASMBAR 0x02 /**< the application has a menu bar -- subopcode for #APC_INFO */
#define APCI_HASDESK 0x04 /**< the application has a own desk -- subopcode for #APC_INFO */
/* appl_getinfo modes */
#define AES_LARGEFONT 0 /**< see mt_appl_getinfo() */
#define AES_SMALLFONT 1 /**< see mt_appl_getinfo() */
#define AES_SYSTEM 2 /**< see mt_appl_getinfo() */
#define AES_LANGUAGE 3 /**< see mt_appl_getinfo() */
#define AES_PROCESS 4 /**< see mt_appl_getinfo() */
#define AES_PCGEM 5 /**< see mt_appl_getinfo() */
#define AES_INQUIRE 6 /**< see mt_appl_getinfo() */
#define AES_MOUSE 8 /**< see mt_appl_getinfo() */
#define AES_MENU 9 /**< see mt_appl_getinfo() */
#define AES_SHELL 10 /**< see mt_appl_getinfo() */
#define AES_WINDOW 11 /**< see mt_appl_getinfo() */
#define AES_MESSAGE 12 /**< see mt_appl_getinfo() */
#define AES_OBJECT 13 /**< see mt_appl_getinfo() */
#define AES_FORM 14 /**< see mt_appl_getinfo() */
#define AES_EXTENDED 64 /**< see mt_appl_getinfo() */
#define AES_NAES 65 /**< see mt_appl_getinfo() */
#define AES_VERSION 96 /**< see mt_appl_getinfo() and mt_appl_getinfo_str() */
#define AES_WOPTS 97 /**< see mt_appl_getinfo() */
/* appl_getinfo return values (AES_LARGEFONT, AES_SMALLFONT) */
#define SYSTEM_FONT 0 /**< see mt_appl_getinfo() */
#define OUTLINE_FONT 1 /**< see mt_appl_getinfo() */
/* appl_getinfo return values (AES_LANGUAGE) */
#define AESLANG_ENGLISH 0 /**< see mt_appl_getinfo() */
#define AESLANG_GERMAN 1 /**< see mt_appl_getinfo() */
#define AESLANG_FRENCH 2 /**< see mt_appl_getinfo() */
#define AESLANG_SPANISH 4 /**< see mt_appl_getinfo() */
#define AESLANG_ITALIAN 5 /**< see mt_appl_getinfo() */
#define AESLANG_SWEDISH 6 /**< see mt_appl_getinfo() */
/* appl_read modes */
#define APR_NOWAIT -1 /**< Do not wait for message -- see mt_appl_read() */
/* appl_search modes */
#define APP_FIRST 0 /**< see mt_appl_search() */
#define APP_NEXT 1 /**< see mt_appl_search() */
#define APP_DESK 2 /**< see mt_appl_search() */
/* appl_search return values*/
#define APP_SYSTEM 0x01 /**< see mt_appl_search() */
#define APP_APPLICATION 0x02 /**< see mt_appl_search() */
#define APP_ACCESSORY 0x04 /**< see mt_appl_search() */
#define APP_SHELL 0x08 /**< see mt_appl_search() */
/* appl_trecord types */
#define APPEVNT_TIMER 0 /**< see struct pEvntrec */
#define APPEVNT_BUTTON 1 /**< see struct pEvntrec */
#define APPEVNT_MOUSE 2 /**< see struct pEvntrec */
#define APPEVNT_KEYBOARD 3 /**< see struct pEvntrec */
/** struct used by mt_appl_trecord() and mt_appl_tplay()
*
* \a ap_event defines the required interpretation of \a ap_value
* as follows:
* <table>
* <tr><td>\a ap_event <td> \a ap_value
* <tr><td> #APPEVNT_TIMER (0) <td> Elapsed Time (in milliseconds)
* <tr><td> #APPEVNT_BUTTON (1) <td> low word = state (1 = down), high word = # of clicks
* <tr><td> #APPEVNT_MOUSE (2) <td> low word = X pos, high word = Y pos
* <tr><td> #APPEVNT_KEYBOARD (3) <td> bits 0-7 = ASCII code, bits 8-15 = scan code, bits 16-31 = shift key
*
* Please read documentation of mt_appl_trecord() and mt_appl_tplay() for more details and
* known bugs related to this structure.
*/
typedef struct pEvntrec
{
long ap_event; /**< one of the APPEVNT_XXX constant */
long ap_value; /**< kind of data depends on \a ap_event */
} EVNTREC;
/* evnt_button flags */
#define LEFT_BUTTON 0x0001 /**< mask for left mouse button, see mt_evnt_button() */
#define RIGHT_BUTTON 0x0002 /**< mask for right mouse button, see mt_evnt_button() */
#define MIDDLE_BUTTON 0x0004 /**< mask for middle mouse button, see mt_evnt_button() */
#define K_RSHIFT 0x0001 /**< mask for right shift key, see mt_evnt_button() */
#define K_LSHIFT 0x0002 /**< mask for left shift key, see mt_evnt_button() */
#define K_CTRL 0x0004 /**< mask for control key, see mt_evnt_button() */
#define K_ALT 0x0008 /**< mask for alternate key, see mt_evnt_button() */
/* evnt_dclick flags */
#define EDC_INQUIRE 0 /**< inquire double-clic rate, see mt_evnt_dclick() */
#define EDC_SET 1 /**< set double-clic rate, see mt_evnt_dclick() */
/* event message values */
/** message received when a menu entry has been selected
*
* - msg[0] = #MN_SELECTED
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] = title menu index
* - msg[4] = item menu index
* - msg[5] = address of the menu root object (most significant bits)
* - msg[6] = address of the menu root object (less significant bits)
* - msg[7] = index of object parent's selected item
*
* Values of word 5, 6 and 7 are an extension of AES 3.3. This feature could
* be check by calling mt_appl_getinfo() with the parameter #AES_MENU.
*
*/
#define MN_SELECTED 10
/** message received when a portion of the screen has to be redrawn
*
* - msg[0] = #WM_REDRAW
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] = handle of the window to redraw
* - msg[4] = x,
* - msg[5] = y,
* - msg[6] = w,
* - msg[7] = h: rectangle of the area to be redrawn.
*
* When the message is received the window contents should be drawn (or a
* representative icon if the window is iconified).
*
*/
#define WM_REDRAW 20
/** message received when a window which is not the top window has been clicked on
* by the user.
*
* - msg[0] = #WM_TOPPED
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] = handle of the window
* - msg[4] =
* - msg[5] =
* - msg[6] =
* - msg[7] =
*
* When an application received this message, it should sets the window to the top
* by calling mt_wind_set() with #WF_TOP parameter.
*/
#define WM_TOPPED 21
/** message received when the user clicks on a window's close box.
*
* - msg[0] = #WM_CLOSED
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] = handle of the window
* - msg[4] =
* - msg[5] =
* - msg[6] =
* - msg[7] =
*
* When an application received this message, it should closes the window
* by calling mt_wind_close()
*/
#define WM_CLOSED 22
/** message received when the user clicks on a window's full box.
*
* - msg[0] = #WM_FULLED
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] = handle of the window
* - msg[4] =
* - msg[5] =
* - msg[6] =
* - msg[7] =
*
* When an application received this message, if the window is not at
* full size, the window should ne resized using mt_wind_set() and #WF_CURRXYWH
* to occupy the entire screen area minus the menu bar (see mt_wind_get()).
* If the window was previously 'fulled' and has not been resized since, the
* application should return the window to its previous size.
*/
#define WM_FULLED 23
/** message received when the user clicks on one of the slider gadgets of a window.
*
* - msg[0] = #WM_ARROWED
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] = handle of the window
* - msg[4] = one of the following operation code:
* - #WA_UPPAGE ( Page Up )
* - #WA_DNPAGE ( Page Down )
* - #WA_UPLINE ( Row Up )
* - #WA_DNLINE ( Row Down )
* - #WA_LFPAGE ( Page Left )
* - #WA_RTPAGE ( Page Right )
* - #WA_LFLINE ( Column Left )
* - #WA_RTLINE ( Column Right )
* - msg[5] = either 'MW' (0x4d57) on the first wheel click
* or 'Mw' (0x4d77) on subsequent wheel clicks.
* - msg[6] = 0
* - msg[7] = original wheel amount
*
* msg[5] to msg[7] are only available since XaAES with mouse wheel support. These
* fields are filled by the AES when the AES automatically transforms mouse wheel
* event (that appears on a window with arrow widget) to arrow messages.
*
* A row or column message is sent when a slider arrow is selected. A 'page'
* message is sent when a darkened area of the scroll bar is clicked. This usually
* indicates that the application should adjust the window's contents by a larger
* amount than with the row or column messages.
*
* If the application manage itself wheel event on a particular window (see
* mt_wind_set() with #WF_WHEEL parameter and #WHEEL_ARROWED mode), then on mouse
* wheel events, the window receives the following message:
*
* - msg[0] = #WM_ARROWED
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] = handle of the window
* - msg[4] = #WA_WHEEL
* - msg[5] = 0
* - msg[6] = wheel number
* - msg[7] = wheel amount
*
*/
#define WM_ARROWED 24
/** message received when the user moves the horizontal slider of a window.
*
* - msg[0] = #WM_HSLID
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] = handle of the window
* - msg[4] = new slider position from 0 to 1000.
* - msg[5] =
* - msg[6] =
* - msg[7] =
*
* Note: Slider position is relative and not related to slider size.
*/
#define WM_HSLID 25
/** message received when the user moves the vertical slider of a window.
*
* - msg[0] = #WM_VSLID
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] = handle of the window
* - msg[4] = new slider position from 0 to 1000.
* - msg[5] =
* - msg[6] =
* - msg[7] =
*
* Note: Slider position is relative and not related to slider size.
*/
#define WM_VSLID 26
/** message received when the user drags the window sizing gadget.
*
* - msg[0] = #WM_SIZED
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] = handle of the window
* - msg[4] = x
* - msg[5] = y
* - msg[6] = w
* - msg[7] = h of the new window location
*
* Use mt_wind_set() with the command #WF_CURRXYWH to change the size
* of the window.
*
* #WM_SIZED and #WM_MOVED usually share common handling code.
*/
#define WM_SIZED 27
/** message received when the user moves the window by dragging the
* window title bar.
*
* - msg[0] = #WM_MOVED
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] = handle of the window
* - msg[4] = x
* - msg[5] = y
* - msg[6] = w
* - msg[7] = h of the new window location
*
* Use mt_wind_set() with the command #WF_CURRXYWH to change the size
* of the window.
*
* #WM_SIZED and #WM_MOVED usually share common handling code.
*/
#define WM_MOVED 28
/** message received when the user has topped a window
*
* - msg[0] = #WM_NEWTOP
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] = handle of the window
* - msg[4] =
* - msg[5] =
* - msg[6] =
* - msg[7] =
*
*/
#define WM_NEWTOP 29
/** message received when the window is sent behind one or more windows
* as the result of another window being topped.
*
* - msg[0] = #WM_UNTOPPED
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] = handle of the window
* - msg[4] =
* - msg[5] =
* - msg[6] =
* - msg[7] =
*
* The application need take no action. The message is for informational
* use only.
*
* @since AES version 4.0. The availability of this feature could
* be check by calling mt_appl_getinfo() with the parameter #AES_MENU.
*/
#define WM_UNTOPPED 30
/** message received when the window is brought to the front on a multitasking
* AES.
*
* - msg[0] = #WM_ONTOP
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] = handle of the window
* - msg[4] =
* - msg[5] =
* - msg[6] =
* - msg[7] =
*
* The application need take no action. The message is for informational
* use only.
*
* @since AES version 4.0. The availability of this feature could
* be check by calling mt_appl_getinfo() with the parameter #AES_MENU.
*/
#define WM_ONTOP 31
/** message received when the user act on the window to sent it to the bottom
* of the window stack.
*
* - msg[0] = #WM_BOTTOM
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] = handle of the window
* - msg[4] =
* - msg[5] =
* - msg[6] =
* - msg[7] =
*
* The application should then sent the window to the bottom of the windows stack
* by calling mt_wind_set() with #WF_BOTTOM command.
*
* Note: the way the user may send a window to the bottom depend on the AES and its
* configuration.
*
* @since AES version 4.1. The availability of this feature could
* be check by calling mt_appl_getinfo() with the parameter #AES_MENU.
*/
#define WM_BOTTOM 33
#define WM_BOTTOMED WM_BOTTOM /**< see #WM_BOTTOM */
/** message received when the user clicks on the #SMALLER window gadget
*
* - msg[0] = #WM_ICONIFY
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] = handle of the window
* - msg[4] = x
* - msg[5] = y
* - msg[6] = w
* - msg[7] = h : position of the iconified window
*
* The application should then iconify the window
* by calling mt_wind_set() with #WF_ICONIFY command.
*
* @since AES version 4.1. The availability of this feature could
* be check by calling mt_appl_getinfo() with the parameter #AES_MENU.
*
*/
#define WM_ICONIFY 34
/** message received when the user double-clicks on the iconified window
*
* - msg[0] = #WM_UNICONIFY
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] = handle of the window
* - msg[4] = x
* - msg[5] = y
* - msg[6] = w
* - msg[7] = h : position of the iconified window
*
* The application should then uniconify the window
* by calling mt_wind_set() with #WF_UNICONIFY command.
*
* @since AES version 4.1. The availability of this feature could
* be check by calling mt_appl_getinfo() with the parameter #AES_MENU.
*
*/
#define WM_UNICONIFY 35
/** message received when the user clicks on the #SMALLER window gadget while
* the CONTROL key is pressed.
*
* - msg[0] = #WM_ALLICONIFY
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] = handle of the window
* - msg[4] = x
* - msg[5] = y
* - msg[6] = w
* - msg[7] = h : position of the iconified window
*
* The application should then close all opened windows, and open a new iconified
* window at the position indicated which represents the application.
*
* @since AES version 4.1. The availability of this feature could
* be check by calling mt_appl_getinfo() with the parameter #AES_MENU.
*/
#define WM_ALLICONIFY 36
/** message received when the user clicks on a toolbar object
*
* - msg[0] = #WM_TOOLBAR
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] = handle of the window
* - msg[4] = index of the object clicked
* - msg[5] = number of clicks
* - msg[6] = state of the keyboard shift keys (see mt_evnt_keybd())
* - msg[7] =
*
* @since AES version 4.1. The availability of this feature could
* be check by calling mt_appl_getinfo() with the parameter #AES_MENU.
*
*/
#define WM_TOOLBAR 37
/** Message received when the user resizes the window using the
* left/upper parts of the window border.
*
* - msg[0] = #WM_REPOSED
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] = handle of the window
* - msg[4] = x
* - msg[5] = y
* - msg[6] = w
* - msg[7] = h of the new window location
*
* See mt_wind_set() with command #WF_OPTS, bit #WO0_SENDREPOS for
* details about the availability of this message.
*
* Use mt_wind_set() with the command #WF_CURRXYWH to change the position
* of the window.
*
*/
#define WM_REPOSED 38
/** message received when the user has selected a desk accessory to open
*
* - msg[0] = #AC_OPEN
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] =
* - msg[4] = AES application ID of the accessory to open
* - msg[5] =
* - msg[6] =
* - msg[7] =
*
*/
#define AC_OPEN 40
/** message received by a desk accessory when the accessory
* should be closed.
*
* - msg[0] = #AC_CLOSE
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] = AES application ID of the accessory to close.
* - msg[4] =
* - msg[5] =
* - msg[6] =
* - msg[7] =
*
* Do not close any windows your accessory had open, the system will do this for you.
* Also, do not require any feedback from the user when this is received. Treat this
* message as a 'Cancel' from the user.
*
*/
#define AC_CLOSE 41
/** message received when the system requests that the application
* terminate.
*
* - msg[0] = #AP_TERM
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] =
* - msg[4] =
* - msg[5] = reason for the shut down:
* - #AP_TERM (just shut down)
* - #AP_RESCHG (resolution change)
* - msg[6] =
* - msg[7] =
*
* This message is usually the result of a resolution change, but it may
* laso occur if another application sends this message to gain total
* control of the system.
*
* The application should shutdown immediately after closing windows,
* freeing resources, etc... If for some reason your application cannot
* shutdown, you must inform the AES by sending an #AP_TFAIL message
* by using mt_shel_write() mode #SWM_AESMSG.
*
* Note: Desk accessory will always be sent #AC_CLOSE message, not
* #AP_TERM
*
* @since AES version 4.0. The availability of this feature could
* be check by calling mt_appl_getinfo() with the parameter #AES_MENU.
*/
#define AP_TERM 50
/** message sent to the system when the application has received an
* #AP_TERM message and cannot shutdown.
*
* - msg[0] = #AP_TFAIL
* - msg[1] = application error code
* - msg[2] = 0
* - msg[3] =
* - msg[4] =
* - msg[5] =
* - msg[6] =
* - msg[7] =
*
*/
#define AP_TFAIL 51
#define AP_RESCHG 57 /**< indicates a resolution change, see #AP_TERM */
/* Xcontrol messages */
#define CT_UPDATE 50 /**< TODO */
#define CT_MOVE 51 /**< TODO */
#define CT_NEWTOP 52 /**< TODO */
#define CT_KEY 53 /**< TODO */
/** message received by the application which requested a shutdown, when the
* shutdown is complete and was successful.
*
* - msg[0] = #SHUT_COMPLETED
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] =
* - msg[4] =
* - msg[5] =
* - msg[6] =
* - msg[7] =
*
* @since AES version 4.0. The availability of this feature could
* be check by calling mt_appl_getinfo() with the parameter #AES_MENU.
*/
#define SHUT_COMPLETED 60
/** message received by the application which requested a resolution change,
* when the resolution change is complete.
*
* - msg[0] = #SHUT_COMPLETED
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] = indicate the success of the resolution change:
* - 1 if the resolution change was succesful
* - 0 if an error occured.
* - msg[4] =
* - msg[5] =
* - msg[6] =
* - msg[7] =
*
*
* @since AES version 4.0. The availability of this feature could
* be check by calling mt_appl_getinfo() with the parameter #AES_MENU.
*/
#define RESCHG_COMPLETED 61
/** see #RESCHG_COMPLETED */
#define RESCH_COMPLETED RESCHG_COMPLETED
/** message received when another apllication wishes to initiate a
* drag and drop session.
*
* - msg[0] = #AP_DRAGDROP
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] = handle of the window which had an object dropped on,
* or -1 if no specific window was targeted
* - msg[4] = x
* - msg[5] = y position of the mouse when the object was dropped
* - msg[6] = keybord shift state at the time of the drop as
* in mt_evnt_keybd()
* - msg[7] = two bytes ASCII packed pipe identifier which gives the
* file extension of the pipe to open.
*
* TODO: add more informations about drag 'n drop protocol...
*/
#define AP_DRAGDROP 63
/** message sent to the desktop to ask it to update an open drive
* window.
*
* - msg[0] = #SH_WDRAW
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] = drive number to update (0=A, 1=B, etc...) or -1
* to update all windows
* - msg[4] =
* - msg[5] =
* - msg[6] =
* - msg[7] =
*/
#define SH_WDRAW 72
#define SC_CHANGED 80 /**< TODO */
#define PRN_CHANGED 82 /**< TODO */
#define FNT_CHANGED 83 /**< TODO */
/** message received when a child thread that this application has
* started returns.
*
* - msg[0] = #THR_EXIT
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] = application identifier of the terminated thread
* - msg[4] = exit code of the thread (HIGH WORD)
* - msg[5] = exit code of the thread (LOW WORD)
* - msg[6] =
* - msg[7] =
*
* Warning: the error code is a LONG (32 bits) value !
*
* @since MagiC (?).
*/
#define THR_EXIT 88
#define PA_EXIT 89 /**< TODO */
/** message received when a child process that this application has
* started returns.
*
* - msg[0] = #CH_EXIT
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] = child's application identifier
* - msg[4] = exit code of the child application
* - msg[5] =
* - msg[6] =
* - msg[7] =
*
* @since AES version 4.0. The availability of this feature could
* be check by calling mt_appl_getinfo() with the parameter #AES_MENU.
*/
#define CH_EXIT 90
#define WM_M_BDROPPED 100 /* KAOS 1.4 */ /**< TODO */
/** MAG!X screen manager extension
*
* Applications may send such message to the MagiC Screen Manager
* (SCREENMGR, application ID = 1) to control AES applications.
* The message is [SM_M_SPECIAL apid 0 0 'MA' 'GX' SMC_XXX 0]
* where SMC_XXX contains the action SCREENMGR has to perform.
*
* SMC_XXX may be one of the following value:
* - #SMC_TIDY_UP
* - #SMC_TERMINATE
* - #SMC_SWITCH
* - #SMC_FREEZE
* - #SMC_UNFREEZE
* - #SMC_RES5
* - #SMC_UNHIDEALL
* - #SMC_HIDEOTHERS
* - #SMC_HIDEACT
*
* @sa mt_appl_control()
*/
#define SM_M_SPECIAL 101
#define SM_M_RES2 102 /**< MAG!X screen manager extension */
#define SM_M_RES3 103 /**< MAG!X screen manager extension */
#define SM_M_RES4 104 /**< MAG!X screen manager extension */
#define SM_M_RES5 105 /**< MAG!X screen manager extension */
#define SM_M_RES6 106 /**< MAG!X screen manager extension */
#define SM_M_RES7 107 /**< MAG!X screen manager extension */
#define SM_M_RES8 108 /**< MAG!X screen manager extension */
#define SM_M_RES9 109 /**< MAG!X screen manager extension */
#define WM_SHADED 22360 /**< TODO [WM_SHADED apid 0 win 0 0 0 0] */
#define WM_UNSHADED 22361 /**< TODO [WM_UNSHADED apid 0 win 0 0 0 0] */
/* SM_M_SPECIAL sub-opcode */
#define SMC_TIDY_UP 0 /* MagiC 2 */ /**< TODO */
#define SMC_TERMINATE 1 /* MagiC 2 */ /**< TODO */
#define SMC_SWITCH 2 /* MagiC 2 */ /**< TODO */
#define SMC_FREEZE 3 /* MagiC 2 */ /**< TODO */
#define SMC_UNFREEZE 4 /* MagiC 2 */ /**< TODO */
#define SMC_RES5 5 /* MagiC 2 */ /**< TODO */
#define SMC_UNHIDEALL 6 /* MagiC 3.1 */ /**< TODO */
#define SMC_HIDEOTHERS 7 /* MagiC 3.1 */ /**< TODO */
#define SMC_HIDEACT 8 /* MagiC 3.1 */ /**< TODO */
/** Message received when an event occurs on mouse wheel.
*
* - msg[0] = #WM_WHEEL
* - msg[1] = AES application ID of the sender
* - msg[2] = 0
* - msg[3] = handle of the window
* - msg[4] = x-position of the mouse
* - msg[5] = y-position of the mouse
* - msg[6] = keyboard shift status
* - msg[7] = wheel info
*
* 'wheel info' consists of the following data;
* - bits 0-7 - Wheel amount
* - bits 8-11 - orient
* - bits 12-15 - Wheel ID
*
* 'orient' is a bitmask where bit 0 indicates direction, and
* bit 1 indicates orientation;
* - bit 0 : 0 = up or left; 1 = down or right
* - bit 1 : 0 = vertical (bit 0 indicates UP/DOWN); 1 = horizontal (bit 0 indicates LEFT/RIGHT)
*
* 'wheel ID' contains the wheel number. 0 is wheel #1, etc..
* 'wheel amount' holds the number of wheel-turns.
*
* See mt_wind_set() with command #WF_WHEEL for
* details about the availability of this message.
*
*/
#define WM_WHEEL 345
/* evnt_mouse modes */
#define MO_ENTER 0 /**< Wait for mouse to enter rectangle, see mt_evnt_mouse() */
#define MO_LEAVE 1 /**< Wait for mouse to leave rectangle, see mt_evnt_mouse() */
/* evnt_multi flags */
#define MU_KEYBD 0x0001 /**< Wait for a user keypress, see mt_evnt_multi() */
#define MU_BUTTON 0x0002 /**< Wait for the specified mouse button state, see mt_evnt_multi() */
#define MU_M1 0x0004 /**< Wait for a mouse/rectangle event as specified, see mt_evnt_multi() */
#define MU_M2 0x0008 /**< Wait for a mouse/rectangle event as specified, see mt_evnt_multi() */
#define MU_MESAG 0x0010 /**< Wait for a message, see mt_evnt_multi() */
#define MU_TIMER 0x0020 /**< Wait the specified amount of time, see mt_evnt_multi() */
#define MU_WHEEL 0x0040 /**< TODO (XaAES) */
#define MU_MX 0x0080 /**< TODO (XaAES) */
#define MU_NORM_KEYBD 0x0100 /**< TODO (XaAES) */
#define MU_DYNAMIC_KEYBD 0x0200 /**< TODO (XaAES) */
/* constants for form_alert */
#define FA_NOICON "[0]" /**< display no icon, see mt_form_alert() */
#define FA_ERROR "[1]" /**< display Exclamation icon, see mt_form_alert() */
#define FA_QUESTION "[2]" /**< display Question icon, see mt_form_alert() */
#define FA_STOP "[3]" /**< display Stop icon, see mt_form_alert() */
#define FA_INFO "[4]" /**< display Info icon, see mt_form_alert() */
#define FA_DISK "[5]" /**< display Disk icon, see mt_form_alert() */
/* form_dial opcodes */
#define FMD_START 0 /**< reserves the screen space for a dialog, see mt_form_dial() */
#define FMD_GROW 1 /**< draws an expanding box, see mt_form_dial() */
#define FMD_SHRINK 2 /**< draws a shrinking box, see mt_form_dial() */
#define FMD_FINISH 3 /**< releases the screen space for a dialog, see mt_form_dial() */
/* form_error modes */
#define FERR_FILENOTFOUND 2 /**< File Not Found (GEMDOS error -33), see mt_form_error() */
#define FERR_PATHNOTFOUND 3 /**< Path Not Found (GEMDOS error -34), see mt_form_error() */
#define FERR_NOHANDLES 4 /**< No More File Handles (GEMDOS error -35), see mt_form_error() */
#define FERR_ACCESSDENIED 5 /**< Access Denied (GEMDOS error -36), see mt_form_error() */
#define FERR_LOWMEM 8 /**< Insufficient Memory (GEMDOS error -39), see mt_form_error() */
#define FERR_BADENVIRON 10 /**< Invalid Environment (GEMDOS error -41), see mt_form_error() */
#define FERR_BADFORMAT 11 /**< Invalid Format (GEMDOS error -42) */
#define FERR_BADDRIVE 15 /**< Invalid Drive Specification (GEMDOS error -46), see mt_form_error() */
#define FERR_DELETEDIR 16 /**< Attempt To Delete Working Directory (GEMDOS error -47), see mt_form_error() */
#define FERR_NOFILES 18 /**< No More Files (GEMDOS error -49), see mt_form_error() */
/* fsel_(ex)input return values */
#define FSEL_CANCEL 0 /**< the fileselector has been closed by using the CANCEL button, see mt_fsel_exinput() */
#define FSEL_OK 1 /**< the fileselector has been closed by using the OK button, see mt_fsel_exinput() */
/* menu_attach modes */
#define ME_INQUIRE 0 /**< inquire information on a sub-menu attached, see mt_menu_attach() */
#define ME_ATTACH 1 /**< attach or change a sub-menu, see mt_menu_attach() */
#define ME_REMOVE 2 /**< remove a sub-menu. see mt_menu_attach() */
/* menu_attach attributes */
#define SCROLL_NO 0 /**< the menu will not scroll, see MENU::mn_scroll structure */
#define SCROLL_YES 1 /**< menu may scroll if it is too high, see MENU::mn_scroll structure */
/* menu_bar modes */
#define MENU_INQUIRE -1 /**< inquire the AES application ID of the process which own the displayed menu, see mt_menu_bar() */
#define MENU_REMOVE 0 /**< remove a menu bar, see mt_menu_bar() */
#define MENU_INSTALL 1 /**< install a menu bar, see mt_menu_bar() */
#define MENU_GETMODE 3 /**< Get the menu bar mode, see mt_menu_bar() */
#define MENU_SETMODE 4 /**< Set the menu bar mode, see mt_menu_bar() */
#define MENU_UPDATE 5 /**< Update the system part of the menu bar, see mt_menu_bar() */
#define MENU_INSTL 100 /**< Install a menu without switching the top application (Magic), see mt_menu_bar() */
/* MENU_GETMODE and MENU_SETMODE bits */
#define MENU_HIDDEN 0x0001 /**< menu bar only visible when needed, see #MENU_GETMODE or #MENU_SETMODE */
#define MENU_PULLDOWN 0x0002 /**< Pulldown-Menus, see #MENU_GETMODE or #MENU_SETMODE */
#define MENU_SHADOWED 0x0004 /**< menu bar with shadows, see #MENU_GETMODE or #MENU_SETMODE */
/* menu_icheck modes */
#define UNCHECK 0 /**< remove the check mark of a menu item, see mt_menu_icheck() */
#define CHECK 1 /**< set a check mark of a menu item, see mt_menu_icheck() */
/* menu_ienable modes */
#define DISABLE 0 /**< disable a menu item, see mt_menu_ienable() */
#define ENABLE 1 /**< enable a menu item, see mt_menu_ienable() */
/* menu_istart modes */
#define MIS_GETALIGN 0 /**< get the alignment of a parent menu item with a sub-menu item, see mt_menu_istart() */
#define MIS_SETALIGN 1 /**< set the alignment of a parent menu item with a sub-menu item, see mt_menu_istart() */
/* menu_popup modes */
#define SCROLL_LISTBOX -1 /**< display a drop-down list (with slider) instead of popup menu, see MENU::mn_scroll */
/* menu_register modes */
#define REG_NEWNAME -1 /**< register your application with a new name, see mt_menu_register() */
/* menu_settings modes */
#define MN_INQUIRE 0 /**< inquire the current menu settings, see mt_menu_settings() */
#define MN_CHANGE 1 /**< set the menu settings, see mt_menu_settings() */
/* menu_tnormal modes */
#define HIGHLIGHT 0 /**< display the title in reverse mode, see mt_menu_tnormal() */
#define UNHIGHLIGHT 1 /**< display the title in normal mode, see mt_menu_tnormal() */
/** menu_settings uses a new structure for setting and inquiring the submenu
delay values and the menu scroll height.*/
typedef struct _mn_set
{
long display; /**< the submenu display delay in milliseconds */
long drag; /**< the submenu drag delay in milliseconds */
long delay; /**< the single-click scroll delay in milliseconds */
long speed; /**< the continuous scroll delay in milliseconds */
short height; /**< the menu scroll height (in items) */
} MN_SET;
/* shel_get modes */
#define SHEL_BUFSIZE (-1) /**< return the size of AES shell buffer, see mt_shel_read() */
/* shel_help mode */
#define SHP_HELP 0 /**< see mt_shel_help() */
/** structure for extended modes of mt_shel_write() */
typedef struct
{
/** points to the filename formatted in the manner indicated
* above
*/
char *newcmd;
/** contains the maximum memory size available to the process
* only used if the extended mode #SW_PSETLIMIT is set
*/
long psetlimit;
/** contains the process priority of the process to launch
* only used if the extended mode #SW_PRENICE is set
*/
long prenice;
/** points to a character string containing the default directory
* for the application begin launched.
* only used if the extended mode #SW_DEFDIR is set
*/
char *defdir;
/** points to a valid environment string for the process
* only used if the extended mode #SW_ENVIRON is set
*/
char *env;
/** New child's UID (user id)
* only used if the extended mode #SW_UID is set
*/
short uid;
/** New child's GID (group id)
* only used if the extended mode #SW_GID is set
*/
short gid;
} SHELW;
/** similar to ::SHELW, with MagiC 6 only specificity, and without XaAES extensions */
typedef struct
{
char *command; /**< see SHELW::newcmd */
long limit; /**< see SHELW::psetlimit */
long nice; /**< see SHELW::prenice */
char *defdir; /**< see SHELW::defdir */
char *env; /**< see SHELW::env */
long flags; /**< since MagiC 6. only used if the extended mode #SHW_XMDFLAGS is set*/
} XSHW_COMMAND;
/** description of a thread, see mt_shel_write() with #SWM_THRCREATE mode */
typedef struct
{
long __CDECL (*proc)(void *par); /**< entry point of the thread */
/** user stack for the thread
* If \a user_stack = NULL, then the system creates the stack itself. If
* the thread terminates then the system releases the stack anyway.
*/
void *user_stack;
/** size of the user stack
* \a stacksize has to be specified in each case so that the system can set
* the stack pointer to the end of the thread. The supervisor stack is
* set by the system itself; its size cannot be influenced.
*/
unsigned long stacksize;
short mode; /**< always set to 0 (reserved) */
long res1; /**< always set to 0 (reserved) */
} THREADINFO;
/** tail for default shell (MagiC), see mt_shel_write() */
typedef struct
{
short dummy; /**< a null word */
long magic; /**< 'SHEL', if it's a Shell */
/** first call of the Shell
* If \a isfirst is set then the status is to be read from something like
* \c DESKTOP.INF, if \a isfirst is not set then one takes the temporary file or
* shell-buffer.
*/
short isfirst;
/** last error
* \a lasterr is the return value of the program running previously. If this
* was a GEM program then the error will already have been displayed in an
* alert box. It is well known that the longword is negative if the error
* occurred with Pexec itself; a program return value always has the high
* word 0.
*/
long lasterr;
short wasgr; /**< Program was a grafic app. */
} SHELTAIL;
/* shel_write modes */
/** Launch a GEM or TOS application or GEM desk accessory
* depending on the extension of the file. See mt_shel_write()
*/
#define SWM_LAUNCH 0
/** Launch a GEM or TOS application based on the value of \a wisgr, see mt_shel_write()
*/
#define SWM_LAUNCHNOW 1
#define SWM_LAUNCHACC 3 /**< Launch a GEM desk accessory, see mt_shel_write() */
#define SWM_SHUTDOWN 4 /**< Manipulate 'Shutdown' mode, see mt_shel_write() */
#define SWM_REZCHANGE 5 /**< Change screen resolution, see mt_shel_write() */
#define SWM_BROADCAST 7 /**< Broadcast an AES message to all processes, see mt_shel_write() */
#define SWM_ENVIRON 8 /**< Manipulate the AES environment, see mt_shel_write() */
/** Inform the AES of a new message the current application understands,
* see mt_shel_write()
*/
#define SWM_NEWMSG 9
#define SWM_AESMSG 10 /**< Send a message to the AES, see mt_shel_write() */
#define SWM_THRCREATE 20 /**< create a new thread, see mt_shel_write() */
#define SWM_THREXIT 21 /**< thread terminates itself, see mt_shel_write() */
#define SWM_THRKILL 22 /**< parent kills a thread, see mt_shel_write() */
/* other names for shel_write modes */
#define SHW_NOEXEC SWM_LAUNCH /**< alias */
#define SHW_EXEC SWM_LAUNCHNOW /**< alias */
#define SHW_EXEC_ACC SWM_LAUNCHACC /**< alias */
#define SHW_SHUTDOWN SWM_SHUTDOWN /**< alias */
#define SHW_RESCHNG SWM_REZCHANGE /**< alias */
#define SHW_BROADCAST SWM_BROADCAST /**< alias */
#define SHW_INFRECGN SWM_NEWMSG /**< alias */
#define SHW_AESSEND SWM_AESMSG /**< alias */
#define SHW_THR_CREATE SWM_THRCREATE /**< alias */
#define SHW_THR_EXIT SWM_THREXIT /**< alias */
#define SHW_THR_KILL SWM_THRKILL /**< alias */
/* shel_write, parameter wisgr */
#define TOSAPP 0 /**< application launched as TOS application, see mt_shel_write() */
#define GEMAPP 1 /**< application launched as GEM application, see mt_shel_write() */
/* shel_write, parameter wiscr when wodex=1 (SWM_LAUNCHNOW) */
#define SHW_IMMED 0 /**< unsupported (PC-GEM 2.x) */
#define SHW_CHAIN 1 /**< TOS way, see mt_shel_write() */
#define SHW_DOS 2 /**< unsupported (PC-GEM 2.x) */
#define SHW_PARALLEL 100 /**< create a new application to be ran in parallel, see mt_shel_write() */
#define SHW_SINGLE 101 /**< run an application in single mode (all other applications but apid 0 and 1 are frozen), see mt_shel_write() */
/* command line parser (shel_write: parameter "wiscr") */
#define CL_NORMAL 0 /**< command line passed normaly, see mt_shel_write() */
#define CL_PARSE 1 /**< command line passed in ARGV environment string, see mt_shel_write() */
/* shutdown action (shel_write: mode SWM_SHUTDOWN, parameter "wiscr") */
#define SD_ABORT 0 /**< Abort shutdown mode, see mt_shel_write() */
#define SD_PARTIAL 1 /**< Partial shutdown mode, see mt_shel_write() */
#define SD_COMPLETE 2 /**< Complete shutdown mode, see mt_shel_write() */
/* shel_write: mode SWM_ENVIRON, parameter 'wisgr' */
#define ENVIRON_SIZE 0 /**< returns the current size of the environment string, see mt_shel_write() */
#define ENVIRON_CHANGE 1 /**< modify an environment variable, see mt_shel_write() */
#define ENVIRON_COPY 2 /**< copy the evironment string in a buffer, see mt_shel_write() */
/* shel_write: mode SWM_NEWMSG, parameter 'wisgr' */
#define NM_APTERM 0x0001 /**< the application understands #AP_TERM messages, see mt_shel_write() and #SWM_NEWMSG */
#define NM_INHIBIT_HIDE 0x0002 /**< the application won't be hidden, see mt_shel_write() and #SWM_NEWMSG */
/* Werte fr Modus SWM_AESMSG (fr shel_write) */
#define AP_AESTERM 52 /* Mode 10: N.AES komplett terminieren. */ /**< TODO */
/* extended shel_write() modes */
#define SW_PSETLIMIT 0x0100 /**< Initial Psetlimit() , see SHELW::psetlimit */
#define SW_PRENICE 0x0200 /**< Initial Prenice() , see SHELW::prenice */
#define SW_DEFDIR 0x0400 /**< Default Directory , see SHELW::defdir */
#define SW_ENVIRON 0x0800 /**< Environment , see SHELW::env */
/* XaAES extensions for shel_write() extended modes*/
#define SW_UID 0x1000 /**< Set user id of launched child, see SHELW::uid */
#define SW_GID 0x2000 /**< Set group id of launched child, see SHELW::gid */
/* MagiC 6 extensions for shel_write() extended modes*/
#define SHW_XMDFLAGS 0x1000 /**< magiC 6 extension, see XSHW_COMMAND::flags*/
/* other names... */
#define SHW_XMDLIMIT SW_PSETLIMIT /**< alias */
#define SHW_XMDNICE SW_PRENICE /**< alias */
#define SHW_XMDDEFDIR SW_DEFDIR /**< alias */
#define SHW_XMDENV SW_ENVIRON /**< alias */
/* rsrc_gaddr structure types */
#define R_TREE 0 /**< Object tree, see mt_rsrc_gaddr() */
#define R_OBJECT 1 /**< Individual object, see mt_rsrc_gaddr() */
#define R_TEDINFO 2 /**< TEDINFO structure, see mt_rsrc_gaddr() */
#define R_ICONBLK 3 /**< ICONBLK structure, see mt_rsrc_gaddr() */
#define R_BITBLK 4 /**< BITBLK structure, see mt_rsrc_gaddr() */
#define R_STRING 5 /**< Free String data, see mt_rsrc_gaddr() */
#define R_IMAGEDATA 6 /**< Free Image data, see mt_rsrc_gaddr() */
#define R_OBSPEC 7 /**< ob_spec field within OBJECTs, see mt_rsrc_gaddr() */
#define R_TEPTEXT 8 /**< te_ptext within TEDINFOs, see mt_rsrc_gaddr() */
#define R_TEPTMPLT 9 /**< te_ptmplt within TEDINFOs, see mt_rsrc_gaddr() */
#define R_TEPVALID 10 /**< te_pvalid within TEDINFOs, see mt_rsrc_gaddr() */
#define R_IBPMASK 11 /**< ib_pmask within ICONBLKs, see mt_rsrc_gaddr() */
#define R_IBPDATA 12 /**< ib_pdata within ICONBLKs, see mt_rsrc_gaddr() */
#define R_IBPTEXT 13 /**< ib_ptext within ICONBLKs, see mt_rsrc_gaddr() */
#define R_BIPDATA 14 /**< bi_pdata within BITBLKs, see mt_rsrc_gaddr() */
#define R_FRSTR 15 /**< Free string, see mt_rsrc_gaddr() */
#define R_FRIMG 16 /**< Free image, see mt_rsrc_gaddr() */
/* scrap_read return values */
#define SCRAP_CSV 0x0001 /**< clipboard has a scrap.csv file, see mt_scrap_read() */
#define SCRAP_TXT 0x0002 /**< clipboard has a scrap.txt file, see mt_scrap_read() */
#define SCRAP_GEM 0x0004 /**< clipboard has a scrap.gem file, see mt_scrap_read() */
#define SCRAP_IMG 0x0008 /**< clipboard has a scrap.img file, see mt_scrap_read() */
#define SCRAP_DCA 0x0010 /**< clipboard has a scrap.dca file, see mt_scrap_read() */
#define SCRAP_DIF 0x0020 /**< clipboard has a scrap.dif file, see mt_scrap_read() */
#define SCRAP_USR 0x8000 /**< clipboard has a scrap.usr file, see mt_scrap_read() */
/* Window Attributes */
#define NAME 0x0001 /**< Window has a title bar */
#define CLOSER 0x0002 /**< Window has a close box */
#define FULLER 0x0004 /**< Window has a fuller box */
#define MOVER 0x0008 /**< Window may be moved by the user */
#define INFO 0x0010 /**< Window has an information line */
#define SIZER 0x0020 /**< Window has a sizer box */
#define UPARROW 0x0040 /**< Window has an up arrow */
#define DNARROW 0x0080 /**< Window has a down arrow */
#define VSLIDE 0x0100 /**< Window has a vertical slider */
#define LFARROW 0x0200 /**< Window has a left arrow */
#define RTARROW 0x0400 /**< Window has a right arrow */
#define HSLIDE 0x0800 /**< Window has a horizontal slider */
#define HOTCLOSEBOX 0x1000 /**< Window has "hot close box" box (GEM 2.x) */
#define MENUBAR 0x1000 /**< Window has a menu bar (XaAES) */
#define BACKDROP 0x2000 /**< Window has a backdrop box */
#define SMALLER 0x4000 /**< Window has an iconifier */
#define BORDER 0x8000 /**< Window has border-resizable capability (XaAES newer than Nov 8 2004) */
#define ICONIFIER SMALLER /**< Window has an iconifier */
/* wind_create flags */
#define WC_BORDER 0 /**< compute the extent of a window from its work area, see mt_wind_calc() */
#define WC_WORK 1 /**< compute the work_area of a window from its extent, see mt_wind_calc() */
/* wind_get flags */
#define WF_KIND 1 /**< get the actual window attributes, see mt_wind_get() */
#define WF_NAME 2 /**< get/set title name of the window, see mt_wind_get() and mt_wind_set() */
#define WF_INFO 3 /**< get/set info line of the window, see mt_wind_get() and mt_wind_set() */
#define WF_WORKXYWH 4 /**< get the work area coordinates of the work area, see mt_wind_get() */
#define WF_CURRXYWH 5 /**< get/set current coordinates of the window (external area), see mt_wind_get() and mt_wind_set() */
#define WF_PREVXYWH 6 /**< get the previous coordinates of the window (external area), see mt_wind_get() */
#define WF_FULLXYWH 7 /**< get the coordinates of the window when "fulled" the screen, see mt_wind_get() */
#define WF_HSLIDE 8 /**< get/set position of the horizontal slider, see mt_wind_get() and mt_wind_set() */
#define WF_VSLIDE 9 /**< get/set position of the vertical slider, see mt_wind_get() and mt_wind_set() */
#define WF_TOP 10 /**< get/set top window, see mt_wind_get() and mt_wind_set() */
#define WF_FIRSTXYWH 11 /**< get the first rectangle in the list of rectangles for this window, see mt_wind_get() */
#define WF_NEXTXYWH 12 /**< get the next rectangle in the list of rectangles for this window, see mt_wind_get() */
#define WF_FIRSTAREAXYWH 13 /**< get the first rectangle in the list of rectangles for this window, see mt_wind_xget()*/
#define WF_NEWDESK 14 /**< get/set OBJECT tree installed as desktop, see mt_wind_get() and mt_wind_set() */
#define WF_HSLSIZE 15 /**< get/set size of the horizontal slider, see mt_wind_get() and mt_wind_set() */
#define WF_VSLSIZE 16 /**< get/set size of the vertical slider, see mt_wind_get() and mt_wind_set() */
#define WF_SCREEN 17 /**< get current AES menu/alert buffer and its size, see mt_wind_get() */
#define WF_COLOR 18 /**< get/set current color of widget, see mt_wind_get() and mt_wind_set() */
#define WF_DCOLOR 19 /**< get/set default color of widget, see mt_wind_get() and mt_wind_set() */
#define WF_OWNER 20 /**< get the owner of the window, see mt_wind_get() */
#define WF_BEVENT 24 /**< get/set window feature on mouse button event, see mt_wind_get() and mt_wind_set() */
#define WF_BOTTOM 25 /**< get/set bottom window, see mt_wind_get() and mt_wind_set() */
#define WF_ICONIFY 26 /**< get/set iconification of the window, see mt_wind_get() and mt_wind_set() */
#define WF_UNICONIFY 27 /**< get/set un-iconification of the window, see mt_wind_get() and mt_wind_set() */
#define WF_UNICONIFYXYWH 28 /**< set window coordinates when uniconified , see mt_wind_set() */
#define WF_TOOLBAR 30 /**< get/set tool bar attached to a window, see mt_wind_get() and mt_wind_set() */
#define WF_FTOOLBAR 31 /**< get the first rectangle of the toolbar area, see mt_wind_get() */
#define WF_NTOOLBAR 32 /**< get the next rectangle of the toolbar area, see mt_wind_get() */
#define WF_MENU 33 /**< TODO (XaAES) */
#define WF_WHEEL 40 /**< set window feature on mouse wheel event, see mt_wind_set() */
#define WF_OPTS 41 /**< get/set window options. See mt_wind_set() and mt_wind_get() for details. */
#define WF_CALCF2W 42 /**< Convert FULL coordinates to WORK coordinates */
#define WF_CALCW2F 43 /**< Convert WORK coordinates to FULL coordinates */
#define WF_CALCF2U 44 /**< Convert FULL coordinates to USER coordinates */
#define WF_CALCU2F 45 /**< Convert USER coordinates to FULL coordinates */
#define WF_MAXWORKXYWH 46 /**< Get MAX coordinates for this window - WCOWORK mode only*/
#define WF_M_BACKDROP 100 /**< TODO (KAOS 1.4) */
#define WF_M_OWNER 101 /**< TODO (KAOS 1.4) */
#define WF_M_WINDLIST 102 /**< TODO (KAOS 1.4) */
#define WF_MINXYWH 103 /**< TODO (MagiC 6) */
#define WF_INFOXYWH 104 /**< TODO (MagiC 6.10) */
#define WF_WIDGETS 200 /**< get/set actual positions of the slider widgets, see mt_wind_get() and mt_wind_set() */
#define WF_WINX 22360 /**< TODO */
#define WF_WINXCFG 22361 /**< TODO */
#define WF_SHADE 22365 /**< TODO (WINX 2.3) */
#define WF_STACK 22366 /**< TODO (WINX 2.3) */
#define WF_TOPALL 22367 /**< TODO (WINX 2.3) */
#define WF_BOTTOMALL 22368 /**< TODO (WINX 2.3) */
#define WF_XAAES 0x5841 /**< TODO (XaAES) : 'XA' */
/* wind_set(WF_BEVENT) */
#define BEVENT_WORK 0x0001 /**< window not topped when click on the work area, see #WF_BEVENT */
#define BEVENT_INFO 0x0002 /**< ?????, see #WF_BEVENT */
/* wind_set(WF_OPTS) bitmask flags */
#define WO0_WHEEL 0x0001 /**< see mt_wind_set() with #WF_OPTS mode */
#define WO0_FULLREDRAW 0x0002 /**< see mt_wind_set() with #WF_OPTS mode */
#define WO0_NOBLITW 0x0004 /**< see mt_wind_set() with #WF_OPTS mode */
#define WO0_NOBLITH 0x0008 /**< see mt_wind_set() with #WF_OPTS mode */
#define WO0_SENDREPOS 0x0010 /**< see mt_wind_set() with #WF_OPTS mode */
#define WO1_NONE 0x0000 /**< see mt_wind_set() with #WF_OPTS mode */
#define WO2_NONE 0x0000 /**< see mt_wind_set() with #WF_OPTS mode */
/* wind_set(WF_WHEEL) modes */
#define WHEEL_MESAG 0 /**< AES will send #WM_WHEEL messages */
#define WHEEL_ARROWED 1 /**< AES will send #WM_ARROWED messages */
#define WHEEL_SLIDER 2 /**< AES will convert mouse wheel events to slider events */
/* window elements */
#define W_BOX 0 /**< widget index of ???, see #WF_COLOR */
#define W_TITLE 1 /**< widget index of ???, see #WF_COLOR */
#define W_CLOSER 2 /**< widget index of ???, see #WF_COLOR */
#define W_NAME 3 /**< widget index of ???, see #WF_COLOR */
#define W_FULLER 4 /**< widget index of ???, see #WF_COLOR */
#define W_INFO 5 /**< widget index of ???, see #WF_COLOR */
#define W_DATA 6 /**< widget index of ???, see #WF_COLOR */
#define W_WORK 7 /**< widget index of ???, see #WF_COLOR */
#define W_SIZER 8 /**< widget index of ???, see #WF_COLOR */
#define W_VBAR 9 /**< widget index of ???, see #WF_COLOR */
#define W_UPARROW 10 /**< widget index of ???, see #WF_COLOR */
#define W_DNARROW 11 /**< widget index of ???, see #WF_COLOR */
#define W_VSLIDE 12 /**< widget index of ???, see #WF_COLOR */
#define W_VELEV 13 /**< widget index of ???, see #WF_COLOR */
#define W_HBAR 14 /**< widget index of ???, see #WF_COLOR */
#define W_LFARROW 15 /**< widget index of ???, see #WF_COLOR */
#define W_RTARROW 16 /**< widget index of ???, see #WF_COLOR */
#define W_HSLIDE 17 /**< widget index of ???, see #WF_COLOR */
#define W_HELEV 18 /**< widget index of ???, see #WF_COLOR */
#define W_SMALLER 19 /**< widget index of ???, see #WF_COLOR */
#define W_BOTTOMER 20 /**< widget index of ???, see #WF_COLOR */
#define W_HIDER 30 /**< widget index of ???, see #WF_COLOR */
/* arrow message */
#define WA_UPPAGE 0 /**< Page Up, see #WM_ARROWED */
#define WA_DNPAGE 1 /**< Page Down, see #WM_ARROWED */
#define WA_UPLINE 2 /**< Row Up, see #WM_ARROWED */
#define WA_DNLINE 3 /**< Row Down, see #WM_ARROWED */
#define WA_LFPAGE 4 /**< Page Left , see #WM_ARROWED */
#define WA_RTPAGE 5 /**< Page Right, see #WM_ARROWED */
#define WA_LFLINE 6 /**< Column Left, see #WM_ARROWED */
#define WA_RTLINE 7 /**< Column Right, see #WM_ARROWED */
#define WA_WHEEL 8 /**< deprecated (introduced in XaAES release 0.964) */
/* wind_update flags */
#define END_UPDATE 0 /**< release the screen lock, see mt_wind_update() */
#define BEG_UPDATE 1 /**< lock the screen, see mt_wind_update() */
#define END_MCTRL 2 /**< release the mouse control to the AES, see mt_wind_update() */
#define BEG_MCTRL 3 /**< mouse button message only sent to the application, see mt_wind_update() */
#define NO_BLOCK 0x100 /**< prevent the application from blocking, see mt_wind_update()*/
/* graf_mouse mouse types */
#define ARROW 0 /**< see mt_graf_mouse() */
#define TEXT_CRSR 1 /**< see mt_graf_mouse() */
#define BEE 2 /**< see mt_graf_mouse() */
#define BUSY_BEE BEE /**< alias for #BEE */
#define BUSYBEE BEE /**< alias for #BEE */
#define HOURGLASS 2 /**< see mt_graf_mouse() */
#define POINT_HAND 3 /**< see mt_graf_mouse() */
#define FLAT_HAND 4 /**< see mt_graf_mouse() */
#define THIN_CROSS 5 /**< see mt_graf_mouse() */
#define THICK_CROSS 6 /**< see mt_graf_mouse() */
#define OUTLN_CROSS 7 /**< see mt_graf_mouse() */
#define USER_DEF 255 /**< see mt_graf_mouse() */
#define M_OFF 256 /**< see mt_graf_mouse() */
#define M_ON 257 /**< see mt_graf_mouse() */
#define M_SAVE 258 /**< see mt_graf_mouse() */
#define M_RESTORE 259 /**< see mt_graf_mouse() */
#define M_LAST 260 /**< see mt_graf_mouse() */
#define M_PREVIOUS M_LAST /**< alias for #M_LAST */
#define M_FORCE 0x8000 /**< see mt_graf_mouse() */
/* objects - general */
#define ROOT 0 /**< index of the root object of a formular */
#define MAX_LEN 81 /* max string length */ /**< TODO */
#define MAX_DEPTH 8 /* max depth of search or draw */ /**< TODO */
/* inside fill patterns */
#define IP_HOLLOW 0 /**< TODO */
#define IP_1PATT 1 /**< TODO */
#define IP_2PATT 2 /**< TODO */
#define IP_3PATT 3 /**< TODO */
#define IP_4PATT 4 /**< TODO */
#define IP_5PATT 5 /**< TODO */
#define IP_6PATT 6 /**< TODO */
#define IP_SOLID 7 /**< TODO */
/* font types */
#define GDOS_PROP 0 /**< TODO */
#define GDOS_MONO 1 /**< TODO */
#define GDOS_BITM 2 /**< TODO */
#define IBM 3 /**< TODO */
#define SMALL 5 /**< TODO */
/* object types */
#define G_BOX 20 /**< TODO */
#define G_TEXT 21 /**< TODO */
#define G_BOXTEXT 22 /**< TODO */
#define G_IMAGE 23 /**< TODO */
#define G_USERDEF 24 /**< TODO */
#define G_PROGDEF G_USERDEF /**< TODO */
#define G_IBOX 25 /**< TODO */
#define G_BUTTON 26 /**< TODO */
#define G_BOXCHAR 27 /**< TODO */
#define G_STRING 28 /**< TODO */
#define G_FTEXT 29 /**< TODO */
#define G_FBOXTEXT 30 /**< TODO */
#define G_ICON 31 /**< TODO */
#define G_TITLE 32 /**< TODO */
#define G_CICON 33 /**< TODO */
/* extended object types, MagiC only */
#define G_SWBUTTON 34 /**< TODO */
#define G_POPUP 35 /**< TODO */
#define G_WINTITLE 36 /**< TODO */
#define G_EDIT 37 /**< TODO */
#define G_SHORTCUT 38 /**< TODO */
/* object flags */
#define OF_NONE 0x0000 /**< TODO */
#define OF_SELECTABLE 0x0001 /**< TODO */
#define OF_DEFAULT 0x0002 /**< TODO */
#define OF_EXIT 0x0004 /**< TODO */
#define OF_EDITABLE 0x0008 /**< TODO */
#define OF_RBUTTON 0x0010 /**< TODO */
#define OF_LASTOB 0x0020 /**< TODO */
#define OF_TOUCHEXIT 0x0040 /**< TODO */
#define OF_HIDETREE 0x0080 /**< TODO */
#define OF_INDIRECT 0x0100 /**< TODO */
#define OF_FL3DIND 0x0200 /* bit 9 */ /**< TODO */
#define OF_FL3DBAK 0x0400 /* bit 10 */ /**< TODO */
#define OF_FL3DACT 0x0600 /**< TODO */
#define OF_SUBMENU 0x0800 /* bit 11 */ /**< TODO */
#define OF_FLAG11 OF_SUBMENU /**< TODO */
#define OF_FLAG12 0x1000 /**< TODO */
#define OF_FLAG13 0x2000 /**< TODO */
#define OF_FLAG14 0x4000 /**< TODO */
#define OF_FLAG15 0x8000 /**< TODO */
/* Object states */
#define OS_NORMAL 0x0000 /**< TODO */
#define OS_SELECTED 0x0001 /**< TODO */
#define OS_CROSSED 0x0002 /**< TODO */
#define OS_CHECKED 0x0004 /**< TODO */
#define OS_DISABLED 0x0008 /**< TODO */
#define OS_OUTLINED 0x0010 /**< TODO */
#define OS_SHADOWED 0x0020 /**< TODO */
#define OS_WHITEBAK 0x0040 /**< TODO */
#define OS_DRAW3D 0x0080 /**< TODO */
#define OS_STATE08 0x0100 /**< TODO */
#define OS_STATE09 0x0200 /**< TODO */
#define OS_STATE10 0x0400 /**< TODO */
#define OS_STATE11 0x0800 /**< TODO */
#define OS_STATE12 0x1000 /**< TODO */
#define OS_STATE13 0x2000 /**< TODO */
#define OS_STATE14 0x4000 /**< TODO */
#define OS_STATE15 0x8000 /**< TODO */
/* Object colors - default pall. */
#define G_WHITE 0 /**< TODO */
#define G_BLACK 1 /**< TODO */
#define G_RED 2 /**< TODO */
#define G_GREEN 3 /**< TODO */
#define G_BLUE 4 /**< TODO */
#define G_CYAN 5 /**< TODO */
#define G_YELLOW 6 /**< TODO */
#define G_MAGENTA 7 /**< TODO */
#define G_LWHITE 8 /**< TODO */
#define G_LBLACK 9 /**< TODO */
#define G_LRED 10 /**< TODO */
#define G_LGREEN 11 /**< TODO */
#define G_LBLUE 12 /**< TODO */
#define G_LCYAN 13 /**< TODO */
#define G_LYELLOW 14 /**< TODO */
#define G_LMAGENTA 15 /**< TODO */
#ifdef __GEMLIB_OLDNAMES
/* object flags */
#define NONE 0x0000 /**< TODO */
#define SELECTABLE 0x0001 /**< TODO */
#define DEFAULT 0x0002 /**< TODO */
#define EXIT 0x0004 /**< TODO */
#define EDITABLE 0x0008 /**< TODO */
#define RBUTTON 0x0010 /**< TODO */
#define LASTOB 0x0020 /**< TODO */
#define TOUCHEXIT 0x0040 /**< TODO */
#define HIDETREE 0x0080 /**< TODO */
#define INDIRECT 0x0100 /**< TODO */
#define FL3DIND 0x0200 /* bit 9 */ /**< TODO */
#define FL3DBAK 0x0400 /* bit 10 */ /**< TODO */
#define FL3DACT 0x0600 /**< TODO */
#define SUBMENU 0x0800 /* bit 11 */ /**< TODO */
#define FLAG11 SUBMENU /**< TODO */
#define FLAG12 0x1000 /**< TODO */
#define FLAG13 0x2000 /**< TODO */
#define FLAG14 0x4000 /**< TODO */
#define FLAG15 0x8000 /**< TODO */
/* Object states */
#define NORMAL 0x0000 /**< TODO */
#define SELECTED 0x0001 /**< TODO */
#define CROSSED 0x0002 /**< TODO */
#define CHECKED 0x0004 /**< TODO */
#define DISABLED 0x0008 /**< TODO */
#define OUTLINED 0x0010 /**< TODO */
#define SHADOWED 0x0020 /**< TODO */
#define WHITEBAK 0x0040 /**< TODO */
#define DRAW3D 0x0080 /**< TODO */
#define STATE08 0x0100 /**< TODO */
#define STATE09 0x0200 /**< TODO */
#define STATE10 0x0400 /**< TODO */
#define STATE11 0x0800 /**< TODO */
#define STATE12 0x1000 /**< TODO */
#define STATE13 0x2000 /**< TODO */
#define STATE14 0x4000 /**< TODO */
#define STATE15 0x8000 /**< TODO */
/* Object colors - default pall. */
#define WHITE 0 /**< TODO */
#define BLACK 1 /**< TODO */
#define RED 2 /**< TODO */
#define GREEN 3 /**< TODO */
#define BLUE 4 /**< TODO */
#define CYAN 5 /**< TODO */
#define YELLOW 6 /**< TODO */
#define MAGENTA 7 /**< TODO */
#define LWHITE 8 /**< TODO */
#define LBLACK 9 /**< TODO */
#define LRED 10 /**< TODO */
#define LGREEN 11 /**< TODO */
#define LBLUE 12 /**< TODO */
#define LCYAN 13 /**< TODO */
#define LYELLOW 14 /**< TODO */
#define LMAGENTA 15 /**< TODO */
#endif
/* editable text field definitions */
#define ED_START 0 /**< Reserved. Do not use, see mt_objc_edit() */
#define ED_INIT 1 /**< turn ON the cursor, see mt_objc_edit() */
#define ED_CHAR 2 /**< insert a character in the editable field, see mt_objc_ecit() */
#define ED_END 3 /**< turn OFF the cursor, see mt_objc_edit() */
#define EDSTART ED_START /**< alias */
#define EDINIT ED_INIT /**< alias */
#define EDCHAR ED_CHAR /**< alias */
#define EDEND ED_END /**< alias */
#define ED_CRSR 100 /**< TO BE COMPLETED (MagiC), see mt_objc_edit() */
#define ED_DRAW 103 /**< TO BE COMPLETED (MagiC), see mt_objc_edit() */
/* editable text justification */
#define TE_LEFT 0 /**< TODO */
#define TE_RIGHT 1 /**< TODO */
#define TE_CNTR 2 /**< TODO */
/* objc_change modes */
#define NO_DRAW 0 /**< object will not be redrawn, see mt_objc_change() */
#define REDRAW 1 /**< object will be redrawn, see mt_objc_change() */
/* objc_order modes */
#define OO_LAST -1 /**< make object the last child, see mt_objc_order() */
#define OO_FIRST 0 /**< make object the first child, see mt_objc_order() */
/* objc_sysvar modes */
#define SV_INQUIRE 0 /**< inquire sysvar data, see mt_objc_sysvar() */
#define SV_SET 1 /**< set sysvar data, see mt_objc_sysvar() */
/* objc_sysvar values */
#define LK3DIND 1 /**< text of indicator object moves when selected, see mt_objc_sysvar() */
#define LK3DACT 2 /**< text of activator object moves when selected, see mt_objc_sysvar()*/
#define INDBUTCOL 3 /**< default color for indicator objects, see mt_objc_sysvar() */
#define ACTBUTCOL 4 /**< default color for activator objects, see mt_objc_sysvar() */
#define BACKGRCOL 5 /**< default color for background objects, see mt_objc_sysvar() */
#define AD3DVAL 6 /**< number of extra pixels to accomodate 3D effects, see mt_objc_sysvar() */
#define MX_ENABLE3D 10 /**< enable or disable the 3D look (MagiC 3), see mt_objc_sysvar() */
#define MENUCOL 11 /**< TO BE COMPLETED (MagiC 6), see mt_objc_sysvar() */
/** Mouse Form Definition Block, see mt_graf_mouse() */
typedef struct mouse_form
{
/** x-location of the mouse hot-spot.
* This value should be in the range 0 to 15 and defines what offset
* into the bitmap is actually the 'point'.
*/
short mf_xhot;
/** y-location of the mouse hot-spot.
* This value should be in the range 0 to 15 and defines what offset
* into the bitmap is actually the 'point'.
*/
short mf_yhot;
/** the number of bit-planes used by the mouse pointer.
* Currently, the value of 1 is the only legal value.
*/
short mf_nplanes;
/** palette index of the color used for the data.
* this data is usually 1.
*/
short mf_fg;
/** palette index of the color used for the mask
* this data is usually 0.
*/
short mf_bg;
/** array of 16 WORD's which define the mask
* portion of the mouse form
*/
short mf_mask[16];
/** array of 16 WORD's which define the data
* portion of the mouse form
*/
short mf_data[16];
} MFORM;
#ifndef __PXY
# define __PXY /**< TODO */
/** TODO */
typedef struct point_coord
{
short p_x; /**< TODO */
short p_y; /**< TODO */
} PXY;
#endif
#ifndef __GRECT
# define __GRECT /**< TODO */
/** TODO */
typedef struct graphic_rectangle
{
short g_x; /**< TODO */
short g_y; /**< TODO */
short g_w; /**< TODO */
short g_h; /**< TODO */
} GRECT;
#endif
/** TODO */
typedef struct objc_colorword
{
unsigned borderc : 4; /**< TODO */
unsigned textc : 4; /**< TODO */
unsigned opaque : 1; /**< TODO */
unsigned pattern : 3; /**< TODO */
unsigned fillc : 4; /**< TODO */
} OBJC_COLORWORD;
/** TODO */
typedef struct text_edinfo
{
char *te_ptext; /**< ptr to text */
char *te_ptmplt; /**< ptr to template */
char *te_pvalid; /**< ptr to validation chrs. */
short te_font; /**< font */
short te_fontid; /**< font id */
short te_just; /**< justification */
short te_color; /**< color information word */
short te_fontsize; /**< font size */
short te_thickness; /**< border thickness */
short te_txtlen; /**< length of text string */
short te_tmplen; /**< length of template string */
} TEDINFO;
/** TODO */
typedef struct icon_block
{
short *ib_pmask; /**< TODO */
short *ib_pdata; /**< TODO */
char *ib_ptext; /**< TODO */
short ib_char; /**< TODO */
short ib_xchar; /**< TODO */
short ib_ychar; /**< TODO */
short ib_xicon; /**< TODO */
short ib_yicon; /**< TODO */
short ib_wicon; /**< TODO */
short ib_hicon; /**< TODO */
short ib_xtext; /**< TODO */
short ib_ytext; /**< TODO */
short ib_wtext; /**< TODO */
short ib_htext; /**< TODO */
} ICONBLK;
/** TODO */
typedef struct bit_block
{
short *bi_pdata; /**< ptr to bit forms data */
short bi_wb; /**< width of form in bytes */
short bi_hl; /**< height in lines */
short bi_x; /**< source x in bit form */
short bi_y; /**< source y in bit form */
short bi_color; /**< fg color of blt */
} BITBLK;
/** TODO */
typedef struct cicon_data
{
short num_planes; /**< TODO */
short *col_data; /**< TODO */
short *col_mask; /**< TODO */
short *sel_data; /**< TODO */
short *sel_mask; /**< TODO */
struct cicon_data *next_res; /**< TODO */
} CICON;
/** TODO */
typedef struct cicon_blk
{
ICONBLK monoblk; /**< TODO */
CICON *mainlist; /**< TODO */
} CICONBLK;
/** TODO */
typedef struct
{
unsigned character : 8; /**< TODO */
signed framesize : 8; /**< TODO */
unsigned framecol : 4; /**< TODO */
unsigned textcol : 4; /**< TODO */
unsigned textmode : 1; /**< TODO */
unsigned fillpattern : 3; /**< TODO */
unsigned interiorcol : 4; /**< TODO */
} BFOBSPEC;
/** TODO */
struct user_block; /* forward declaration */
/** TODO */
typedef union obspecptr
{
long index; /**< TODO */
union obspecptr *indirect; /**< TODO */
BFOBSPEC obspec; /**< TODO */
TEDINFO *tedinfo; /**< TODO */
BITBLK *bitblk; /**< TODO */
ICONBLK *iconblk; /**< TODO */
CICONBLK *ciconblk; /**< TODO */
struct user_block *userblk; /**< TODO */
char *free_string; /**< TODO */
} OBSPEC;
/** TODO */
typedef struct object
{
short ob_next; /**< object's next sibling */
short ob_head; /**< head of object's children */
short ob_tail; /**< tail of object's children */
unsigned short ob_type; /**< type of object */
unsigned short ob_flags; /**< flags */
unsigned short ob_state; /**< state */
OBSPEC ob_spec; /**< object-specific data */
short ob_x; /**< upper left corner of object */
short ob_y; /**< upper left corner of object */
short ob_width; /**< width of obj */
short ob_height; /**< height of obj */
} OBJECT;
/** TODO */
typedef struct parm_block
{
OBJECT *pb_tree; /**< TODO */
short pb_obj; /**< TODO */
short pb_prevstate; /**< TODO */
short pb_currstate; /**< TODO */
short pb_x; /**< TODO */
short pb_y; /**< TODO */
short pb_w; /**< TODO */
short pb_h; /**< TODO */
short pb_xc; /**< TODO */
short pb_yc; /**< TODO */
short pb_wc; /**< TODO */
short pb_hc; /**< TODO */
long pb_parm; /**< TODO */
} PARMBLK;
/** TODO */
typedef struct user_block
{
short __CDECL (*ub_code)(PARMBLK *parmblock); /**< TODO */
long ub_parm; /**< TODO */
} USERBLK;
/** TODO */
typedef struct rshdr
{
short rsh_vrsn; /**< TODO */
unsigned short rsh_object; /**< TODO */
unsigned short rsh_tedinfo; /**< TODO */
unsigned short rsh_iconblk; /**< list of ICONBLKS */
unsigned short rsh_bitblk; /**< TODO */
unsigned short rsh_frstr; /**< TODO */
unsigned short rsh_string; /**< TODO */
unsigned short rsh_imdata; /**< image data */
unsigned short rsh_frimg; /**< TODO */
unsigned short rsh_trindex; /**< TODO */
short rsh_nobs; /**< counts of various structs */
short rsh_ntree; /**< TODO */
short rsh_nted; /**< TODO */
short rsh_nib; /**< TODO */
short rsh_nbb; /**< TODO */
short rsh_nstring; /**< TODO */
short rsh_nimages; /**< TODO */
unsigned short rsh_rssize; /**< total bytes in resource */
} RSHDR;
/** MENU structure, used by mt_menu_attach() and mt_menu_popup() */
typedef struct _menu
{
OBJECT *mn_tree; /**< Points to the OBJECT tree of the sub-menu */
short mn_menu; /**< Is an index to the parent object of the menu items. */
short mn_item; /**< Is the starting menu item */
short mn_scroll; /**< contains one of the following values:
- #SCROLL_NO , the menu will not scroll.
- #SCROLL_YES , if the number of menu
items exceed the menu scroll height, arrows
will appear which allow the user to scroll
selections.
- #SCROLL_LISTBOX to display a drop-down list
instead of a popup menu, see mt_menu_popup() */
short mn_keystate; /**< key state */
} MENU;
/** TODO */
typedef struct
{
short m_out; /**< TODO */
short m_x; /**< TODO */
short m_y; /**< TODO */
short m_w; /**< TODO */
short m_h; /**< TODO */
} MOBLK;
/** TODO */
typedef struct mouse_event_type
{
short *x; /**< TODO */
short *y; /**< TODO */
short *b; /**< TODO */
short *k; /**< TODO */
} MOUSE_EVENT;
/** structure comprising the most of the input arguments of mt_evnt_multi()
*/
typedef struct {
short emi_flags; /**< the event mask to watch */
short emi_bclicks; /**< see mt_evnt_multi() */
short emi_bmask; /**< see mt_evnt_multi() */
short emi_bstate; /**< see mt_evnt_multi() */
short emi_m1leave; /**< TODO */
GRECT emi_m1; /**< the first rectangle to watch */
short emi_m2leave; /**< TODO */
GRECT emi_m2; /**< the second rectangle to watch */
short emi_tlow; /**< see mt_evnt_multi() */
short emi_thigh; /**< the timer 32-bit value of interval split into short type member */
} EVMULT_IN;
/** structure comprising the output arguments of mt_evnt_multi()
*
* @note For undocumented members consult the mt_evnt_multi() documentation.
*/
typedef struct {
short emo_events; /**< the bitfield of events occured (also a return value of mt_evnt_multi_fast() */
PXY emo_mouse; /**< TODO */
short emo_mbutton; /**< TODO */
short emo_kmeta; /**< TODO */
short emo_kreturn; /**< TODO */
short emo_mclicks; /**< TODO */
} EVMULT_OUT;
#endif
#ifdef __GEMLIB_AES
/*******************************************************************************
* The AES bindings from old aesbind.h
*/
/** @addtogroup a_appl
* @{
*/
short mt_appl_bvset (short bvdisk, short bvhard, short *global_aes);
short mt_appl_control (short ap_cid, short ap_cwhat, void *ap_cout, short *global_aes);
short mt_appl_exit (short *global_aes);
short mt_appl_find (const char *name, short *global_aes);
short mt_appl_getinfo (short type,
short *out1, short *out2, short *out3, short *out4, short *global_aes);
short mt_appl_getinfo_str (short type,
char *out1, char *out2, char *out3, char *out4, short *global_aes);
short mt_appl_init (short *global_aes);
short mt_appl_read (short ap_id, short length, void *ap_pbuff, short *global_aes);
short mt_appl_search (short mode, char *fname, short *type, short *ap_id, short *global_aes);
short mt_appl_tplay (void *mem, short num, short scale, short *global_aes);
short mt_appl_trecord (void *mem, short count, short *global_aes);
short mt_appl_write (short ap_id, short length, void *ap_pbuff, short *global_aes);
short mt_appl_yield (short *global_aes);
/**@}*/
/** @addtogroup a_evnt
* @{
*/
short mt_evnt_button (short Clicks, short WhichButton, short WhichState,
short *Mx, short *My, short *ButtonState, short *KeyState, short *global_aes);
short mt_evnt_dclick (short ToSet, short SetGet, short *global_aes);
short mt_evnt_keybd (short *global_aes);
short mt_evnt_mesag (short MesagBuf[], short *global_aes);
short mt_evnt_mouse (short EnterExit, short InX, short InY, short InW, short InH,
short *OutX, short *OutY, short *ButtonState, short *KeyState, short *global_aes);
short mt_evnt_multi (short Type, short Clicks, short WhichButton, short WhichState,
short EnterExit1, short In1X, short In1Y, short In1W, short In1H,
short EnterExit2, short In2X, short In2Y, short In2W, short In2H,
short MesagBuf[], unsigned long Interval, short *OutX, short *OutY,
short *ButtonState, short *KeyState, short *Key, short *ReturnCount, short *global_aes);
short mt_evnt_multi_fast (const EVMULT_IN * em_i,
short MesagBuf[], EVMULT_OUT * em_o, short *global_aes);
short mt_evnt_timer (unsigned long Interval, short *global_aes);
/**@}*/
/** @addtogroup a_form
* @{
*/
short mt_form_alert (short DefButton, const char *Str, short *global_aes);
short mt_form_button (OBJECT *, short Bobject, short Bclicks, short *Bnxtobj, short *global_aes);
short mt_form_center (OBJECT *, short *Cx, short *Cy, short *Cw, short *Ch, short *global_aes);
short mt_form_center_grect (OBJECT *, GRECT *r, short *global_aes);
short mt_form_dial (short Flag, short Sx, short Sy, short Sw, short Sh,
short Bx, short By, short Bw, short Bh, short *global_aes);
short mt_form_do (OBJECT *, short StartObj, short *global_aes);
short mt_form_error (short ErrorCode, short *global_aes);
short mt_form_keybd (OBJECT *, short Kobject, short Kobnext, short Kchar,
short *Knxtobject, short *Knxtchar, short *global_aes);
/**@}*/
/** @addtogroup a_fsel
* @{
*/
/** callback function used by BoxKite file selector. See mt_fsel_boxinput() */
typedef void __CDECL (* FSEL_CALLBACK)( short *msg);
short mt_fsel_exinput (char *path, char *file, short *exit_button, const char *title, short *global);
short mt_fsel_input (char *path, char *file, short *exit_button, short *global);
short mt_fsel_boxinput(char *path, char *file, short *exit_button, const char *title, FSEL_CALLBACK callback, short *global);
/**@}*/
/** @addtogroup a_graf
* @{
*/
short mt_graf_dragbox (short Sw, short Sh, short Sx, short Sy, short Bx, short By, short Bw, short Bh, short *Fw, short *Fh, short *global_aes);
short mt_graf_growbox (short Sx, short Sy, short Sw, short Sh, short Fx, short Fy, short Fw, short Fh, short *global_aes);
short mt_graf_growbox_grect (const GRECT *in, const GRECT *out, short *global_aes);
short mt_graf_handle (short *Wchar, short *Hchar, short *Wbox, short *Hbox, short *global_aes);
short mt_graf_xhandle (short *Wchar, short *Hchar, short *Wbox, short *Hbox, short * device, short *global_aes);
short mt_graf_mbox (short Sw, short Sh, short Sx, short Sy, short Dx, short Dy, short *global_aes);
short mt_graf_mkstate (short *Mx, short *My, short *ButtonState, short *KeyState, short *global_aes);
short mt_graf_mouse (short Form, const MFORM *FormAddress, short *global_aes);
short mt_graf_rubberbox (short Ix, short Iy, short Iw, short Ih, short *Fw, short *Fh, short *global_aes);
short mt_graf_multirubber (short bx, short by, short mw, short mh, GRECT *rec, short *rw, short *rh, short *global_aes);
short mt_graf_shrinkbox (short Fx, short Fy, short Fw, short Fh, short Sx, short Sy, short Sw, short Sh, short *global_aes);
short mt_graf_shrinkbox_grect (const GRECT *in, const GRECT *out, short *global_aes);
short mt_graf_slidebox (OBJECT *, short Parent, short Object, short Direction, short *global_aes);
short mt_graf_watchbox (OBJECT *, short Object, short InState, short OutState, short *global_aes);
short mt_graf_wwatchbox (OBJECT *, short Object, short InState, short OutState, short whandle, short *global_aes);
/**@}*/
/** @addtogroup a_menu
* @{
*/
short mt_menu_attach (short me_flag, OBJECT *me_tree, short me_item, MENU *me_mdata, short *global);
short mt_menu_bar (OBJECT *me_tree, short me_mode, short *global);
short mt_menu_click (short click, short setit, short *global);
short mt_menu_icheck (OBJECT *me_tree, short me_item, short me_check, short *global);
short mt_menu_ienable (OBJECT *me_tree, short me_item, short me_enable, short *global);
short mt_menu_istart (short me_flag, OBJECT *me_tree, short me_imenu, short me_item, short *global);
short mt_menu_popup (MENU *me_menu, short me_xpos, short me_ypos, MENU *me_mdata, short *global);
short mt_menu_register (short ap_id, char *me_text, short *global);
short mt_menu_settings (short me_flag, MN_SET *me_values, short *global);
short mt_menu_text (OBJECT *me_tree, short me_item, char *me_text, short *global);
short mt_menu_tnormal (OBJECT *me_tree, short me_item, short me_normal, short *global);
short mt_menu_unregister (short id, short *global);
/**@}*/
/** @addtogroup a_objc
* @{
*/
short mt_objc_add (OBJECT *, short Parent, short Child, short *global);
short mt_objc_change (OBJECT *, short Object, short Res,
short Cx, short Cy, short Cw, short Ch,
short NewState,short Redraw, short *global_aes);
short mt_objc_delete (OBJECT *, short Object, short *global_aes);
short mt_objc_draw (OBJECT *, short Start, short Depth,
short Cx, short Cy, short Cw, short Ch, short *global_aes);
short mt_objc_draw_grect (OBJECT *, short Start, short Depth, const GRECT *r, short *global_aes);
short mt_objc_edit (OBJECT *, short Object, short Char, short *Index, short Kind, short *global_aes);
short mt_objc_find (OBJECT *, short Start, short Depth, short Mx, short My, short *global_aes);
short mt_objc_xfind (OBJECT *, short Start, short Depth, short Mx, short My, short *global_aes);
short mt_objc_offset (OBJECT *, short Object, short *X, short *Y, short *global_aes);
short mt_objc_order (OBJECT *, short Object, short NewPos, short *global_aes);
short mt_objc_sysvar (short mode, short which, short in1, short in2, short *out1, short *out2, short *global_aes);
/**@}*/
/** @addtogroup a_rsrc
* @{
*/
short mt_rsrc_free (short *global_aes);
short mt_rsrc_gaddr (short Type, short Index, void *Address, short *global_aes);
short mt_rsrc_load (const char *Name, short *global_aes);
short mt_rsrc_obfix (OBJECT *, short Index, short *global_aes);
short mt_rsrc_rcfix (void *rc_header, short *global_aes);
short mt_rsrc_saddr (short Type, short Index, void *Address, short *global_aes);
/**@}*/
/** @addtogroup a_scrp
* @{
*/
short mt_scrp_clear (short *global_aes);
short mt_scrp_read (char *Scrappath, short *global_aes);
short mt_scrp_write (const char *Scrappath, short *global_aes);
/**@}*/
/** @addtogroup a_shel
* @{
*/
short mt_shel_envrn (char **result, const char *param, short *global_aes);
short mt_shel_find (char *buf, short *global_aes);
short mt_shel_get (char *Buf, short Len, short *global_aes);
short mt_shel_help (short sh_hmode, const char *sh_hfile, const char *sh_hkey, short *global_aes);
short mt_shel_put (const char *Buf, short Len, short *global_aes);
short mt_shel_rdef (char *lpcmd, char *lpdir, short *global_aes);
short mt_shel_read (char *Command, char *Tail, short *global_aes);
short mt_shel_wdef (const char *lpcmd, const char *lpdir, short *global_aes);
short mt_shel_write (short Exit, short Graphic, short Aes, void *Command, char *Tail, short *global_aes);
/**@}*/
/** @addtogroup a_wind
* @{
*/
short mt_wind_calc (short Type, short Parts, short InX, short InY, short InW, short InH, short *OutX, short *OutY, short *OutW, short *OutH, short *global_aes);
short mt_wind_close (short WindowHandle, short *global_aes);
short mt_wind_create (short Parts, short Wx, short Wy, short Ww, short Wh, short *global_aes);
short mt_wind_xcreate (short Parts, short Wx, short Wy, short Ww, short Wh, short *OutX, short *OutY, short *OutW, short *OutH, short *global_aes);
short mt_wind_delete (short WindowHandle, short *global_aes);
short mt_wind_draw (short WindowHandle, short startob, short *global_aes);
short mt_wind_find (short X, short Y, short *global_aes);
short mt_wind_get (short WindowHandle, short What, short *W1, short *W2, short *W3, short *W4, short *global_aes);
short mt_wind_new (short *global_aes);
short mt_wind_open (short WindowHandle, short Wx, short Wy, short Ww, short Wh, short *global_aes);
short mt_wind_set (short WindowHandle, short What, short W1, short W2, short W3, short W4, short *global_aes);
short mt_wind_update (short Code, short *global_aes);
/*
* Some useful extensions
*/
short mt_wind_calc_grect (short Type, short Parts, const GRECT *In, GRECT *Out, short *global_aes);
short mt_wind_create_grect (short Parts, const GRECT *r, short *global_aes);
short mt_wind_xcreate_grect (short Parts, const GRECT *r, GRECT *ret, short *global_aes);
short mt_wind_get_grect (short WindowHandle, short What, GRECT *r, short *global_aes);
short mt_wind_xget_grect (short WindowHandle, short What, const GRECT *clip, GRECT *r, short *global_aes);
short mt_wind_open_grect (short WindowHandle, const GRECT *r, short *global_aes);
short mt_wind_set_grect (short WindowHandle, short What, const GRECT *r, short *global_aes);
short mt_wind_xset_grect (short WindowHandle, short What, const GRECT *s, GRECT *r, short *global_aes);
short mt_wind_set_str (short WindowHandle, short What, const char *str, short *global_aes);
/**@}*/
/** @addtogroup a_util
* @{
*/
short rc_copy (const GRECT *src, GRECT *dst);
short rc_equal (const GRECT *r1, const GRECT *r2);
short rc_intersect (const GRECT *src, GRECT *dst);
GRECT * array_to_grect (const short *array, GRECT *area);
short * grect_to_array (const GRECT *area, short *array);
/**@}*/
/** @addtogroup AES
* @{
*/
/*
* aes trap interface
*/
/* Array sizes in aes control block */
/** size of the aes_control[] array */
#define AES_CTRLMAX 5
/** size of the aes_global[] array */
#define AES_GLOBMAX 16
/** size of the aes_intin[] array */
#define AES_INTINMAX 16
/** size of the aes_intout[] array */
#define AES_INTOUTMAX 16
/** size of the aes_addrin[] array */
#define AES_ADDRINMAX 16
/** size of the aes_addrout[] array */
#define AES_ADDROUTMAX 16
/** AES version number */
#define mt_AESversion(aes_global) (aes_global[0])
/** Number of concurrent applications possible (normally 1).
MultiTOS will return -1. */
#define mt_AESnumapps(aes_global) (aes_global[1])
/** Application identifier (same as mt_appl_init() return value). */
#define mt_AESapid(aes_global) (aes_global[2])
/** LONG global available for use by the application */
#define mt_AESappglobal(aes_global) (*((long *)&aes_global[3]))
/** Pointer to the base of the resource loaded via mt_rsrc_load(). */
#define mt_AESrscfile(aes_global) ((OBJECT **)(*((long *)&aes_global[5])))
/** Current maximum character used by the AES to do vst_height() prior to
writing to the screen. This entry is only present as of AES version 0x0400.*/
#define mt_AESmaxchar(aes_global) (aes_global[13])
/** Current minimum character used by the AES to do vst_height() prior to
writing to the screen. This entry is only present as of AES version 0x0400.*/
#define mt_AESminchar(aes_global) (aes_global[14])
/** AES parameter block structure */
typedef struct
{
short *control; /**< aes_control[] array */
short *global; /**< aes_global[] array */
const short *intin; /**< aes_intin[] array */
short *intout; /**< aes_intout[] array */
const long *addrin; /**< aes_addrin[] array */
long *addrout; /**< aes_addrout[] array */
} AESPB;
/** perform AES trap */
extern void aes (AESPB *pb);
/**@}*/
#endif /* AES */
#ifdef __GEMLIB_DEFS
/*******************************************************************************
* The VDI specific stuff from old gemfast.h
*/
/* normal graphics drawing modes */
#define MD_REPLACE 1 /**< TODO */
#define MD_TRANS 2 /**< TODO */
#define MD_XOR 3 /**< TODO */
#define MD_ERASE 4 /**< TODO */
/* bit blt rules */
#define ALL_WHITE 0 /**< TODO */
#define S_AND_D 1 /**< TODO */
#define S_AND_NOTD 2 /**< TODO */
#define S_ONLY 3 /**< TODO */
#define NOTS_AND_D 4 /**< TODO */
#define D_ONLY 5 /**< TODO */
#define S_XOR_D 6 /**< TODO */
#define S_OR_D 7 /**< TODO */
#define NOT_SORD 8 /**< TODO */
#define NOT_SXORD 9 /**< TODO */
#define D_INVERT 10 /**< TODO */
#define NOT_D 10 /**< TODO */
#define S_OR_NOTD 11 /**< TODO */
#define NOT_S 12 /**< TODO */
#define NOTS_OR_D 13 /**< TODO */
#define NOT_SANDD 14 /**< TODO */
#define ALL_BLACK 15 /**< TODO */
/* v_bez modes */
#define BEZ_BEZIER 0x01 /**< TODO */
#define BEZ_POLYLINE 0x00 /**< TODO */
#define BEZ_NODRAW 0x02 /**< TODO */
/* v_bit_image modes */
#define IMAGE_LEFT 0 /**< TODO */
#define IMAGE_CENTER 1 /**< TODO */
#define IMAGE_RIGHT 2 /**< TODO */
#define IMAGE_TOP 0 /**< TODO */
#define IMAGE_BOTTOM 2 /**< TODO */
/* v_justified modes */
#define NOJUSTIFY 0 /**< TODO */
#define JUSTIFY 1 /**< TODO */
/* vq_color modes */
#define COLOR_REQUESTED 0 /**< TODO */
#define COLOR_ACTUAL 1 /**< TODO */
/* return values for vq_vgdos() inquiry */
#define GDOS_NONE (-2L) /* no GDOS installed */ /**< TODO */
#define GDOS_FSM 0x5F46534DL /* '_FSM' */ /**< TODO */
#define GDOS_FNT 0x5F464E54L /* '_FNT' */ /**< TODO */
/* vqin_mode & vsin_mode modes */
#define VINMODE_LOCATOR 1 /**< TODO */
#define VINMODE_VALUATOR 2 /**< TODO */
#define VINMODE_CHOICE 3 /**< TODO */
#define VINMODE_STRING 4 /**< TODO */
#ifdef __GEMLIB_OLDNAMES
#define LOCATOR 1 /**< TODO */
#define VALUATOR 2 /**< TODO */
#define CHOICE 3 /**< TODO */
#define STRING 4 /**< TODO */
#endif
/* vqt_cachesize modes */
#define CACHE_CHAR 0 /**< TODO */
#define CACHE_MISC 1 /**< TODO */
/* vqt_devinfo return values */
#define DEV_MISSING 0 /**< TODO */
#define DEV_INSTALLED 1 /**< TODO */
/* vqt_name return values */
#define BITMAP_FONT 0 /**< TODO */
/* vsf_interior modes */
#define FIS_HOLLOW 0 /**< TODO */
#define FIS_SOLID 1 /**< TODO */
#define FIS_PATTERN 2 /**< TODO */
#define FIS_HATCH 3 /**< TODO */
#define FIS_USER 4 /**< TODO */
/* vsf_perimeter modes */
#define PERIMETER_OFF 0 /**< TODO */
#define PERIMETER_ON 1 /**< TODO */
/* vsl_ends modes */
#define SQUARE 0 /**< TODO */
#define ARROWED 1 /**< TODO */
#define ROUND 2 /**< TODO */
/* other names */
#define LE_SQUARED SQUARE /**< TODO */
#define LE_ARROWED ARROWED /**< TODO */
#define LE_ROUNDED ROUND /**< TODO */
/* vsl_type modes */
#define SOLID 1 /**< TODO */
#define LDASHED 2 /**< TODO */
#define DOTTED 3 /**< TODO */
#define DASHDOT 4 /**< TODO */
#define DASH 5 /**< TODO */
#define DASHDOTDOT 6 /**< TODO */
#define USERLINE 7 /**< TODO */
/* other names */
#define LT_SOLID SOLID /**< TODO */
#define LT_LONGDASH LDASHED /**< TODO */
#define LT_DOTTED DOTTED /**< TODO */
#define LT_DASHDOT DASHDOT /**< TODO */
#define LT_DASHED DASH /**< TODO */
#define LT_DASHDOTDOT DASHDOTDOT /**< TODO */
#define LT_USERDEF USERLINE /**< TODO */
#define LONGDASH LDASHED /**< TODO */
#define DOT DOTTED /**< TODO */
#define DASH2DOT DASHDOTDOT /**< TODO */
/* vsm_type modes */
#define MRKR_DOT 1 /**< TODO */
#define MRKR_PLUS 2 /**< TODO */
#define MRKR_ASTERISK 3 /**< TODO */
#define MRKR_BOX 4 /**< TODO */
#define MRKR_CROSS 5 /**< TODO */
#define MRKR_DIAMOND 6 /**< TODO */
/* other names */
#define MT_DOT MRKR_DOT /**< TODO */
#define MT_PLUS MRKR_PLUS /**< TODO */
#define MT_ASTERISK MRKR_ASTERISK /**< TODO */
#define MT_SQUARE MRKR_BOX /**< TODO */
#define MT_DCROSS MRKR_CROSS /**< TODO */
#define MT_DIAMOND MRKR_DIAMOND /**< TODO */
/* vst_alignment modes */
#define TA_LEFT 0 /* horizontal */ /**< TODO */
#define TA_CENTER 1 /**< TODO */
#define TA_RIGHT 2 /**< TODO */
#define TA_BASE 0 /* vertical */ /**< TODO */
#define TA_HALF 1 /**< TODO */
#define TA_ASCENT 2 /**< TODO */
#define TA_BOTTOM 3 /**< TODO */
#define TA_DESCENT 4 /**< TODO */
#define TA_TOP 5 /**< TODO */
/* vst_charmap modes */
#define MAP_BITSTREAM 0 /**< TODO */
#define MAP_ATARI 1 /**< TODO */
#define MAP_UNICODE 2 /* for vst_map_mode, NVDI 4 */ /**< TODO */
/* vst_effects modes */
#define TXT_NORMAL 0x0000 /**< TODO */
#define TXT_THICKENED 0x0001 /**< TODO */
#define TXT_LIGHT 0x0002 /**< TODO */
#define TXT_SKEWED 0x0004 /**< TODO */
#define TXT_UNDERLINED 0x0008 /**< TODO */
#define TXT_OUTLINED 0x0010 /**< TODO */
#define TXT_SHADOWED 0x0020 /**< TODO */
/* other names */
#define TF_NORMAL TXT_NORMAL /**< TODO */
#define TF_THICKENED TXT_THICKENED /**< TODO */
#define TF_LIGHTENED TXT_LIGHT /**< TODO */
#define TF_SLANTED TXT_SKEWED /**< TODO */
#define TF_UNDERLINED TXT_UNDERLINED /**< TODO */
#define TF_OUTLINED TXT_OUTLINED /**< TODO */
#define TF_SHADOWED TXT_SHADOWED /**< TODO */
/* vst_error modes */
#define APP_ERROR 0 /**< TODO */
#define SCREEN_ERROR 1 /**< TODO */
/* vst_error return values */
#define NO_ERROR 0 /**< TODO */
#define CHAR_NOT_FOUND 1 /**< TODO */
#define FILE_READERR 8 /**< TODO */
#define FILE_OPENERR 9 /**< TODO */
#define BAD_FORMAT 10 /**< TODO */
#define CACHE_FULL 11 /**< TODO */
#define MISC_ERROR (-1) /**< TODO */
/* vst_kern tmodes */
#define TRACK_NONE 0 /**< TODO */
#define TRACK_NORMAL 1 /**< TODO */
#define TRACK_TIGHT 2 /**< TODO */
#define TRACK_VERYTIGHT 3 /**< TODO */
/* vst_kern pmodes */
#define PAIR_OFF 0 /**< TODO */
#define PAIR_ON 1 /**< TODO */
/* vst_scratch modes */
#define SCRATCH_BOTH 0 /**< TODO */
#define SCRATCH_BITMAP 1 /**< TODO */
#define SCRATCH_NONE 2 /**< TODO */
/* v_updwk return values */
#define SLM_OK 0x00 /**< TODO */
#define SLM_ERROR 0x02 /**< TODO */
#define SLM_NOTONER 0x03 /**< TODO */
#define SLM_NOPAPER 0x04 /**< TODO */
/** VDI Memory Form Definition Block */
typedef struct memory_form
{
void *fd_addr; /**< TODO */
short fd_w; /**< Form Width in Pixels */
short fd_h; /**< Form Height in Pixels */
short fd_wdwidth; /**< Form Width in shorts(fd_w/sizeof(short) */
short fd_stand; /**< Form format 0= device spec 1=standard */
short fd_nplanes; /**< Number of memory planes */
short fd_r1; /**< Reserved */
short fd_r2; /**< Reserved */
short fd_r3; /**< Reserved */
} MFDB;
/** RGB intesities in promille */
typedef struct rgb_1000
{
short red; /**< Red-Intensity in range [0..1000] */
short green; /**< Green-Intensity in range [0..1000] */
short blue; /**< Blue-Intensity in range [0..1000] */
} RGB1000;
#endif
#ifdef __GEMLIB_VDI
/*******************************************************************************
* The VDI bindings from old vdibind.h
*/
typedef short VdiHdl; /**< for better readability */
/*
* attribute functions
*/
/** @addtogroup v_attr
* @{
*/
void vs_color (VdiHdl , short color_idx, short rgb[]);
short vswr_mode (VdiHdl , short mode);
short vsf_color (VdiHdl , short color_idx);
short vsf_interior (VdiHdl , short style);
short vsf_perimeter (VdiHdl , short vis);
short vsf_xperimeter(VdiHdl , short vis, short style);
short vsf_style (VdiHdl , short style);
void vsf_udpat (VdiHdl , short pat[], short planes);
short vsl_color (VdiHdl , short color_idx);
void vsl_ends (VdiHdl , short begstyle, short endstyle);
short vsl_type (VdiHdl , short style);
void vsl_udsty (VdiHdl , short pat);
short vsl_width (VdiHdl , short width);
short vsm_color (VdiHdl , short color_idx);
short vsm_height (VdiHdl , short height);
short vsm_type (VdiHdl , short symbol);
void vst_alignment (VdiHdl , short hin, short vin, short *hout, short *vout);
short vst_color (VdiHdl , short color_idx);
short vst_effects (VdiHdl , short effects);
void vst_error (VdiHdl , short mode, short *errorvar);
short vst_font (VdiHdl , short font);
void vst_height (VdiHdl , short height, short *charw, short *charh,
short *cellw, short *cellh);
short vst_point (VdiHdl , short point, short *charw, short *charh,
short *cellw, short *cellh);
short vst_rotation (VdiHdl , short ang);
void vst_scratch (VdiHdl , short mode);
/**@}*/
/*
* control functions
*/
/** @addtogroup v_ctrl
* @{
*/
void v_clrwk (VdiHdl );
void v_clsvwk (VdiHdl );
void v_clswk (VdiHdl );
short v_flushcache (VdiHdl );
short v_loadcache (VdiHdl , const char *filename, short mode);
void v_opnvwk (short work_in[], VdiHdl *, short work_out[]);
void v_opnwk (short work_in[], VdiHdl *, short work_out[]);
short v_savecache (VdiHdl , const char *filename);
void v_set_app_buff (VdiHdl , void *buf_p, short size);
void v_updwk (VdiHdl );
void vs_clip (VdiHdl , short clip_flag, short pxy[]);
void vs_clip_pxy (VdiHdl , PXY pxy[]);
void vs_clip_off (VdiHdl );
short vst_load_fonts (VdiHdl , short /* select */);
void vst_unload_fonts (VdiHdl , short /* select */);
/**@}*/
/*
* escape functions
*/
/** @addtogroup v_escp
* @{
*/
void v_bit_image (VdiHdl , const char *filename, short aspect,
short x_scale, short y_scale,
short h_align, short v_align, short *pxy);
void v_clear_disp_list (VdiHdl );
short v_copies (VdiHdl , short count);
void v_dspcur (VdiHdl , short x, short y);
void v_form_adv (VdiHdl );
void v_hardcopy (VdiHdl );
short v_orient (VdiHdl , short orientation);
void v_output_window (VdiHdl , short *pxy);
short v_page_size (VdiHdl , short page_id);
void v_rmcur (VdiHdl );
short v_trays (VdiHdl , short input, short output,
short *set_input, short *set_output);
short vq_calibrate (VdiHdl , short *flag);
short vq_page_name (VdiHdl , short page_id, char *page_name,
long *page_width, long *page_height);
void vq_scan (VdiHdl , short *g_slice, short *g_page,
short *a_slice, short *a_page, short *div_fac);
short vq_tabstatus (VdiHdl );
short vq_tray_names (VdiHdl , char *input_name, char *output_name,
short *input, short *output);
short vs_calibrate (VdiHdl , short flag, short *rgb);
short vs_palette (VdiHdl , short palette);
void v_sound (VdiHdl, short freq, short duration);
short vs_mute (VdiHdl, short action);
void vq_tdimensions (VdiHdl , short *xdimension, short *ydimension);
void vt_alignment (VdiHdl , short dx, short dy);
void vt_axis (VdiHdl , short xres, short yres, short *xset, short *yset);
void vt_origin (VdiHdl , short xorigin, short yorigin);
void vt_resolution (VdiHdl , short xres, short yres, short *xset, short *yset);
void v_meta_extents (VdiHdl , short min_x, short min_y,
short max_x, short max_y);
void v_write_meta (VdiHdl , short numvdi_intin, short *avdi_intin,
short num_ptsin, short *a_ptsin);
void vm_coords (VdiHdl , short llx, short lly, short urx, short ury);
void vm_filename (VdiHdl , const char *filename);
void vm_pagesize (VdiHdl , short pgwidth, short pgheight);
void vsc_expose (VdiHdl , short state);
void vsp_film (VdiHdl , short color_idx, short lightness);
short vqp_filmname (VdiHdl , short _index, char * name);
void v_offset (VdiHdl , short offset);
void v_fontinit (VdiHdl , const void * font_header);
void v_escape2000 (VdiHdl , short times);
void v_alpha_text (VdiHdl , const char *str);
void v_curdown (VdiHdl );
void v_curhome (VdiHdl );
void v_curleft (VdiHdl );
void v_curright (VdiHdl );
void v_curtext (VdiHdl , const char *str);
void v_curup (VdiHdl );
void v_eeol (VdiHdl );
void v_eeos (VdiHdl );
void v_enter_cur (VdiHdl );
void v_exit_cur (VdiHdl );
void v_rvoff (VdiHdl );
void v_rvon (VdiHdl );
void vq_chcells (VdiHdl , short *n_rows, short *n_cols);
void vq_curaddress (VdiHdl , short *cur_row, short *cur_col);
void vs_curaddress (VdiHdl , short row, short col);
/** alternative name for vs_curaddress */
#define v_curaddress vs_curaddress
/**@}*/
/*
* inquiry functions
*/
/** @addtogroup v_inqr
* @{
*/
void vq_cellarray (VdiHdl , short pxy[], short row_len, short nrows,
short *el_used, short *rows_used,
short *status, short color[]);
short vq_color (VdiHdl , short color_idx, short flag, short rgb[]);
void vq_extnd (VdiHdl , short flag, short work_out[]);
void vqf_attributes (VdiHdl , short atrib[]);
void vqin_mode (VdiHdl , short dev, short *mode);
void vql_attributes (VdiHdl , short atrib[]);
void vqm_attributes (VdiHdl , short atrib[]);
void vqt_attributes (VdiHdl , short atrib[]);
void vqt_cachesize (VdiHdl , short which_cache, long *size);
void vqt_extent (VdiHdl , const char *str, short extent[]);
void vqt_extent16 (VdiHdl , const short *wstr, short extent[]);
void vqt_extent16n (VdiHdl , const short *wstr, short num, short extent[]);
void vqt_fontinfo (VdiHdl , short *minade, short *maxade, short distances[],
short *maxwidth, short effects[]);
void vqt_get_table (VdiHdl , short **map);
short vqt_name (VdiHdl , short element, char *name);
short vqt_width (VdiHdl , short chr, short *cw,
short *ldelta, short *rdelta);
/** TODO */
short vq_gdos (void);
/** TODO */
long vq_vgdos (void);
/**@}*/
/*
* input function
*/
/** @addtogroup v_inpt
* @{
*/
void v_hide_c (VdiHdl );
void v_show_c (VdiHdl , short reset);
void vex_butv (VdiHdl , void *pusrcode, void **psavcode);
void vex_curv (VdiHdl , void *pusrcode, void **psavcode);
void vex_motv (VdiHdl , void *pusrcode, void **psavcode);
void vex_wheelv (VdiHdl , void *pusrcode, void **psavcode);
void vex_timv (VdiHdl , void *time_addr,
void **otime_addr, short *time_conv);
void vq_key_s (VdiHdl , short *state);
void vq_mouse (VdiHdl , short *pstatus, short *x, short *y);
void vrq_choice (VdiHdl , short cin, short *cout);
void vrq_locator (VdiHdl , short x, short y,
short *xout, short *yout, short *term);
void vrq_string (VdiHdl , short len, short echo, short echoxy[], char *str);
void vrq_valuator (VdiHdl , short in, short *out, short *term);
void vsc_form (VdiHdl , short form[]);
short vsin_mode (VdiHdl , short dev, short mode);
short vsm_choice (VdiHdl , short *choice);
short vsm_locator (VdiHdl , short x, short y,
short *xout, short *yout, short *term);
short vsm_string (VdiHdl , short len, short echo, short echoxy[], char *str);
void vsm_valuator (VdiHdl , short in, short *out, short *term, short *status);
/**@}*/
/*
* output functions
*/
/** @addtogroup v_outp
* @{
*/
void v_arc (VdiHdl , short x, short y,
short radius, short begang, short endang);
void v_bar (VdiHdl , short pxy[]);
void v_cellarray (VdiHdl , short pxy[], short row_length, short elements,
short nrows, short write_mode, short colarray[]);
void v_circle (VdiHdl , short x, short y, short radius);
void v_contourfill (VdiHdl , short x, short y, short color_idx);
void v_ellarc (VdiHdl , short x, short y, short xrad, short yrad,
short begang, short endang);
void v_ellipse (VdiHdl , short x, short y, short xrad, short yrad);
void v_ellpie (VdiHdl , short x, short y, short xrad, short yrad,
short begang, short endang);
void v_fillarea (VdiHdl , short count, short pxy[]);
void v_gtext (VdiHdl , short x, short y, const char *str);
void v_gtext16 (VdiHdl , short x, short y, const short *wstr);
void v_gtext16n (VdiHdl , PXY pos, const short *wstr, short num);
void v_justified (VdiHdl , short x, short y, const char *str,
short len, short word_space, short char_space);
void v_pieslice (VdiHdl , short x, short y,
short radius, short begang, short endang);
void v_pline (VdiHdl , short count, short pxy[]);
void v_pmarker (VdiHdl , short count, short pxy[]);
void v_rbox (VdiHdl , short pxy[]);
void v_rfbox (VdiHdl , short pxy[]);
void vr_recfl (VdiHdl , short pxy[]);
/**@}*/
/*
* raster functions
*/
/** @addtogroup v_rstr
* @{
*/
void v_get_pixel (VdiHdl , short x, short y, short *pel, short *color_idx);
void vr_trnfm (VdiHdl , MFDB *src, MFDB *dst);
void vro_cpyfm (VdiHdl , short mode, short pxy[], MFDB *src, MFDB *dst);
void vrt_cpyfm (VdiHdl , short mode, short pxy[], MFDB *src, MFDB *dst,
short color[]);
/**@}*/
/*
* Some usefull extensions.
*/
/** @addtogroup v_util
* @{
*/
void vdi_array2str (const short *src, char *des, short len);
short vdi_str2array (const char *src, short *des);
short vdi_wstrlen (const short *wstr);
/**@}*/
/*
* vdi trap interface
*/
/** @addtogroup VDI
* @{
*/
/* Array sizes in vdi control block */
#define VDI_CNTRLMAX 15 /**< max size of vdi_control[] */
#define VDI_INTINMAX 1024 /**< max size of vdi_intin[] */
#define VDI_INTOUTMAX 256 /**< max size of vdi_intout[] */
#define VDI_PTSINMAX 256 /**< max size of vdi_ptsin[] */
#define VDI_PTSOUTMAX 256 /**< max size of vdi_ptsout[] */
/** TODO */
typedef struct
{
short *control; /**< TODO */
const short *intin; /**< TODO */
const short *ptsin; /**< TODO */
short *intout; /**< TODO */
short *ptsout; /**< TODO */
} VDIPB;
/** TODO */
void vdi (VDIPB *pb);
/**@}*/
#endif /* VDI */
__END_DECLS
#endif /* _MT_GEMLIB_H_ */