README for 5/9/1999 build of the AES ==================================== New in this build: * SETTINGS.APP can set colour schemes and window decorations. Three sample .CFG files have been included to demonstrate what it is capable of. * Bug fixes. New in last build: * xapp_getinfo() * "selected" colour icons are shaded - previously there was no difference in appearance. New functionality over DR GEM/3 =============================== fsel_exinput() - like fsel_input(), but takes a title as an extra parameter. xgrf_colour() - set desktop colours xgrf_dtmfdb() - set desktop image prop_get() - get settings from global properties file prop_put() - save setting to global properties file prop_del() - delete setting from global properties file xapp_getinfo() - Implementation of the Atari appl_getinfo() function For details of the parameters to these calls, see my current build of the GEM PTK. New functionality not yet in the PTK ==================================== The window decorations can be changed using wind_set() and wind_get(). This is how: #define WF_OBFLAG 1001 /* Window tree: flag words */ #define WF_OBTYPE 1002 /* Window tree: type words */ #define WF_OBSPEC 1003 /* Window tree: spec dwords */ wind_get(n, WF_OBFLAG, &a, &b, &c, &d) - a = object flags for decoration "n" wind_get(n, WF_OBTYPE, &a, &b, &c, &d) - a = object type of decoration "n" wind_get(n, WF_OBSPEC, &a, &b, &c, &d) - (b<<16)|a = spec of decoration "n" wind_set(n, WF_OBFLAG, a, b, c, d) - Set flags for decoration "n" to "a" wind_set(n, WF_OBSPEC, a, b, c, d) - Set spec of decoration "n" to (b<<16)|a The "n" parameter is one of: gemlib.h:#define W_BOX 0 outline gemlib.h:#define W_TITLE 1 titlebar outline gemlib.h:#define W_CLOSER 2 close box gemlib.h:#define W_NAME 3 titlebar gemlib.h:#define W_FULLER 4 full-size box gemlib.h:#define W_INFO 5 info bar gemlib.h:#define W_DATA 6 work area outline gemlib.h:#define W_WORK 7 work area gemlib.h:#define W_SIZER 8 resize box gemlib.h:#define W_VBAR 9 vertical scroll bar outline gemlib.h:#define W_UPARROW 10 scroll up box gemlib.h:#define W_DNARROW 11 scroll down box gemlib.h:#define W_VSLIDE 12 vertical scroll bar gemlib.h:#define W_VELEV 13 scroll thumb gemlib.h:#define W_HBAR 14 horizontal scroll bar outline gemlib.h:#define W_LFARROW 15 scroll left box gemlib.h:#define W_RTARROW 16 scroll right box gemlib.h:#define W_HSLIDE 17 horizontal scroll bar gemlib.h:#define W_HELEV 18 horizontal scroll bar thumb For more information, see the source of SETTINGS.APP. How to detect this version of the AES: ====================================== Create a variable of type X_BUF_V2 (see obdefs.h) - for example: X_BUF_V2 var; Initialise it to 0, and set its length member correctly: memset(&var, 0, sizeof(var)); var.buf_len = sizeof(var); Then pass the address of var to appl_init(), in addr_in[0]. This may require the binding to be rewritten; my Pacific and DJGPP ones have been updated to use this form of binding. On return, the following values will be set: var.buf_len = actual size of buffer returned. var.arch = 0 for DRI GEM, 16 for this version of GEM, 32 for any future 32-bit AES. var.cc = far address of the colour structures. These are set by the xgrf_colour() call (no. 132) but until now there has been no mechanism to read their values. var.w_active = far address of the object tree GEM uses to draw window decorations. This is so the glyphs on the buttons can be changed at runtime (eg, to the GEM/1 set). NB: The "resize" button in the bottom right-hand corner of the window is set programmatically and cannot be changed by this method. Use of this field is deprecated; you should use wind_set() and wind_get() instead. var.info = far pointer to a 0-terminated string (max. 40 characters) containing information about the AES. For 'about' boxes and similar. var.abilities = bitmapped field. Currently three bits are used: Bit 0 (ABLE_GETINFO) - supports an Atari-style xapp_getinfo(). Set on 8/8/1999 & later builds. Bit 1 (ABLE_PROP) - supports prop_get(), prop_put() and prop_del(). Set on 25/7/1999 & later builds. Bit 2 (ABLE_WTREE) - able dynamically to alter the window decorations using wind_get() and wind_set(). Set on 5/9/1999 & later builds.