4 Data Structures

Global data structures and types are listed alphabetically below. Some data structures used by only a few routines or by only one or two classes are documented within those routines or classes.

4.1 Data Structures A-E


AddUndoActionFlags

typedef WordFlags AddUndoActionFlags;
#define AUAF_NOTIFY_BEFORE_FREEING							0x8000
#define AUAF_NOTIFY_IF_FREED_WITHOUT_BEING_PLAYED_BACK		0x4000

AddUndoActionStruct

typedef struct {
	UndoActionStruct 			AUAS_data;
	optr 						AUAS_output;
	AddUndoActionFlags 			AUAS_flags;
} AddUndoActionStruct;

The “undo” structures work together to provide information vital to processes which will be working with undo events.


AppAttachFlags

typedef WordFlags AppAttachFlags;
	#define AAF_RESTORING_FROM_STATE		0x8000
	#define AAF_STATE_FILE_PASSED			0x4000
	#define AAF_DATA_FILE_PASSED			0x2000

These flags are passed to the process when the application is launching or being restored from a state file. The flags indicate whether the application is being launched from a state file, has a state file, and/or has a data file.

Note that if AAF_RESTORING_FROM_STATE is set, then AAF_STATE_FILE_PASSED will also be set.


AppInstanceReference

typedef struct {
	/* AIR_fileName:
	 * Application being launched. Pathname is relative to application 
	 * directory (which, of course, may be overriden with a direct path
	 * to the application). */
	PathName 				AIR_fileName;
	/* AIR_stateFile:
	 * State filename. File is assumed to be in standard directory for
	 * GEOS state files. If the first byte is "0", then there is no
	 * state file for this application. This structure is copied into the
	 * field as an aid in restarting applications, and if it comes across
	 * one with this byte as 0, it will not restart it. */
	FileLongName 			AIR_stateFile;
	/* AIR_diskHandle:
	 * Disk handle for app (passed in) IF 0, use System disk, if -1, use
	 * AIR_diskName. In the field, if this is a placeholder structure, this
	 * word is the handle of the application object we are waiting to detach. */
	DiskHandle 				AIR_diskHandle;
	/* AIR_savedDiskData:
	 * Start of data stored by DiskSave when instance is saved to state file. */
	byte 					AIR_savedDiskData[1];
} AppInstanceReference;

AppLaunchBlock

typedef struct {
	/* ALB_appRef:
	 * Instance reference. Contains full pathname to application, as 
	 * referenced from app directory, plus the name of a state file. 
	 * Is enough info to launch application again, restored. (State file 
	 * need not be passed to GeodeLoad) */
	AppInstanceReference 	ALB_appRef;
	/* ALB_appMode:
	 * Application attach mode method. Should be one of the following:
	 * MSG_GEN_PROCESS_RESTORE_FROM_STATE:
	 *	 	State file must be passed; no data file should be passed.
	 * MSG_GEN_PROCESS_OPEN_APPLICATION:
	 *	 	State file normally should not be passed, although one could be to
	 *	 	accomplish ui templates. A data file may be passed into the 
	 *	 	application as well.
	 * MSG_GEN_PROCESS_OPEN_ENGINE:
	 *	 	State file normally should not be passed. The data file on which the 
	 *	 	engine will operate must be passed. If zero, the default data file 
	 *	 	should be used (enforced by app, not GenProcessClass).*/
	Message 				ALB_appMode;
	/* ALB_launchFlags:
	 * Miscellaneous flags to specify desired application launch type. */
	AppLaunchFlags 			ALB_launchFlags;
	/* ALB_diskHandle:
	 * Disk handle for data path. (Set as application's current path in 
	 * GenProcess' MSG_META_ATTACH handler.) */
	MemHandle 				ALB_diskHandle;
	/* ALB_path:
	 * Data path for application to use as initial path. (Usually this is 
	 * a directory of any data file passed.) (Set as application current
	 * path in GenProcess' MSG_META_ATTACH handler.)
	char 					ALB_path[PATH_BUFFER_SIZE];
	/* ALB_dataFile:
	 * Name of data file passed in to be opened (0 if none). Pathname is 
	 * relative to above path. */
	char 					ALB_dataFile[PATH_BUFFER_SIZE];
	/* ALB_genParent:
	 * Generic parent for new application (0 to put on default field). (Should 
	 * be passed NULL to MSG_GEN_FIELD_LAUNCH_APPLICATION).
	optr 					ALB_genParent;
	/* ALB_userLoadAckOutput, ALB_userLoadAckMessage:
	 * Together, these form an Action Descriptor which will be activated when 
	 * the application has been launched (used in conjunction with 
	 * ALF_SEND_LAUNCH_REQUEST_TO_UI_TO_HANDLE). (Set to NULL/0 if you don't 
	 * want to send anything). 
	 * The acknowledgement will come with three arguments: the GeodeHandle 
	 * (non-NULL if successful), a word value which will be zero if there was
	 * an error, and the word value set in ALB_userLoackAckID (below).*/
	optr 					ALB_userLoadAckOutput;
	Message 				ALB_userLoadAckMessage;
	/* ALB_userLoadAckID:
	 * ID sent out via above action descriptor, if any. */
	word 					ALB_userLoadAckID;
	/* ALB_extraData:
	 * Extra data to send to process (possibly a handle to 
	 * block containing arguments). */
	word 					ALB_extraData;
} AppLaunchBlock;

This structure is used when an application is first starting up. It is an argument of various messages which will be intercepted by system classes. The first fields (ALB_appRef, ALB_appMode, ALB_launchFlags, and ALB_uiLevel) are preserved in the application’s state file. The other information must be set correctly on launch.


AppLaunchFlags

typedef ByteFlags AppLaunchFlags;
	#define ALF_SEND_LAUNCH_REQUEST_TO_UI_TO_HANDLE		0x80
	#define ALF_OPEN_IN_BACK							0x40

ApplicationStates

typedef ByteFlags ApplicationStates;
	#define AS_QUITTING							0x80
	#define AS_DETACHING						0x40
	#define AS_FOCUSABLE 						0x20
	#define AS_MODELABLE 						0x10
	#define AS_NOT_USER_INTERACTABLE 			0x08
	#define AS_RECEIVED_APP_OBJECT_DETACH 		0x04
	#define AS_ATTACHED_TO_STATE_FILE 			0x02
	#define AS_ATTACHING 						0x01

ArcCloseType

typedef enum /* word */ {
	ACT_OPEN,
	ACT_CHORD,
	ACT_PIE
} ArcCloseType;

This structure is used when filling arcs.


AreaAttr

typedef struct {
	byte 			AA_colorFlag;
	RGBValue 		AA_color;
	SysDrawMask 	AA_mask;
	ColorMapMode	AA_mapMode;
} AreaAttr;

ArgumentStackElement

typedef struct {
	EvalStackArgumentType ASE_type;
	EvalStackArgumentData ASE_data;
} ArgumentStackElement;

BBFixed

typedef struct {
	byte BBF_frac;
	byte BBF_int;
} BBFixed;

This structure represents an 8.8 fixed point number.


BBFixedAsWord

typedef word BBFixedAsWord;

This structure represents an 8.8 fixed point number.


Bitmap

typedef struct {
	word	B_width;			/* In bitmap pixels */
	word	B_height;			/* In bitmap pixels */
	byte	B_compact;			/* A BMCompact value */
	byte	B_type;				/* A BMFormat | BMType value */
} Bitmap;

This data structure provides some information about a simple graphics bitmap. It normally acts as the header for a set of bitmap data.

The bitmap data itself is organized into scan lines. If the bitmap has a mask (if the BMT_MASK bit is set in the B_type field), the first information for the scan line will be its mask information. There will be one bit of mask information for each pixel in the scan line (i.e. a number of bits equal to the bitmap width). The actual bitmap data for the scan line starts at the next byte boundary. For each pixel there will be a number of bits of color data, said number depending on the BMFormat value in the B_type field. The data for the next scan line will begin at the next byte boundary.

Thus, a 7x7 bitmap depicting an inverse “x” might appear:

(Bitmap)	{7, 7, BMC_UNCOMPACTED, BMF_MONO };
(byte)[]	{0x82, 		/* 10000010 */
			 0x44, 		/* 01000100 */
			 0x28, 		/* 00101000 */
			 0x10, 		/* 00010000 */
			 0x28, 		/* 00101000 */
			 0x44, 		/* 01000100 */
			 0x82 }; 	/* 10000010 */

A 3x3 color “-“ shape with a a “+” shaped mask might appear:

(Bitmap)	{ 3, 3, BMC_UNCOMPACTED, 
			 (BMF_4BIT | BMT_MASK)};
(byte) []	{/* scan line 1: */
			 0x40, 			/* mask: 010 */
			 0, 0			/* data: 000 */

			 /* scan line 2: */
			 0xE0, 			/* mask: 111 */
			 0x43, 0x20, 	/* data: 432 */ 

			 /* scan line 3: */
			 0x40, 			/* mask: 010 */
			 0, 0 };		/* data: 000 */

If standard BMC_PACKBITS compression is used, then the mask (if any) and color data for the bitmap is compressed using the Macintosh PackBits standard. Under this system, to uncompress the data for a scan line, follow the loop:

  1. Read a byte.

  2. If the byte read in step (1) is between -1 and -127, read the next byte and copy it into the target buffer from +2 to +128 times.

  3. If the byte read in step (1) is between +1 and +127, read the next 1 to 127 bytes and copy them into the target buffer.

  4. If the byte read in step (1) is -128, ignore it.

  5. You’re ready to read in the next batch of data; go back to step (1).

Thus a 16x4 color “=” with a matching mask would appear:

(Bitmap) 	{15, 3, BMC_PACKBITS, BMF_4BIT | BMT_MASK } ;
(byte) []		{/* scan line 1: */
					/* mask: 2 repetitions of 0xff */
				 0xff, 0xff, 
					/* data: 16 repetitions of 0x14 */
				 0xf0, 0x14, 
				/* scan line 2: */
					/* mask: 2 repetitions of 0x00 */
					/* data: 16 repetitions of 0x00 */
					/* total: 18 repetitions of 0x00 */
				 0xee, 0x00, 
				/* scan line 3: */
					/* mask: 2 repetitions of 0x00 */
					/* data: 16 repetitions of 0x00 */
					/* total: 18 repetitions of 0x00 */
				 0xee, 0x00, 
				/* scan line 4: */
					/* mask: 2 repetitions of 0xff */
				 0xff, 0xff, 
					/* data: 16 repetitions of 0x14 */
				 0xf0, 0x14};

See Also: CBitmap.


BitmapMode

typedef WordFlags BitmapMode;
	#define BM_EDIT_MASK					0x0002
	#define BM_CLUSTERED_DITHER				0x0001

BLTMode

typedef enum /* word */ {
	BLTM_COPY,
	BLTM_MOVE,
	BLTM_CLEAR
} BLTMode;

BMCompact

typedef ByteEnum ByteCompact;
	#define BMC_UNCOMPACTED				0
	#define BMC_PACKBITS				1
	#define BMC_USER_DEFINED			0x80

This data structure is used to specify what sort of compaction is used to store a graphics bitmap.


BMDestroy

typedef ByteEnum BMDestroy;
	#define BMD_KILL_DATA				0
	#define BMD_LEAVE_DATA				1

BMFormat

typedef ByteEnum BMFormat
	#define BMF_MONO  0
	#define BMF_4BIT  1
	#define BMF_8BIT  2
	#define BMF_24BIT 3
	#define BMF_4CMYK 4 This enumerated type determines a graphics bitmap's depth.

BMType

typedef ByteFlags BMType;
	#define BMT_PALETTE				0x40
	#define BMT_HUGE 				0x20
	#define BMT_MASK 				0x10
	#define BMT_COMPLEX 			0x08
	#define BMT_FORMAT 				0x07 This structure is used to store various facts about a graphics bitmap.

Boolean

typedef word Boolean; Booleans represent true/false values. If the Boolean is *false*, it will evaluate  to zero; otherwise, it will be non-zero.

Button

typedef ByteEnum Button;
	#define BUTTON_0				0
	#define BUTTON_1				1
	#define BUTTON_2				2
	#define BUTTON_3				3

ButtonInfo

typedef ByteFlags ButtonInfo;
	#define BI_PRESS				0x80
	#define BI_DOUBLE_PRESS 		0x40
	#define BI_B3_DOWN 				0x20
	#define BI_B2_DOWN 				0x10
	#define BI_B1_DOWN 				0x08
	#define BI_B0_DOWN 				0x04
	#define BI_BUTTON 				0x03 This structure contains the state of a mouse's buttons.

####@ byte typedef unsigned char byte;


ByteEnum

typedef byte ByteEnum;

ByteFlags

typedef byte ByteFlags;

CallbackType

typedef ByteEnum CallbackType;
	#define CT_FUNCTION_TO_TOKEN		0
	#define CT_NAME_TO_TOKEN 			1
	#define CT_CHECK_NAME_EXISTS 		2
	#define CT_CHECK_NAME_SPACE 		3
	#define CT_EVAL_FUNCTION 			4
	#define CT_LOCK_NAME 				5
	#define CT_UNLOCK 					6
	#define CT_FORMAT_FUNCTION 			7
	#define CT_FORMAT_NAME 				8
	#define CT_CREATE_CELL				9
	#define CT_EMPTY_CELL 				10
	#define CT_NAME_TO_CELL 			11
	#define CT_FUNCTION_TO_CELL 		12
	#define CT_DEREF_CELL 				13
	#define CT_SPECIAL_FUNCTION 		14

CBitmap

typedef struct {
	Bitmap 	CB_simple;
	word 	CB_startScan;
	word 	CB_numScans;
	word 	CB_devInfo;
	word 	CB_data;
	word 	CB_palette;
	word 	CB_xres;
	word	CB_yres;
} CBitmap; The CBitmap structure contains the information for a "complex" bitmap. Use  the CBitmap structure to hold bitmaps which need to keep track of resolution  information, a palette, or a mask.

CellFunctionParameterFlags

typedef ByteFlags CellFunctionParameterFlags;
	#define CFPF_DIRTY			0x80 /* apps may read or change this. */
	#define CFPF_NO_FREE_COUNT	0x07

CellFunctionParameters

typedef struct {
	CellFunctionParameterFlags	CFP_flags;
	VMFileHandle				CFP_file;		/* File containing cells */
	VMBlockHandle				CFP_rowBlocks[N_ROW_BLOCKS];
} CellFunctionParameters;

This structure is used to pass specifics about a cell file to the cell library routines. Some of the data in the CellFunctionParameters structure is opaque to the application; others may be examined or changed by the application. The CellFunctionParameters structure contains the following fields:

CFP_flags - The cell library uses this byte for miscellaneous bookkeeping. When you create the structure, initialize this field to zero. There is only one flag which you should check or change; that is the flag CFPF_dirty. The cell library routines set this bit whenever they change the CellFunctionParameters structure, thus indicating that the structure ought to be resaved. After you save it, you may clear this bit.

CFP_file - This field must contain the VM file handle of the cell file. This field must be set each time you open the file.

CFP_rowBlocks - This field is an array of VM block handles, one for every existing or potential row block. The length of this array is N_ROW_BLOCKS (defined in cell.h). When you create a cell file, initialize all of these handles to zero; do not access or change this field thereafter.

Include: cell.h

Warnings: The cell library expects the CellFunctionParameters structure to remain motionless for the duration of a call. Therefore, if you allocate it as a DB item in the cell file, you must not have the structure be an ungrouped item.


CellRange

typedef struct {
	CellReference			CR_start;
	CellReference			CR_end;
} CellRange;

CellReference

typedef struct {
	CellRowColumn			CR_row;
	CellRowColumn			CR_column;
} CellReference;

CellRowColumn

typedef WordFlags CellRowColumn;
	#define CRC_ABSOLUTE				0x8000
	#define CRC_VALUE				0x7fff

CharacterSet

typedef ByteEnum CharacterSet;
	#define CS_BSW					0
	#define CS_CONTROL 				0xff
	#define CS_UI_FUNCS 			0xfe
	#define VC_ISANSI 				CS_BSW
	#define VC_ISCTRL 				CS_CONTROL
	#define VC_ISUI 				CS_UI_FUNCS

CharFlags

typedef ByteFlags CharFlags;
	#define CF_STATE_KEY				0x80
	#define CF_EXTENDED 				0x10
	#define CF_TEMP_ACCENT 				0x08
	#define CF_FIRST_PRESS 				0x04
	#define CF_REPEAT_PRESS 			0x02
	#define CF_RELEASE 					0x01

Chars

typedef ByteEnum Chars;
	#define C_NULL				0x0 /* NULL */
	#define C_CTRL_A			0x1 /* <ctrl>-A */
	#define C_CTRL_B			0x2 /* <ctrl>-B */
	#define C_CTRL_C			0x3 /* <ctrl>-C */
	#define C_CTRL_D			0x4 /* <ctrl>-D */
	#define C_CTRL_E			0x5 /* <ctrl>-E */
	#define C_CTRL_F			0x6 /* <ctrl>-F */
	#define C_CTRL_G			0x7 /* <ctrl>-G */
	#define C_CTRL_H			0x8 /* <ctrl>-H */
	#define C_TAB				0x9 /* TAB */
	#define C_LINEFEED			0xa /* LINE FEED */
	#define C_CTRL_K			0xb /* <ctrl>-K */
	#define C_CTRL_L			0xc /* <ctrl>-L */
	#define C_ENTER				0xd /* ENTER or CR */
	#define C_SHIFT_OUT			0xe /* <ctrl>-N */
	#define C_SHIFT_IN			0xf /* <ctrl>-O */
	#define C_CTRL_P			0x10 /* <ctrl>-P */
	#define C_CTRL_Q			0x11 /* <ctrl>-Q */
	#define C_CTRL_R			0x12 /* <ctrl>-R */
	#define C_CTRL_S			0x13 /* <ctrl>-S */
	#define C_CTRL_T			0x14 /* <ctrl>-T */
	#define C_CTRL_U			0x15 /* <ctrl>-U */
	#define C_CTRL_V			0x16 /* <ctrl>-V */
	#define C_CTRL_W			0x17 /* <ctrl>-W */
	#define C_CTRL_X			0x18 /* <ctrl>-X */
	#define C_CTRL_Y			0x19 /* <ctrl>-Y */
	#define C_CTRL_Z			0x1a /* <ctrl>-Z */
	#define C_ESCAPE			0x1b /* ESC */
	#define C_NULL_WIDTH		0x19 /* null width character */
	#define C_GRAPHIC			0x1a /* Graphic in text. */
	#define C_THINSPACE			0x1b /* 1/4 width space */
	#define C_ENSPACE			0x1c /* En-space, fixed width */
	#define C_EMSPACE			0x1d /* Em-space, fixed width. */
	#define C_NONBRKHYPHEN		0x1e /* Non breaking hyphen. */
	#define C_OPTHYPHEN			0x1f /* Optional hyphen, only drawn at eol */
	#define C_SPACE				` '
	#define C_EXCLAMATION		`!'
	#define C_QUOTE				`"'
	#define C_NUMBER_SIGN		`#'
	#define C_DOLLAR_SIGN		`$'
	#define C_PERCENT			`%'
	#define C_AMPERSAND			`&'
	#define C_SNG_QUOTE			0x27
	#define C_LEFT_PAREN		`('
	#define C_RIGHT_PAREN		`)'
	#define C_ASTERISK			`*'
	#define C_PLUS				`+'
	#define C_COMMA				`,'
	#define C_MINUS				`-'
	#define C_PERIOD			 '.'
	#define C_SLASH				`/'
	#define C_ZERO				`0'
	#define C_ONE				`1'
	#define C_TWO				`2'
	#define C_THREE 			`3'
	#define C_FOUR 				`4'
	#define C_FIVE 				`5'
	#define C_SIX 				`6'
	#define C_SEVEN 			`7'
	#define C_EIGHT 			`8'
	#define C_NINE 				`9'
	#define C_COLON 			`:'
	#define C_SEMICOLON 		`;'
	#define C_LESS_THAN 		`<'
	#define C_EQUAL 			`='
	#define C_GREATER_THAN 		`>'
	#define C_QUESTION_MARK 	`?'
	#define C_AT_SIGN			0x40
	#define C_CAP_A 			`A'
	#define C_CAP_B 			`B'
	#define C_CAP_C 			`C'
	#define C_CAP_D 			`D'
	#define C_CAP_E 			`E'
	#define C_CAP_F 			`F'		
	#define C_CAP_G 			`G'
	#define C_CAP_H 			`H'
	#define C_CAP_I 			`I'
	#define C_CAP_J 			`J'
	#define C_CAP_K 			`K'
	#define C_CAP_L 			`L'
	#define C_CAP_M 			`M'
	#define C_CAP_N 			`N'
	#define C_CAP_O 			`O'
	#define C_CAP_P 			`P'
	#define C_CAP_Q 			`Q'
	#define C_CAP_R 			`R'
	#define C_CAP_S 			`S'
	#define C_CAP_T 			`T'
	#define C_CAP_U 			`U'
	#define C_CAP_V 			`V'
	#define C_CAP_W 			`W'
	#define C_CAP_X 			`X'
	#define C_CAP_Y 			`Y'
	#define C_CAP_Z 			`Z'
	#define C_LEFT_BRACKET		`['
	#define C_BACKSLASH			0x5c
	#define C_RIGHT_BRACKET		`]'
	#define C_ASCII_CIRCUMFLEX	`^'
	#define C_UNDERSCORE		`_'
	#define C_BACKQUOTE			``'
	#define C_SMALL_A			`a'
	#define C_SMALL_B			`b'
	#define C_SMALL_C			`c'
	#define C_SMALL_D 			`d'
	#define C_SMALL_E 			`e'
	#define C_SMALL_F 			`f'
	#define C_SMALL_G 			`g'
	#define C_SMALL_H 			`h'
	#define C_SMALL_I 			`i'
	#define C_SMALL_J 			`j'
	#define C_SMALL_K 			`k'
	#define C_SMALL_L 			`l'
	#define C_SMALL_M 			`m'
	#define C_SMALL_N 			`n'
	#define C_SMALL_O 			`o'
	#define C_SMALL_P 			`p'
	#define C_SMALL_Q 			`q'
	#define C_SMALL_R 			`r'
	#define C_SMALL_S 			`s'
	#define C_SMALL_T 			`t'
	#define C_SMALL_U 			`u'
	#define C_SMALL_V 			`v'
	#define C_SMALL_W 			`w'
	#define C_SMALL_X 			`x'
	#define C_SMALL_Y 			`y'
	#define C_SMALL_Z 			`z'
	#define C_LEFT_BRACE 		`{'
	#define C_VERTICAL_BAR 		`|'
	#define C_RIGHT_BRACE 		`}'
	#define C_ASCII_TILDE 		`~'
	#define C_DELETE			0x7f
	#define C_UA_DIERESIS		0x80
	#define C_UA_RING			0x81
	#define C_UC_CEDILLA		0x82
	#define C_UE_ACUTE			0x83
	#define C_UN_TILDE			0x84
	#define C_UO_DIERESIS		0x85
	#define C_UU_DIERESIS		0x86
	#define C_LA_ACUTE			0x87
	#define C_LA_GRAVE			0x88
	#define C_LA_CIRCUMFLEX		0x89
	#define C_LA_DIERESIS		0x8a
	#define C_LA_TILDE			0x8b
	#define C_LA_RING			0x8c
	#define C_LC_CEDILLA		0x8d
	#define C_LE_ACUTE			0x8e
	#define C_LE_GRAVE			0x8f
	#define C_LE_CIRCUMFLEX		0x90
	#define C_LE_DIERESIS		0x91
	#define C_LI_ACUTE			0x92
	#define C_LI_GRAVE			0x93
	#define C_LI_CIRCUMFLEX		0x94
	#define C_LI_DIERESIS		0x95
	#define C_LN_TILDE			0x96
	#define C_LO_ACUTE			0x97
	#define C_LO_GRAVE			0x98
	#define C_LO_CIRCUMFLEX		0x99
	#define C_LO_DIERESIS		0x9a
	#define C_LO_TILDE			0x9b
	#define C_LU_ACUTE			0x9c
	#define C_LU_GRAVE			0x9d
	#define C_LU_CIRCUMFLEX		0x9e
	#define C_LU_DIERESIS		0x9f
	#define C_DAGGER			0xa0
	#define C_DEGREE			0xa1
	#define C_CENT				0xa2
	#define C_STERLING			0xa3
	#define C_SECTION			0xa4
	#define C_BULLET			0xa5
	#define C_PARAGRAPH			0xa6
	#define C_GERMANDBLS		0xa7
	#define C_REGISTERED		0xa8
	#define C_COPYRIGHT			0xa9
	#define C_TRADEMARK			0xaa
	#define C_ACUTE				0xab
	#define C_DIERESIS			0xac
	#define C_NOTEQUAL			0xad
	#define C_U_AE				0xae
	#define C_UO_SLASH			0xaf
	#define C_INFINITY			0xb0
	#define C_PLUSMINUS			0xb1
	#define C_LESSEQUAL			0xb2
	#define C_GREATEREQUAL		0xb3
	#define C_YEN				0xb4
	#define C_L_MU				0xb5
	#define C_L_DELTA			0xb6
	#define C_U_SIGMA			0xb7
	#define C_U_PI				0xb8
	#define C_L_PI				0xb9
	#define C_INTEGRAL			0xba
	#define C_ORDFEMININE		0xbb
	#define C_ORDMASCULINE		0xbc
	#define C_U_OMEGA			0xbd
	#define C_L_AE				0xbe
	#define C_LO_SLASH			0xbf
	#define C_QUESTIONDOWN		0xc0
	#define C_EXCLAMDOWN		0xc1
	#define C_LOGICAL_NOT		0xc2
	#define C_ROOT				0xc3
	#define C_FLORIN			0xc4
	#define C_APPROX_EQUAL		0xc5
	#define C_U_DELTA			0xc6
	#define C_GUILLEDBLLEFT		0xc7
	#define C_GUILLEDBLRIGHT	0xc8
	#define C_ELLIPSIS			0xc9
	#define C_NONBRKSPACE		0xca
	#define C_UA_GRAVE			0xcb
	#define C_UA_TILDE			0xcc
	#define C_UO_TILDE			0xcd
	#define C_U_OE				0xce
	#define C_L_OE				0xcf
	#define C_ENDASH			0xd0
	#define C_EMDASH			0xd1
	#define C_QUOTEDBLLEFT		0xd2
	#define C_QUOTEDBLRIGHT		0xd3
	#define C_QUOTESNGLEFT		0xd4
	#define C_QUOTESNGRIGHT		0xd5
	#define C_DIVISION			0xd6
	#define C_DIAMONDBULLET		0xd7
	#define C_LY_DIERESIS		0xd8
	#define C_UY_DIERESIS		0xd9
	#define C_FRACTION			0xda
	#define C_CURRENCY			0xdb
	#define C_GUILSNGLEFT		0xdc
	#define C_GUILSNGRIGHT		0xdd
	#define C_LY_ACUTE			0xde
	#define C_UY_ACUTE			0xdf
	#define C_DBLDAGGER			0xe0
	#define C_CNTR_DOT			0xe1
	#define C_SNGQUOTELOW		0xe2
	#define C_DBLQUOTELOW		0xe3
	#define C_PERTHOUSAND		0xe4
	#define C_UA_CIRCUMFLEX		0xe5
	#define C_UE_CIRCUMFLEX		0xe6
	#define C_UA_ACUTE			0xe7
	#define C_UE_DIERESIS		0xe8
	#define C_UE_GRAVE			0xe9
	#define C_UI_ACUTE			0xea
	#define C_UI_CIRCUMFLEX		0xeb
	#define C_UI_DIERESIS		0xec
	#define C_UI_GRAVE			0xed
	#define C_UO_ACUTE			0xee
	#define C_UO_CIRCUMFLEX		0xef
	#define C_LOGO				0xf0
	#define C_UO_GRAVE			0xf1
	#define C_UU_ACUTE			0xf2
	#define C_UU_CIRCUMFLEX		0xf3
	#define C_UU_GRAVE			0xf4
	#define C_LI_DOTLESS		0xf5
	#define C_CIRCUMFLEX		0xf6
	#define C_TILDE				0xf7
	#define C_MACRON			0xf8
	#define C_BREVE				0xf9
	#define C_DOTACCENT			0xfa
	#define C_RING				0xfb
	#define C_CEDILLA			0xfc
	#define C_HUNGARUMLAT		0xfd
	#define C_OGONEK			0xfe
	#define C_CARON				0xff
	/*
	 * common shortcuts for low 32 codes
	 */
	#define C_NUL				C_NULL
	#define C_STX				C_CTRL_B
	#define C_ETX				C_CTRL_C
	#define C_BEL				C_CTRL_G
	#define C_BS				C_CTRL_H
	#define C_HT				C_CTRL_I
	#define C_VT				C_CTRL_K
	#define C_FF				C_CTRL_L
	#define C_SO				C_CTRL_N
	#define C_SI				C_CTRL_O
	#define C_DC1				C_CTRL_Q
	#define C_DC2				C_CTRL_R
	#define C_DC3				C_CTRL_S
	#define C_DC4				C_CTRL_T
	#define C_CAN				C_CTRL_X
	#define C_EM				C_CTRL_Y
	#define C_ESC				C_ESCAPE
	/*
	 * Some alternative names
	 */
	#define C_CR				C_ENTER
	#define C_CTRL_M			C_ENTER
	#define C_CTRL_I			C_TAB
	#define C_CTRL_J			C_LINEFEED
	#define C_LF				C_LINEFEED
	#define C_CTRL_N			C_SHIFT_OUT
	#define C_CTRL_O			C_SHIFT_IN
	#define C_FS				C_ENSPACE
	#define C_FIELD_SEP			C_FS
	#define C_HYPHEN			C_MINUS
	#define C_GRAVE				C_BACKQUOTE
	#define C_PARTIAL_DIFF		C_L_DELTA
	#define C_SUM				C_U_SIGMA
	#define C_PRODUCT			C_U_PI
	#define C_RADICAL			C_ROOT
	#define C_LOZENGE			C_DIAMONDBULLET Text characters may be represented by the standard C type char or by the  GEOS type Chars. The difference shows up in debugging. If printing the value  of a string as char, then the debugger will output ASCII text. If the string is  treated as Chars, then the debugger will print out the constant names.

Include: char.h


ChunkArrayHeader

typedef struct {
	word	CAH_count;			/* # of elements in chunk array */
	word	CAH_elementSize;	/* Size of each element (in bytes) */
	word	CAH_curOffset;		/* For internal use only */
	word	CAH_offset;			/* Offset from start of chunk to first element */
} ChunkArrayHeader; Every chunk array begins with a **ChunkArrayHeader**. This structure  contains information about the chunk array. Applications should never  change the contents of the **ChunkArrayHeader**; only the chunk array  routines should do this. However, applications can examine the header if  they wish.

Contents: There are four word-length fields in the ChunkArrayHeader:

CAH_count - This word contains the number of elements in the chunk array.

CAH_elementSize - This word contains the size of each element (in bytes). If the elements are variable-sized, CAH_elementSize will be zero.

CAH_curOffset - This word is used by ChunkArrayEnum() for bookkeeping.

CAH_offset - This is the offset from the start of the chunk to the first element in the array.


ChunkHandle

typedef word ChunkHandle; Chunk handles are offsets into a local memory heap. To find the current  location of a chunk in an LMem heap, combine the segment address of the  heap with the chunk handle. From this location you can read the current  offset of the chunk itself.

See Also: optr, LMemDeref()


ChunkMapList

typedef struct {
	word	CML_source;
	word	CML_dest;
} ChunkMapList;

ClassFlags

typedef ByteFlags ClassFlags;
	#define CLASSF_HAS_DEFAULT						0x80
	#define CLASSF_MASTER_CLASS 						0x40
	#define CLASSF_VARIANT_CLASS 						0x20
	#define CLASSF_DISCARD_ON_SAVE 						0x10
	#define CLASSF_NEVER_SAVED						0x08
	#define CLASSF_HAS_RELOC 						0x04
	#define CLASSF_C_HANDLERS 						0x02 This record is stored in the **ClassStruct** structure's *Class_flags* field. These  flags are internal and may not be set or retrieved directly. See the entry on  **@class** for more information about these flags.

ClassStruct

typedef	struct	_ClassStruct {
	struct _ClassStruct *Class_superClass;	/* superclass pointer */
	word		Class_masterOffset;			/* offset to master offset in chunk */
	word 		Class_methodCount;			/* number of methods in this class */
	word 		Class_instanceSize;			/* size of entire master group */
	word 		Class_vdRelocTable;			/* offset to vardata relocation table */
	word 		Class_relocTable;			/* offset to relocation table */
	ClassFlags 	Class_flags;				/* a record of ClassFlags */
	byte 		Class_masterMessages;		/* internal flags for optimization */
} ClassStruct;

This is the structure that defines a class. It is internal and used only very rarely by anything other than the kernel and the UI.


ClipboardItemFlags

typedef WordFlags ClipboardItemFlags;
	#define CIF_QUICK				0x4000
	#define TIF_NORMAL				0x0000

ClipboardItemFormat

typedef enum /* word */ {
	CIF_TEXT,
	CIF_GRAPHICS_STRING,
	CIF_FILES,
	CIF_SPREADSHEET,
	CIF_INK,
	CIF_GROBJ,
	CIF_GEODEX,
	CIF_BITMAP,
	CIF_SOUND_SYNTH,
	CIF_SOUND_SAMPLE
} ClipboardItemFormat;

ClipboardItemFormatID

typedef dword ClipboardItemFormatID;

ClipboardItemFormatInfo

typedef struct {
	ClipboardItemFormatID		CIFI_format;
	word						CIFI_extra1;
	word						CIFI_extra2;
	VMChain						CIFI_vmChain;
	GeodeToken					CIFI_renderer;
} ClipboardItemFormatInfo;

ClipboardItemHeader

typedef struct {
	optr						CIH_owner;
	ClipboardItemFlags			CIH_flags;
	ClipboardItemNameBuffer		CIH_name;
	word						CIH_formatCount;
	optr						CIH_sourceID;
	FormatArray					CIH_formats;
	dword						CIH_reserved;
} ClipboardItemHeader;

ClipboardItemNameBuffer

typedef char ClipboardItemNameBuffer[CLIPBOARD_ITEM_NAME_LENGTH+1];

ClipboardQueryArgs

See ClipboardQueryItem().


ClipboardQuickNotifyFlags

typedef WordFlags ClipboardQuickNotifyFlags;
	#define CQNF_ERROR						0x8000
	#define CQNF_SOURCE_EQUAL_DEST 			0x4000
	#define CQNF_MOVE 						0x2000
	#define CQNF_COPY 						0x1000
	#define CQNF_NO_OPERATION 				0x0800
	#define CQNF_UNUSED 					0x04ff These flags give information about the success or failure of a quick transfer  operation.

ClipboardQuickTransferFeedback

typedef enum {
	CQTF_SET_DEFAULT,
	CQTF_CLEAR_DEFAULT,
	CQTF_MOVE,
	CQTF_COPY,
	CQTF_CLEAR
} ClipboardQuickTransferFeedback;

ClipboardQuickTransferFlags

typedef WordFlags ClipboardQuickTransferFlags;
	#define CQTF_IN_PROGRESS			0x8000
	#define CQTF_COPY_ONLY				0x4000
	#define CQTF_USE_REGION				0x2000
	#define CQTF_NOTIFICATION			0x1000

ClipboardQuickTransferRegionInfo

typedef struct {
	word	CQTRI_paramAX;
	word	CQTRI_paramBX;
	word	CQTRI_paramCX;
	word	CQTRI_paramDX;
	Point	CQTRI_regionPos;
	dword	CQTRI_strategy;
	dword	CQTRI_region;
} ClipboardQuickTransferRegionInfo;

ClipboardRequestArgs

See entry for ClipboardRequestItemFormat().


CMYKTransfer

typedef struct {
	byte	CMYKT_cyan[256];
	byte	CMYKT_magenta[256];
	byte	CMYKT_yellow[256];
	byte	CMYKT_black[256];
} CMYKTransfer;

Color

typedef ByteEnum Color;
	#define C_BLACK					0
	#define C_BLUE 					1
	#define C_GREEN 				2
	#define C_CYAN 					3
	#define C_RED 					4
	#define C_VIOLET 				5
	#define C_BROWN 				6
	#define C_LIGHT_GRAY 			7
	#define C_DARK_GRAY 			8
	#define C_LIGHT_BLUE 			9
	#define C_LIGHT_GREEN 			10
	#define C_LIGHT_CYAN 			11
	#define C_LIGHT_RED 			12
	#define C_LIGHT_VIOLET 			13
	#define C_YELLOW 				14
	#define C_WHITE 				15

	#define C_GRAY_0 				0x10
	#define C_GRAY_7 				0x11
	#define C_GRAY_13				0x12
	#define C_GRAY_20				0x13
	#define C_GRAY_27 				0x14
	#define C_GRAY_33 				0x15
	#define C_GRAY_40 				0x16
	#define C_GRAY_47 				0x17
	#define C_GRAY_53 				0x18
	#define C_GRAY_60 				0x19
	#define C_GRAY_68 				0x1a
	#define C_GRAY_73 				0x1b
	#define C_GRAY_80 				0x1c
	#define C_GRAY_88 				0x1d
	#define C_GRAY_93 				0x1e
	#define C_GRAY_100 				0x1f

	#define C_UNUSED_0 				0x20
	#define C_UNUSED_1 				0x21
	#define C_UNUSED_2 				0x22
	#define C_UNUSED_3 				0x23
	#define C_UNUSED_4 				0x24
	#define C_UNUSED_5 				0x25
	#define C_UNUSED_6 				0x26
	#define C_UNUSED_7 				0x27

	#define C_R0_G0_B0 				0x28
	#define C_R0_G0_B1 				0x29
	#define C_R0_G0_B2 				0x2a
	#define C_R0_G0_B3 				0x2b
	#define C_R0_G0_B4 				0x2c
	#define C_R0_G0_B5 				0x2d
	#define C_R0_G1_B0 				0x2e
	#define C_R0_G1_B1 				0x2f
	#define C_R0_G1_B2 				0x30
	#define C_R0_G1_B3 				0x31
	#define C_R0_G1_B4 				0x32
	#define C_R0_G1_B5 				0x33
	#define C_R0_G2_B0 				0x34
	#define C_R0_G2_B1 				0x35
	#define C_R0_G2_B2 				0x36
	#define C_R0_G2_B3 				0x37
	#define C_R0_G2_B4 				0x38
	#define C_R0_G2_B5 				0x39

	#define C_R0_G3_B0 				0x3a
	#define C_R0_G3_B1 				0x3b
	#define C_R0_G3_B2 				0x3c
	#define C_R0_G3_B3 				0x3d
	#define C_R0_G3_B4 				0x3e
	#define C_R0_G3_B5 				0x3f
	#define C_R0_G4_B0 				0x40
	#define C_R0_G4_B1 				0x41
	#define C_R0_G4_B2 				0x42
	#define C_R0_G4_B3 				0x43
	#define C_R0_G4_B4 				0x44
	#define C_R0_G4_B5 				0x45
	#define C_R0_G5_B0 				0x46
	#define C_R0_G5_B1 				0x47
	#define C_R0_G5_B2 				0x48
	#define C_R0_G5_B3 				0x49
	#define C_R0_G5_B4 				0x4a
	#define C_R0_G5_B5 				0x4b

	#define C_R1_G0_B0 				0x4c
	#define C_R1_G0_B1 				0x4d
	#define C_R1_G0_B2 				0x4e
	#define C_R1_G0_B3 				0x4f
	#define C_R1_G0_B4 				0x50
	#define C_R1_G0_B5 				0x51
	#define C_R1_G1_B0 				0x52
	#define C_R1_G1_B1 				0x53
	#define C_R1_G1_B2 				0x54
	#define C_R1_G1_B3 				0x55
	#define C_R1_G1_B4 				0x56
	#define C_R1_G1_B5 				0x57
	#define C_R1_G2_B0 				0x58
	#define C_R1_G2_B1 				0x59
	#define C_R1_G2_B2 				0x5a
	#define C_R1_G2_B3 				0x5b
	#define C_R1_G2_B4 				0x5c
	#define C_R1_G2_B5 				0x5d

	#define C_R1_G3_B0 				0x5e
	#define C_R1_G3_B1 				0x5f
	#define C_R1_G3_B2 				0x60
	#define C_R1_G3_B3 				0x61
	#define C_R1_G3_B4 				0x62
	#define C_R1_G3_B5 				0x63
	#define C_R1_G4_B0 				0x64
	#define C_R1_G4_B1 				0x65
	#define C_R1_G4_B2 				0x66
	#define C_R1_G4_B3 				0x67
	#define C_R1_G4_B4 				0x68
	#define C_R1_G4_B5 				0x69
	#define C_R1_G5_B0 				0x6a
	#define C_R1_G5_B1 				0x6b
	#define C_R1_G5_B2 				0x6c
	#define C_R1_G5_B3 				0x6d
	#define C_R1_G5_B4 				0x6e
	#define C_R1_G5_B5 				0x6f

	#define C_R2_G0_B0 				0x70
	#define C_R2_G0_B1 				0x71
	#define C_R2_G0_B2 				0x72
	#define C_R2_G0_B3 				0x73
	#define C_R2_G0_B4 				0x74
	#define C_R2_G0_B5 				0x75
	#define C_R2_G1_B0 				0x76
	#define C_R2_G1_B1 				0x77
	#define C_R2_G1_B2 				0x78
	#define C_R2_G1_B3 				0x79
	#define C_R2_G1_B4 				0x7a
	#define C_R2_G1_B5 				0x7b
	#define C_R2_G2_B0 				0x7c
	#define C_R2_G2_B1 				0x7d
	#define C_R2_G2_B2 				0x7e
	#define C_R2_G2_B3 				0x7f
	#define C_R2_G2_B4 				0x80
	#define C_R2_G2_B5 				0x81

	#define C_R2_G3_B0 				0x82
	#define C_R2_G3_B1 				0x83
	#define C_R2_G3_B2 				0x84
	#define C_R2_G3_B3 				0x85
	#define C_R2_G3_B4 				0x86
	#define C_R2_G3_B5 				0x87
	#define C_R2_G4_B0 				0x88
	#define C_R2_G4_B1 				0x89
	#define C_R2_G4_B2 				0x8a
	#define C_R2_G4_B3 				0x8b
	#define C_R2_G4_B4 				0x8c
	#define C_R2_G4_B5 				0x8d
	#define C_R2_G5_B0 				0x8e
	#define C_R2_G5_B1 				0x8f
	#define C_R2_G5_B2 				0x90
	#define C_R2_G5_B3 				0x91
	#define C_R2_G5_B4 				0x92
	#define C_R2_G5_B5 				0x93

	#define C_R3_G0_B0 				0x94
	#define C_R3_G0_B1 				0x95
	#define C_R3_G0_B2 				0x96
	#define C_R3_G0_B3 				0x97
	#define C_R3_G0_B4 				0x98
	#define C_R3_G0_B5 				0x99
	#define C_R3_G1_B0 				0x9a
	#define C_R3_G1_B1 				0x9b
	#define C_R3_G1_B2 				0x9c
	#define C_R3_G1_B3 				0x9d
	#define C_R3_G1_B4 				0x9e
	#define C_R3_G1_B5 				0x9f
	#define C_R3_G2_B0 				0xa0
	#define C_R3_G2_B1 				0xa1
	#define C_R3_G2_B2 				0xa2
	#define C_R3_G2_B3 				0xa3
	#define C_R3_G2_B4 				0xa4
	#define C_R3_G2_B5 				0xa5

	#define C_R3_G3_B0 				0xa6
	#define C_R3_G3_B1 				0xa7
	#define C_R3_G3_B2 				0xa8
	#define C_R3_G3_B3 				0xa9
	#define C_R3_G3_B4 				0xaa
	#define C_R3_G3_B5 				0xab
	#define C_R3_G4_B0 				0xac
	#define C_R3_G4_B1 				0xad
	#define C_R3_G4_B2 				0xae
	#define C_R3_G4_B3 				0xaf
	#define C_R3_G4_B4 				0xb0
	#define C_R3_G4_B5 				0xb1
	#define C_R3_G5_B0 				0xb2
	#define C_R3_G5_B1 				0xb3
	#define C_R3_G5_B2 				0xb4
	#define C_R3_G5_B3 				0xb5
	#define C_R3_G5_B4 				0xb6
	#define C_R3_G5_B5 				0xb7

	#define C_R4_G0_B0 				0xb8
	#define C_R4_G0_B1 				0xb9
	#define C_R4_G0_B2 				0xba
	#define C_R4_G0_B3 				0xbb
	#define C_R4_G0_B4 				0xbc
	#define C_R4_G0_B5 				0xbd
	#define C_R4_G1_B0 				0xbe
	#define C_R4_G1_B1 				0xbf
	#define C_R4_G1_B2 				0xc0
	#define C_R4_G1_B3 				0xc1
	#define C_R4_G1_B4 				0xc2
	#define C_R4_G1_B5 				0xc3
	#define C_R4_G2_B0 				0xc4
	#define C_R4_G2_B1 				0xc5
	#define C_R4_G2_B2 				0xc6
	#define C_R4_G2_B3 				0xc7
	#define C_R4_G2_B4 				0xc8
	#define C_R4_G2_B5 				0xc9

	#define C_R4_G3_B0 				0xca
	#define C_R4_G3_B1 				0xcb
	#define C_R4_G3_B2 				0xcc
	#define C_R4_G3_B3 				0xcd
	#define C_R4_G3_B4 				0xce
	#define C_R4_G3_B5 				0xcf
	#define C_R4_G4_B0 				0xd0
	#define C_R4_G4_B1 				0xd1
	#define C_R4_G4_B2 				0xd2
	#define C_R4_G4_B3 				0xd3
	#define C_R4_G4_B4 				0xd4
	#define C_R4_G4_B5 				0xd5
	#define C_R4_G5_B0 				0xd6
	#define C_R4_G5_B1 				0xd7
	#define C_R4_G5_B2 				0xd8
	#define C_R4_G5_B3 				0xd9
	#define C_R4_G5_B4 				0xda
	#define C_R4_G5_B5 				0xdb

	#define C_R5_G0_B0 				0xdc
	#define C_R5_G0_B1 				0xdd
	#define C_R5_G0_B2 				0xde
	#define C_R5_G0_B3 				0xdf
	#define C_R5_G0_B4 				0xe0
	#define C_R5_G0_B5 				0xe1
	#define C_R5_G1_B0 				0xe2
	#define C_R5_G1_B1 				0xe3
	#define C_R5_G1_B2 				0xe4
	#define C_R5_G1_B3 				0xe5
	#define C_R5_G1_B4 				0xe6
	#define C_R5_G1_B5 				0xe7
	#define C_R5_G2_B0 				0xe8
	#define C_R5_G2_B1 				0xe9
	#define C_R5_G2_B2 				0xea
	#define C_R5_G2_B3 				0xeb
	#define C_R5_G2_B4 				0xec
	#define C_R5_G2_B5 				0xed
	#define C_R5_G3_B0 				0xee
	#define C_R5_G3_B1 				0xef
	#define C_R5_G3_B2 				0xf0
	#define C_R5_G3_B3 				0xf1
	#define C_R5_G3_B4 				0xf2
	#define C_R5_G3_B5 				0xf3
	#define C_R5_G4_B0 				0xf4
	#define C_R5_G4_B1 				0xf5
	#define C_R5_G4_B2 				0xf6
	#define C_R5_G4_B3 				0xf7
	#define C_R5_G4_B4 				0xf8
	#define C_R5_G4_B5 				0xf9
	#define C_R5_G5_B0 				0xfa
	#define C_R5_G5_B1 				0xfb
	#define C_R5_G5_B2 				0xfc
	#define C_R5_G5_B3 				0xfd
	#define C_R5_G5_B4 				0xfe
	#define C_R5_G5_B5 				0xff

	#define C_LIGHT_GREY			C_LIGHT_GRAY
	#define C_DARK_GREY				C_DARK_GRAY
	#define C_BW_GREY				0x84

Include: color.h


ColorFlag

typedef ByteEnum ColorFlag;
	#define CF_INDEX		0
	#define CF_GRAY			1
	#define CF_SAME			2
	#define CF_RGB			0x80 Several color-related commands accept colors in a variety of formats. The  **ColorFlag** enumerated type is used to specify how the color is being  described. The **ColorFlag** is normally used as part of a **ColorQuad**. See  **ColorQuad** for information about how to interpret color specifications using  **ColorFlags**.

ColorMapMode

typedef ByteFlags ColorMapMode;
	#define CMM_ON_BLACK 0x04	/* Set this bit if you're drawing on black */
	#define CMM_MAP_TYPE 0x01	/* Either CMT_CLOSEST or CMT_DITHER) */
	#define LAST_MAP_MODE	(CMM_MAP_TYPE | CMM_ON_BLACK) This structure defines how the system will try to simulate colors not in the  palette. If the map type is CMT_CLOSEST, the closest available color will be  used. If the map type is CMT_DITHER, the system will mix together two or  more close colors in a dithered pattern. If you will be drawing against a black  background, you may wish to set the CMM_ON_BLACK flag.

ColorQuad

typedef struct {
	byte 			CQ_redOrIndex;
	ColorFlag		CQ_info;
	byte 			CQ_green;
	byte 			CQ_blue;
} ColorQuad; This structure represents a color. The *CQ_info* field determines how the color  is being described. 

If the info field is CF_INDEX, then the color is being specified by its index, its place in the window’s palette. The index is in the CQ_redOrIndex field; the the CQ_green and CQ_blue fields are meaningless for this specification.

If the info field is CF_RGB, then the color is specified by RGB (red, green, and blue) components. CQ_redOrIndex contains the color’s red component, a number ranging from 0 to 255. The CQ_green and CQ_blue fields contain the color’s green and blue components, respectively.

If the info field is CF_GRAY, then the color is being expressed as a grey scale. This is basically an optimized way of describing RGB colors where the red, green, and blue components are equal. The CQ_redOrIndex field contains the brightess, a number between 0 and 255. The CQ_green and CQ_blue fields are ignored.

When defining hatch patterns, it is possible have a CF_SAME info field. This means that the hatch lines should use the “same” color when drawing. That is, when hatching text, the text color will be used; when filling an area, the area color will be used. The CQ_redOrIndex, CQ_green, and CQ_blue fields are all ignored.


ColorQuadAsDWord

typedef dword ColorQuadAsDWord;

ColorTransfer

typedef struct {
	RGBDelta				CT_data[125]; 
} ColorTransfer; This structure consists of a 5x5x5 matrix of **RGBDelta** structures. This and  be used to specify what sorts of adjustments to make to the color when  displaying to a specific device. For instance, some color printers will wipe out  certain colors if they try to use the amounts of ink suggested by the raw RGB  values. The **ColorTransfer** structure thus serves to hold an array of "fudge  factors" to tell the printer to use more or less ink than the raw RGB values  would suggest.

ColorTransferData

typedef union {
	MonoTransfer		CTD_mono;
	RGBTransfer			CTD_rgb;
	CMYKTransfer		CTD_cmyk;
} ColorTransferData;

ColorTransferType

typedef ByteEnum ColorTransferType;
	#define CTT_MONO				 0
	#define CTT_RGB 				 1
	#define CTT_CMYK 				 2

CommonParameters

typedef struct {
	word	CP_row;
	word	CP_column;
	word	CP_maxRow;
	word	CP_maxColumn;
	void	* CP_callback;
	void	* CP_cellParams; /* ptr to an instance of SpreadsheetClass */
} CommonParameters;

CompChildFlags

typedef WordFlags CompChildFlags;
	#define CCF_MARK_DIRTY		0x8000
	#define CCF_REFERENCE		0x7fff
	#define 	CCO_FIRST			0x0000
	#define		CCO_LAST			0x7FFF
	#define CCF_REFERENCE_OFFSET 0 A record used when adding, moving, or removing children in an object tree.  The record has one flag and a value, as follows:

CCF_MARK_DIRTY
A flag indicating whether the object should be marked dirty at the end of the operation.

CCF_REFERENCE
A child number; when adding or moving a child, this is the child number after which the new object should be inserted. It can be any number less than 32768, or it can be either of the two constants shown above (CCO_FIRST or CCO_LAST).


CountryType

typedef enum /* word */ {
	CT_UNITED_STATES=1,
	CT_CANADA,
	CT_UNITED_KINGDOM,
	CT_GERMANY,
	CT_FRANCE,
	CT_SPAIN,
	CT_ITALY,
	CT_DENMARK,
	CT_NETHERLANDS,
} CountryType;

CRangeEnumParams

typedef struct {
	RangeEnumParams			CREP_params;
	void					*CREP_locals;
    PCB(RANGE_ENUM_CALLBACK_RETURN_TYPE, CREP_callback,
				(RangeEnumCallbackParams));
} CRangeEnumParams;

The CREP_callback routine should be declared _pascal.


CurrencyFormatFlags

typedef ByteFlags CurrencyFormatFlags;
	#define CFF_LEADING_ZERO					0x20
	#define CFF_SPACE_AROUND_SYMBOL 			0x10
	#define CFF_USE_NEGATIVE_SIGN 				0x08
	#define CFF_SYMBOL_BEFORE_NUMBER 			0x04
	#define CFF_NEGATIVE_SIGN_BEFORE_NUMBER 	0x02
	#define CFF_NEGATIVE_SIGN_BEFORE_SYMBOL 	0x01

CustomDialogBoxFlags

typedef WordFlags CustomDialogBoxFlags;
	#define CDBF_SYSTEM_MODAL				0x8000
	#define CDBF_DIALOG_TYPE				0x6000
	#define CDBF_INTERACTION_TYPE			0x1e00

CustomDialogType

typedef ByteEnum CustomDialogType;
	#define CDT_QUESTION					0
	#define CDT_WARNING						1
	#define CDT_NOTIFICATION 				2
	#define CDT_ERROR 						3
	#define CDBF_DIALOG_TYPE_OFFSET			13
	#define CDBF_INTERACTION_TYPE_OFFSET	9

DACPlayFlags

typedef ByteFlags DACPlayFlags;
#define DACPF_CATENATE 0x80

DACReferenceByte

typedef enum {
	 DACRB_NO_REFERENCE_BYTE,
	 DACRB_WITH_REFERENCE_BYTE
} DACReferenceByte;

DACSampleFormat

typedef enum {
	DACSF_8_BIT_PCM,
	DACSF_2_TO_1_ADPCM,
	DACSF_3_TO_1_ADPCM,
	DACSF_4_TO_1_ADPCM
} DACSampleFormat; This structure specifies what sort of sampling should be used when recording  or playing a sampled sound.

DashPairArray

See: LineStyle


DateTimeFormat

typedef enum /* word */ {
	DTF_LONG,
	DTF_LONG_CONDENSED,
	DTF_LONG_NO_WEEKDAY,
	DTF_LONG_NO_WEEKDAY_CONDENSED,
	DTF_SHORT,
	DTF_ZERO_PADDED_SHORT,
	DTF_MD_LONG,
	DTF_MD_LONG_NO_WEEKDAY,
	DTF_MD_SHORT,
	DTF_MY_LONG,
	DTF_MY_SHORT,
	DTF_MONTH,
	DTF_WEEKDAY,
	DTF_HMS,
	DTF_HM,
	DTF_H,
	DTF_MS,
	DTF_HMS_24HOUR,
	DTF_HM_24HOUR,
} DateTimeFormat;

DayOfTheWeek

typedef enum {
	DOTW_SUNDAY,
	DOTW_MONDAY,
	DOTW_TUESAY,
	DOTW_WEDNESDAY,
	DOTW_THURSDAY,
	DOTW_FRIDAY,
	DOTW_SATURDAY
} DayOfTheWeek; This enumerated type is used in the **TimerDateAndTime** structure.

DBGroup

typedef word DBGroup; This is the handle of a DB group. It is the VM handle of a DB group block. DB  group handles do not change when a file is copied, or when it is closed and  reopened.

DBGroupAndItem

typedef	dword DBGroupAndItem; This is a dword which contains the group and item handles of a database  item. The high word is the item's Group handle; the low word is the item's  Item handle. 

Macros are provided to create and parse the DBGroupAndItem:

DBCombineGroupAndItem()
Creates a DBGroupAndItem from given group and item handles.

DBCombineGroupAndItem(group, item);

DBExtractGroupFromGroupAndItem()
Extracts the DBGroup from a given DBGroupAndItem.

DBExtractGroupFromGroupAndItem(groupAndItem);

DBExtractItemFromGroupAndItem()
Extracts the DBItem from a given DBGroupAndItem.

DBExtractItemFromGroupAndItem(groupAndItem);

Include: geos.h


DBItem

typedef word DBItem; This is the handle of a DB item. The **DBItem** and **DBGroup** together  uniquely identify a DB item in a specified file.

DBReturn

typedef struct {
	word	DBR_group;
	word	DBR_item;
	word	unused1;
	word	unused2;
} DBReturn;

DefaultPrintSizes

typedef struct {
	word	paperWidth;
	word	paperHeight;
	word	documentWidth;
	word	documentHeight;
} DefaultPrintSizes;

DevicePresent

typedef enum /* word */ {
	DP_NOT_PRESENT=0xffff,
	DP_CANT_TELL=0,
	DP_PRESENT=1,
	DP_INVALID_DEVICE=0xfffe
} DevicePresent;

DirPathInfo

typedef word DirPathInfo;
	#define DPI_EXISTS_LOCALLY					0x8000
	#define DPI_ENTRY_NUMBER_IN_PATH			0x7f00
	#define DPI_ENTRY_NUMBER_IN_PATH_OFFSET		8
	#define DPI_STD_PATH						0x00ff
	#define DPI_STD_PATH_OFFSET					0

DiskCopyCallback

typedef enum /* word */ {
	CALLBACK_GET_SOURCE_DISK,
	CALLBACK_REPORT_NUM_SWAPS,
	CALLBACK_GET_DEST_DISK,
	CALLBACK_VERIFY_DEST_DESTRUCTION,
	CALLBACK_REPORT_FORMAT_PCT,
	CALLBACK_REPORT_COPY_PCT
} DiskCopyCallback;

DiskCopyError

typedef enum /* word */ {
	ERR_DISKCOPY_INSUFFICIENT_MEM=0xd0,
	ERR_CANT_COPY_FIXED_DISKS,
	ERR_CANT_READ_FROM_SOURCE,
	ERR_CANT_WRITE_TO_DEST,
	ERR_INCOMPATIBLE_FORMATS,
	ERR_OPERATION_CANCELLED,
	ERR_CANT_FORMAT_DEST,
} DiskCopyError;

DiskFindResult

typedef enum /* word */ {
	DFR_UNIQUE,
	DFR_NOT_UNIQUE,
	DFR_NOT_FOUND,
} DiskFindResult;

DiskHandle

typedef Handle DiskHandle;

DiskInfoStruct

typedef struct {
	word		DIS_blockSize;
	sdword		DIS_freeSpace;
	sdword		DIS_totalSpace;
	VolumeName		DIS_name;
} DiskInfoStruct;

DiskRestoreError

typedef enum /* word */ {
	DRE_DISK_IN_DRIVE,
	DRE_DRIVE_NO_LONGER_EXISTS,
	DRE_REMOVABLE_DRIVE_DOESNT_HOLD_DISK,
	DRE_USER_CANCELED_RESTORE,
	DRE_COULDNT_CREATE_NEW_DISK_HANDLE,
	DRE_REMOVABLE_DRIVE_IS_BUSY,
} DiskRestoreError;

DisplayAspectRatio

typedef ByteEnum DisplayAspectRatio;
	#define DAR_NORMAL				0
	#define DAR_SQUISHED			1
	#define DAR_VERY_SQUISHED		2

DisplayClass

typedef ByteEnum DisplayClass;
	#define DC_TEXT					0
	#define DC_GRAY_1 				1
	#define DC_GRAY_2 				2
	#define DC_GRAY_4 				3
	#define DC_GRAY_8 				4
	#define DC_COLOR_2 				5
	#define DC_COLOR_4 				6
	#define DC_CF_RGB 				7

DisplaySize

typedef ByteEnum DisplaySize;
	#define DS_TINY				0
	#define DS_STANDARD			1
	#define DS_LARGE			2
	#define DS_HUGE				3

DisplayType

typedef ByteFlags DisplayType;
	#define DT_DISP_SIZE					0xc0
	#define DT_DISP_ASPECT_RATIO			0x30
	#define DT_DISP_CLASS					0x0f

DistanceUnit

typedef ByteEnum DistanceUnit;
	#define DU_POINTS							0
	#define DU_INCHES 							1
	#define DU_CENTIMETERS						2
	#define DU_MILLIMETERS 						3
	#define DU_PICAS 							4
	#define DU_EUR_POINTS 						5
	#define DU_CICEROS							6
	#define DU_POINTS_OR_MILLIMETERS 			7
	#define DU_INCHES_OR_CENTIMETERS 			8
	#define LOCAL_DISTANCE_BUFFER_SIZE 			32

DocQuitStatus

typedef enum /* word */ {
	DQS_OK,
	DQS_CANCEL,
	DQS_DELAYED,
	DQS_SAVE_ERROR
} DocQuitStatus;

DocumentSize

typedef struct {
	int		leftMargin;
	int		topMargin;
	int		width;
	int		height;
} DocumentSize;

DosCodePage

typedef enum /* word */ {
	CODE_PAGE_US=437,
	CODE_PAGE_MULTILINGUAL=850,
	CODE_PAGE_MULTILINGUAL_EURO=858,
	CODE_PAGE_PORTUGUESE=860,
	CODE_PAGE_CANADIAN_FRENCH=863,
	CODE_PAGE_NORDIC=865
} DosCodePage;

DosDotFileName

typedef char DosDotFileName[DOS_DOT_DOS_FILE_NAME_SIZE];

DosExecFlags

typedef ByteFlags DosExecFlags;
	#define DEF_PROMPT				0x80	/* prompt user to return to GEOS */
	#define DEF_FORCED_SHUTDOWN		0x40	/* force shutdown; no abort */
	#define DEF_INTERACTIVE			0x20	/* program is interactive shell */ Flags used with **DosExec()**. **DosExec()** executes a DOS program based on  these flags.

DosFileInfoStruct

typedef struct {
	byte DFIS_attributes;
	dword DFIS_modTimeDate;
	dword DFIS_fileSize;
	char DFIS_name[DOS_DOT_FILE_NAME_LENGTH_ZT];
	word DFIS_pathInfo;
} DosFileInfoStruct;

DosNoDotFileName

typedef char DosNoDotFileName[DOS_NO_DOT_DOS_FILE_NAME_SIZE];

DrawMask

typedef byte DrawMask[8]; The graphics system uses this structure for defining custom draw masks.

DriveType

typedef ByteEnum DriveType;
	#define DRIVE_5_25				0
	#define DRIVE_3_5				1
	#define DRIVE_FIXED				2
	#define DRIVE_RAM				3
	#define DRIVE_CD_ROM			4
	#define DRIVE_8					5
	#define DRIVE_UNKNOWN			0xf
} DriveType;

Several routines (in particular, DriveGetStatus()) provide information about drives used by the computer running GEOS. These routines return a member of the DriveTypes enumerated type. Note that while the type is byte-length, all of the values are guaranteed to fit in four bits; thus, routines like DriveGetStatus() can return a DriveTypes value in the low four bits and other flags in the high four bits of a single byte.


DriverAttrs

typedef WordFlags DriverAttrs;
	#define DA_FILE_SYSTEM					0x8000
	#define DA_CHARACTER					0x4000
	#define DA_HAS_EXTENDED_INFO			0x2000 This record contains flags that indicate a given driver's attributes. This  record is stored in the driver's **DriverInfoStruct** structure.

DriverExtendedInfoStruct

typedef struct {
	DriverInfoStruct	DEIS_common;	/* The base driver info structure */
	MemHandle			DEIS_resource;	/* Handle of driver's DriverExtendedInfo
										 * table. */
} DriverExtendedInfoStruct;

This structure is used by Preferences to locate the names of devices supported by a particular driver.


DriverExtendedInfoTable

typedef struct {
	LMemBlockHeader		DEIT_common;
	word				DEIT_numDevices;
	ChunkHandle			DEIT_ChunkHandle;
	word				DEIT_infoTable;
} DriverExtendedInfoTable;

DriverInfoStruct

typedef struct {
	 void (*DIS_strategy)();				/* Pointer to strategy routine */
	 DriverAttrs	DIS_driverAttributes;	/* driver's attribute flags */
	 DriverType		DIS_driverType;			/* driver's type */
} DriverInfoStruct; This structure defines the characteristics of a particular driver. In general,  applications will not need to access this structure unless they use a driver  directly.

DriverType

typedef enum {
	DRIVER_TYPE_VIDEO = 1,			/* Video drivers */
	DRIVER_TYPE_INPUT,				/* Input (keyboard, mouse) drivers */
	DRIVER_TYPE_MASS_STORAGE,		/* Disk/Drive drivers */
	DRIVER_TYPE_STREAM,				/* Stream and port drivers */
	DRIVER_TYPE_FONT,				/* Font drivers */
	DRIVER_TYPE_OUTPUT,				/* Output (not video and printer) drivers */
	DRIVER_TYPE_LOCALIZATION,		/* Localization drivers */
	DRIVER_TYPE_FILE_SYSTEM,		/* File system drivers */
	DRIVER_TYPE_PRINTER,			/* Printer drivers */
	DRIVER_TYPE_SWAP,				/* Swap drivers */
	DRIVER_TYPE_POWER_MANAGEMENT,	/* Power management drivers */
	DRIVER_TYPE_TASK_SWITCH,		/* Task switch drivers */
	DRIVER_TYPE_NETWORK				/* Network file system drivers */
} DriverType; This enumerated type has one value for each type of driver in the system. It  is used primarily with **GeodeUseDriver()** and its associated routines. Each  driver stores its type in its **DriverInfoStruct** structure.

DWFixed

typedef struct {
	word	WWF_frac;
	dword	WWF_int;
} DWFixed;

dword

typedef unsigned long dword;

DWordFlags

typedef dword DWordFlags;

ElementArrayHeader

typedef struct {
	ChunkArrayHeader	EAH_meta;		/* chunk array header structure */
	word				EAH_freePtr;	/* First free element */
} ElementArrayHeader; Every element array must begin with an **ElementArrayHeader**. Since  element arrays are special kinds of chunk arrays, the  **ElementArrayHeader** must itself begin with a **ChunkArrayHeader**. The  structure contains one additional field, *EAH_freePtr*. This is used to keep  track of the freed elements in the element array. Applications should not  examine or change this field.

EndOfSongFlags

typedef ByteFlags EndOfSongFlags;
		#define EOSF_UNLOCK 0x0080		/* unlock block at EOS ? */
		#define EOSF_DESTROY 0x0040		/* destroy block at EOS ? */

		#define UNLOCK_ON_EOS EOSF_UNLOCK
		#define DESTROY_ON_EOS EOSF_DESTROY

EntryPointRelocation

typedef struct {
	char	EPR_geodeName[GEODE_NAME_SIZE];
	word	EPR_entryNumber;
} EntryPointRelocation;

EnvelopeOrientation

typedef ByteEnum EnvelopeOrientation;
	#define EO_PORTAIT_LEFT				0x00
	#define EO_PORTAIT_RIGHT			0x01
	#define EO_LANDSCAPE_UP				0x02
	#define EO_LANDSCAPE_DOWN			0x03

EnvelopePath

typedef ByteEnum EnvelopePath;
	#define EP_LEFT				0x00
	#define EP_CENTER			0x01
	#define EP_RIGHT			0x02

Errors

	#define ERROR_UNSUPPORTED_FUNCTION					1
	#define ERROR_FILE_NOT_FOUND 						2
	#define ERROR_PATH_NOT_FOUND 						3
	#define ERROR_TOO_MANY_OPEN_FILES 					4
	#define ERROR_ACCESS_DENIED 						5
	#define ERROR_INSUFFICIENT_MEMORY 					8
	#define ERROR_INVALID_VOLUME 						15
	#define ERROR_IS_CURRENT_DIRECTORY 					16
	#define ERROR_DIFFERENT_DEVICE 						17
	#define ERROR_NO_MORE_FILES 						18
	#define ERROR_WRITE_PROTECTED 						19
	#define ERROR_UNKNOWN_VOLUME 						20
	#define ERROR_DRIVE_NOT_READY 						21
	#define ERROR_CRC_ERROR 							23
	#define ERROR_SEEK_ERROR 							25
	#define ERROR_UNKNOWN_MEDIA 						26
	#define ERROR_SECTOR_NOT_FOUND 						27
	#define ERROR_WRITE_FAULT 							29
	#define ERROR_READ_FAULT 							30
	#define ERROR_GENERAL_FAILURE 						31
	#define ERROR_SHARING_VIOLATION 					32
	#define ERROR_ALREADY_LOCKED 						33
	#define ERROR_SHARING_OVERFLOW 						36
	#define ERROR_SHORT_READ_WRITE 						128
	#define ERROR_INVALID_LONGNAME 						129
	#define ERROR_FILE_EXISTS 							130
	#define ERROR_DOS_EXEC_IN_PROGRESS 					131
	#define ERROR_FILE_IN_USE 							132
	#define ERROR_ARGS_TOO_LONG 						133
	#define ERROR_DISK_UNAVAILABLE 						134
	#define ERROR_DISK_STALE 							135
	#define ERROR_FILE_FORMAT_MISMATCH 					136
	#define ERROR_CANNOT_MAP_NAME 						137
	#define ERROR_DIRECTORY_NOT_EMPTY 					138
	#define ERROR_ATTR_NOT_SUPPORTED 					139
	#define ERROR_ATTR_NOT_FOUND 						140
	#define ERROR_ATTR_SIZE_MISMATCH 					141
	#define ERROR_ATTR_CANNOT_BE_SET 					142
	#define ERROR_CANNOT_MOVE_DIRECTORY 				143
	#define ERROR_PATH_TOO_LONG 						144
	#define ERROR_ARGS_INVALID 							145
	#define ERROR_CANNOT_FIND_COMMAND_INTERPRETER 		146
	#define ERROR_NO_TASK_DRIVER_LOADED 				147

ErrorCheckingFlags

typedef WordFlags ErrorCheckingFlags;
	#define ECF_REGION					0x8000
	#define ECF_HEAP_FREE_BLOCKS 		0x4000
	#define ECF_LMEM_INTERNAL 			0x2000
	#define ECF_LMEM_FREE_AREAS 		0x1000
	#define ECF_LMEM_OBJECT 			0x0800
	#define ECF_BLOCK_CHECKSUM 			0x0400
	#define ECF_GRAPHICS 				0x0200
	#define ECF_SEGMENT 				0x0100
	#define ECF_NORMAL 					0x0080
	#define ECF_VMEM 					0x0040
	#define ECF_APP 					0x0020
	#define ECF_LMEM_MOVE 				0x0010
	#define ECF_UNLOCK_MOVE 			0x0008
	#define ECF_VMEM_DISCARD 			0x0004 Error checking flags are used when setting the system's error-checking level  with **SysSetECLevel()**. The flags above may be individually set or cleared.  It is important to use error checking when debugging; it can help catch  obscure bugs that might otherwise go unnoticed until after a product ships.

EvalErrorData

typedef struct {
	byte	EED_errorCode;		/* ParserScannerEvaluatorError */
} EvalErrorData;

EvalFlags

typedef ByteFlags EvalFlags;
	#define EF_MAKE_DEPENDENCIES			0x80
	#define EF_ONLY_NAMES 					0x40
	#define EF_KEEP_LAST_CELL 				0x20
	#define EF_NO_NAMES 					0x10
	#define EF_ERROR_PUSHED 				0x08
	#define EVAL_MAX_NESTED_LEVELS			32

EvalFunctionData

typedef struct {
	FunctionID		EFD_functionID;
	word			EFD_nArgs;
} EvalFunctionData;

EvalNameData

typedef struct {
	word 	END_name;
} EvalNameData;

EvalOperatorData

typedef struct {
	OperatorType		EOD_opType;
} EvalOperatorData;

EvalStackArgumentData

typedef union {
	EvalStringData			ESAD_string;
	EvalRangeData			ESAD_range;
	EvalErrorData			ESAD_error;
} EvalStackArgumentData;

EvalParameters

typedef struct {
	CommonParameters	EP_common;
	EvalFlags			EP_flags;
	word				EP_fpStack;
	word				EP_depHandle;
	word				EP_nestedLevel;
	dword				EP_nestedAddresses[EVAL_MAX_NESTED_LEVELS];
} EvalParameters;

EvalRangeData

typedef struct {
	CellReference			ERD_firstCell;
	CellReference			ERD_lastCell;
} EvalRangeData;

EvalStackArgumentType

typedef ByteFlags EvalStackArgumentType;
	#define ESAT_EMPTY					0x80
	#define ESAT_ERROR 					0x40
	#define ESAT_RANGE 					0x20
	#define ESAT_STRING 				0x10
	#define ESAT_NUMBER 				0x08
	#define ESAT_NUM_TYPE 				0x03
	#define ESAT_TOP_OF_STACK 			0
	#define ESAT_NAME 					(ESAT_RANGE | ESAT_STRING)
	#define ESAT_FUNCTION 				(ESAT_NUMBER | ESAT_STRING)

EvalStackOperatorData

typedef union {
	EvalOperatorData			ESOD_operator;
	EvalFunctionData			ESOD_function;
} EvalStackOperatorData;

EvalStackOperatorType

typedef ByteEnum EvalStackOperatorType;
	#define ESOT_OPERATOR				0
	#define ESOT_FUNCTION 				1
	#define ESOT_OPEN_PAREN 			2
	#define ESOT_TOP_OF_STACK 			3

EvalStringData

typedef struct {
	word	ESD_length;
} EvalStringData;

EventHandle

typedef Handle		EventHandle;

ExitFlags

typedef ByteFlags ExitFlags;
	#define EF_PANIC				0x80
	#define EF_RUN_DOS				0x40
	#define EF_OLD_EXIT				0x20
	#define EF_RESET				0x10
	#define EF_RESTART				0x08

ExportControlFeatures

typedef ByteFlags ExportControlFeatures;
	#define EXPORTCF_BASIC						0x01

ExportControlToolboxFeatures

typedef ByteFlags ExportControlToolboxFeatures;
	#define EXPORTCTF_DIALOG_BOX				0x01

Routines U-Z <– Table of Contents    –> Data Structures F-K