This document contains reference information for most of the GEOS system structs. You may look up information in this and other GEOS SDK documentation by consulting the index. If, instead, you wish to browse this reference, you may choose one of the links below; the text of each is the name of the first struct documented on its page of the document.
AccessPointStandardProperty ...
AppLaunchFlags ...
BitmapMode ...
CellFunctionParameterFlags ...
Chars ...
ChunkArrayHeader ...
ClipboardItemHeader ...
Color ...
ColorFlag ...
CompSizeHintArgs ...
CustomDialogBoxFlags ...
DataStoreIndexCallbackParams ...
DateTimeFormat ...
DiskFindResult ...
DosNoDotFileName ...
EndOfSongFlags ...
EvalErrorData ...
FALSE ...
FileAttrs ...
FileDateAndTime ...
FileFromTransferBlockID ...
FontFamily ...
FontID ...
FontMaker ...
GCM_info ...
GCNStandardListType ...
GeodeToken ...
GeoworksMediumID ...
GeoWorksVisContentGCNListType ...
GStringElement ...
GStringErrorType ...
HeapCongestion ...
IMCFeatures ...
InkControlFeatures ...
InstrumentPatch ...
InstrumentTable ...
Language ...
LMemType ...
LocalNumericFormat ...
MediumUnitType ...
MixMode ...
NULL ...
OperatorType ...
ParserFlags ...
ParserTokenData ...
Point ...
ProtocolNumber ...
RangeSortFlags ...
ReleaseNumber ...
ScannerTokenCellData ...
SerialBaud ...
Socket ...
SocketError ...
SocketLoadType ...
SoundPlayFlags ...
SpecWidth ...
SpoolInfoType ...
StandardDialog4ResponseTriggerTable ...
StyleElementFlags ...
SystemDrawMask ...
TextMode ...
TextReferenceType ...
TimerHandle ...
TravelOption ...
UndoActionStruct ...
VChar ...
VisRulerType ...
VMOpenType ...
typedef enum {
APSP_NAME = 0x0,
APSP_PHONE = 0x2,
APSP_USER = 0x4,
APSP_SECRET = 0x6,
APSP_ADDRESS = 0x8,
APSP_MASK = 0xa,
APSP_GATEWAY = 0xc,
APSP_DNS1 = 0xe,
APSP_DNS2 = 0x10,
APSP_DATA_BITS = 0x12,
APSP_STOP_BITS = 0x14,
APSP_PARITY = 0x16,
APSP_DUPLEX = 0x18,
APSP_MODEM_INIT = 0x1a,
APSP_BS = 0x1c,
APSP_HOSTNAME = 0x1e,
APSP_INTERNET_ACCPNT = 0x20,
APSP_PROMPT_SECRET = 0x22, /* This property is an integer */
APSP_AUTOMATIC = 0x4000,
APSP_UNDEFINED = 0xffff,
/* The following are only available on build 4 or more recent
of the Nokia 9000i Communicator. */
APSP_USE_LOGIN_APP = 0x24,
APSP_LOGIN_APP_NAME = 0x26,
APSP_SCRIPT_NAME = 0x28,
APSP_CCARD_NAME = 0x2a,
APSP_CCARD_ACCESS = 0x2c,
APSP_CCARD_ID = 0x2e,
APSP_CCARD_PREFIX = 0x30,
APSP_CCARD_SEQUENCE = 0x32,
APSP_COMPRESSION = 0x34,
} AccessPointStandardProperty;
All of the property data associated with these standard properties are strings, except where noted.
Any
AccessPointStandardProperty
value can be combined (bitwise-OR'd) with APSP_AUTOMATIC to make an alternative form of the name. This library puts no special interpretation on automatic names, but they are intended to represent values which are obtained from automatic configuration and not from the user.
Include: accpnt.goh
typedef enum {
APT_INTERNET = 0x1,
APT_TERMINAL,
APT_TELNET,
APT_APP_LOCAL,
} AccessPointType;
#define APT_ALL (0)
Include: accpnt.goh
typedef WordFlags AddUndoActionFlags; #define AUAF_NOTIFY_BEFORE_FREEING 0x8000 #define AUAF_NOTIFY_IF_FREED_WITHOUT_BEING_PLAYED_BACK 0x4000
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.
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.
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;
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.
typedef ByteFlags AppLaunchFlags; #define ALF_SEND_LAUNCH_REQUEST_TO_UI_TO_HANDLE 0x80 #define ALF_OPEN_IN_BACK 0x40
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
typedef enum /* word */ {
ACT_OPEN,
ACT_CHORD,
ACT_PIE
} ArcCloseType;
This structure is used when filling arcs.
typedef struct {
byte AA_colorFlag;
RGBValue AA_color;
SysDrawMask AA_mask;
ColorMapMode AA_mapMode;
} AreaAttr;
typedef struct {
EvalStackArgumentType ASE_type;
EvalStackArgumentData ASE_data;
} ArgumentStackElement;
typedef struct {
byte BBF_frac;
byte BBF_int;
} BBFixed;
This structure represents an 8.8 fixed point number.
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:
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.
typedef WordFlags BitmapMode; #define BM_EDIT_MASK 0x0002 #define BM_CLUSTERED_DITHER 0x0001
VMBlockHandle BlockFromTransferBlockID(id);
TransferBlockID id;
This macro extracts the block handle from the given
TransferBlockID
value.
TransferBlockID BlockIDFromFileAndBlock(f, b);
VMFileHandle f;
VMBlockHandle b;
This macro creates a
TransferBlockID
value from the given file and block handles.
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.
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.
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.
typedef word Boolean;
Booleans represent true/false values. If the Boolean is false , it will evaluate to zero; otherwise, it will be non-zero.
typedef ByteEnum Button; #define BUTTON_0 0 #define BUTTON_1 1 #define BUTTON_2 2 #define BUTTON_3 3
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.
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
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.
typedef ByteFlags CellFunctionParameterFlags; #define CFPF_DIRTY 0x80 /* apps may read or change this. */ #define CFPF_NO_FREE_COUNT 0x07
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
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
CFP_rowBlocksInclude: 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.
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
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
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
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:
_count
_elementSize
CAH_elementSize
will be zero.
_curOffset
ChunkArrayEnum()
for bookkeeping.
_offsettypedef word ChunkHandle;
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().
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.
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.
typedef WordFlags ClipboardItemFlags; #define CIF_QUICK 0x4000 #define TIF_NORMAL 0x0000
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;
typedef struct {
ClipboardItemFormatID CIFI_format;
word CIFI_extra1;
word CIFI_extra2;
VMChain CIFI_vmChain;
GeodeToken CIFI_renderer;
} ClipboardItemFormatInfo;
typedef struct {
optr CIH_owner;
ClipboardItemFlags CIH_flags;
ClipboardItemNameBuffer CIH_name;
word CIH_formatCount;
optr CIH_sourceID;
FormatArray CIH_formats;
dword CIH_reserved;
} ClipboardItemHeader;
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.
typedef enum {
CQTF_SET_DEFAULT,
CQTF_CLEAR_DEFAULT,
CQTF_MOVE,
CQTF_COPY,
CQTF_CLEAR
} ClipboardQuickTransferFeedback;
typedef struct {
byte CMYKT_cyan[256];
byte CMYKT_magenta[256];
byte CMYKT_yellow[256];
byte CMYKT_black[256];
} CMYKTransfer;
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
The
Color
enumerated type is used to encode color index values. Normally, the constant name will give a hint as to the color's composition. If an application has carried out sophisticated palette operations, however, then C_RED might actually correspond to, say, a shade of green.
Include: color.h
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
ColorFlag
s.
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.
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.
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.
typedef union {
MonoTransfer CTD_mono;
RGBTransfer CTD_rgb;
CMYKTransfer CTD_cmyk;
} ColorTransferData;
typedef ByteEnum ColorTransferType; #define CTT_MONO 0 #define CTT_RGB 1 #define CTT_CMYK 2
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;
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:
typedef struct {
SpecWidth CSHA_width;
SpecHeight CSHA_height;
sword CSHA_count;
} CompSizeHintArgs;
typedef WordFlags SpecWidth;
#define SW_TYPE 0x8c00
#define SW_DATA 0x03ff
typedef WordFlags SpecHeight;
#define SH_TYPE 0x8c00
#define SH_DATA 0x03ff
typedef ByteEnum SpecSizeType;
#define SST_PIXELS 0x0000
#define SST_COUNT 0x0400
#define SST_PCT_OF_FIELD_WIDTH 0x0800
#define SST_PCT_OF_FIELD_HEIGHT 0x0c00
#define SST_AVG_CHAR_WIDTHS 0x1000
#define SST_WIDE_CHAR_WIDTHS 0x1400
#define SST_LINES_OF_TEXT 0x1800
#define PCT_0 0x000
#define PCT_5 0x033
#define PCT_10 0x066
#define PCT_15 0x099
#define PCT_20 0x0cc
#define PCT_25 0x100
#define PCT_30 0x133
#define PCT_35 0x166
#define PCT_40 0x199
#define PCT_45 0x1cc
#define PCT_50 0x200
#define PCT_55 0x233
#define PCT_60 0x266
#define PCT_65 0x299
#define PCT_70 0x2cc
#define PCT_75 0x300
#define PCT_80 0x333
#define PCT_85 0x366
#define PCT_90 0x399
#define PCT_95 0x3cc
#define PCT_100 0x3ff
This structure is used to define the sizes of various UI gadgets.
CSHA_width
determines how the gadget's width should be calculated;
CSHA_height
determines how the height should be calculated;
CSHA_count
is the number of children in a particular line of the composite object (if that object is wrapping its children).
This example sets the initial size of the composite (probably a GenPrimary) to be half the screen's height and half the screen's width.
HINT_INITIAL_SIZE = {
SST_PCT_OF_FIELD_WIDTH | PCT_50,
SST_PCT_OF_FIELD_HEIGHT | PCT_50,
0 };
This example sets the size of the composite to be 100 pixels high and 200 pixels wide.
HINT_FIXED_SIZE = {
SST_PIXELS | 200,
SST_PIXELS | 100,
0 };
This example sets the composite's minimum size to be 10 average characters wide and 20 percent of the screen height tall.
HINT_MINIMUM_SIZE = {
SST_AVG_CHAR_WIDTHS | 10,
SST_PCT_OF_FIELD_HEIGHT | PCT_20,
0 };
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;
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.
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
typedef WordFlags CustomDialogBoxFlags; #define CDBF_SYSTEM_MODAL 0x8000 #define CDBF_DIALOG_TYPE 0x6000 #define CDBF_INTERACTION_TYPE 0x1e00 #define CDBF_DESTRUCTIVE_ACTION 0x0100 #define CDBF_DIALOG_TYPE_OFFSET 13 #define CDBF_INTERACTION_TYPE_OFFSET 9
typedef ByteEnum CustomDialogType; #define CDT_QUESTION 0 #define CDT_WARNING 1 #define CDT_NOTIFICATION 2 #define CDT_ERROR 3
typedef enum {
DACRB_NO_REFERENCE_BYTE,
DACRB_WITH_REFERENCE_BYTE
} DACReferenceByte;
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.
typedef struct {
TCHAR *DSCP_name;
DataStoreFlags DSCP_flags;
FieldDescriptor *DSCP_keyList;
word DSCP_keyCount;
optr DSCP_notifObject;
DataStoreOpenFlags DSCP_openFlags;
} DataStoreCreateParams;
Attributes to specify when creating a new datastore.
typedef enum {
DSDE_NO_ERROR,
DSDE_INVALID_TOKEN,
DSDE_DATASTORE_LOCKED,
DSDE_ACCESS_DENIED,
DSDE_WRITE_ERROR,
DSDE_MEMORY_FULL,
DSDE_INVALID_RECORD_ID,
DSDE_INVALID_FIELD_ID,
DSDE_INVALID_FIELD_NAME,
DSDE_INVALID_FIELD_TYPE,
DSDE_INVALID_FIELD_CATEGORY,
DSDE_INVALID_FIELD_FLAGS,
DSDE_RECORD_BUFFER_NOT_EMPTY,
DSDE_RECORD_BUFFER_EMPTY,
DSDE_INVALID_FIELD_DATA,
DSDE_DATASTORE_READ_ONLY,
DSDE_INVALID_RECORD_NUMBER,
DSDE_INVALID_DATA_SIZE,
DSDE_FIELD_DOES_NOT_EXIST,
DSDE_RECORD_READ_ONLY,
DSDE_RECORD_NOT_FOUND,
DSDE_READ_ERROR,
DSDE_EXCEEDS_BUFFER_SIZE,
DSDE_TOO_MANY_FIELDS,
DSDE_RECORD_IN_USE,
DSDE_INVALID_BLOCK_HANDLE,
DSDE_INVALID_CHUNK_HANDLE,
DSDE_RECORD_LOCKED,
} DataStoreDataError;
Error values returned by various DataStore routines.
typedef enum {
DSE_NO_ERROR,
DSE_INVALID_TOKEN,
DSE_DATASTORE_LOCKED,
DSE_ACCESS_DENIED,
DSE_WRITE_ERROR,
DSE_MEMORY_FULL,
DSE_INVALID_RECORD_ID,
DSE_INVALID_NAME,
DSE_INVALID_KEY_LIST,
DSE_INVALID_FLAGS,
DSE_DUPLICATE_FIELD_NAME, /* duplicate field in create params */
DSE_CREATE_ERROR,
DSE_OPEN_ERROR,
DSE_CLOSE_ERROR,
DSE_UPDATE_ERROR,
DSE_DATASTORE_EXISTS,
DSE_DATASTORE_NOT_FOUND,
DSE_DATASTORE_ALREADY_OPEN,
DSE_PROTOCOL_ERROR,
DSE_CLOSE_WITH_LOCKED_RECORD,
DSE_INVALID_DATASTORE_FILE,
DSE_PRIVATE_DATASTORE,
DSE_BAD_SEARCH_PARAMS,
DSE_CANNOT_SET_NEXT_RECORD_ID_SMALLER,
DSE_NO_MATCH_FOUND,
DSE_NO_MORE_RECORDS, /* last record reached */
} DataStoreError;
Error values returned by various DataStore routines.
typedef struct {
FieldID DSICP_indexField;
SortOrder DSICP_sortOrder;
void *DSICP_cbData;
RecordHeader *DSICP_rec1;
RecordHeader *DSICP_rec2;
} DataStoreIndexCallbackParams;
Set of parameters caller passes to callback in
DataStoreBuildIndex()
.
typedef enum {
DSSE_NO_ERROR,
DSSE_INVALID_TOKEN,
DSSE_DATASTORE_LOCKED,
DSSE_ACCESS_DENIED,
DSSE_WRITE_ERROR,
DSSE_MEMORY_FULL,
DSSE_TOO_MANY_FIELDS,
DSSE_INVALID_FIELD_ID,
DSSE_INVALID_FIELD_NAME,
DSSE_INVALID_FIELD_TYPE,
DSSE_INVALID_FIELD_CATEGORY,
DSSE_INVALID_FIELD_FLAGS,
DSSE_RECORD_BUFFER_NOT_EMPTY,
DSSE_FIELD_NAME_TOO_LONG,
DSSE_FIELD_NAME_EXISTS,
DSSE_FIELD_NOT_FOUND,
DSSE_TIME_STAMP_CANNOT_BE_ADDED,
DSSE_TIME_STAMP_CANNOT_BE_DELETED,
DSSE_INVALID_SORT_ORDER,
DSSE_NO_RECORDS_IN_DATASTORE,
DSSE_PARTIAL_INDEX_RETURNED,
DSSE_DELETE_PRIMARY_KEY,
DSSE_INDEX_RECORD_NUMBER_LIMIT_EXCEEDED,
} DataStoreStructureError;
Error values returned by various DataStore routines.
typedef WordFlags DataStoreFlags; #define DSF_PRIVATE 0x8000 #define DSF_TIMESTAMP 0x4000 #define DSF_BACKUP 0x2000 #define DSF_ARCHIVE 0x1000 #define DSF_NO_PRIMARY_KEY 0x1000
Flags passed when creating a datastore.
typedef struct {
TCHAR DSCN_name[FILE_LONGNAME_BUFFER_SIZE];
DataStoreChangeType DSCN_action;
RecordID DSCN_record;
FieldID DSCN_field;
} DataStoreChangeNotification;
Structure sent with MSG_META_NOTIFY_WITH_DATA_BLOCK when the datastore has been modified.
typedef enum {
DSCT_RECORD_ADDED,
DSCT_RECORD_CHANGED,
DSCT_RECORD_DELETED,
DSCT_FIELD_ADDED,
DSCT_FIELD_RENAMED,
DSCT_FIELD_DELETED,
DSCT_DATASTORE_CHANGED,
DSCT_NAME_CHANGED,
DSCT_NEXT_RECORD_ID_CHANGED,
} DataStoreChangeType;
Datastore change notifications; see
DataStoreChangeNotification
above.
typedef struct {
word DSD_year;
byte DSD_month;
byte DSD_day;
} DataStoreDate;
Structure used to get and set data for date fields in a datastore.
typedef ByteFlags DataStoreOpenFlags; #define DSOF_EXCLUSIVE 0x80
Flag passed when opening a datastore; gives exclusive access to the caller.
typedef WordFlags DataStoreRecordEnumFlags; #define DSREF_BACKWARDS 0x8000 #define DSREF_START_AT_END 0x4000
Flags passed in
DataStoreRecordEnum()
.
typedef struct {
byte DST_hour;
byte DST_minute;
byte DST_second;
} DataStoreTime;
Structure used to get and set data for time fields in a datastore.
typedef enum /* word */ {
DTF_LONG, /* Thursday, 7th August, 1997 */
DTF_LONG_CONDENSED, /* Thu, 7 Aug, 1997 */
DTF_LONG_NO_WEEKDAY, /* 7th August, 1997 */
DTF_LONG_NO_WEEKDAY_CONDENSED, /* 7 Aug, 1997 */
DTF_SHORT, /* 7.8.97 */
DTF_ZERO_PADDED_SHORT, /* 07.08.97 */
DTF_MD_LONG, /* Thursday, 7th August */
DTF_MD_LONG_NO_WEEKDAY, /* 7th August */
DTF_MD_SHORT, /* 7.8 */
DTF_MY_LONG, /* August 1997 */
DTF_MY_SHORT, /* 8.97 */
DTF_MONTH, /* August */
DTF_WEEKDAY, /* Thursday */
DTF_HMS, /* 02:05:06 */
DTF_HM, /* 02:05 */
DTF_H, /* 02 */
DTF_MS, /* 5:06 */
DTF_HMS_24HOUR, /* 14:05:06 */
DTF_HM_24HOUR, /* 14:05 */
} DateTimeFormat;
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.
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.
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()
DBGroupAndItem
from given group and item handles.DBCombineGroupAndItem(group, item);
DBExtractGroupFromGroupAndItem()
DBGroup
from a given
DBGroupAndItem
.DBExtractGroupFromGroupAndItem(groupAndItem);
DBExtractItemFromGroupAndItem()
DBItem
from a given
DBGroupAndItem
.DBExtractItemFromGroupAndItem(groupAndItem);
Include: geos.h
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.
typedef struct {
word paperWidth;
word paperHeight;
word documentWidth;
word documentHeight;
} DefaultPrintSizes;
typedef enum /* word */ {
DP_NOT_PRESENT=0xffff,
DP_CANT_TELL=0,
DP_PRESENT=1,
DP_INVALID_DEVICE=0xfffe
} DevicePresent;
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;
typedef struct {
word DIS_blockSize;
sdword DIS_freeSpace;
sdword DIS_totalSpace;
VolumeName DIS_name;
} DiskInfoStruct;
typedef ByteEnum DisplayAspectRatio; #define DAR_NORMAL 0 #define DAR_SQUISHED 1 #define DAR_VERY_SQUISHED 2
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_COLOR_8 7 #define DC_CF_RGB 8
typedef ByteEnum DisplaySize; #define DS_TINY 0 #define DS_STANDARD 1 #define DS_LARGE 2 #define DS_HUGE 3
typedef ByteFlags DisplayType; #define DT_DISP_SIZE 0xc0 #define DT_DISP_ASPECT_RATIO 0x30 #define DT_DISP_CLASS 0x0f
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
typedef enum /* word */ {
DQS_OK,
DQS_CANCEL,
DQS_DELAYED,
DQS_SAVE_ERROR
} DocQuitStatus;
typedef enum /* word */ {
CODE_PAGE_US=437,
CODE_PAGE_MULTILINGUAL=850,
CODE_PAGE_PORTUGUESE=860,
CODE_PAGE_CANADIAN_FRENCH=863,
CODE_PAGE_NORDIC=865
} DosCodePage;
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.
typedef struct {
byte DFIS_attributes;
dword DFIS_modTimeDate;
dword DFIS_fileSize;
char DFIS_name[DOS_DOT_FILE_NAME_LENGTH_ZT];
word DFIS_pathInfo;
} DosFileInfoStruct;
typedef byte DrawMask[8];
The graphics system uses this structure for defining custom draw masks.
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.
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.
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.
typedef struct {
LMemBlockHeader DEIT_common;
word DEIT_numDevices;
ChunkHandle DEIT_ChunkHandle;
word DEIT_infoTable;
} DriverExtendedInfoTable;
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.
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.
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.
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
These flags determine what should be done with the memory block which stores a song structure after the song is done playing.
typedef struct {
char EPR_geodeName[GEODE_NAME_SIZE];
word EPR_entryNumber;
} EntryPointRelocation;
typedef ByteEnum EnvelopeOrientation; #define EO_PORTAIT_LEFT 0x00 #define EO_PORTAIT_RIGHT 0x01 #define EO_LANDSCAPE_UP 0x02 #define EO_LANDSCAPE_DOWN 0x03
typedef ByteEnum EnvelopePath; #define EP_LEFT 0x00 #define EP_CENTER 0x01 #define EP_RIGHT 0x02
#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
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.
typedef struct {
byte EED_errorCode; /* ParserScannerEvaluatorError */
} EvalErrorData;
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
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;
typedef struct {
CellReference ERD_firstCell;
CellReference ERD_lastCell;
} EvalRangeData;
typedef union {
EvalStringData ESAD_string;
EvalRangeData ESAD_range;
EvalErrorData ESAD_error;
} EvalStackArgumentData;
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)
typedef union {
EvalOperatorData ESOD_operator;
EvalFunctionData ESOD_function;
} EvalStackOperatorData;
typedef ByteEnum EvalStackOperatorType; #define ESOT_OPERATOR 0 #define ESOT_FUNCTION 1 #define ESOT_OPEN_PAREN 2 #define ESOT_TOP_OF_STACK 3
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
typedef ByteFlags ExportControlToolboxFeatures; #define EXPORTCTF_DIALOG_BOX 0x01
typedef ByteEnum FieldType #define FC_NONE 0x0 #define FC_NAME 0x1 #define FC_DATE 0x2 #define FC_TELEPHONE 0x3 #define FC_ADDRESS 0x4 #define FC_EMAIL 0x5
When you add a field to a datatstore, you define its
FieldCategory
.
FieldCategory
is the type of information the data represents (not to be confused with
FieldType
; see below).
typedef struct {
FieldType FD_type;
FieldCategory FD_category;
FieldFlags FD_flags;
} FieldData;
Structure used to get and set field information (see
FieldDescriptor
below).
typedef struct {
FieldData FD_data;
TCHAR *FD_name;
} FieldDescriptor;
Structure used to get and set field information (see
FieldData
above).
typedef struct {
FieldID FH_id;
word FH_size;
} FieldHeader;
Structure containing metadata about a variable-sized field (such as a string field); field data follows this header.
typedef struct {
FieldID FHF_id;
} FieldHeaderFixed;
Structure containing metadata about a fixed-sized field; field data follows this header.
typedef ByteEnum FieldType #define DSFT_FLOAT 0x0 #define DSFT_SHORT 0x1 #define DSFT_LONG 0x2 #define DSFT_TIMESTAMP 0x3 #define DSFT_DATE 0x4 #define DSFT_TIME 0x5 #define DSFT_STRING 0x6 #define DSFT_BINARY 0x7 #define DSFT_GRAPHICS 0x8 #define DSFT_INK 0x9
When you add a field to a datatstore, you define its
FieldType
.
FieldType
is the type of data the field contains (not to be confused with
FieldCategory
; see above). Note that fields of type DSFT_FLOAT expect data of type
FloatNum
.
typedef ByteEnum FileAccess #define FA_READ_ONLY 0 #define FA_WRITE_ONLY 1 #define FA_READ_WRITE 2
typedef ByteFlags FileAccessFlags; #define FILE_DENY_RW 0x10 #define FILE_DENY_W 0x20 #define FILE_DENY_R 0x30 #define FILE_DENY_NONE 0x40 #define FILE_ACCESS_R 0x00 #define FILE_ACCESS_W 0x01 #define FILE_ACCESS_RW 0x02 #define FILE_NO_ERRORS 0x80
When you open a file for bytewise access, you must pass a record of
FileAccessFlags
. The
FileAccessFlags
record specifies two things: what kind of access the caller wants, and what type of access is permitted to other geodes. A set of
FileAccessFlags
is thus a bit-wise "or" of two different values. The first specifies what kind of access the calling geode wants and has the following values:
The second part specifies what kind of access other geodes may have. Note that if you try to deny a permission which has already been given to another geode (e.g. you open a file with FILE_DENY_W when another geode has the file open for write-access), the call will fail. It has the following values:
Two flags, one from each of these sets of values, are combined to make up a proper
FileAccessFlags
value. For example, to open the file for read-only access while prohibiting other geodes from writing to the file, you would pass the flags "(FILE_ACCESS_R | FILE_DENY_W)".
typedef ByteFlags FileAttrs; #define FA_ARCHIVE 0x20 #define FA_SUBDIR 0x10 #define FA_VOLUME 0x8 #define FA_SYSTEM 0x4 #define FA_HIDDEN 0x2 #define FA_RDONLY 0x1 #define FILE_ATTR_NORMAL 0 #define FILE_ATTR_READ_ONLY FA_RDONLY #define FILE_ATTR_HIDDEN FA_HIDDEN #define FILE_ATTR_SYSTEM FA_SYSTEM #define FILE_ATTR_VOLUME_LABEL FA_VOLUME
Every DOS or GEOS file has certain attributes. These attributes mark such things as whether the file is read-only. With GEOS files, the attributes can be accessed by using the extended attribute FEA_FILE_ATTR. You can also access any file's standard attributes with the routines
FileGetAttributes()
and
FileSetAttributes()
; these routines work for both GEOS files and plain DOS files.
The
FileAttrs
field contains the following bits:
See Also: FileGetAttributes(),
FileSetAttributes().
Include: file.h
typedef struct {
PathName FCND_pathname;
DiskHandle FCND_diskHandle;
FileChangeType FCND_changeType;
} FileChangeNotificationData;
typedef ByteEnum FileChangeType; #define FCT_CREATE 0 #define FCT_DELETE 1 #define FCT_RENAME 2 #define FCT_CONTENTS 3 #define FCT_DISK_FORMAT 4
typedef WordFlags FileCreateFlags; #define FCF_NATIVE 0x8000 #define FCF_MODE 0x0300 /* Filled with FILE_CREATE_* constant */ #define FCF_ACCESS 0x00ff /* Filled with FileAccessFlags */
The lower byte of this field is a
FileAccessFlags
record. This specifies the file's permissions and exclusions. Note that you must request write or read/write permission when you create a file. The upper byte specifies how the file should be created. It contains the following possible values:
FileCreate()
will fail with error condition ERROR_FILE_FORMAT_MISMATCH. Similarly, if the flag isn't set and a non-GEOS file with this name exists,
FileCreate()
will fail and return this error.typedef WordFlags FileDate; #define FD_YEAR 0xfe00 #define FD_MONTH 0x01e0 #define FD_DAY 0x001f #define FD_YEAR_OFFSET 9 #define FD_MONTH_OFFSET 5 #define FD_DAY_OFFSET 0
A file's date stamp is stored in a 16-bit bitfield. This field contains entries for the year, month, and day.
Each field is identified by a mask and an offset. To access a field, simply clear all bits except those in the mask, then shift the bits to the right by the number of the offset. (Macros are provided to do this; they are described below.) FileDate contains the
following fields, identified by their masks:
FD_YEAR_OFFSET bits.FD_MONTH_OFFSET bits.FD_DAY_OFFSET bits.Include: file.h
See Also: FileTime
typedef DWordFlags FileDateAndTime; #define FDAT_HOUR 0xf8000000 #define FDAT_MINUTE 0x07e00000 #define FDAT_2SECOND 0x001f0000 #define FDAT_YEAR 0x0000fe00 #define FDAT_MONTH 0x000001e0 #define FDAT_DAY 0x0000001f #define FDAT_HOUR_OFFSET 27 #define FDAT_MINUTE_OFFSET 21 #define FDAT_2SECOND_OFFSET 16 #define FDAT_YEAR_OFFSET 9 #define FDAT_MONTH_OFFSET 5 #define FDAT_DAY_OFFSET 0 #define FDAT_BASE_YEAR 1980
Every GEOS file has two date and time stamps. One of them records the time the file was created, and one records the time the file was last modified. These stamps are recorded with the file's extended attributes; they are labeled FEA_CREATION and FEA_MODIFICATION, respectively. Non-GEOS files have a single date/time stamp, which records the time the file was last modified.
The date/time stamps are stored in a 32-bit bitfield. This field contains entries for the year, month, day, hour, minute, and second. Each field is identified by a mask and an offset. To access a field, simply clear all bits except those in the mask, then shift the bits to the right by the number of the offset. (Macros are provided to do this; they are described below.)
FileDateAndTime
contains the following fields, identified by their masks:
Macros are provided to extract values from each of the fields of a
FileDateAndTime
structure. The macros are listed below:
byte FDATExtractYear( /* returns year field, counted from 1980*/
FileDateAndTime fdat);
word FDATExtractYearAD( /* returns year field + base year */
FileDateAndTime fdat);
byte FDATExtractMonth( /* returns month field (1 = January, etc.) */
FileDateAndTime fdat);
byte FDATExtractDay( /* returns day field */
FileDateAndTime fdat);
byte FDATExtractHour( /* returns hour field */
FileDateAndTime fdat);
byte FDATExtractMinute( /* returns minute field */
FileDateAndTime fdat);
byte FDATExtract2Second( /* returns 2Second field */
FileDateAndTime fdat);
byte FDATExtractSecond( /* returns number of seconds (2 * 2Second) */
FileDateAndTime fdat);
Include: file.h
typedef ByteEnum FileExclude; #define FE_EXCLUSIVE 1 #define FE_DENY_WRITE 2 #define FE_DENY_READ 3 #define FE_NONE 4
typedef struct {
FileExtendedAttribute FEAD_attr; /* Attribute to get or set */
void *FEAD_value; /* Pointer to buffer/new value */
word FEAD_size; /* length of buffer/new value */
chr *FEAD_name; /* If FEAD_attr == FEA_CUSTOM,
* this points to null-
* terminated ASCII string with
* attribute's name; otherwise,
* this is ignored. */
} FileExtendedAttrDesc;
The routines to get and set extended attributes can be passed the attribute FEA_MULTIPLE. In this case, they will also be passed the address of an array of
FileExtAttrDesc
structures and the number of elements of the array. They will go through the array and read or write the appropriate information.
FileEnum()
can also be passed arrays of
FileExtAttrDesc
structures. In this case, the number of elements in the array is not passed. Instead, each array ends with a
FileExtAttrDesc
with a FEAD
_attr
field set to FEA_END_OF_LIST.
See Also: FileExtendedAttribute.
Include: file.h
typedef enum /* word */ {
FEA_MODIFICATION,
FEA_FILE_ATTR,
FEA_SIZE,
FEA_FILE_TYPE,
FEA_FLAGS,
FEA_RELEASE,
FEA_PROTOCOL,
FEA_TOKEN,
FEA_CREATOR,
FEA_USER_NOTES,
FEA_NOTICE,
FEA_CREATION,
FEA_PASSWORD,
FEA_CUSTOM,
FEA_NAME,
FEA_GEODE_ATTR,
FEA_PATH_INFO,
FEA_FILE_ID,
FEA_DESKTOP_INFO,
FEA_DRIVE_STATUS,
FEA_DOS_NAME,
FEA_OWNER,
FEA_RIGHTS,
FEA_MULTIPLE = 0xfffe,
FEA_END_OF_LIST = 0xffff,
} FileExtendedAttribute;
Every GEOS file has a set of extended attributes. These attributes can be recovered with
FileGetPathExtAttributes()
or
FileGetHandleExtAttributes()
. You can also use
FileEnum()
to search a directory for files with specified extended attributes.
The above extended attributes have been implemented. More may be added with future releases of GEOS. The attributes are discussed at length in the File System chapter.
See Also: FileExtAttrDesc.
Include: file.h
VMFileHandle FileFromTransferBlockID(id);
TransferBlockID id;
This macro extracts the file handle from the given
TransferBlockID
value.
typedef ByteEnum FilePosMode; #define FILE_POS_START 0 #define FILE_POS_RELATIVE 1 #define FILE_POS_END 2
typedef WordFlags FileTime; #define FT_HOUR 0xf800 #define FT_MINUTE 0x07e0 #define FT_2SECOND 0x001f #define FT_HOUR_OFFSET 11 #define FT_MINUTE_OFFSET 5 #define FT_2SECOND_OFFSET 0
A file's time stamp is stored in a 16-bit bitfield. This field contains entries for the hour, minute, and second.
Each field is identified by a mask and an offset. To access a field, simply clear all bits except those in the mask, then shift the bits to the right by the number of the offset. FileTime contains the
following fields, identified by their masks:
FT_HOUR_OFFSET bits.FT_MINUTE_OFFSET bits.FT_2SECOND_OFFSET bits.Include: file.h
See Also: FileDate
typedef struct {
word FNH_count; /* The number of matching notes we've found */
} FindNoteHeader;
typedef struct {
word F_mantissa_wd0;
word F_mantissa_wd1;
word F_mantissa_wd2;
word F_mantissa_wd3;
FloatExponent F_exponent;
} FloatNum;
typedef ByteFlags FontAttrs; #define FA_FIXED_WIDTH 0x40 #define FA_ORIENT 0x20 #define FA_OUTLINE 0x10 #define FA_FAMILY 0x0f #define FA_FAMILY_OFFSET 0
Include: font.h
typedef ByteFlags FontEnumFlags; #define FEF_ALPHABETIZE 0x80 /* Alphabetize returned list of fonts */ #define FEF_FIXED_WIDTH 0x20 /* Return only fixed-width fonts */ #define FEF_FAMILY 0x10 #define FEF_STRING 0x08 #define FEF_DOWNCASE 0x04 /* Returned font names will be lowercase */ #define FEF_BITMAPS 0x02 /* Interested in bitmap fonts */ #define FEF_OUTLINES 0x01 /* Interested in outline fonts */
Include: font.h
typedef struct {
FontIDs FES_ID;
char FES_name[FID_NAME_LEN];
} FontEnumStruct;
Include: font.h
typedef byte FontFamily; #define FF_NON_PORTABLE 0x0007 #define FF_SPECIAL 0x0006 #define FF_MONO 0x0005 #define FF_SYMBOL 0x0004 #define FF_ORNAMENT 0x0003 #define FF_SCRIPT 0x0002 #define FF_SANS_SERIF 0x0001 #define FF_SERIF 0x0000
Include: fontID.h
typedef enum /* word */ {
#define FG_NON_PORTABLE 0x0e00
#define FG_SPECIAL 0x0c00
#define FG_MONO 0x0a00
#define FG_SYMBOL 0x0800
#define FG_ORNAMENT 0x0600
#define FG_SCRIPT 0x0400
#define FG_SANS_SERIF 0x0200
#define FG_SERIF 0x0000
} FontGroup;
Include: fontID.h
typedef WordFlags FontIDRecord; #define FIDR_maker 0xf000 #define FIDR_ID 0x0fff #define FIDR_maker_OFFSET 12 #define FIDR_ID_OFFSET 0
Include: font.h
typedef word FontID; #define FID_PRINTER_20CPI 0xfa05 #define FID_PRINTER_17CPI 0xfa04 #define FID_PRINTER_16CPI 0xfa03 #define FID_PRINTER_15CPI 0xfa02 #define FID_PRINTER_12CPI 0xfa01 #define FID_PRINTER_10CPI 0xfa00 #define FID_PRINTER_PROP_SANS 0xf200 #define FID_PRINTER_PROP_SERIF 0xf000 #define FID_BITSTREAM_LETTER_GOTHIC 0x3a03 #define FID_PS_LETTER_GOTHIC 0x2a03 #define FID_DTC_LETTER_GOTHIC 0x1a03 #define FID_BITSTREAM_PRESTIGE_ELITE 0x3a02 #define FID_PS_PRESTIGE_ELITE 0x2a02 #define FID_DTC_PRESTIGE_ELITE 0x1a02 #define FID_BITSTREAM_AMERICAN_TYPEWRITER 0x3a01 #define FID_PS_AMERICAN_TYPEWRITER 0x2a01 #define FID_DTC_AMERICAN_TYPEWRITER 0x1a01 #define FID_BITSTREAM_URW_MONO 0x3a00 #define FID_PS_COURIER 0x2a00 #define FID_DTC_URW_MONO 0x1a00 #define FID_BITSTREAM_FUN_DINGBATS 0x380d #define FID_PS_FUN_DINGBATS 0x280d #define FID_DTC_FUN_DINGBATS 0x180d #define FID_BITSTREAM_CHEQ 0x380c #define FID_PS_CHEQ 0x280c #define FID_DTC_CHEQ 0x180c #define FID_BITSTREAM_BUNDESBAHN_PI_3 0x380b #define FID_PS_BUNDESBAHN_PI_3 0x280b #define FID_DTC_BUNDESBAHN_PI_3 0x180b #define FID_BITSTREAM_BUNDESBAHN_PI_2 0x380a #define FID_PS_BUNDESBAHN_PI_2 0x280a #define FID_DTC_BUNDESBAHN_PI_2 0x180a #define FID_BITSTREAM_BUNDESBAHN_PI_1 0x3809 #define FID_PS_BUNDESBAHN_PI_1 0x2809 #define FID_DTC_BUNDESBAHN_PI_1 0x1809 #define FID_BITSTREAM_U_GREEK_MATH_PI 0x3808 #define FID_PS_U_GREEK_MATH_PI 0x2808 #define FID_DTC_U_GREEK_MATH_PI 0x1808 #define FID_BITSTREAM_U_NEWS_COMM_PI 0x3807 #define FID_PS_U_NEWS_COMM_PI 0x2807 #define FID_DTC_U_NEWS_COMM_PI 0x1807 #define FID_BITSTREAM_ACE_I 0x3806 #define FID_PS_ACE_I 0x2806 #define FID_DTC_ACE_I 0x1806 #define FID_BITSTREAM_SONATA 0x3805 #define FID_PS_SONATA 0x2805 #define FID_DTC_SONATA 0x1805 #define FID_BITSTREAM_CARTA 0x3804 #define FID_PS_CARTA 0x2804 #define FID_DTC_CARTA 0x1804 #define FID_BITSTREAM_MICR 0x3803 #define FID_PS_MICR 0x2803 #define FID_DTC_MICR 0x1803 #define FID_BITSTREAM_ZAPF_DINGBATS 0x3802 #define FID_PS_ZAPF_DINGBATS 0x2802 #define FID_DTC_ZAPF_DINGBATS 0x1802 #define FID_BITSTREAM_DINGBATS 0x3801 #define FID_PS_DINGBATS 0x2801 #define FID_DTC_DINGBATS 0x1801 #define FID_BITSTREAM_URW_SYMBOLPS 0x3800 #define FID_PS_SYMBOL 0x2800 #define FID_DTC_URW_SYMBOLPS 0x1800 #define FID_BITSTREAM_JUNIPER 0x367f #define FID_PS_JUNIPER 0x267f #define FID_DTC_JUNIPER 0x167f #define FID_BITSTREAM_COTTONWOOD 0x367e #define FID_PS_COTTONWOOD 0x267e #define FID_DTC_COTTONWOOD 0x167e #define FID_BITSTREAM_BANCO 0x367d #define FID_PS_BANCO 0x267d #define FID_DTC_BANCO 0x167d #define FID_BITSTREAM_ARCADIA 0x367c #define FID_PS_ARCADIA 0x267c #define FID_DTC_ARCADIA 0x167c #define FID_BITSTREAM_ZIPPER 0x367b #define FID_PS_ZIPPER 0x267b #define FID_DTC_ZIPPER 0x167b #define FID_BITSTREAM_WEIFZ_RUNDGOTIFCH 0x367a #define FID_PS_WEIFZ_RUNDGOTIFCH 0x267a #define FID_DTC_WEIFZ_RUNDGOTIFCH 0x167a #define FID_BITSTREAM_WASHINGTON 0x3679 #define FID_PS_WASHINGTON 0x2679 #define FID_DTC_WASHINGTON 0x1679 #define FID_BITSTREAM_VICTORIAN 0x3678 #define FID_PS_VICTORIAN 0x2678 #define FID_DTC_VICTORIAN 0x1678 #define FID_BITSTREAM_VEGAS 0x3677 #define FID_PS_VEGAS 0x2677 #define FID_DTC_VEGAS 0x1677 #define FID_BITSTREAM_VARIO 0x3676 #define FID_PS_VARIO 0x2676 #define FID_DTC_VARIO 0x1676 #define FID_BITSTREAM_VAG_RUNDSCHRIFT 0x3675 #define FID_PS_VAG_RUNDSCHRIFT 0x2675 #define FID_DTC_VAG_RUNDSCHRIFT 0x1675 #define FID_BITSTREAM_TRAJANUS 0x3674 #define FID_PS_TRAJANUS 0x2674 #define FID_DTC_TRAJANUS 0x1674 #define FID_BITSTREAM_TITUS 0x3673 #define FID_PS_TITUS 0x2673 #define FID_DTC_TITUS 0x1673 #define FID_BITSTREAM_TIME_SCRIPT 0x3672 #define FID_PS_TIME_SCRIPT 0x2672 #define FID_DTC_TIME_SCRIPT 0x1672 #define FID_BITSTREAM_THUNDERBIRD 0x3671 #define FID_PS_THUNDERBIRD 0x2671 #define FID_DTC_THUNDERBIRD 0x1671 #define FID_BITSTREAM_THOROWGOOD 0x3670 #define FID_PS_THOROWGOOD 0x2670 #define FID_DTC_THOROWGOOD 0x1670 #define FID_BITSTREAM_TARRAGON 0x366f #define FID_PS_TARRAGON 0x266f #define FID_DTC_TARRAGON 0x166f #define FID_BITSTREAM_TANGO 0x366e #define FID_PS_TANGO 0x266e #define FID_DTC_TANGO 0x166e #define FID_BITSTREAM_SYNCHRO 0x366d #define FID_PS_SYNCHRO 0x266d #define FID_DTC_SYNCHRO 0x166d #define FID_BITSTREAM_SUPERSTAR 0x366c #define FID_PS_SUPERSTAR 0x266c #define FID_DTC_SUPERSTAR 0x166c #define FID_BITSTREAM_STOP 0x366b #define FID_PS_STOP 0x266b #define FID_DTC_STOP 0x166b #define FID_BITSTREAM_STILLA_CAPS 0x366a #define FID_PS_STILLA_CAPS 0x266a #define FID_DTC_STILLA_CAPS 0x166a #define FID_BITSTREAM_STILLA 0x3669 #define FID_PS_STILLA 0x2669 #define FID_DTC_STILLA 0x1669 #define FID_BITSTREAM_STENTOR 0x3668 #define FID_PS_STENTOR 0x2668 #define FID_DTC_STENTOR 0x1668 #define FID_BITSTREAM_SQUIRE 0x3667 #define FID_PS_SQUIRE 0x2667 #define FID_DTC_SQUIRE 0x1667 #define FID_BITSTREAM_SPRINGFIELD 0x3666 #define FID_PS_SPRINGFIELD 0x2666 #define FID_DTC_SPRINGFIELD 0x1666 #define FID_BITSTREAM_SLIPSTREAM 0x3665 #define FID_PS_SLIPSTREAM 0x2665 #define FID_DTC_SLIPSTREAM 0x1665 #define FID_BITSTREAM_SINALOA 0x3664 #define FID_PS_SINALOA 0x2664 #define FID_DTC_SINALOA 0x1664 #define FID_BITSTREAM_SHELLEY 0x3663 #define FID_PS_SHELLEY 0x2663 #define FID_DTC_SHELLEY 0x1663 #define FID_BITSTREAM_SERPENTINE 0x3662 #define FID_PS_SERPENTINE 0x2662 #define FID_DTC_SERPENTINE 0x1662 #define FID_BITSTREAM_RUBBER_STAMP 0x3661 #define FID_PS_RUBBER_STAMP 0x2661 #define FID_DTC_RUBBER_STAMP 0x1661 #define FID_BITSTREAM_ROMIC 0x3660 #define FID_PS_ROMIC 0x2660 #define FID_DTC_ROMIC 0x1660 #define FID_BITSTREAM_RIALTO 0x365f #define FID_PS_RIALTO 0x265f #define FID_DTC_RIALTO 0x165f #define FID_BITSTREAM_REVUE 0x365e #define FID_PS_REVUE 0x265e #define FID_DTC_REVUE 0x165e #define FID_BITSTREAM_QUENTIN 0x365d #define FID_PS_QUENTIN 0x265d #define FID_DTC_QUENTIN 0x165d #define FID_BITSTREAM_PRO_ARTE 0x365c #define FID_PS_PRO_ARTE 0x265c #define FID_DTC_PRO_ARTE 0x165c #define FID_BITSTREAM_PRINCETOWN 0x365b #define FID_PS_PRINCETOWN 0x265b #define FID_DTC_PRINCETOWN 0x165b #define FID_BITSTREAM_PRESIDENT 0x365a #define FID_PS_PRESIDENT 0x265a #define FID_DTC_PRESIDENT 0x165a #define FID_BITSTREAM_PREMIER 0x3659 #define FID_PS_PREMIER 0x2659 #define FID_DTC_PREMIER 0x1659 #define FID_BITSTREAM_POST_ANTIQUA 0x3658 #define FID_PS_POST_ANTIQUA 0x2658 #define FID_DTC_POST_ANTIQUA 0x1658 #define FID_BITSTREAM_PLAZA 0x3657 #define FID_PS_PLAZA 0x2657 #define FID_DTC_PLAZA 0x1657 #define FID_BITSTREAM_PLAYBILL 0x3656 #define FID_PS_PLAYBILL 0x2656 #define FID_DTC_PLAYBILL 0x1656 #define FID_BITSTREAM_PICCADILLY 0x3655 #define FID_PS_PICCADILLY 0x2655 #define FID_DTC_PICCADILLY 0x1655 #define FID_BITSTREAM_PEIGNOT 0x3654 #define FID_PS_PEIGNOT 0x2654 #define FID_DTC_PEIGNOT 0x1654 #define FID_BITSTREAM_PAPYRUS 0x3653 #define FID_PS_PAPYRUS 0x2653 #define FID_DTC_PAPYRUS 0x1653 #define FID_BITSTREAM_PADDINGTION 0x3652 #define FID_PS_PADDINGTION 0x2652 #define FID_DTC_PADDINGTION 0x1652 #define FID_BITSTREAM_OKAY 0x3651 #define FID_PS_OKAY 0x2651 #define FID_DTC_OKAY 0x1651 #define FID_BITSTREAM_ODIN 0x3650 #define FID_PS_ODIN 0x2650 #define FID_DTC_ODIN 0x1650 #define FID_BITSTREAM_OCTOPUSS 0x364f #define FID_PS_OCTOPUSS 0x264f #define FID_DTC_OCTOPUSS 0x164f #define FID_BITSTREAM_MOTTER_FEMINA 0x364e #define FID_PS_MOTTER_FEMINA 0x264e #define FID_DTC_MOTTER_FEMINA 0x164e #define FID_BITSTREAM_MICROGRAMMA 0x364d #define FID_PS_MICROGRAMMA 0x264d #define FID_DTC_MICROGRAMMA 0x164d #define FID_BITSTREAM_MACHINE 0x364c #define FID_PS_MACHINE 0x264c #define FID_DTC_MACHINE 0x164c #define FID_BITSTREAM_LINOTEXT 0x364b #define FID_PS_LINOTEXT 0x264b #define FID_DTC_LINOTEXT 0x164b #define FID_BITSTREAM_LIBERTY 0x364a #define FID_PS_LIBERTY 0x264a #define FID_DTC_LIBERTY 0x164a #define FID_BITSTREAM_LAZYBONES 0x3649 #define FID_PS_LAZYBONES 0x2649 #define FID_DTC_LAZYBONES 0x1649 #define FID_BITSTREAM_LATIN_WIDE 0x3648 #define FID_PS_LATIN_WIDE 0x2648 #define FID_DTC_LATIN_WIDE 0x1648 #define FID_BITSTREAM_KNIGHTSBRIDGE 0x3647 #define FID_PS_KNIGHTSBRIDGE 0x2647 #define FID_DTC_KNIGHTSBRIDGE 0x1647 #define FID_BITSTREAM_KAPITELLIA 0x3646 #define FID_PS_KAPITELLIA 0x2646 #define FID_DTC_KAPITELLIA 0x1646 #define FID_BITSTREAM_KALLIGRAPHIA 0x3645 #define FID_PS_KALLIGRAPHIA 0x2645 #define FID_DTC_KALLIGRAPHIA 0x1645 #define FID_BITSTREAM_ICE_AGE 0x3644 #define FID_PS_ICE_AGE 0x2644 #define FID_DTC_ICE_AGE 0x1644 #define FID_BITSTREAM_ICONE 0x3643 #define FID_PS_ICONE 0x2643 #define FID_DTC_ICONE 0x1643 #define FID_BITSTREAM_HORNDON 0x3642 #define FID_PS_HORNDON 0x2642 #define FID_DTC_HORNDON 0x1642 #define FID_BITSTREAM_HORATIO 0x3641 #define FID_PS_HORATIO 0x2641 #define FID_DTC_HORATIO 0x1641 #define FID_BITSTREAM_HIGHLIGHT 0x3640 #define FID_PS_HIGHLIGHT 0x2640 #define FID_DTC_HIGHLIGHT 0x1640 #define FID_BITSTREAM_HADFIELD 0x363f #define FID_PS_HADFIELD 0x263f #define FID_DTC_HADFIELD 0x163f #define FID_BITSTREAM_GLASER_STENCIL 0x363e #define FID_PS_GLASER_STENCIL 0x263e #define FID_DTC_GLASER_STENCIL 0x163e #define FID_BITSTREAM_GILL_KAYO 0x363d #define FID_PS_GILL_KAYO 0x263d #define FID_DTC_GILL_KAYO 0x163d #define FID_BITSTREAM_GALADRIEL 0x363c #define FID_PS_GALADRIEL 0x263c #define FID_DTC_GALADRIEL 0x163c #define FID_BITSTREAM_FUTURA_DISPLAY 0x363b #define FID_PS_FUTURA_DISPLAY 0x263b #define FID_DTC_FUTURA_DISPLAY 0x163b #define FID_BITSTREAM_FUTURA_C_BLACK 0x363a #define FID_PS_FUTURA_C_BLACK 0x263a #define FID_DTC_FUTURA_C_BLACK 0x163a #define FID_BITSTREAM_FRANKFURTER 0x3639 #define FID_PS_FRANKFURTER 0x2639 #define FID_DTC_FRANKFURTER 0x1639 #define FID_BITSTREAM_FLORA 0x3638 #define FID_PS_FLORA 0x2638 #define FID_DTC_FLORA 0x1638 #define FID_BITSTREAM_FLANGE 0x3637 #define FID_PS_FLANGE 0x2637 #define FID_DTC_FLANGE 0x1637 #define FID_BITSTREAM_FLASH 0x3636 #define FID_PS_FLASH 0x2636 #define FID_DTC_FLASH 0x1636 #define FID_BITSTREAM_FLAMENCO 0x3635 #define FID_PS_FLAMENCO 0x2635 #define FID_DTC_FLAMENCO 0x1635 #define FID_BITSTREAM_FETTE_GOTILCH 0x3634 #define FID_PS_FETTE_GOTILCH 0x2634 #define FID_DTC_FETTE_GOTILCH 0x1634 #define FID_BITSTREAM_FETTE_FRAKTUR 0x3633 #define FID_PS_FETTE_FRAKTUR 0x2633 #define FID_DTC_FETTE_FRAKTUR 0x1633 #define FID_BITSTREAM_ENVIRO 0x3632 #define FID_PS_ENVIRO 0x2632 #define FID_DTC_ENVIRO 0x1632 #define FID_BITSTREAM_EINHORN 0x3631 #define FID_PS_EINHORN 0x2631 #define FID_DTC_EINHORN 0x1631 #define FID_BITSTREAM_ECKMANN 0x3630 #define FID_PS_ECKMANN 0x2630 #define FID_DTC_ECKMANN 0x1630 #define FID_BITSTREAM_DYNAMO 0x362f #define FID_PS_DYNAMO 0x262f #define FID_DTC_DYNAMO 0x162f #define FID_BITSTREAM_DOM_CASUAL 0x362e #define FID_PS_DOM_CASUAL 0x262e #define FID_DTC_DOM_CASUAL 0x162e #define FID_BITSTREAM_DAVIDA 0x362d #define FID_PS_DAVIDA 0x262d #define FID_DTC_DAVIDA 0x162d #define FID_BITSTREAM_CROISSANT 0x362c #define FID_PS_CROISSANT 0x262c #define FID_DTC_CROISSANT 0x162c #define FID_BITSTREAM_CRILLEE 0x362b #define FID_PS_CRILLEE 0x262b #define FID_DTC_CRILLEE 0x162b #define FID_BITSTREAM_COUNTDOWN 0x362a #define FID_PS_COUNTDOWN 0x262a #define FID_DTC_COUNTDOWN 0x162a #define FID_BITSTREAM_CORTEZ 0x3629 #define FID_PS_CORTEZ 0x2629 #define FID_DTC_CORTEZ 0x1629 #define FID_BITSTREAM_CONFERENCE 0x3628 #define FID_PS_CONFERENCE 0x2628 #define FID_DTC_CONFERENCE 0x1628 #define FID_BITSTREAM_COMPANY 0x3627 #define FID_PS_COMPANY 0x2627 #define FID_DTC_COMPANY 0x1627 #define FID_BITSTREAM_COLUMNA_SOLID 0x3626 #define FID_PS_COLUMNA_SOLID 0x2626 #define FID_DTC_COLUMNA_SOLID 0x1626 #define FID_BITSTREAM_CITY 0x3625 #define FID_PS_CITY 0x2625 #define FID_DTC_CITY 0x1625 #define FID_BITSTREAM_CIRKULUS 0x3624 #define FID_PS_CIRKULUS 0x2624 #define FID_DTC_CIRKULUS 0x1624 #define FID_BITSTREAM_CHURCHWARD_BRUSH 0x3623 #define FID_PS_CHURCHWARD_BRUSH 0x2623 #define FID_DTC_CHURCHWARD_BRUSH 0x1623 #define FID_BITSTREAM_CHROMIUM_ONE 0x3622 #define FID_PS_CHROMIUM_ONE 0x2622 #define FID_DTC_CHROMIUM_ONE 0x1622 #define FID_BITSTREAM_CHOC 0x3621 #define FID_PS_CHOC 0x2621 #define FID_DTC_CHOC 0x1621 #define FID_BITSTREAM_CHISEL 0x3620 #define FID_PS_CHISEL 0x2620 #define FID_DTC_CHISEL 0x1620 #define FID_BITSTREAM_CHESTERFIELD 0x361f #define FID_PS_CHESTERFIELD 0x261f #define FID_DTC_CHESTERFIELD 0x161f #define FID_BITSTREAM_CAROUSEL 0x361e #define FID_PS_CAROUSEL 0x261e #define FID_DTC_CAROUSEL 0x161e #define FID_BITSTREAM_CAMELLIA 0x361d #define FID_PS_CAMELLIA 0x261d #define FID_DTC_CAMELLIA 0x161d #define FID_BITSTREAM_CABARET 0x361c #define FID_PS_CABARET 0x261c #define FID_DTC_CABARET 0x161c #define FID_BITSTREAM_BUXOM 0x361b #define FID_PS_BUXOM 0x261b #define FID_DTC_BUXOM 0x161b #define FID_BITSTREAM_BUSTER 0x361a #define FID_PS_BUSTER 0x261a #define FID_DTC_BUSTER 0x161a #define FID_BITSTREAM_BOTTLENECK 0x3619 #define FID_PS_BOTTLENECK 0x2619 #define FID_DTC_BOTTLENECK 0x1619 #define FID_BITSTREAM_BLOCK 0x3618 #define FID_PS_BLOCK 0x2618 #define FID_DTC_BLOCK 0x1618 #define FID_BITSTREAM_BINNER 0x3617 #define FID_PS_BINNER 0x2617 #define FID_DTC_BINNER 0x1617 #define FID_BITSTREAM_BERNHARD_ANTIQUE 0x3616 #define FID_PS_BERNHARD_ANTIQUE 0x2616 #define FID_DTC_BERNHARD_ANTIQUE 0x1616 #define FID_BITSTREAM_BELSHAW 0x3615 #define FID_PS_BELSHAW 0x2615 #define FID_DTC_BELSHAW 0x1615 #define FID_BITSTREAM_BARCELONA 0x3614 #define FID_PS_BARCELONA 0x2614 #define FID_DTC_BARCELONA 0x1614 #define FID_BITSTREAM_BAUHAUS 0x3613 #define FID_PS_BAUHAUS 0x2613 #define FID_DTC_BAUHAUS 0x1613 #define FID_BITSTREAM_AUGUSTEA_OPEN 0x3612 #define FID_PS_AUGUSTEA_OPEN 0x2612 #define FID_DTC_AUGUSTEA_OPEN 0x1612 #define FID_BITSTREAM_AMERICAN_UNCIAL 0x3611 #define FID_PS_AMERICAN_UNCIAL 0x2611 #define FID_DTC_AMERICAN_UNCIAL 0x1611 #define FID_BITSTREAM_ULTE_SCHWABACHER 0x3610 #define FID_PS_ULTE_SCHWABACHER 0x2610 #define FID_DTC_ULTE_SCHWABACHER 0x1610 #define FID_BITSTREAM_ARNOLD_BOCKLIN 0x360f #define FID_PS_ARNOLD_BOCKLIN 0x260f #define FID_DTC_ARNOLD_BOCKLIN 0x160f #define FID_BITSTREAM_ALGERIAN 0x360e #define FID_PS_ALGERIAN 0x260e #define FID_DTC_ALGERIAN 0x160e #define FID_BITSTREAM_PUMP 0x360d #define FID_PS_PUMP 0x260d #define FID_DTC_PUMP 0x160d #define FID_BITSTREAM_MARIAGE 0x360c #define FID_PS_MARIAGE 0x260c #define FID_DTC_MARIAGE 0x160c #define FID_BITSTREAM_OLD_TOWN 0x360b #define FID_PS_OLD_TOWN 0x260b #define FID_DTC_OLD_TOWN 0x160b #define FID_BITSTREAM_HOBO 0x360a #define FID_PS_HOBO 0x260a #define FID_DTC_HOBO 0x160a #define FID_BITSTREAM_GOUDY_HEAVYFACE 0x3609 #define FID_PS_GOUDY_HEAVYFACE 0x2609 #define FID_DTC_GOUDY_HEAVYFACE 0x1609 #define FID_BITSTREAM_DATA_70 0x3608 #define FID_PS_DATA_70 0x2608 #define FID_DTC_DATA_70 0x1608 #define FID_BITSTREAM_LCD 0x3607 #define FID_PS_LCD 0x2607 #define FID_DTC_LCD 0x1607 #define FID_BITSTREAM_BALLOON 0x3606 #define FID_PS_BALLOON 0x2606 #define FID_DTC_BALLOON 0x1606 #define FID_BITSTREAM_BLIPPO_C_BLACK 0x3605 #define FID_PS_BLIPPO_C_BLACK 0x2605 #define FID_DTC_BLIPPO_C_BLACK 0x1605 #define FID_BITSTREAM_COOPER_C_BLACK 0x3604 #define FID_PS_COOPER_C_BLACK 0x2604 #define FID_DTC_COOPER_C_BLACK 0x1604 #define FID_BITSTREAM_COPPERPLATE 0x3603 #define FID_PS_COPPERPLATE 0x2603 #define FID_DTC_COPPERPLATE 0x1603 #define FID_BITSTREAM_STENCIL 0x3602 #define FID_PS_STENCIL 0x2602 #define FID_DTC_STENCIL 0x1602 #define FID_BITSTREAM_OLD_ENGLISH 0x3601 #define FID_PS_OLD_ENGLISH 0x2601 #define FID_DTC_OLD_ENGLISH 0x1601 #define FID_BITSTREAM_BROADWAY 0x3600 #define FID_PS_BROADWAY 0x2600 #define FID_DTC_BROADWAY 0x1600 #define FID_BITSTREAM_NUPITAL_SCRIPT 0x3430 #define FID_PS_NUPITAL_SCRIPT 0x2430 #define FID_DTC_NUPITAL_SCRIPT 0x1430 #define FID_BITSTREAM_MEDICI_SCRIPT 0x342f #define FID_PS_MEDICI_SCRIPT 0x242f #define FID_DTC_MEDICI_SCRIPT 0x142f #define FID_BITSTREAM_CHARME 0x342e #define FID_PS_CHARME 0x242e #define FID_DTC_CHARME 0x142e #define FID_BITSTREAM_CASCADE_SCRIPT 0x342d #define FID_PS_CASCADE_SCRIPT 0x242d #define FID_DTC_CASCADE_SCRIPT 0x142d #define FID_BITSTREAM_LITHOS 0x342c #define FID_PS_LITHOS 0x242c #define FID_DTC_LITHOS 0x142c #define FID_BITSTREAM_TEKTON 0x342b #define FID_PS_TEKTON 0x242b #define FID_DTC_TEKTON 0x142b #define FID_BITSTREAM_VLADIMIR_SCRIPT 0x342a #define FID_PS_VLADIMIR_SCRIPT 0x242a #define FID_DTC_VLADIMIR_SCRIPT 0x142a #define FID_BITSTREAM_VAN_DIJK 0x3429 #define FID_PS_VAN_DIJK 0x2429 #define FID_DTC_VAN_DIJK 0x1429 #define FID_BITSTREAM_SLOGAN 0x3428 #define FID_PS_SLOGAN 0x2428 #define FID_DTC_SLOGAN 0x1428 #define FID_BITSTREAM_SHAMROCK 0x3427 #define FID_PS_SHAMROCK 0x2427 #define FID_DTC_SHAMROCK 0x1427 #define FID_BITSTREAM_ROMAN_SCRIPT 0x3426 #define FID_PS_ROMAN_SCRIPT 0x2426 #define FID_DTC_ROMAN_SCRIPT 0x1426 #define FID_BITSTREAM_RAGE 0x3425 #define FID_PS_RAGE 0x2425 #define FID_DTC_RAGE 0x1425 #define FID_BITSTREAM_PRESENT_SCRIPT 0x3424 #define FID_PS_PRESENT_SCRIPT 0x2424 #define FID_DTC_PRESENT_SCRIPT 0x1424 #define FID_BITSTREAM_PHYLLIS_INITIALS 0x3423 #define FID_PS_PHYLLIS_INITIALS 0x2423 #define FID_DTC_PHYLLIS_INITIALS 0x1423 #define FID_BITSTREAM_PHYLLIS 0x3422 #define FID_PS_PHYLLIS 0x2422 #define FID_DTC_PHYLLIS 0x1422 #define FID_BITSTREAM_PEPITA 0x3421 #define FID_PS_PEPITA 0x2421 #define FID_DTC_PEPITA 0x1421 #define FID_BITSTREAM_PENDRY_SCRIPT 0x3420 #define FID_PS_PENDRY_SCRIPT 0x2420 #define FID_DTC_PENDRY_SCRIPT 0x1420 #define FID_BITSTREAM_PALETTE 0x341f #define FID_PS_PALETTE 0x241f #define FID_DTC_PALETTE 0x141f #define FID_BITSTREAM_PALACE_SCRIPT 0x341e #define FID_PS_PALACE_SCRIPT 0x241e #define FID_DTC_PALACE_SCRIPT 0x141e #define FID_BITSTREAM_NEVISON_CASUAL 0x341d #define FID_PS_NEVISON_CASUAL 0x241d #define FID_DTC_NEVISON_CASUAL 0x141d #define FID_BITSTREAM_HILL 0x341c #define FID_PS_HILL 0x241c #define FID_DTC_HILL 0x141c #define FID_BITSTREAM_LINOSCRIPT 0x341b #define FID_PS_LINOSCRIPT 0x241b #define FID_DTC_LINOSCRIPT 0x141b #define FID_BITSTREAM_LINDSAY 0x341a #define FID_PS_LINDSAY 0x241a #define FID_DTC_LINDSAY 0x141a #define FID_BITSTREAM_LE_GRIFFE 0x3419 #define FID_PS_LE_GRIFFE 0x2419 #define FID_DTC_LE_GRIFFE 0x1419 #define FID_BITSTREAM_KUNSTLERSCHREIBSCHRIFT 0x3418 #define FID_PS_KUNSTLERSCHREIBSCHRIFT 0x2418 #define FID_DTC_KUNSTLERSCHREIBSCHRIFT 0x1418 #define FID_BITSTREAM_JULIA_SCRIPT 0x3417 #define FID_PS_JULIA_SCRIPT 0x2417 #define FID_DTC_JULIA_SCRIPT 0x1417 #define FID_BITSTREAM_ISBELL 0x3416 #define FID_PS_ISBELL 0x2416 #define FID_DTC_ISBELL 0x1416 #define FID_BITSTREAM_ISADORA 0x3415 #define FID_PS_ISADORA 0x2415 #define FID_DTC_ISADORA 0x1415 #define FID_BITSTREAM_HOGARTH_SCRIPT 0x3414 #define FID_PS_HOGARTH_SCRIPT 0x2414 #define FID_DTC_HOGARTH_SCRIPT 0x1414 #define FID_BITSTREAM_HARLOW 0x3413 #define FID_PS_HARLOW 0x2413 #define FID_DTC_HARLOW 0x1413 #define FID_BITSTREAM_GLASTONBURY 0x3412 #define FID_PS_GLASTONBURY 0x2412 #define FID_DTC_GLASTONBURY 0x1412 #define FID_BITSTREAM_GILLIES_GOTHIC 0x3411 #define FID_PS_GILLIES_GOTHIC 0x2411 #define FID_DTC_GILLIES_GOTHIC 0x1411 #define FID_BITSTREAM_FREESTYLE_SCRIPT 0x3410 #define FID_PS_FREESTYLE_SCRIPT 0x2410 #define FID_DTC_FREESTYLE_SCRIPT 0x1410 #define FID_BITSTREAM_ENGLISCHE_SCHREIBSCHRIFT 0x340f #define FID_PS_ENGLISCHE_SCHREIBSCHRIFT 0x240f #define FID_DTC_ENGLISCHE_SCHREIBSCHRIFT 0x140f #define FID_BITSTREAM_DEMIAN 0x340e #define FID_PS_DEMIAN 0x240e #define FID_DTC_DEMIAN 0x140e #define FID_BITSTREAM_CANDICE 0x340d #define FID_PS_CANDICE 0x240d #define FID_DTC_CANDICE 0x140d #define FID_BITSTREAM_BRONX 0x340c #define FID_PS_BRONX 0x240c #define FID_DTC_BRONX 0x140x #define FID_BITSTREAM_BRODY 0x340b #define FID_PS_BRODY 0x240b #define FID_DTC_BRODY 0x140b #define FID_BITSTREAM_BIBLE_SCRIPT 0x340a #define FID_PS_BIBLE_SCRIPT 0x240a #define FID_DTC_BIBLE_SCRIPT 0x140a #define FID_BITSTREAM_ARISTON 0x3409 #define FID_PS_ARISTON 0x2409 #define FID_DTC_ARISTON 0x1409 #define FID_BITSTREAM_ANGLIA 0x3408 #define FID_PS_ANGLIA 0x2408 #define FID_DTC_ANGLIA 0x1408 #define FID_BITSTREAM_MISTRAL 0x3407 #define FID_PS_MISTRAL 0x2407 #define FID_DTC_MISTRAL 0x1407 #define FID_BITSTREAM_BALMORAL 0x3406 #define FID_PS_BALMORAL 0x2406 #define FID_DTC_BALMORAL 0x1406 #define FID_BITSTREAM_COMMERCIAL_SCRIPT 0x3405 #define FID_PS_COMMERCIAL_SCRIPT 0x2405 #define FID_DTC_COMMERCIAL_SCRIPT 0x1405 #define FID_BITSTREAM_KAUFMANN 0x3404 #define FID_PS_KAUFMANN 0x2404 #define FID_DTC_KAUFMANN 0x1404 #define FID_BITSTREAM_PARK_AVENUE 0x3403 #define FID_PS_PARK_AVENUE 0x2403 #define FID_DTC_PARK_AVENUE 0x1403 #define FID_BITSTREAM_BRUSH_SCRIPT 0x3402 #define FID_PS_BRUSH_SCRIPT 0x2402 #define FID_DTC_BRUSH_SCRIPT 0x1402 #define FID_BITSTREAM_VIVALDI 0x3401 #define FID_PS_VIVALDI 0x2401 #define FID_DTC_VIVALDI 0x1401 #define FID_BITSTREAM_ZAPF_CHANCERY 0x3400 #define FID_PS_ZAPF_CHANCERY 0x2400 #define FID_DTC_ZAPF_CHANCERY 0x1400 #define FID_BITSTREAM_AVANTE_GARDE_CONDENSED 0x323d #define FID_PS_AVANTE_GARDE_CONDENSED 0x223d #define FID_DTC_AVANTE_GARDE_CONDENSED 0x123d #define FID_BITSTREAM_INSIGNIA 0x323c #define FID_PS_INSIGNIA 0x223c #define FID_DTC_INSIGNIA 0x123c #define FID_BITSTREAM_INDUSTRIA 0x323b #define FID_PS_INDUSTRIA 0x223b #define FID_DTC_INDUSTRIA 0x123b #define FID_BITSTREAM_DORIC_BOLD 0x323a #define FID_PS_DORIC_BOLD 0x223a #define FID_DTC_DORIC_BOLD 0x123a #define FID_BITSTREAM_AKZINDENZ_GROTESK 0x3239 #define FID_PS_AKZINDENZ_GROTESK 0x2239 #define FID_DTC_AKZINDENZ_GROTESK 0x1239 #define FID_BITSTREAM_GROTESK 0x3238 #define FID_PS_GROTESK 0x2238 #define FID_DTC_GROTESK 0x1238 #define FID_BITSTREAM_TEMPO 0x3237 #define FID_PS_TEMPO 0x2237 #define FID_DTC_TEMPO 0x1237 #define FID_BITSTREAM_SYNTAX 0x3236 #define FID_PS_SYNTAX 0x2236 #define FID_DTC_SYNTAX 0x1236 #define FID_BITSTREAM_STONE_SANS 0x3235 #define FID_PS_STONE_SANS 0x2235 #define FID_DTC_STONE_SANS 0x1235 #define FID_BITSTREAM_SERIF_GOTHIC 0x3234 #define FID_PS_SERIF_GOTHIC 0x2234 #define FID_DTC_SERIF_GOTHIC 0x1234 #define FID_BITSTREAM_PRIMUS_ANTIQUA 0x3233 #define FID_PS_PRIMUS_ANTIQUA 0x2233 #define FID_DTC_PRIMUS_ANTIQUA 0x1233 #define FID_BITSTREAM_PRIMUS 0x3232 #define FID_PS_PRIMUS 0x2232 #define FID_DTC_PRIMUS 0x1232 #define FID_BITSTREAM_PRAXIS 0x3231 #define FID_PS_PRAXIS 0x2231 #define FID_DTC_PRAXIS 0x1231 #define FID_BITSTREAM_PANACHE 0x3230 #define FID_PS_PANACHE 0x2230 #define FID_DTC_PANACHE 0x1230 #define FID_BITSTREAM_OCR_B 0x322f #define FID_PS_OCR_B 0x222f #define FID_DTC_OCR_B 0x122f #define FID_BITSTREAM_OCR_A 0x322e #define FID_PS_OCR_A 0x222e #define FID_DTC_OCR_A 0x122e #define FID_BITSTREAM_NEWTEXT 0x322d #define FID_PS_NEWTEXT 0x222d #define FID_DTC_NEWTEXT 0x122d #define FID_BITSTREAM_NEWS_GOTHIC 0x322c #define FID_PS_NEWS_GOTHIC 0x222c #define FID_DTC_NEWS_GOTHIC 0x122c #define FID_BITSTREAM_NEUZEIT_GROTESK 0x322b #define FID_PS_NEUZEIT_GROTESK 0x222b #define FID_DTC_NEUZEIT_GROTESK 0x122b #define FID_BITSTREAM_MIXAGE 0x322a #define FID_PS_MIXAGE 0x222a #define FID_DTC_MIXAGE 0x122a #define FID_BITSTREAM_MAXIMA 0x3229 #define FID_PS_MAXIMA 0x2229 #define FID_DTC_MAXIMA 0x1229 #define FID_BITSTREAM_LUCIDA_SANS 0x3228 #define FID_PS_LUCIDA_SANS 0x2228 #define FID_DTC_LUCIDA_SANS 0x1228 #define FID_BITSTREAM_LITERA 0x3227 #define FID_PS_LITERA 0x2227 #define FID_DTC_LITERA 0x1227 #define FID_BITSTREAM_KABEL 0x3226 #define FID_PS_KABEL 0x2226 #define FID_DTC_KABEL 0x1226 #define FID_BITSTREAM_HOLSATIA 0x3225 #define FID_PS_HOLSATIA 0x2225 #define FID_DTC_HOLSATIA 0x1225 #define FID_BITSTREAM_HELVETICA_INSERAT 0x3224 #define FID_PS_HELVETICA_INSERAT 0x2224 #define FID_DTC_HELVETICA_INSERAT 0x1224 #define FID_BITSTREAM_NEUE_HELVETICA 0x3223 #define FID_PS_NEUE_HELVETICA 0x2223 #define FID_DTC_NEUE_HELVETICA 0x1223 #define FID_BITSTREAM_HELVETICA 0x3222 #define FID_PS_HELVETICA 0x2222 #define FID_DTC_HELVETICA 0x1222 #define FID_BITSTREAM_HAAS_UNICA 0x3221 #define FID_PS_HAAS_UNICA 0x2221 #define FID_DTC_HAAS_UNICA 0x1221 #define FID_BITSTREAM_GOUDY_SANS 0x3220 #define FID_PS_GOUDY_SANS 0x2220 #define FID_DTC_GOUDY_SANS 0x1220 #define FID_BITSTREAM_GOTHIC 0x321f #define FID_PS_GOTHIC 0x221f #define FID_DTC_GOTHIC 0x121f #define FID_BITSTREAM_GILL_SANS 0x321e #define FID_PS_GILL_SANS 0x221e #define FID_DTC_GILL_SANS 0x121e #define FID_BITSTREAM_GILL 0x321d #define FID_PS_GILL 0x221d #define FID_DTC_GILL 0x121d #define FID_BITSTREAM_FUTURA 0x321c #define FID_PS_FUTURA 0x221c #define FID_DTC_FUTURA 0x121c #define FID_BITSTREAM_FOLIO 0x321b #define FID_PS_FOLIO 0x221b #define FID_DTC_FOLIO 0x121b #define FID_BITSTREAM_FLYER 0x321a #define FID_PS_FLYER 0x221a #define FID_DTC_FLYER 0x121a #define FID_BITSTREAM_FETTE_MIDSCHRIFT 0x3219 #define FID_PS_FETTE_MIDSCHRIFT 0x2219 #define FID_DTC_FETTE_MIDSCHRIFT 0x1219 #define FID_BITSTREAM_FETTE_ENGSCHRIFT 0x3218 #define FID_PS_FETTE_ENGSCHRIFT 0x2218 #define FID_DTC_FETTE_ENGSCHRIFT 0x1218 #define FID_BITSTREAM_ERAS 0x3217 #define FID_PS_ERAS 0x2217 #define FID_DTC_ERAS 0x1217 #define FID_BITSTREAM_DIGI_GROTESK 0x3216 #define FID_PS_DIGI_GROTESK 0x2216 #define FID_DTC_DIGI_GROTESK 0x1216 #define FID_BITSTREAM_CORINTHIAN 0x3215 #define FID_PS_CORINTHIAN 0x2215 #define FID_DTC_CORINTHIAN 0x1215 #define FID_BITSTREAM_COMPACTA 0x3214 #define FID_PS_COMPACTA 0x2214 #define FID_DTC_COMPACTA 0x1214 #define FID_BITSTREAM_CLEARFACE_GOTHIC 0x3213 #define FID_PS_CLEARFACE_GOTHIC 0x2213 #define FID_DTC_CLEARFACE_GOTHIC 0x1213 #define FID_BITSTREAM_OPTIMA 0x3212 #define FID_PS_OPTIMA 0x2212 #define FID_DTC_OPTIMA 0x1212 #define FID_BITSTREAM_CHELMSFORD 0x3211 #define FID_PS_CHELMSFORD 0x2211 #define FID_DTC_CHELMSFORD 0x1211 #define FID_BITSTREAM_CASTLE 0x3210 #define FID_PS_CASTLE 0x2210 #define FID_DTC_CASTLE 0x1210 #define FID_BITSTREAM_BRITANNIC 0x320f #define FID_PS_BRITANNIC 0x220f #define FID_DTC_BRITANNIC 0x120f #define FID_BITSTREAM_BERLINER_GROTESK 0x320e #define FID_PS_BERLINER_GROTESK 0x220e #define FID_DTC_BERLINER_GROTESK 0x120e #define FID_BITSTREAM_BENGUIAT_GOTHIC 0x320d #define FID_PS_BENGUIAT_GOTHIC 0x220d #define FID_DTC_BENGUIAT_GOTHIC 0x120d #define FID_BITSTREAM_AVANTE_GARDE 0x320c #define FID_PS_AVANTE_GARDE 0x220c #define FID_DTC_AVANTE_GARDE 0x120c #define FID_BITSTREAM_ANZEIGEN_GROTESK 0x320b #define FID_PS_ANZEIGEN_GROTESK 0x220b #define FID_DTC_ANZEIGEN_GROTESK 0x120b #define FID_BITSTREAM_ANTIQUE_OLIVE 0x320a #define FID_PS_ANTIQUE_OLIVE 0x220a #define FID_DTC_ANTIQUE_OLIVE 0x120a #define FID_BITSTREAM_ALTERNATE_GOTHIC 0x3209 #define FID_PS_ALTERNATE_GOTHIC 0x2209 #define FID_DTC_ALTERNATE_GOTHIC 0x1209 #define FID_BITSTREAM_AKZIDENZ_GROTESK_BUCH 0x3208 #define FID_PS_AKZIDENZ_GROTESK_BUCH 0x2208 #define FID_DTC_AKZIDENZ_GROTESK_BUCH 0x1208 #define FID_BITSTREAM_AKZIDENZ_GROTESK 0x3207 #define FID_PS_AKZIDENZ_GROTESK 0x2207 #define FID_DTC_AKZIDENZ_GROTESK 0x1207 #define FID_BITSTREAM_AVENIR 0x3206 #define FID_PS_AVENIR 0x2206 #define FID_DTC_AVENIR 0x1206 #define FID_BITSTREAM_UNIVERS 0x3205 #define FID_PS_UNIVERS 0x2205 #define FID_DTC_UNIVERS 0x1205 #define FID_BITSTREAM_FRANKLIN_GOTHIC 0x3204 #define FID_PS_FRANKLIN_GOTHIC 0x2204 #define FID_DTC_FRANKLIN_GOTHIC 0x1204 #define FID_BITSTREAM_ANGRO 0x3203 #define FID_PS_ANGRO 0x2203 #define FID_DTC_ANGRO 0x1203 #define FID_BITSTREAM_EUROSTILE 0x3202 #define FID_PS_EUROSTILE 0x2202 #define FID_DTC_EUROSTILE 0x1202 #define FID_BITSTREAM_FRUTIGER 0x3201 #define FID_PS_FRUTIGER 0x2201 #define FID_DTC_FRUTIGER 0x1201 #define FID_BITSTREAM_URW_SANS 0x3200 #define FID_PS_URW_SANS 0x2200 #define FID_DTC_URW_SANS 0x1200 #define FID_BITSTREAM_GALLIARD_ROMAN_ITALIC 0x307e #define FID_PS_GALLIARD_ROMAN_ITALIC 0x207e #define FID_DTC_GALLIARD_ROMAN_ITALIC 0x107e #define FID_BITSTREAM_GRANJON 0x307d #define FID_PS_GRANJON 0x207d #define FID_DTC_GRANJON 0x107d #define FID_BITSTREAM_GARTH_GRAPHIC 0x307c #define FID_PS_GARTH_GRAPHIC 0x207c #define FID_DTC_GARTH_GRAPHIC 0x107c #define FID_BITSTREAM_BAUER_BODONI 0x307b #define FID_PS_BAUER_BODONI 0x207b #define FID_DTC_BAUER_BODONI 0x107b #define FID_BITSTREAM_BELWE 0x307a #define FID_PS_BELWE 0x207a #define FID_DTC_BELWE 0x107a #define FID_BITSTREAM_CHARLEMAGNE 0x3079 #define FID_PS_CHARLEMAGNE 0x2079 #define FID_DTC_CHARLEMAGNE 0x1079 #define FID_BITSTREAM_TRAJAN 0x3078 #define FID_PS_TRAJAN 0x2078 #define FID_DTC_TRAJAN 0x1078 #define FID_BITSTREAM_ADOBE_GARAMOND 0x3077 #define FID_PS_ADOBE_GARAMOND 0x2077 #define FID_DTC_ADOBE_GARAMOND 0x1077 #define FID_BITSTREAM_ZAPF_INTERNATIONAL 0x3076 #define FID_PS_ZAPF_INTERNATIONAL 0x2076 #define FID_DTC_ZAPF_INTERNATIONAL 0x1076 #define FID_BITSTREAM_ZAPF_BOOK 0x3075 #define FID_PS_ZAPF_BOOK 0x2075 #define FID_DTC_ZAPF_BOOK 0x1075 #define FID_BITSTREAM_WORCESTER_ROUND 0x3074 #define FID_PS_WORCESTER_ROUND 0x2074 #define FID_DTC_WORCESTER_ROUND 0x1074 #define FID_BITSTREAM_WINDSOR 0x3073 #define FID_PS_WINDSOR 0x2073 #define FID_DTC_WINDSOR 0x1073 #define FID_BITSTREAM_WEISS 0x3072 #define FID_PS_WEISS 0x2072 #define FID_DTC_WEISS 0x1072 #define FID_BITSTREAM_WEIDEMANN 0x3071 #define FID_PS_WEIDEMANN 0x2071 #define FID_DTC_WEIDEMANN 0x1071 #define FID_BITSTREAM_WALBAUM 0x3070 #define FID_PS_WALBAUM 0x2070 #define FID_DTC_WALBAUM 0x1070 #define FID_BITSTREAM_VOLTA 0x306f #define FID_PS_VOLTA 0x206f #define FID_DTC_VOLTA 0x106f #define FID_BITSTREAM_VENDOME 0x306e #define FID_PS_VENDOME 0x206e #define FID_DTC_VENDOME 0x106e #define FID_BITSTREAM_VELJOVIC 0x306d #define FID_PS_VELJOVIC 0x206d #define FID_DTC_VELJOVIC 0x106d #define FID_BITSTREAM_ADOBE_UTOPIA 0x306c #define FID_PS_ADOBE_UTOPIA 0x206c #define FID_DTC_ADOBE_UTOPIA 0x106c #define FID_BITSTREAM_USHERWOOD 0x306b #define FID_PS_USHERWOOD 0x206b #define FID_DTC_USHERWOOD 0x106b #define FID_BITSTREAM_URW_ANTIQUA 0x306a #define FID_PS_URW_ANTIQUA 0x206a #define FID_DTC_URW_ANTIQUA 0x106a #define FID_BITSTREAM_TIMES_NEW_ROMAN 0x3069 #define FID_PS_TIMES_NEW_ROMAN 0x2069 #define FID_DTC_TIMES_NEW_ROMAN 0x1069 #define FID_BITSTREAM_TIMELESS 0x3068 #define FID_PS_TIMELESS 0x2068 #define FID_DTC_TIMELESS 0x1068 #define FID_BITSTREAM_TIFFANY 0x3067 #define FID_PS_TIFFANY 0x2067 #define FID_DTC_TIFFANY 0x1067 #define FID_BITSTREAM_TIEPOLO 0x3066 #define FID_PS_TIEPOLO 0x2066 #define FID_DTC_TIEPOLO 0x1066 #define FID_BITSTREAM_SWIFT 0x3065 #define FID_PS_SWIFT 0x2065 #define FID_DTC_SWIFT 0x1065 #define FID_BITSTREAM_STYMIE 0x3064 #define FID_PS_STYMIE 0x2064 #define FID_DTC_STYMIE 0x1064 #define FID_BITSTREAM_STRATFORD 0x3063 #define FID_PS_STRATFORD 0x2063 #define FID_DTC_STRATFORD 0x1063 #define FID_BITSTREAM_STONE_SERIF 0x3062 #define FID_PS_STONE_SERIF 0x2062 #define FID_DTC_STONE_SERIF 0x1062 #define FID_BITSTREAM_STONE_INFORMAL 0x3061 #define FID_PS_STONE_INFORMAL 0x2061 #define FID_DTC_STONE_INFORMAL 0x1061 #define FID_BITSTREAM_STEMPEL_SCHNEIDLER 0x3060 #define FID_PS_STEMPEL_SCHNEIDLER 0x2060 #define FID_DTC_STEMPEL_SCHNEIDLER 0x1060 #define FID_BITSTREAM_SOUVENIR 0x305f #define FID_PS_SOUVENIR 0x205f #define FID_DTC_SOUVENIR 0x105f #define FID_BITSTREAM_SLIMBACH 0x305e #define FID_PS_SLIMBACH 0x205e #define FID_DTC_SLIMBACH 0x105e #define FID_BITSTREAM_SERIFA 0x305d #define FID_PS_SERIFA 0x205d #define FID_DTC_SERIFA 0x105d #define FID_BITSTREAM_SABON_ANTIQUA 0x305c #define FID_PS_SABON_ANTIQUA 0x205c #define FID_DTC_SABON_ANTIQUA 0x105c #define FID_BITSTREAM_SABON 0x305b #define FID_PS_SABON 0x205b #define FID_DTC_SABON 0x105b #define FID_BITSTREAM_ROMANA 0x305a #define FID_PS_ROMANA 0x205a #define FID_DTC_ROMANA 0x105a #define FID_BITSTREAM_ROCKWELL 0x3059 #define FID_PS_ROCKWELL 0x2059 #define FID_DTC_ROCKWELL 0x1059 #define FID_BITSTREAM_RENAULT 0x3058 #define FID_PS_RENAULT 0x2058 #define FID_DTC_RENAULT 0x1058 #define FID_BITSTREAM_RALEIGH 0x3057 #define FID_PS_RALEIGH 0x2057 #define FID_DTC_RALEIGH 0x1057 #define FID_BITSTREAM_QUORUM 0x3056 #define FID_PS_QUORUM 0x2056 #define FID_DTC_QUORUM 0x1056 #define FID_BITSTREAM_PROTEUS 0x3055 #define FID_PS_PROTEUS 0x2055 #define FID_DTC_PROTEUS 0x1055 #define FID_BITSTREAM_PLANTIN 0x3054 #define FID_PS_PLANTIN 0x2054 #define FID_DTC_PLANTIN 0x1054 #define FID_BITSTREAM_PERPETUA 0x3053 #define FID_PS_PERPETUA 0x2053 #define FID_DTC_PERPETUA 0x1053 #define FID_BITSTREAM_PACELLA 0x3052 #define FID_PS_PACELLA 0x2052 #define FID_DTC_PACELLA 0x1052 #define FID_BITSTREAM_NOVARESE 0x3051 #define FID_PS_NOVARESE 0x2051 #define FID_DTC_NOVARESE 0x1051 #define FID_BITSTREAM_NIMROD 0x3050 #define FID_PS_NIMROD 0x2050 #define FID_DTC_NIMROD 0x1050 #define FID_BITSTREAM_NIKIS 0x304f #define FID_PS_NIKIS 0x204f #define FID_DTC_NIKIS 0x104f #define FID_BITSTREAM_NAPOLEAN 0x304e #define FID_PS_NAPOLEAN 0x204e #define FID_DTC_NAPOLEAN 0x104e #define FID_BITSTREAM_MODERN_NO_216 0x304d #define FID_PS_MODERN_NO_216 0x204d #define FID_DTC_MODERN_NO_216 0x104d #define FID_BITSTREAM_MODERN 0x304c #define FID_PS_MODERN 0x204c #define FID_DTC_MODERN 0x104c #define FID_BITSTREAM_MINISTER 0x304b #define FID_PS_MINISTER 0x204b #define FID_DTC_MINISTER 0x104b #define FID_BITSTREAM_MESSIDOR 0x304a #define FID_PS_MESSIDOR 0x204a #define FID_DTC_MESSIDOR 0x104a #define FID_BITSTREAM_MERIDIEN 0x3049 #define FID_PS_MERIDIEN 0x2049 #define FID_DTC_MERIDIEN 0x1049 #define FID_BITSTREAM_MEMPHIS 0x3048 #define FID_PS_MEMPHIS 0x2048 #define FID_DTC_MEMPHIS 0x1048 #define FID_BITSTREAM_MELIOR 0x3047 #define FID_PS_MELIOR 0x2047 #define FID_DTC_MELIOR 0x1047 #define FID_BITSTREAM_MARCONI 0x3046 #define FID_PS_MARCONI 0x2046 #define FID_DTC_MARCONI 0x1046 #define FID_BITSTREAM_MAGNUS 0x3045 #define FID_PS_MAGNUS 0x2045 #define FID_DTC_MAGNUS 0x1045 #define FID_BITSTREAM_MAGNA 0x3044 #define FID_PS_MAGNA 0x2044 #define FID_DTC_MAGNA 0x1044 #define FID_BITSTREAM_MADISON 0x3043 #define FID_PS_MADISON 0x2043 #define FID_DTC_MADISON 0x1043 #define FID_BITSTREAM_LUCIDA 0x3042 #define FID_PS_LUCIDA 0x2042 #define FID_DTC_LUCIDA 0x1042 #define FID_BITSTREAM_LUBALIN_GRAPH 0x3041 #define FID_PS_LUBALIN_GRAPH 0x2041 #define FID_DTC_LUBALIN_GRAPH 0x1041 #define FID_BITSTREAM_LIFE 0x3040 #define FID_PS_LIFE 0x2040 #define FID_DTC_LIFE 0x1040 #define FID_BITSTREAM_LEAWOOD 0x303f #define FID_PS_LEAWOOD 0x203f #define FID_DTC_LEAWOOD 0x103f #define FID_BITSTREAM_KORINNA 0x303e #define FID_PS_KORINNA 0x203e #define FID_DTC_KORINNA 0x103e #define FID_BITSTREAM_JENSON_OLD_STYLE 0x303d #define FID_PS_JENSON_OLD_STYLE 0x203d #define FID_DTC_JENSON_OLD_STYLE 0x103d #define FID_BITSTREAM_JANSON 0x303c #define FID_PS_JANSON 0x203c #define FID_DTC_JANSON 0x103c #define FID_BITSTREAM_JAMILLE 0x303b #define FID_PS_JAMILLE 0x203b #define FID_DTC_JAMILLE 0x103b #define FID_BITSTREAM_ITALIA 0x303a #define FID_PS_ITALIA 0x203a #define FID_DTC_ITALIA 0x103a #define FID_BITSTREAM_IMPRESSUM 0x3039 #define FID_PS_IMPRESSUM 0x2039 #define FID_DTC_IMPRESSUM 0x1039 #define FID_BITSTREAM_HOLLANDER 0x3038 #define FID_PS_HOLLANDER 0x2038 #define FID_DTC_HOLLANDER 0x1038 #define FID_BITSTREAM_HIROSHIGE 0x3037 #define FID_PS_HIROSHIGE 0x2037 #define FID_DTC_HIROSHIGE 0x1037 #define FID_BITSTREAM_HAWTHORN 0x3036 #define FID_PS_HAWTHORN 0x2036 #define FID_DTC_HAWTHORN 0x1036 #define FID_BITSTREAM_GOUDY 0x3035 #define FID_PS_GOUDY 0x2035 #define FID_DTC_GOUDY 0x1035 #define FID_BITSTREAM_GAMMA 0x3034 #define FID_PS_GAMMA 0x2034 #define FID_DTC_GAMMA 0x1034 #define FID_BITSTREAM_GALLIARD 0x3033 #define FID_PS_GALLIARD 0x2033 #define FID_DTC_GALLIARD 0x1033 #define FID_BITSTREAM_FRIZ_QUADRATA 0x3032 #define FID_PS_FRIZ_QUADRATA 0x2032 #define FID_DTC_FRIZ_QUADRATA 0x1032 #define FID_BITSTREAM_FENICE 0x3031 #define FID_PS_FENICE 0x2031 #define FID_DTC_FENICE 0x1031 #define FID_BITSTREAM_EXCELSIOR 0x3030 #define FID_PS_EXCELSIOR 0x2030 #define FID_DTC_EXCELSIOR 0x1030 #define FID_BITSTREAM_ESPRIT 0x302f #define FID_PS_ESPRIT 0x202f #define FID_DTC_ESPRIT 0x102f #define FID_BITSTREAM_ELAN 0x302e #define FID_PS_ELAN 0x202e #define FID_DTC_ELAN 0x102e #define FID_BITSTREAM_EGYPTIENNE 0x302d #define FID_PS_EGYPTIENNE 0x202d #define FID_DTC_EGYPTIENNE 0x102d #define FID_BITSTREAM_EGIZIO 0x302c #define FID_PS_EGIZIO 0x202c #define FID_DTC_EGIZIO 0x102c #define FID_BITSTREAM_EDWARDIAN 0x302b #define FID_PS_EDWARDIAN 0x202b #define FID_DTC_EDWARDIAN 0x102b #define FID_BITSTREAM_EDISON 0x302a #define FID_PS_EDISON 0x202a #define FID_DTC_EDISON 0x102a #define FID_BITSTREAM_DIGI_ANTIQUA 0x3029 #define FID_PS_DIGI_ANTIQUA 0x2029 #define FID_DTC_DIGI_ANTIQUA 0x1029 #define FID_BITSTREAM_DEMOS 0x3028 #define FID_PS_DEMOS 0x2028 #define FID_DTC_DEMOS 0x1028 #define FID_BITSTREAM_CUSHING 0x3027 #define FID_PS_CUSHING 0x2027 #define FID_DTC_CUSHING 0x1027 #define FID_BITSTREAM_CORONA 0x3026 #define FID_PS_CORONA 0x2026 #define FID_DTC_CORONA 0x1026 #define FID_BITSTREAM_CONGRESS 0x3025 #define FID_PS_CONGRESS 0x2025 #define FID_DTC_CONGRESS 0x1025 #define FID_BITSTREAM_CONCORDE_NOVA 0x3024 #define FID_PS_CONCORDE_NOVA 0x2024 #define FID_DTC_CONCORDE_NOVA 0x1024 #define FID_BITSTREAM_CONCORDE 0x3023 #define FID_PS_CONCORDE 0x2023 #define FID_DTC_CONCORDE 0x1023 #define FID_BITSTREAM_CLEARFACE 0x3022 #define FID_PS_CLEARFACE 0x2022 #define FID_DTC_CLEARFACE 0x1022 #define FID_BITSTREAM_CLARENDON 0x3021 #define FID_PS_CLARENDON 0x2021 #define FID_DTC_CLARENDON 0x1021 #define FID_BITSTREAM_CHELTENHAM 0x3020 #define FID_PS_CHELTENHAM 0x2020 #define FID_DTC_CHELTENHAM 0x1020 #define FID_BITSTREAM_CENTURY_OLD_STYLE 0x301f #define FID_PS_CENTURY_OLD_STYLE 0x201f #define FID_DTC_CENTURY_OLD_STYLE 0x101f #define FID_BITSTREAM_CENTURY 0x301e #define FID_PS_CENTURY 0x201e #define FID_DTC_CENTURY 0x101e #define FID_BITSTREAM_CENTENNIAL 0x301d #define FID_PS_CENTENNIAL 0x201d #define FID_DTC_CENTENNIAL 0x101d #define FID_BITSTREAM_CAXTON 0x301c #define FID_PS_CAXTON 0x201c #define FID_DTC_CAXTON 0x101c #define FID_BITSTREAM_ADOBE_CASLON 0x301b #define FID_PS_ADOBE_CASLON 0x201b #define FID_DTC_ADOBE_CASLON 0x101b #define FID_BITSTREAM_CASLON 0x301a #define FID_PS_CASLON 0x201a #define FID_DTC_CASLON 0x101a #define FID_BITSTREAM_CANDIDA 0x3019 #define FID_PS_CANDIDA 0x2019 #define FID_DTC_CANDIDA 0x1019 #define FID_BITSTREAM_BOOKMAN 0x3018 #define FID_PS_BOOKMAN 0x2018 #define FID_DTC_BOOKMAN 0x1018 #define FID_BITSTREAM_BASKERVILLE_HANDCUT 0x3017 #define FID_PS_BASKERVILLE_HANDCUT 0x2017 #define FID_DTC_BASKERVILLE_HANDCUT 0x1017 #define FID_BITSTREAM_BASKERVILLE 0x3016 #define FID_PS_BASKERVILLE 0x2016 #define FID_DTC_BASKERVILLE 0x1016 #define FID_BITSTREAM_BASILIA 0x3015 #define FID_PS_BASILIA 0x2015 #define FID_DTC_BASILIA 0x1015 #define FID_BITSTREAM_BARBEDOR 0x3014 #define FID_PS_BARBEDOR 0x2014 #define FID_DTC_BARBEDOR 0x1014 #define FID_BITSTREAM_AUREALIA 0x3013 #define FID_PS_AUREALIA 0x2013 #define FID_DTC_AUREALIA 0x1013 #define FID_BITSTREAM_NEW_ASTER 0x3012 #define FID_PS_NEW_ASTER 0x2012 #define FID_DTC_NEW_ASTER 0x1012 #define FID_BITSTREAM_ASTER 0x3011 #define FID_PS_ASTER 0x2011 #define FID_DTC_ASTER 0x1011 #define FID_BITSTREAM_AMERICANA 0x3010 #define FID_PS_AMERICANA 0x2010 #define FID_DTC_AMERICANA 0x1010 #define FID_BITSTREAM_AACHEN 0x300f #define FID_PS_AACHEN 0x200f #define FID_DTC_AACHEN 0x100f #define FID_BITSTREAM_NICOLAS_COCHIN 0x300e #define FID_PS_NICOLAS_COCHIN 0x200e #define FID_DTC_NICOLAS_COCHIN 0x100e #define FID_BITSTREAM_COCHIN 0x300d #define FID_PS_COCHIN 0x200d #define FID_DTC_COCHIN 0x100d #define FID_BITSTREAM_ALBERTUS 0x300c #define FID_PS_ALBERTUS 0x200c #define FID_DTC_ALBERTUS 0x100c #define FID_BITSTREAM_ACCOLADE 0x300b #define FID_PS_ACCOLADE 0x200b #define FID_DTC_ACCOLADE 0x100b #define FID_BITSTREAM_PALATINO 0x300a #define FID_PS_PALATINO 0x200a #define FID_DTC_PALATINO 0x100a #define FID_BITSTREAM_GOUDY_OLD_STYLE 0x3009 #define FID_PS_GOUDY_OLD_STYLE 0x2009 #define FID_DTC_GOUDY_OLD_STYLE 0x1009 #define FID_BITSTREAM_BERKELEY_OLD_STYLE 0x3008 #define FID_PS_BERKELEY_OLD_STYLE 0x2008 #define FID_DTC_BERKELEY_OLD_STYLE 0x1008 #define FID_BITSTREAM_ARSIS 0x3007 #define FID_PS_ARSIS 0x2007 #define FID_DTC_ARSIS 0x1007 #define FID_BITSTREAM_UNIVERSITY_ROMAN 0x3006 #define FID_PS_UNIVERSITY_ROMAN 0x2006 #define FID_DTC_UNIVERSITY_ROMAN 0x1006 #define FID_BITSTREAM_BEMBO 0x3005 #define FID_PS_BEMBO 0x2005 #define FID_DTC_BEMBO 0x1005 #define FID_BITSTREAM_GARAMOND 0x3004 #define FID_PS_GARAMOND 0x2004 #define FID_DTC_GARAMOND 0x1004 #define FID_BITSTREAM_GLYPHA 0x3003 #define FID_PS_GLYPHA 0x2003 #define FID_DTC_GLYPHA 0x1003 #define FID_BITSTREAM_BODONI 0x3002 #define FID_PS_BODONI 0x2002 #define FID_DTC_BODONI 0x1002 #define FID_BITSTREAM_CENTURY_SCHOOLBOOK 0x3001 #define FID_PS_CENTURY_SCHOOLBOOK 0x2001 #define FID_DTC_CENTURY_SCHOOLBOOK 0x1001 #define FID_BITSTREAM_URW_ROMAN 0x3000 #define FID_PS_TIMES_ROMAN 0x2000 #define FID_DTC_URW_ROMAN 0x1000 #define FID_WINDOWS 0x0a01 #define FID_BISON 0x0a00 #define FID_LED 0x0600 #define FID_PMSYSTEM 0x0203 #define FID_BERKELEY 0x0202 #define FID_UNIVERSITY 0x0201 #define FID_CHICAGO 0x0200 #define FID_ROMA 0x0001 #define FID_INVALID 0x0000
Fonts are normally referenced by FontID.
Include: fontID.h
typedef word FontMaker; #define FM_PRINTER 0xf000 #define FM_MICROLOGIC 0xe000 #define FM_ATECH 0xd000 #define FM_PUBLIC 0xc000 #define FM_AGFA 0x4000 #define FM_BITSTREAM 0x3000 #define FM_ADOBE 0x2000 #define FM_NIMBUSQ 0x1000 #define FM_BITMAP 0x0000
Include: fontID.h
typedef ByteEnum FontWeight; #define FW_ULTRA_LIGHT 0 #define FW_EXTRA_LIGHT 1 #define FW_LIGHT 2 #define FW_BOOK 3 #define FW_NORMAL 4 #define FW_DEMI 5 #define FW_BOLD 6 #define FW_EXTRA_BOLD 7 #define FW_ULTRA_BOLD 8 #define FW_BLACK 9
Include: font.h
typedef ByteEnum FontWidth; #define FWI_NARROW 0 #define FWI_CONDENSED 1 #define FWI_MEDIUM 2 #define FWI_WIDE 3 #define FWI_EXPANDED 4
Include: font.h
typedef ByteEnum FormatError; #define FMT_DONE 0 #define FMT_READY 1 #define FMT_RUNNING 2 #define FMT_DRIVE_NOT_READY 3 #define FMT_ERR_WRITING_BOOT 4 #define FMT_ERR_WRITING_ROOT_DIR 5 #define FMT_ERR_WRITING_FAT 6 #define FMT_ABORTED 7 #define FMT_SET_VOLUME_NAME_ERR 8 #define FMT_CANNOT_FORMAT_FIXED_DISKS_IN_CUR_RELEASE 9 #define FMT_BAD_PARTITION_TABLE 10 #define FMT_ERR_READING_PARTITION_TABLE 11 #define FMT_ERR_NO_PARTITION_FOUND 12 #define FMT_ERR_MULTIPLE_PRIMARY_PARTITIONS 13 #define FMT_ERR_NO_EXTENDED_PARTITION_FOUND 14 #define FMT_ERR_CANNOT_ALLOC_SECTOR_BUFFER 15 #define FMT_ERR_DISK_IS_IN_USE 16 #define FMT_ERR_WRITE_PROTECTED 17 #define FMT_ERR_DRIVE_CANNOT_SUPPORT_GIVEN_FORMAT 18 #define FMT_ERR_INVALID_DRIVE_SPECIFIED 19 #define FMT_ERR_DRIVE_CANNOT_BE_FORMATTED 20 #define FMT_ERR_DISK_UNAVAILABLE 21
ClipboardItemFormatID FormatIDFromManufacturerAndType(man, typ)
ManufacturerID man;
word typ;
This macro creates a
ClipboardItemFormatID
dword value from the given manufacturer ID and format ID.
typedef enum /* word */ {
FUNCTION_ID_ABS,
FUNCTION_ID_ACOS,
FUNCTION_ID_ACOSH,
FUNCTION_ID_AND,
FUNCTION_ID_ASIN,
FUNCTION_ID_ASINH,
FUNCTION_ID_ATAN,
FUNCTION_ID_ATAN2,
FUNCTION_ID_ATANH,
FUNCTION_ID_AVG,
FUNCTION_ID_CHAR,
FUNCTION_ID_CHOOSE,
FUNCTION_ID_CLEAN,
FUNCTION_ID_CODE,
FUNCTION_ID_COLS,
FUNCTION_ID_COS,
FUNCTION_ID_COSH,
FUNCTION_ID_COUNT,
FUNCTION_ID_CTERM,
FUNCTION_ID_DATE,
FUNCTION_ID_DATEVALUE,
FUNCTION_ID_DAY,
FUNCTION_ID_DDB,
FUNCTION_ID_ERR,
FUNCTION_ID_EXACT,
FUNCTION_ID_EXP,
FUNCTION_ID_FACT,
FUNCTION_ID_FALSE,
FUNCTION_ID_FIND,
FUNCTION_ID_FV,
FUNCTION_ID_HLOOKUP,
FUNCTION_ID_HOUR,
FUNCTION_ID_IF,
FUNCTION_ID_INDEX,
FUNCTION_ID_INT,
FUNCTION_ID_IRR,
FUNCTION_ID_ISERR,
FUNCTION_ID_ISNUMBER,
FUNCTION_ID_ISSTRING,
FUNCTION_ID_LEFT,
FUNCTION_ID_LENGTH,
FUNCTION_ID_LN,
FUNCTION_ID_LOG,
FUNCTION_ID_LOWER,
FUNCTION_ID_MAX,
FUNCTION_ID_MID,
FUNCTION_ID_MIN,
FUNCTION_ID_MINUTE,
FUNCTION_ID_MOD,
FUNCTION_ID_MONTH,
FUNCTION_ID_N,
FUNCTION_ID_NA,
FUNCTION_ID_NOW,
FUNCTION_ID_NPV,
FUNCTION_ID_OR,
FUNCTION_ID_PI,
FUNCTION_ID_PMT,
FUNCTION_ID_PRODUCT,
FUNCTION_ID_PROPER,
FUNCTION_ID_PV,
FUNCTION_ID_RANDOM_N,
FUNCTION_ID_RANDOM,
FUNCTION_ID_RATE,
FUNCTION_ID_REPEAT,
FUNCTION_ID_REPLACE,
FUNCTION_ID_RIGHT,
FUNCTION_ID_ROUND,
FUNCTION_ID_ROWS,
FUNCTION_ID_SECOND,
FUNCTION_ID_SIN,
FUNCTION_ID_SINH,
FUNCTION_ID_SLN,
FUNCTION_ID_SQRT,
FUNCTION_ID_STD,
FUNCTION_ID_STDP,
FUNCTION_ID_STRING,
FUNCTION_ID_SUM,
FUNCTION_ID_SYD,
FUNCTION_ID_TAN,
FUNCTION_ID_TANH,
FUNCTION_ID_TERM,
FUNCTION_ID_TIME,
FUNCTION_ID_TIMEVALUE,
FUNCTION_ID_TODAY,
FUNCTION_ID_TRIM,
FUNCTION_ID_TRUE,
FUNCTION_ID_TRUNC,
FUNCTION_ID_UPPER,
FUNCTION_ID_VALUE,
FUNCTION_ID_VAR,
FUNCTION_ID_VARP,
FUNCTION_ID_VLOOKUP,
FUNCTION_ID_WEEKDAY,
FUNCTION_ID_YEAR,
FUNCTION_ID_FILENAME,
FUNCTION_ID_PAGE,
FUNCTION_ID_PAGES,
FUNCTION_ID_FIRST_EXTERNAL_FUNCTION=FUNCTION_ID_FIRST_EXTERNAL_FUNCTION_BASE
} FunctionID;
typedef enum /* word */ {
GCMI_MIN_X,
GCMI_MIN_X_ROUNDED,
GCMI_MIN_Y,
GCMI_MIN_Y_ROUNDED,
GCMI_MAX_X,
GCMI_MAX_X_ROUNDED,
GCMI_MAX_Y,
GCMI_MAX_Y_ROUNDED,
} GCM_info;
typedef enum {
GCNDCNT_CREATED,
GCNDCNT_DESTROYED
} GCNDriveChangeNotificationType;
typedef enum {
GCNEMNT_CREATED,
GCNEMNT_DESTROYED
} GCNExpressMenuNotificationType;
typedef struct {
LMemBlockHeader GCNLBH_lmemHeader;
ChunkHandle GCNLBH_listOfLists;
} GCNListBlockHeader;
typedef struct {
ChunkArrayHeader GCNLH_meta;
word GCNLH_statusEvent;
MemHandle GCNLH_statusData;
word GCNLH_statusCount;
/* Start of GCNListOfListElements */
} GCNListHeader;
typedef struct {
GCNListType GCNLOLE_ID;
ChunkHandle GCNLOLE_list;
} GCNListOfListsElement;
typedef struct {
ChunkArrayHeader GCNLOL_meta;
/* Start of GCNListOfListsElement's */
} GCNListOfListsHeader;
typedef WordFlags GCNListSendFlags; #define GCNLSF_SET_STATUS 0x8000 #define GCNLSF_IGNORE_IF_STATUS_TRANSITIONING 0x4000
typedef enum {
GCNSCT_SUSPEND,
GCNSCT_SHUTDOWN,
GCNSCT_UNSUSPEND
} GCNShutdownControlType;
typedef enum {
GCNSLT_FILE_SYSTEM,
GCNSLT_APPLICATION,
GCNSLT_DATE_TIME,
GCNSLT_DICTIONARY,
GCNSLT_EXPRESS_MENU,
GCNSLT_SHUTDOWN_CONTROL
} GCNStandardListType;
In Goc, GenAppGCNListTypes values will be maintained other structures by other names. Standard GEOS list types are part of the GeoWorksGenAppGCNListType enumerated type.
typedef enum {
GE_NO_EVENT=0, /* dummy event (NOP) */
GE_END_OF_SONG=2, /* marks end of song */
GE_SET_PRIORITY=4, /* changes sound priority */
GE_SET_TEMPO=6, /* changes sound tempo */
GE_SEND_NOTIFICATION=8, /* sends encoded message */
GE_V_SEMAPHORE=10 /* V's a specified semaphore*/
} GeneralEvent;
These represent some of the miscellaneous events which can make up a music buffer.
The
GenClass
defines some values meant to be used in the place of a
TravelOption
enumerated value. See
TravelOption
.
typedef WordFlags GeodeAttrs; #define GA_PROCESS 0x8000 #define GA_LIBRARY 0x4000 #define GA_DRIVER 0x2000 #define GA_KEEP_FILE_OPEN 0x1000 #define GA_SYSTEM 0x0800 #define GA_MULTI_LAUNCHABLE 0x0400 #define GA_APPLICATION 0x0200 #define GA_DRIVER_INITIALIZED 0x0100 #define GA_LIBRARY_INITIALIZED 0x0080 #define GA_GEODE_INITIALIZED 0x0040 #define GA_USES_COPROC 0x0020 #define GA_REQUIRES_COPROC 0x0010 #define GA_HAS_GENERAL_CONSUMER_MODE 0x0008 #define GA_ENTRY_POINTS_IN_C 0x0004
typedef enum {
GDDT_FILE_SYSTEM = 0, /* File system driver */
GDDT_KEYBOARD = 2, /* Keyboard driver */
GDDT_MOUSE = 4, /* Mouse driver */
GDDT_VIDEO = 6, /* Video driver */
GDDT_MEMORY_VIDEO = 8, /* Vidmem driver */
GDDT_POWER_MANAGEMENT = 10 /* Power management driver */
GDDT_TASK = 12 /* Task driver */
} GeodeDefaultDriverType;
The default driver type has one value for each default driver type in GEOS. This type is used with
GeodeGetDefaultDriver()
and
GeodeSetDefaultDriver()
.
typedef Handle GeodeHandle;
A standard handle that contains information about a loaded geode. When a geode has been loaded, it is referred to by its handle.
typedef enum {
GLE_PROTOCOL_IMPORTER_TOO_RECENT,
GLE_PROTOCOL_IMPORTER_TOO_OLD,
GLE_FILE_NOT_FOUND,
GLE_LIBRARY_NOT_FOUND,
GLE_FILE_READ_ERROR,
GLE_NOT_GEOS_FILE,
GLE_NOT_GEOS_EXECUTABLE_FILE,
GLE_ATTRIBUTE_MISMATCH,
GLE_MEMORY_ALLOCATION_ERROR,
GLE_NOT_MULTI_LAUNCHABLE,
GLE_LIBRARY_PROTOCOL_ERROR,
GLE_LIBRARY_LOAD_ERROR,
GLE_DRIVER_INIT_ERROR,
GLE_LIBRARY_INIT_ERROR,
GLE_DISK_TOO_FULL,
GLE_FIELD_DETACHING,
} GeodeLoadError;
These errors may be returned by routines that load geodes, including
UserLoadApplication()
,
GeodeUseLibrary()
,
GeodeUseDriver()
, and
GeodeLoad()
.
typedef struct {
TokenChars GT_chars;
ManufacturerID GT_manufID;
} GeodeToken;
Defines a token identifier. The
GT_chars
field is four characters that identify the token;
GT_manufID
is the identifying number of the manufacturer of the item being referenced.
typedef WordFlags GeosFileHeaderFlags; #define GFHF_TEMPLATE 0x8000 #define GFHF_SHARED_MULTIPLE 0x4000 #define GFHF_SHARED_SINGLE 0x2000
typedef enum /* word */ {
GFT_NOT_GEOS_FILE,
GFT_EXECUTABLE,
GFT_VM,
GFT_DATA,
GFT_DIRECTORY,
GFT_LINK
} GeosFileType;
files are divided into several broad categories. You can find out a file's category by getting its FEA_FILE_TYPE extended attribute. This attribute is a member of the
GeosFileType
enumerated type. This type has the following values:
typedef enum /* word */ {
GAGCNLT_SELF_LOAD_OPTIONS = 0x6800,
GAGCNLT_GEN_CONTROL_NOTIFY_STATUS_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_SELECT_STATE_CHANGE,
GAGCNLT_EDIT_CONTROL_NOTIFY_UNDO_STATE_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_TEXT_CHAR_ATTR_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_TEXT_PARA_ATTR_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_TEXT_TYPE_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_TEXT_SELECTION_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_TEXT_COUNT_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_STYLE_TEXT_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_STYLE_SHEET_TEXT_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_TEXT_STYLE_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_FONT_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_POINT_SIZE_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_FONT_ATTR_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_JUSTIFICATION_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_TEXT_FG_COLOR_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_TEXT_BG_COLOR_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_PARA_COLOR_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_BORDER_COLOR_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_SEARCH_SPELL_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_SEARCH_REPLACE_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_CHART_TYPE_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_CHART_GROUP_FLAGS,
GAGCNLT_APP_TARGET_NOTIFY_CHART_AXIS_ATTRIBUTES,
GAGCNLT_APP_TARGET_NOTIFY_CHART_MARKER_SHAPE,
GAGCNLT_APP_TARGET_NOTIFY_GROBJ_CURRENT_TOOL_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_GROBJ_BODY_SELECTION_STATE_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_GROBJ_AREA_ATTR_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_GROBJ_LINE_ATTR_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_GROBJ_TEXT_ATTR_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_STYLE_GROBJ_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_STYLE_SHEET_GROBJ_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_GROBJ_BODY_INSTRUCTION_FLAGS_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_GROBJ_GRADIENT_ATTR_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_RULER_TYPE_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_RULER_GRID_CHANGE,
GAGCNLT_TEXT_RULER_OBJECTS,
GAGCNLT_APP_TARGET_NOTIFY_BITMAP_CURRENT_TOOL_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_BITMAP_CURRENT_FORMAT_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_FLAT_FILE_FIELD_PROPERTIES_STATUS_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_FLAT_FILE_FIELD_LIST_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_FLAT_FILE_RCP_STATUS_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_FLAT_FILE_FIELD_APPEARANCE_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_FLAT_FILE_DUMMY_CHANGE_2,
GAGCNLT_APP_TARGET_NOTIFY_FLAT_FILE_DUMMY_CHANGE_3,
GAGCNLT_APP_NOTIFY_DOC_SIZE_CHANGE,
GAGCNLT_APP_NOTIFY_PAPER_SIZE_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_VIEW_STATE_CHANGE,
GAGCNLT_CONTROLLED_GEN_VIEW_OBJECTS,
GAGCNLT_APP_TARGET_NOTIFY_INK_STATE_CHANGE,
GAGCNLT_CONTROLLED_INK_OBJECTS,
GAGCNLT_APP_TARGET_NOTIFY_PAGE_STATE_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_DOCUMENT_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_DISPLAY_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_DISPLAY_LIST_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_SPLINE_MARKER_SHAPE,
GAGCNLT_APP_TARGET_NOTIFY_SPLINE_POINT,
GAGCNLT_APP_TARGET_NOTIFY_SPLINE_POLYLINE,
GAGCNLT_APP_TARGET_NOTIFY_SPLINE_SMOOTHNESS,
GAGCNLT_APP_TARGET_NOTIFY_SPLINE_OPEN_CLOSE_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_SPREADSHEET_ACTIVE_CELL_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_SPREADSHEET_EDIT_BAR_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_SPREADSHEET_SELECTION_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_SPREADSHEET_CELL_WIDTH_HEIGHT_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_SPREADSHEET_DOC_ATTR_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_SPREADSHEET_CELL_ATTR_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_SPREADSHEET_CELL_NOTES_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_SPREADSHEET_DATA_RANGE_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_TEXT_NAME_CHANGE,
GAGCNLT_FLOAT_FORMAT_CHANGE,
GAGCNLT_DISPLAY_OBJECTS_WITH_RULERS,
GAGCNLT_APP_TARGET_NOTIFY_APP_CHANGE,
GAGCNLT_APP_TARGET_NOTIFY_LIBRARY_CHANGE,
GAGCNLT_WINDOWS,
GAGCNLT_STARTUP_LOAD_OPTIONS
} GeoWorksGenAppGCNListType;
typedef enum {
GMID_INVALID = 0x0,
GMID_SERIAL_CABLE, /* unit is SerialPortNum */
GMID_INFRARED, /* unit is SerialPortNum */
GMID_DATA_MODEM, /* unit is SerialPortNum */
GMID_FAX_MODEM, /* unit is SerialPortNum */
GMID_PRINTER, /* unit is printer name in mem block */
GMID_PARALLEL_PORT, /* unit is ParallelPortNum */
GMID_NETWORK, /* unit is NetID */
GMID_LOOPBACK, /* no units */
GMID_SM /* Small Message--no units */
} GeoworksMediumID;
These values, together with MANUFACTURER_ID_GEOWORKS, form
MediumType
values representing certain standard communications media.
Include: medium.h
typedef enum /* word */ {
MGCNLT_ACTIVE_LIST = 0x00,
MGCNLT_APP_STARTUP = 0x02
} GeoWorksMetaGCNListType;
typedef enum {
GWNT_INK,
GWNT_GEN_CONTROL_NOTIFY_STATUS_CHANGE,
GWNT_SELECT_STATE_CHANGE,
GWNT_UNDO_STATE_CHANGE,
GWNT_STYLE_CHANGE,
GWNT_STYLE_SHEET_CHANGE,
GWNT_TEXT_CHAR_ATTR_CHANGE,
GWNT_TEXT_PARA_ATTR_CHANGE,
GWNT_TEXT_TYPE_CHANGE,
GWNT_TEXT_SELECTION_CHANGE,
GWNT_TEXT_COUNT_CHANGE,
GWNT_TEXT_STYLE_CHANGE,
GWNT_FONT_CHANGE,
GWNT_POINT_SIZE_CHANGE,
GWNT_FONT_ATTR_CHANGE,
GWNT_JUSTIFICATION_CHANGE,
GWNT_TEXT_FG_COLOR_CHANGE,
GWNT_TEXT_BG_COLOR_CHANGE,
GWNT_TEXT_PARA_COLOR_CHANGE,
GWNT_TEXT_BORDER_COLOR_CHANGE,
GWNT_SEARCH_REPLACE_ENABLE_CHANGE,
GWNT_SPELL_ENABLE_CHANGE,
GWNT_CHART_TYPE_CHANGE,
GWNT_CHART_GROUP_FLAGS,
GWNT_CHART_AXIS_ATTRIBUTES,
GWNT_GROBJ_CURRENT_TOOL_CHANGE,
GWNT_GROBJ_BODY_SELECTION_STATE_CHANGE,
GWNT_GROBJ_AREA_ATTR_CHANGE,
GWNT_GROBJ_LINE_ATTR_CHANGE,
GWNT_GROBJ_TEXT_ATTR_CHANGE,
GWNT_GROBJ_BODY_INSTRUCTION_FLAGS_CHANGE,
GWNT_GROBJ_GRADIENT_ATTR_CHANGE,
GWNT_RULER_TYPE_CHANGE,
GWNT_RULER_GRID_CHANGE,
GWNT_RULER_GUIDE_CHANGE,
GWNT_BITMAP_CURRENT_TOOL_CHANGE,
GWNT_BITMAP_CURRENT_FORMAT_CHANGE,
GWNT_FLAT_FILE_FIELD_PROPERTIES_STATUS_CHANGE,
GWNT_FLAT_FILE_FIELD_LIST_CHANGE,
GWNT_FLAT_FILE_RCP_STATUS_CHANGE,
GWNT_FLAT_FIELD_APPEARANCE_CHANGE,
GWNT_FLAT_FILE_DUMMY_CHANGE_2,
GWNT_FLAT_FILE_DUMMY_CHANGE_3,
GWNT_SPOOL_DOC_OR_PAPER_SIZE,
GWNT_VIEW_STATE_CHANGE,
GWNT_INK_HAS_TARGET,
GWNT_PAGE_STATE_CHANGE,
GWNT_DOCUMENT_CHANGE,
GWNT_DISPLAY_CHANGE,
GWNT_DISPLAY_LIST_CHANGE,
GWNT_SPLINE_MARKER_SHAPE,
GWNT_SPLINE_POINT,
GWNT_SPLINE_POLYLINE,
GWNT_SPLINE_SMOOTHNESS,
GWNT_SPLINE_OPEN_CLOSE_CHANGE,
GWNT_UNUSED_1,
GWNT_SPREADSHEET_ACTIVE_CELL_CHANGE,
GWNT_SPREADSHEET_EDIT_BAR_CHANGE,
GWNT_SPREADSHEET_SELECTION_CHANGE,
GWNT_SPREADSHEET_CELL_WIDTH_HEIGHT_CHANGE,
GWNT_SPREADSHEET_DOC_ATTR_CHANGE,
GWNT_SPREADSHEET_CELL_ATTR_CHANGE,
GWNT_SPREADSHEET_CELL_NOTES_CHANGE,
GWNT_SPREADSHEET_DATA_RANGE_CHANGE,
GWNT_FLOAT_FORMAT_CHANGE,
GWNT_MAP_APP_CHANGE,
GWNT_MAP_LIBRARY_CHANGE,
GWNT_TEXT_NAME_CHANGE,
GWNT_CARD_BACK_CHANGE,
GWNT_TEXT_OBJECT_HAS_FOCUS,
GWNT_TEXT_CONTEXT,
GWNT_TEXT_REPLACE_WITH_HWR,
GWNT_HELP_CONTEXT_CHANGE,
GWNT_FLOAT_FORMAT_INIT,
GWNT_HARD_ICON_BAR_FUNCTION,
GWNT_STARTUP_INDEXED_APP,
GWNT_SPOOL_PRINTING_COMPLETE,
GWNT_MODAL_WIN_CHANGE,
GWNT_SPREADSHEET_NAME_CHANGE,
GWNT_DOCUMENT_OPEN_COMPLETE,
GWNT_EMAIL_SCAN_INBOX,
GWNT_FOCUS_WINDOW_KBD_STATUS,
GWNT_TAB_DOUBLE_CLICK,
GWNT_PAGE_INFO_STATE_CHANGE,
GWNT_CURSOR_POSITION_CHANGE,
GWNT_FAX_NEW_JOB_CREATED,
GWNT_FAX_NEW_JOB_COMPLETED,
GWNT_EMAIL_DATABASE_CHANGE,
GWNT_EMAIL_STATUS_CHANGE,
GWNT_EMAIL_PAGE_PANEL_UPDATE,
GWNT_PCCOM_DISPLAY_CHAR,
GWNT_PCCOM_DISPLAY_STRING,
GWNT_PCCOM_EXIT
} GeoWorksNotificationType;
typedef enum {
VCGCNLT_TARGET_NOTIFY_TEXT_PARA_ATTR_CHANGE = 0x4a00,
PADDING_VCGCNLT_INVALID_ITEM_000
} GeoWorksVisContentGCNListType;
typedef ByteEnum GetPalType; #define GPT_ACTIVE 0 #define GPT_CUSTOM 1 #define GPT_DEFAULT 2
#define GOC_POINT(x,y) GOC_SW(x), GOC_SW(y)
This macro is useful when statically declaring GStrings. A GString is basically an array of bytes; this macro takes two word-length values and breaks them up into four comma-seperated bytes. Thus, they help to make GString commands with variable number of point data appear readable. For example:
... GSDrawPolyline(3), GOC_POINT(0,6), GOC_POINT(10,6), GOC_POINT(10,1), GSFillPolygon(4,ODD_EVEN), GOC_POINT(5,1), GOC_POINT(9,0), GOC_POINT(9,5), GOC_POINT(5,6),
...
#define GOC_SW(a) GOC_WORD(a) #define GOC_WORD(a) ((a)&0xff),(((a)&0xff00)>>8)
These macros are useful when you're statically defining a byte array which contains word-length values. Each macro breaks up a word-length value into two bytes, seperated by a comma.
typedef WordFlags GSControl; #define GSC_PARTIAL 0x0200 #define GSC_ONE 0x0100 #define GSC_MISC 0x0080 #define GSC_LABEL 0x0040 #define GSC_ESCAPE 0x0020 #define GSC_NEW_PAGE 0x0010 #define GSC_XFORM 0x0008 #define GSC_OUTPUT 0x0004 #define GSC_ATTR 0x0002 #define GSC_PATH 0x0001
typedef ByteEnum GSRetType; #define GSRT_COMPLETE 0 #define GSRT_FORM_FEED 1 #define GSRT_ONE 2 #define GSRT_ESCAPE 3 #define GSRT_OUTPUT 4 #define GSRT_ELEMENT 5 #define GSRT_FAULT 0xff
typedef Handle GStateHandle;
GStates, or graphics states, are used to interpret graphics commands. Any graphics command that draws anything takes a GStateHandle as an argument. Each GState is associated with a window, and the graphics system uses the GState to determine which window the command should affect.
The GState also holds considerable information determining how drawing commands will be carried out. For instance, it holds the line color. To draw a green line, first one routine set's the GState's line color to green. From then on (or until the line color is changed again), all lines drawn using that GState will be green. Thus, all commands that set color, pattern, or other drawing attributes take a GStateHandle argument.
GStateHandles are also used when creating bitmaps and graphics strings. In this case, the associated window is fake; all drawing commands passed a GStateHandle representing a bitmap or graphics string will affect the data structure instead of being drawn to screen.
typedef void GString;
A GString (short for "Graphics Strings") represents a string of graphics commands. Each GString is made up of one or more GString elements, each of which corresponds to some standard graphics command.
GStrings may be created by means of drawing to a GStateHandle returned by
GrCreateState()
, but quite often GStrings are declared explicitly. The GString's data is often set up using macros like
GSDrawLine()
. These macros will output an opcode (of type
GStringElement
) and format their macro arguments into data expected with the opcode.
For instance,
GSDrawLine(72, 144, 216, 288);
...would expand to the data:
(GStringElement) GR_DRAW_LINE
GOC_SW(72), GOC_SW(144), GOC_SW(216), GOC_SW(288);
...where GOC_SW() is a macro that breaks up a word-length value into two bytes. Fundamentally, a GString is just an array of bytes.
Thus, these macros just represent data, though they look like normal kernel graphics commands.
typedef ByteEnum GStringElement; /* The following elements are defined : (Miscellaneous GString opcodes:) GR_END_STRING,
GR_COMMENT, (data: variable (word (length of code), code)) GR_NULL_OP, GR_SET_GSTRING_BOUNDS, (data: 8 bytes (4 swords)) GR_LABEL, (data: 2 bytes (word)) GR_ESCAPE, (data: variable (word (size of code), code)) GR_NEW_PAGE, (Coordinate Transform opcodes:) GR_APPLY_ROTATION, (data: 4 bytes (WWFixed))
GR_APPLY_SCALE, (data: 8 bytes (2 WWFixed)) GR_APPLY_TRANSLATION, (data: 8 bytes (2 WWFixed)) GR_APPLY_TRANSFORM, (data: 26 bytes (4 WWFixed, 2 DWFixed)) GR_APPLY_TRANSLATION_DWORD, (data: 8 bytes (2 sdwords)) GR_SET_TRANSFORM, (data: 26 bytes (4 WWFixed, 2 DWFixed)) GR_SET_NULL_TRANSFORM, GR_SET_DEFAULT_TRANSFORM, GR_INIT_DEFAULT_TRANSFORM, GR_SAVE_TRANSFORM, GR_RESTORE_TRANSFORM, (Output opcodes:) GR_DRAW_LINE, (data: 8 bytes (4 swords)) GR_DRAW_LINE_TO, (data: 4 bytes (2 swords)) GR_DRAW_REL_LINE_TO (data: 8 bytes (2 WWFixed)) GR_DRAW_HLINE, (data: 6 bytes (3 swords)) GR_DRAW_HLINE_TO, (data: 2 bytes (sword)) GR_DRAW_VLINE, (data: 6 bytes (3 swords)) GR_DRAW_VLINE_TO, (data: 2 bytes (sword)) GR_DRAW_POLYLINE, (data: variable (word (# of points), points) GR_DRAW_ARC, (data: 14 bytes (ArcCloseType, 6 swords)) GR_DRAW_ARC_3POINT, (data: 14 bytes (ArcCloseType, 6 swords)) GR_DRAW_ARC_3POINT_TO, (data: 10 bytes (ArcCloseType, 4 swords)) GR_DRAW_REL_ARC_3POINT_TO, (data: 18 bytes (ArcCloseType, 4 WWFixed)) GR_DRAW_RECT, (data: 8 bytes (4 swords)) GR_DRAW_RECT_TO, (data: 4 bytes (2 swords)) GR_DRAW_ROUND_RECT, (data: 10 bytes (word, 4 swords)) GR_DRAW_ROUND_RECT_TO, (data: 6 bytes (word, 2 swords)) GR_DRAW_SPLINE, (data: variable (word (# of points), points)) GR_DRAW_SPLINE_TO, (data: variable (word (# of points), points)) GR_DRAW_CURVE, (data: 16 bytes (8 swords)) GR_DRAW_CURVE_TO, (data: 12 bytes (6 swords)) GR_DRAW_REL_CURVE_TO, (data: 24 bytes (6 WWFixed)) GR_DRAW_ELLIPSE, (data: 8 bytes (4 swords)) GR_DRAW_POLYGON, (data: variable (word (# of points), points)) GR_DRAW_POINT, (data: 4 bytes (2 words)) GR_DRAW_POINT_CP, GR_BRUSH_POLYLINE, (data: variable (word (# of points), 2 bytes, points))
GR_DRAW_CHAR, (data: 5 bytes) (Chars, 2 swords)) GR_DRAW_CHAR_CP, (data: 1 byte) (Chars)) GR_DRAW_TEXT, (data: variable (sword, sword, word (length of string), string (not null terminated)))
GR_DRAW_TEXT_CP, (data: variable (word (length of string), string (not null terminated)))
GR_DRAW_TEXT_PTR, (data: 6 bytes (2 swords, (char *))) GR_DRAW_TEXT_OPTR, (data: 6 bytes (2 swords, optr)) GR_DRAW_PATH, GR_FILL_RECT, (data: 8 bytes (4 swords)) GR_FILL_RECT_TO, (data: 4 bytes (2 swords)) GR_FILL_ROUND_RECT, (data: 10 bytes (4 swords, word)) GR_FILL_ROUND_RECT_TO, (data: 6 bytes (2 swords, word)) GR_FILL_ARC, (data: 14 bytes (ArcCloseType, 6 swords)) GR_FILL_POLYGON, (data: variable (word (# of points), RegionFillRule, points))
GR_FILL_ELLIPSE, (data: 8 bytes (2 swords)) GR_FILL_PATH, (data: 1 byte (RegionFillRule)) GR_FILL_ARC_3POINT, (data: 14 bytes (ArcCloseType, 6 swords)) GR_FILL_ARC_3POINT_TO (data: 10 bytes (ArcCloseType, 4 swords)) GR_FILL_BITMAP, (data: 6 bytes (2 swords, word)) GR_FILL_BITMAP_CP, (data: 2 bytes (word)) GR_FILL_BITMAP_OPTR, GR_DRAW_BITMAP, (data: 6 bytes (2 swords, word)) GR_DRAW_BITMAP_CP, (data: 2 bytes (word)) GR_DRAW_BITMAP_OPTR, (data: 6 bytes (2 swords, optr)) GR_DRAW_BITMAP_PTR, (data: 6 bytes (2 swords, *)) GSE_BITMAP_SLICE, (data: variable) (Drawing Attribute opcodes:) GR_SAVE_STATE, GR_RESTORE_STATE, GR_SET_MIX_MODE, (data: 1 byte (MixMode)) GR_MOVE_TO, (data: 4 bytes (2 swords)) GR_REL_MOVE_TO, (data: 8 bytes (2 WWFixed)) GR_CREATE_PALETTE, GR_DESTROY_PALETTE, GR_SET_PALETTE_ENTRY, (data: 4 bytes (Color, 3 bytes)) GR_SET_PALETTE, (data: variable (word (# of entries), entries (3 bytes each)))
GR_SET_LINE_COLOR, (data: 3 bytes (3 bytes)) GR_SET_LINE_MASK, (data: 1 byte (SysDrawMask)) GR_SET_LINE_COLOR_MAP, (data: 1 byte (ColorMapMode)) GR_SET_LINE_WIDTH, (data: 4 bytes (WWFixed)) GR_SET_LINE_JOIN, (data: 1 byte (LineJoin)) GR_SET_LINE_END, (data: 1 byte (LineEnd)) GR_SET_LINE_ATTR, (data: 9 bytes (CF_RGB, 3 bytes, SysDrawMask, ColorMapMode, LineEnd, LineJoin, LineStyle)
GR_SET_MITER_LIMIT, (data: 4 bytes (WWFixed)) GR_SET_LINE_STYLE, (data: 2 bytes (LineStyle, index)) GR_SET_LINE_COLOR_INDEX, (data: 1 byte (Color)) GR_SET_CUSTOM_LINE_MASK, (data: 8 bytes (8 bytes)) GR_SET_CUSTOM_LINE_STYLE, (data: variable (word (index), word (# of on-off dash pairs),
pairs (each pair is 2 bytes))) GR_SET_AREA_COLOR, (data: 3 bytes (3 bytes) GR_SET_AREA_MASK, (data: 1 byte (SysDrawMask)) GR_SET_AREA_COLOR_MAP, (data: 1 byte (ColorMapMode)) GR_SET_AREA_ATTR, (data: 6 bytes (CF_RGB, 3 bytes, SysDrawMask, ColorMapMode))
GR_SET_AREA_COLOR_INDEX, (data: 1 byte (Color)) GR_SET_CUSTOM_AREA_MASK, (data: 8 bytes (8 bytes)) GR_SET_AREA_PATTERN, (data: 2 bytes (GraphicPattern)) GR_SET_CUSTOM_AREA_PATTERN, (data: variable (GraphicPattern, word (size of data) pattern data))
GR_SET_TEXT_COLOR, (data: 3 bytes (3 bytes)) GR_SET_TEXT_MASK, (data: 1 byte (SysDrawMask)) GR_SET_TEXT_COLOR_MAP, (data: 1 byte (ColorMapMode)) GR_SET_TEXT_STYLE, (data: 2 bytes (2 TextStyles)) GR_SET_TEXT_MODE, (data: 2 bytes (2 TextModes)) GR_SET_TEXT_SPACE_PAD, (data: 3 bytes (WBFixed)) GR_SET_TEXT_ATTR, (data: 20 bytes (CF_RGB, 3 bytes, SysDrawMask, ColorMapMode, 2 TextStyles, 2 TextModes, WBFixed, FontID, word))
GR_SET_FONT, (data: 5 bytes (WBFixed, FontID)) GR_SET_TEXT_COLOR_INDEX, (data: 1 byte (Color)) GR_SET_CUSTOM_TEXT_MASK, (data: 8 bytes () GR_SET_TRACK_KERN, (data: 2 bytes (sword)) GR_SET_FONT_WEIGHT, (data: 2 bytes (FontWeight)) GR_SET_FONT_WIDTH, (data: 2 bytes (FontWidth)) GR_SET_SUPERSCRIPT_ATTR, (data: 2 bytes (position, scale)) GR_SET_SUBSCRIPT_ATTR, (data: 2 bytes (position, scale)) GR_SET_TEXT_PATTERN, (data: 2 bytes (GraphicPattern)) GR_SET_CUSTOM_TEXT_PATTERN, (data: variable (GraphicPattern, word (size of data), pattern data))
(Path opcodes:) GR_BEGIN_PATH, (data: 1 byte (PathCombineParam)) GR_END_PATH, GR_SET_CLIP_RECT, (data: 8 bytes (4 swords)) GR_SET_WIN_CLIP_RECT, (data: 8 bytes (4 swords)) GR_CLOSE_SUB_PATH, GR_SET_CLIP_PATH, (data: 1 byte (flags)) GR_SET_WIN_CLIP_PATH, (data: 1 byte (flags)) GR_SET_STROKE_PATH */
Each Graphics String Element consists of a
GStringElement
value specifying the type of element and the data associated with the element's operation. For instance, GR_DRAW_CHAR operations need six bytes of data: two bytes holding the
Chars
value of the character to draw, and two signed words specifying the drawing coordinates.
A good place to find out about the data associated with a particular
GStringElement
type is the
GS...()
macros defined in
gstring.h
.
typedef ByteEnum GStringType; #define GST_CHUNK 0 #define GST_STREAM 1 #define GST_VMEM 2 #define GST_PTR 3 #define GST_PATH 4
typedef struct {
PointWWFixed HL_origin;
WWFixed HL_deltaX;
WWFixed HL_deltaY;
WWFixed HL_angle;
ColorQuad HL_color;
word HL_numDashes;
/* array of HatchDash structures follows here */
} HatchLine;
typedef struct {
word HP_numLines;
/* array of HatchLine structures follows here */
} HatchPattern;
typedef ByteFlags HeapAllocFlags; #define HAF_ZERO_INIT 0x80 #define HAF_LOCK 0x40 #define HAF_NO_ERR 0x20 #define HAF_UI 0x10 #define HAF_READ_ONLY 0x08 #define HAF_OBJECT_RESOURCE 0x04 #define HAF_CODE 0x02 #define HAF_CONFORMING 0x01 #define HAF_STANDARD (0) #define HAF_STANDARD_NO_ERR (HAF_NO_ERR) #define HAF_STANDARD_LOCK (HAF_LOCK) #define HAF_STANDARD_NO_ERR_LOCK (HAF_NO_ERR | HAF_LOCK)
HeapAllocFlags
indicate how the block should be allocated and initialized. They are not stored and can not be retrieved. Only some of the flags can be passed with
MemReAlloc()
; these are noted below. The following flags are available:
MemReAlloc()
to cause new memory to be zero-initialized.
MemDeref()
. This flag may be passed to
MemReAlloc()
.
MemReAlloc()
.typedef ByteFlags HeapFlags; #define HF_FIXED 0x80 #define HF_SHARABLE 0x40 #define HF_DISCARDABLE 0x20 #define HF_SWAPABLE 0x10 #define HF_LMEM 0x08 #define HF_DISCARDED 0x02 #define HF_SWAPPED 0x01 #define HF_STATIC (HF_DISCARDABLE | HF_SWAPABLE) #define HF_DYNAMIC HF_SWAPABLE
The following flags are available:
LMemInitHeap()
and
VMAllocLMem()
; applications should not need to set this flag.typedef struct {
LMemBlockHeader HAD_header;
VMBlockHandle HAD_data;
ChunkHandle HAD_dir;
VMBlockHandle HAD_xdir;
VMBlockHandle HAD_self;
word HAD_size;
} HugeArrayDirectory;
typedef WordFlags IACPConnectFlags; #define IACPCF_OBEY_LAUNCH_MODEL 0x0020 #define IACPCF_CLIENT_OD_SPECIFIED 0x0010 #define IACPCF_FIRST_ONLY 0x0008 #define IACPCF_SERVER_MODE 0x0007
Include: iacp.goh
typedef ByteFlags IACPServerFlags; #define IACPSF_MULTIPLE_INSTANCES 0x80
Include: iacp.goh
IACPServerMode; #define IACPSM_NOT_USER_INTERACTIBLE 0 #define IACPSM_IN_FLUX 1 #define IACPSM_USER_INTERACTIBLE 2
Include: iacp.goh
typedef ByteFlags ImageFlags; #define IF_IGNORE_MASK 0x10 #define IF_BORDER 0x08 #define IF_BITSIZE 0x07 /* Should hold an ImageBitSize */ #define IBS_1 0 #define IBS_2 1 #define IBS_4 2 #define IBS_8 3 #define IBS_16 4
typedef ByteFlags IMCFeatures; #define IMCF_MAP 0x01 #define IMC_DEFAULT_FEATURES IMCF_MAP #define IMC_DEFAULT_TOOLBOX_FEATURES 0 #define IMC_MAP_MONIKER_SIZE 1024
typedef WordFlags ImpexDataClasses; #define IDC_TEXT 0x8000 #define IDC_GRAPHICS 0x4000 #define IDC_SPREADSHEET 0x2000 #define IDC_FONT 0x1000
typedef struct {
FileLongName IFSD_selection;
PathName IFSD_path;
word IFSD_disk;
GenFileSelectorEntryFlags IFSD_type;
} ImpexFileSelectionData;
typedef struct {
LMemBlockHeader IMFIH_base;
word IMFIH_fieldChunk;
word IMFIH_numFields;
} ImpexMapFileInfoHeader;
typedef struct {
optr ITP_impexOD;
Message ITP_returnMsg;
word ITP_dataClass;
FileHandle ITP_transferVMFile;
VMChain ITP_transferVMChain;
dword ITP_internal;
} ImpexTranslationParams;
typedef WordFlags ImportControlAttrs; #define ICA_IGNORE_INPUT 0x8000 /* ignore input while import occurs */
typedef ByteFlags ImportControlToolboxFeatures; #define IMPORTCTF_DIALOG_BOX 0x01
typedef struct {
word IALMBH_recCount;
word IALMBH_array;
word IALMBH_indexField;
word IALMBH_sortOrder;
} IndexArrayBlockHeader;
Format of a block containing a datastore index of
RecordNum
s (low word only); see
DataStoreBuildIndex()
.
typedef ByteEnum InitFileCharConvert; #define IFCC_INTACT 0 /* Leave all characters unchanged. */ #define IFCC_UPCASE 1 /* Make all characters upper case. */ #define IFCC_DOWNCASE 2 /* Make all characters lower case. */
This enumerated type describes how
InitFileRead...()
routines should handle incoming strings.
typedef WordFlags InitFileReadFlags; #define IFRF_CHAR_CONVERT 0xc000 /* 2 bits: InitFileCharConvert type */ #define IFRF_READ_ALL 0x2000 #define IFRF_FIRST_ONLY 0x1000 #define IFRF_SIZE 0x0fff
This record is used with the
InitFileRead...()
routines. The IFRF_CHAR_CONVERT field is used to indicate whether strings being read should be upcased, downcased, or left unaltered--the type is designated by a value of
InitFileCharConvert
. The IFRF_SIZE field is used by routines that take a passed buffer; this field indicates the size of the buffer (the maximum number of bytes that can be returned by the routine).
When setting this record, make sure you shift the IFRF_CHAR_CONVERT value left an offset of IFRF_CHAR_CONVERT_OFFSET.
typedef enum {
IBT_NO_BACKGROUND = 0,
IBT_NARROW_LINED_PAPER = 2,
IBT_MEDIUM_LINED_PAPER = 4,
IBT_WIDE_LINED_PAPER = 6,
IBT_NARROW_STENO_PAPER = 8,
IBT_MEDIUM_STENO_PAPER = 10,
IBT_WIDE_STENO_PAPER = 12,
IBT_SMALL_GRID = 14,
IBT_MEDIUM_GRID = 16,
IBT_LARGE_GRID = 18,
IBT_SMALL_CROSS_SECTION = 20,
IBT_MEDIUM_CROSS_SECTION = 22,
IBT_LARGE_CROSS_SECTION = 24,
IBT_TO_DO_LIST = 26,
IBT_PHONE_MESSAGE = 28,
IBT_CUSTOM_BACKGROUND = 30
} InkBackgrountType;
This enumerated type is a set of standard background pictures for use with the Ink Database routines.
typedef ByteFlags InkControlFeatures; #define ICF_PENCIL_TOOL 0x02 #define ICF_ERASER_TOOL 0x01
typedef ByteFlags InkControlToolboxFeatures; #define ICTF_PENCIL_TOOL 0x02 #define ICTF_ERASER_TOOL 0x01
typedef struct {
Rectangle IDBF_bounds; /* bounds of data to save or coord at
* which to load data */
VMFileHandle IDBF_VMFile; /* VM File to write to/read from */ DBGroupAndItem IDBF_DBGroupAndItem; /* DB item to save to/load from */ word IDBF_DBExtra; /* space to skip at start of block */ } InkDBFrame;
typedef ByteFlags InkFlags; #define IF_HAS_TARGET 0x20 #define IF_DIRTY 0x10 #define IF_ONLY_CHILD_OF_CONTENT 0x08 #define IF_CONTROLLED 0x04 #define IF_INVALIDATE_ERASURES 0x02 #define IF_HAS_UNDO 0x01
typedef enum {
IRV_NO_REPLY,
/* VisComp objects use VisCallChildUnderPoint to send
* MSG_META_QUERY_IF_PRESS_IS_INK to its children, and
* VisCallChildUnderPoint returns this value (0) if there was not child
* under the point. No object should actually return this value. */
IRV_NO_INK, /* Return this if the object wants to treat incoming event as mouse data. */
IRV_INK_WITH_STANDARD_OVERRIDE, /* Return this if the object normally wants ink (the text object does this), * but the user can force mouse events instead by pressing the pen and * holding for some user-adjustable amount of time. */
IRV_WAIT /* Return this value if the object under the point is run by a different * thread and you want to hold up input (don't do anything with the incoming * MSG_META_START_SELECT) `til obj sends MSG_GEN_APPLICATION_INK_QUERY_REPLY * to the applicaiton object. */
} InkReturnValue;
This enumerated type is used by objects to let the system know whether incoming pointer events should be interpreted as mouse or pen data.
typedef WordFlags InsertChildFlags #define ICF_MARK_DIRTY 0x8000 #define ICF_OPTIONS 0x0003
This record specifies how children are to be added to an object tree.
typedef ByteEnum InsertChildOption #define ICO_FIRST 0 #define ICO_LAST 1 #define ICO_BEFORE_REFERENCE 2 #define ICO_AFTER_REFERENCE 3
This enumerated type determines how a child is added and is used with the
InsertChildFlags
record. It has four enumerations, as shown above.
typedef enum {
#define IP_ACOUSTIC_GRAND_PIANO 0
#define IP_BRIGHT_ACOUSTIC_PIANO 1
#define IP_ELECTRIC_GRAND_PIANO 2
#define IP_HONKY_TONK_PIANO 3
#define IP_ELECTRIC_PIANO_1 4
#define IP_ELECTRIC_PIANO_2 5
#define IP_HARPSICORD 6
#define IP_CLAVICORD 7
#define IP_CELESTA 8
#define IP_GLOCKENSPIEL 9
#define IP_MUSIC_BOX 10
#define IP_VIBRAPHONE 11
#define IP_MARIMBA 12
#define IP_XYLOPHONE 13
#define IP_TUBULAR_BELLS 14
#define IP_DULCIMER 15
#define IP_DRAWBAR_ORGAN 16
#define IP_PERCUSSIVE_ORGAN 17
#define IP_ROCK_ORGAN 18
#define IP_CHURCH_ORGAN 19
#define IP_REED_ORGAN 20
#define IP_ACCORDION 21
#define IP_HARMONICA 22
#define IP_TANGO_ACCORDION 23
#define IP_ACOUSTIC_NYLON_GUITAR 24
#define IP_ACOUSTIC_STEEL_GUITAR 25
#define IP_ELECTRIC_JAZZ_GUITAR 26
#define IP_ELECTRIC_CLEAN_GUITAR 27
#define IP_ELECTRIC_MUTED_GUITAR 28
#define IP_OVERDRIVEN_GUITAR 29
#define IP_DISTORTION_GUITAR 30
#define IP_GUITAR_HARMONICS 31
#define IP_ACOUSTIC_BASS 32
#define IP_ELECTRIC_FINGERED_BASS 33
#define IP_ELECTRIC_PICKED_BASS 34
#define IP_FRETLESS_BASS 35
#define IP_SLAP_BASS_1 36
#define IP_SLAP_BASS_2 37
#define IP_SYNTH_BASS_1 38
#define IP_SYNTH_BASS_2 39
#define IP_VIOLIN 40
#define IP_VIOLA 41
#define IP_CELLO 42
#define IP_CONTRABASS 43
#define IP_TREMOLO_STRINGS 44
#define IP_PIZZICATO_STRINGS 45
#define IP_ORCHESTRAL_HARP 46
#define IP_TIMPANI 47
#define IP_STRING_ENSEMBLE_1 48
#define IP_STRING_ENSEMBLE_2 49
#define IP_SYNTH_STRINGS_1 50
#define IP_SYNTH_STRINGS_2 51
#define IP_CHIOR_AAHS 52
#define IP_VOICE_OOHS 53
#define IP_SYNTH_VOICE 54
#define IP_ORCHESTRA_HIT 55
#define IP_TRUMPET 56
#define IP_TROMBONE 57
#define IP_TUBA 58
#define IP_MUTED_TRUMPET 59
#define IP_FRENCH_HORN 60
#define IP_BRASS_SECTION 61
#define IP_SYNTH_BRASS_1 62
#define IP_SYNTH_BRASS_2 63
#define IP_SOPRANO_SAX 64
#define IP_ALTO_SAX 65
#define IP_TENOR_SAX 66
#define IP_BARITONE_SAX 67
#define IP_OBOE 68
#define IP_ENGLISH_HORN 69
#define IP_BASSOON 70
#define IP_CLARINET 71
#define IP_PICCOLO 72
#define IP_FLUTE 73
#define IP_RECORDER 74
#define IP_PAN_FLUTE 75
#define IP_BLOWN_BOTTLE 76
#define IP_SHAKUHACHI 77
#define IP_WHISTLE 78
#define IP_OCARINA 79
#define IP_LEAD_SQUARE 80
#define IP_LEAD_SAWTOOTH 81
#define IP_LEAD_CALLIOPE 82
#define IP_LEAD_CHIFF 83
#define IP_LEAD_CHARANG 84
#define IP_LEAD_VOICE 85
#define IP_LEAD_FIFTHS 86
#define IP_LEAD_BASS_LEAD 87
#define IP_PAD_NEW_AGE 88
#define IP_PAD_WARM 89
#define IP_PAD_POLYSYNTH 90
#define IP_PAD_CHOIR 91
#define IP_PAD_BOWED 92
#define IP_PAD_METALLIC 93
#define IP_PAD_HALO 94
#define IP_PAD_SWEEP 95
#define IP_FX_RAIN 96
#define IP_FX_SOUNDTRACK 97
#define IP_FX_CRYSTAL 98
#define IP_FX_ATMOSPHERE 99
#define IP_FX_BRIGHTNESS 100
#define IP_FX_GOBLINS 101
#define IP_FX_ECHOES 102
#define IP_FX_SCI_FI 103
#define IP_SITAR 104
#define IP_BANJO 105
#define IP_SHAMISEN 106
#define IP_KOTO 107
#define IP_KALIMBA 108
#define IP_BAG_PIPE 109
#define IP_FIDDLE 110
#define IP_SHANAI 111
#define IP_TINKLE_BELL 112
#define IP_AGOGO 113
#define IP_STEEL_DRUMS 114
#define IP_WOODBLOCK 115
#define IP_TAIKO_DRUM 116
#define IP_MELODIC_TOM 117
#define IP_SYNTH_DRUM 118
#define IP_REVERSE_CYMBAL 119
#define IP_GUITAR_FRET_NOISE 120
#define IP_BREATH_NOISE 121
#define IP_SEASHORE 122
#define IP_BIRD_TWEET 123
#define IP_TELEPHONE_RING 124
#define IP_HELICOPTER 125
#define IP_APPLAUSE 126
#define IP_GUNSHOT 127
#define IP_ACOUSTIC_BASS_DRUM 128
#define IP_BASS_DRUM_1 129
#define IP_SIDE_STICK 130
#define IP_ACOUSTIC_SNARE 131
#define IP_HAND_CLAP 132
#define IP_ELECTRIC_SNARE 133
#define IP_LOW_FLOOR_TOM 134
#define IP_CLOSED_HI_HAT 135
#define IP_HIGH_FLOOR_TOM 136
#define IP_PEDAL_HI_HAT 137
#define IP_LOW_TOM 138
#define IP_OPEN_HI_HAT 139
#define IP_LOW_MID_TOM 140
#define IP_HI_MID_TOM 141
#define IP_CRASH_CYMBAL_1 142
#define IP_HIGH_TOM 143
#define IP_RIDE_CYMBAL_1 144
#define IP_CHINESE_CYMBAL 145
#define IP_RIDE_BELL 146
#define IP_TAMBOURINE 147
#define IP_SPLASH_CYMBAL 148
#define IP_COWBELL 149
#define IP_CRASH_CYMBAL_2 150
#define IP_VIBRASLAP 151
#define IP_RIDE_CYMBAL_2 152
#define IP_HI_BONGO 153
#define IP_LOW_BONGO 154
#define IP_MUTE_HI_CONGA 155
#define IP_OPEN_HI_CONGA 156
#define IP_LOW_CONGA 157
#define IP_HI_TIMBALE 158
#define IP_LOW_TIMBALE 159
#define IP_HIGH_AGOGO 160
#define IP_LOW_AGOGO 161
#define IP_CABASA 162
#define IP_MARACAS 163
#define IP_SHORT_WHISTLE 164
#define IP_LONG_WHISTLE 165
#define IP_SHORT_GUIRO 166
#define IP_LONG_GUIRO 167
#define IP_CLAVES 168
#define IP_HI_WOOD_BLOCK 169
#define IP_LOW_WOOD_BLOCK 170
#define IP_MUTE_CUICA 171
#define IP_OPEN_CUICA 172
#define IP_MUTE_TRIANGLE 173
#define IP_OPEN_TRIANGLE 174
} InstrumentPatch;
These are standard simulated instruments.
typedef enum {
IT_STANDARD_TABLE=0 /* default table */
} InstrumentTable;
The sound library uses this enumerated type to keep track of which table of simulated musical instruments to use.
typedef struct {
char JS_fname[13]; /* std DOS (8.3) spool filename */
char JS_parent[FILE_LONGNAME_LENGTH+1];
/* parent app's name */
char JS_documentName[FILE_LONGNAME_LENGTH+1]; /* document name */
word JS_numPages; /* # pages in document */ SpoolTimeStruct JS_time; /* time spooled */ byte JS_printing; /* TRUE/FALSE if we are printing */ } JobStatus;
typedef ByteEnum Justification; #define J_LEFT 0 #define J_RIGHT 1 #define J_CENTER 2 #define J_FULL 3
typedef ByteFlags KeyboardShortcut;
#define KS_PHYSICAL 0x80 /* TRUE: match key, not character */
#define KS_ALT 0x40 /* TRUE: <ALT> must be pressed */
#define KS_CTRL 0x20 /* TRUE: <CTRL> must be pressed */
#define KS_SHIFT 0x10 /* TRUE: <SHIFT> must be pressed */
#define KS_CHAR_SET_PRINTABLE (CS_BSW & 0x0f)
#define KS_CHAR_SET_CONTROL (CS_CONTROL & 0x0f)
typedef ByteEnum KeyboardType; #define KT_NOT_EXTD 1 #define KT_EXTD 2 #define KT_BOTH 3
typedef enum /* word */ {
KEYMAP_US_EXTD=1,
KEYMAP_US,
KEYMAP_UK_EXTD,
KEYMAP_UK,
KEYMAP_GERMANY_EXTD,
KEYMAP_GERMANY,
KEYMAP_SPAIN_EXTD,
KEYMAP_SPAIN,
KEYMAP_DENMARK_EXTD,
KEYMAP_DENMARK,
KEYMAP_BELGIUM_EXTD,
KEYMAP_BELGIUM,
KEYMAP_CANADA_EXTD,
KEYMAP_CANADA,
KEYMAP_ITALY_EXTD,
KEYMAP_ITALY,
KEYMAP_LATIN_AMERICA_EXTD,
KEYMAP_LATIN_AMERICA,
KEYMAP_NETHERLANDS,
KEYMAP_NETHERLANDS_EXTD,
KEYMAP_NORWAY_EXTD,
KEYMAP_NORWAY,
KEYMAP_PORTUGAL_EXTD,
KEYMAP_PORTUGAL,
KEYMAP_SWEDEN_EXTD,
KEYMAP_SWEDEN,
KEYMAP_SWISS_FRENCH_EXTD,
KEYMAP_SWISS_FRENCH,
KEYMAP_SWISS_GERMAN_EXTD,
KEYMAP_SWISS_GERMAN,
KEYMAP_FRANCE_EXTD,
KEYMAP_FRANCE,
} KeyMapType;
typedef ByteEnum Language; #define L_DEFAULT 0 #define L_GRAPHIC 0 #define L_ENGLISH 1 #define L_GERMAN 2 #define L_FRENCH 3 #define L_SPANISH 4 #define L_ITALIAN 5 #define L_DANISH 6 #define L_DUTCH 7
typedef struct {
PointDWFixed LMD_location;
byte LMD_buttonInfo;
UIFunctionsActive LMD_uiFunctionsActive;
} LargeMouseData;
typedef ByteEnum LayerPriority; #define LAYER_PRIO_MODAL 6 #define LAYER_PRIO_ON_TOP 8 #define LAYER_PRIO_STD 12 #define LAYER_PRIO_ON_BOTTOM 14
typedef enum /* word */ {
LCT_ATTACH, /* The library was just loaded. */
LCT_DETACH, /* The library is about to be unloaded. */
LCT_NEW_CLIENT, /* A new client of the library was just loaded. */
LCT_NEW_CLIENT_THREAD, /* A new thread was just created for a
* current client of the library. */
LCT_CLIENT_THREAD_EXIT, /* A thread was just exited for a current
* client of the library. */
LCT_CLIENT_EXIT, /* Library's client is about to be unloaded. */
} LibraryCallType
This type is used by library entry point routines. Library entry point routines take a value of this enumerated type to determine what, if anything, is to be done.
typedef struct {
byte LA_colorFlag;
RGBValue LA_color;
SysDrawMask LA_mask;
ColorMapMode LA_mapMode;
LineEnd LA_end;
LineJoin LA_join;
LineStyle LA_style;
WWFixed LA_width;
} LineAttr;
typedef ByteEnum LineEnd; #define LE_BUTTCAP 0 #define LE_ROUNDCAP 1 #define LE_SQUARECAP 2 #define LAST_LINE_END_TYPE LE_SQUARECAP
Line ends determine how the graphics system will draw the end of a line segment.
typedef ByteEnum LineJoin; #define LJ_MITERED 0 #define LJ_ROUND 1 #define LJ_BEVELED 2 #define LAST_LINE_JOIN_TYPE LJ_BEVELED
This enumerated type determines how the graphics system will draw corners of rectangles and polylines.
typedef ByteEnum LineStyle; #define LS_SOLID 0 #define LS_DASHED 1 #define LS_DOTTED 2 #define LS_DASHDOT 3 #define LS_DASHDDOT 4 #define LS_CUSTOM 5 #define MAX_DASH_ARRAY_PAIRS 5
The
LineStyle
type describes a line's "dottedness." Lines using custom dashes will work with the
DashPairArray
structure:
typedef word DashPairArray[MAX_DASH_ARRAY_PAIRS*2];
typedef struct {
MemHandle LMBH_handle;
word LMBH_offset;
word LMBH_flags;
LMemTypes LMBH_lmemType;
word LMBH_blockSize;
word LMBH_nHandles;
word LMBH_freeList;
word LMBH_totalFree;
} LMemBlockHeader;
This structure is found at the beginning of every block which contains an LMem heap. You can examine any of the fields by locking the block and casting its address to a
*LMemBlockHeader
. You should not, however, change any of the fields yourself; they are managed by the LMem routines.
Contents: The header has the following fields:
_handle
_offset
_flags
LocalMemoryFlags
currently set for the block. The flags are described in the entry for
LMemInitHeap()
.
_lmemType
LMemType
enumerated type, described in the entry for
LMemInitHeap()
.
_blockSize
_nHandles
_freeList
_totalFree
Warnings: Do not change the settings of the
LMemBlockHeader
. They are automatically maintained by the LMem routines.
Include: lmem.h
See Also: LMemInitHeap().
typdef enum {
LMEM_TYPE_GENERAL,
LMEM_TYPE_WINDOW,
LMEM_TYPE_OBJ_BLOCK,
LMEM_TYPE_GSTATE,
LMEM_TYPE_FONT_BLK,
LMEM_TYPE_GSTRING,
LMEM_TYPE_DB_ITEMS
} LMemType;
LMem heaps are created for many different purposes. Some of these purposes require the heap to have special functionality. For this reason, when you create an LMem heap, you must specify what it will be used for. The following types are available:
Include: lmem.h
typedef WordFlags LocalDistanceFlags; #define LDF_FULL_NAMES 0x8000 #define LDF_PRINT_PLURAL_IF_NEEDED 0x4000
typedef struct {
byte currencyFormatFlags;
byte currencyDigits;
word thousandsSeparator;
word decimalSeparator;
word listSeparator;
} LocalCurrencyFormat;
typedef WordFlags LocalMemoryFlags; #define LMF_HAS_FLAGS 0x8000 #define LMF_IN_RESOURCE 0x4000 #define LMF_DETACHABLE 0x2000 #define LMF_DUPLICATED 0x1000 #define LMF_RELOCATED 0x0800 #define LMF_AUTO_FREE 0x0400 #define LMF_IN_LMEM_ALLOC 0x0200 #define LMF_IS_VM 0x0100 #define LMF_NO_HANDLES 0x0080 #define LMF_NO_ENLARGE 0x0040 #define LMF_RETURN_ERRORS 0x0020 #define LMF_DEATH_COUNT 0x0007 #define STD_LMEM_OBJECT_FLAGS (LMF_HAS_FLAGS | LMF_RELOCATED)
When an LMem heap is allocated, certain flags are passed to indicate properties the heap should have. Some of the flags are passed only for system-created heaps. The flags are stored in a word-length record (
LocalMemoryFlags
); the record also contains flags indicating the current state of the heap. The
LocalMemoryFlags
are listed below:
ObjDuplicateResource()
routine. This flag should not be set by applications.
malloc()
routine; in this case, chunks are not relocated after being created, so chunk handles are not needed. Ordinarily, these blocks are created by the
malloc()
routine, not by applications.
ObjInstantiate()
) are optimized in such a way that they cannot deal with LMem allocation errors.
BlockDeathCommon
before it will free the block. This flag is used by error-checking code in the kernel.Include: lmem.h
typedef struct {
byte numberFormatFlags;
byte decimalDigits;
word thousandsSeparator;
word decimalSeparator;
word listSeparator;
} LocalNumericFormat;
typedef struct {
word frontSingle;
word endSingle;
word frontDouble;
word endDouble;
} LocalQuotes;
ManufacturerID ManufacturerFromFormatID(type);
ClipboardItemFormatID type;
This macro extracts the manufacturer ID from the given clipboard format ID and manufacturer value.
typedef word ManufacturerID #define MANUFACTURER_ID_GEOWORKS 0 #define MANUFACTURER_ID_APP_LOCAL 1 #define MANUFACTURER_ID_DOS_LAUNCHER 5 #define MANUFACTURER_ID_SDK 8 #define MANUFACTURER_ID_GENERIC 10
While geode.h defines many other ManufacturerIDs for specific developers, the only one of these which is useful to know about when developing for the Nokia 9000i communicator is MANUFACTURER_ID_NOKIA.
Each company should have its own manufacturer ID which is unique to the company and ensures that its applications' GeodeTokens do not conflict with those of other manufacturers. If you don't have a manufacturer ID but think you should, contact Geoworks Developer Support.
typedef ByteEnum MapColorToMono; #define CMT_CLOSEST 0 #define CMT_DITHER 1
This type determines what the graphics system will do when trying to draw in an unavailable color. It will either draw in the closest color, or else mix two or more close colors to get as close as possible overall.
typedef struct {
LMemBlockHeader MLBH_base;
word MLBH_numDestFields;
word MLBH_chunk1;
} MapListBlockHeader;
typedef struct {
int leftMargin;
int topMargin;
int rightMargin;
int bottomMargin;
} MarginDimensions;
#define MAX_FIELD_NAME_LENGTH 40
Maximum size of a field name in a datastore. See
DataStoreAddField()
.
typedef enum /* byte */ {
#define MEDIA_NONEXISTENT 0
#define MEDIA_160K 1
#define MEDIA_180K 2
#define MEDIA_320K 3
#define MEDIA_360K 4
#define MEDIA_720K 5
#define MEDIA_1M2 6
#define MEDIA_1M44 7
#define MEDIA_2M88 8
#define MEDIA_FIXED_DISK 9
#define MEDIA_CUSTOM 10
} MediaType;
The
MediaType
enumerated type indicates how a disk is formatted. A member of this enumerated type is returned by some disk-information routines (e.g.
DriveGetDefaultMedia()
). A
MediaType
value is also passed to
DiskFormat()
, indicating how the disk should be formatted.
typedef struct {
MediumType MU_medium;
MediumUnitType MU_unitType;
word MU_unit;
} MediumAndUnit;
This structure represents an instance of some communication medium-generally this corresponds to some hardware port or peripheral device.
Include: medium.h
typedef ByteEnum MediumUnitType;
#define MUT_NONE 0x0
#define MUT_INT 0x1
#define MUT_MEM_BLOCK 0x2
#define MUT_ANY 0x3
Include: medium.h
typedef struct {
word MET_id;
ManufacturerID MET_manuf;
} MediumType;
This structure represents a communication medium. Several standard media may be represented with a
MET_manuf
of MANUFACTURER_ID_GEOWORKS and a
GeoworksMediumID
in
MET_id
.
Include: medium.h
typedef enum /* word */ {
MESSAGE_NO_ERROR, /* no error was encountered */
MESSAGE_NO_HANDLES /* no handle could be allocated
* and MF_CAN_DISCARD_IF_DESPARATE
* was passed */
} MessageErrors;
A
MessageError
is returned by the assembly routine
ObjMessage()
in assembly to indicate whether the message was successfully sent. This is not encountered by C applications.
typedef WordFlags MessageFlags; #define MF_CALL 0x8000 /* @call */ #define MF_FORCE_QUEUE 0x4000 #define MF_STACK 0x2000 /* @stack */ #define MF_CHECK_DUPLICATE 0x0800 #define MF_CHECK_LAST_ONLY 0x0400 #define MF_REPLACE 0x0200 #define MF_CUSTOM 0x0100 #define MF_FIXUP_DS 0x0080 #define MF_FIXUP_ES 0x0040 #define MF_DISCARD_IF_NO_MATCH 0x0020 #define MF_MATCH_ALL 0x0010 #define MF_INSERT_AT_FRONT 0x0008 /* puts at front of queue */ #define MF_CAN_DISCARD_IF_DESPERATE 0x0004 #define MF_RECORD 0x0002 /* @record */ #define MF_DISPATCH_DONT_FREE 0x0002
MessageFlags
are specified in the assembly routine
ObjMessage()
. Most of these flags are set properly by Goc and the kernel in C. See the reference entries for the Goc keywords
@call
and
@send
.
typedef void MessageMethod();
Goc uses this type when building up method tables for classes.
typedef union {
MinUSMeasure MIT_US;
MinMetricMeasure MIT_METRIC;
MinPointMeasure MIT_POINT;
MinPicaMeasure MIT_PICA;
} MinIncrementType;
typedef ByteEnum MinMetricMeasure; #define MMM_MILLIMETER 0 #define MMM_HALF_CENTIMETER 1 #define MMM_CENTIMETER 2
typedef ByteEnum MinPointMeasure; #define MPM_25_POINT 0 #define MPM_50_POINT 1 #define MPM_100_POINT 2
typedef ByteEnum MinUSMeasure; #define MUSM_EIGHTH_INCH 0 #define MUSM_QUARTER_INCH 1 #define MUSM_HALF_INCH 2 #define MUSM_ONE_INCH 3
typedef ByteEnum MixMode; #define MM_CLEAR 0 /* clear destination */ #define MM_COPY 1 /* new drawing is opaque */ #define MM_NOP 2 /* no drawing */ #define MM_AND 3 /* logical AND of new and old colors */ #define MM_INVERT 4 /* inverse of old color */ #define MM_XOR 5 /* XOR of new and old colors */ #define MM_SET 6 /* set destination black */ #define MM_OR 7 /* logical OR of new and old colors */
The
MixMode
determines what the graphics system will do when drawing one thing on top of another.
typedef enum {
MRC_NOT_SUPPORTED = 1,
MRC_DRIVER_IN_USE,
MRC_TIMEOUT,
MRC_UNKNOWN_RESPONSE,
MRC_OK,
RC_ERROR,
MRC_BUSY,
MRC_NO_DIALTONE,
MRC_NO_ANSWER,
MRC_NO_CARRIER,
MRC_CONNECT,
MRC_CONNECT_1200,
MRC_CONNECT_2400,
MRC_CONNECT_4800,
MRC_CONNECT_9600,
MRC_BLACKLISTED,
MRC_DELAYED,
} ModemResultCode;
Error codes returned by modem routines.
typedef WordFlags MouseReturnFlags; #define MRF_PROCESSED 0x8000 #define MRF_REPLAY 0x4000 #define MRF_PREVENT_PASS_THROUGH 0x2000 #define MRF_SET_POINTER_IMAGE 0x1000 #define MRF_CLEAR_POINTER_IMAGE 0x0800
These flags are used in various parts of the system that work with mouse input. Which values are appropriate to pass will vary based on context.
typedef struct {
word unused;
MouseReturnFlags flags;
optr ptrImage;
} MouseReturnParams;
This structure is used in certain areas of the system which work with mouse input.
typedef struct{
ElementArrayHeader NAH_meta;
word NAH_dataSize; /* Size of data section of
* each element */
} NameArrayHeader;
Every name array must begin with a
NameArrayHeader
. Since name arrays are special kinds of element arrays, the
NameArrayHeader
must itself begin with an
ElementArrayHeader
. The structure contains one additional field,
NAH_dataSize
. This field specifies how long the data section of every element is. Applications may examine this field, but they must not change it.
typedef struct {
RefElementHeader NAME_meta;
byte NAME_data[NAME_ARRAY_MAX_DATA_SIZE];
char NAME_name[NAME_ARRAY_MAX_NAME_SIZE];
} NameArrayMaxElement;
typedef ByteEnum NumberType; #define NT_VALUE 0 #define NT_BOOLEAN 1 #define NT_DATE_TIME 2
typedef ByteFlags ObjChunkFlags; #define OCF_VARDATA_RELOC 0x10 #define OCF_DIRTY 0x08 #define OCF_IGNORE_DIRTY 0x04 #define OCF_IN_RESOURCE 0x02 #define OCF_IS_OBJECT 0x01
This record is stored at the beginning of each chunk and gives specific information about the chunk. The flags are internal.
typedef struct {
LMemBlockHeader OLMBH_header; /* standard LMem block header */
word OLMBH_inUseCount;
word OLMBH_interactibleCount;
optr OLMBH_output;
word OLMBH_resourceSize;
} ObjLMemBlockHeader;
This is the standard Object Block header that begins every object block; you can set additional header fields with the
@header
Goc keyword. The fields of this structure are
OLMBH_header
LMemBlockHeader
structure type.
OLMBH_inUseCount
OLMBH_interactibleCount
OLMBH_output
TravelOption
TO_OBJ_BLOCK_OUTPUT.
OLMBH_resourceSizetypedef ByteEnum ObjRelocationSource; #define ORS_NULL 0 #define ORS_OWNING_GEODE 1 #define ORS_KERNEL 2 #define ORS_LIBRARY 3 #define ORS_CURRENT_BLOCK 4 #define ORS_VM_HANDLE 5 #define ORS_OWNING_GEODE_ENTRY_POINT 6 #define ORS_NON_STATE_VM 7 #define ORS_UNKNOWN_BLOCK 8 #define ORS_EXTERNAL 9 #define RID_SOURCE_OFFSET 12
typedef ByteEnum ObjRelocationType; #define RELOC_END_OF_LIST 0 #define RELOC_RELOC_HANDLE 1 #define RELOC_RELOC_SEGMENT 2 #define RELOC_RELOC_ENTRY_POINT 3
typedef struct {
EvalStackOperatorType OSE_type;
EvalStackOperatorType OSE_data;
} OperatorStackElement;
typedef ByteEnum OperatorType; #define OP_RANGE_SEPARATOR 0 #define OP_NEGATION 1 #define OP_PERCENT 2 #define OP_EXPONENTIATION 3 #define OP_MULTIPLICATION 4 #define OP_DIVISION 5 #define OP_MODULO 6 #define OP_ADDITION 7 #define OP_SUBTRACTION 8 #define OP_EQUAL 9 #define OP_NOT_EQUAL 10 #define OP_LESS_THAN 11 #define OP_GREATER_THAN 12 #define OP_LESS_THAN_OR_EQUAL 13 #define OP_GREATER_THAN_OR_EQUAL 14 #define OP_STRING_CONCAT 15 #define OP_RANGE_INTERSECTION 16 #define OP_NOT_EQUAL_GRAPHIC 17 #define OP_DIVISION_GRAPHIC 18 #define OP_LESS_THAN_OR_EQUAL_GRAPHIC 19 #define OP_GREATER_THAN_OR_EQUAL_GRAPHIC 20 #define OP_PERCENT_MODULO 21 #define OP_SUBTRACTION_NEGATION 22
typedef ByteEnum PageEndCommand;
#define PEC_FORM_FEED 0
#define PEC_NO_FORM_FEED 1
This enumerated type is used to specify whether there should be a form feed at the end of a page. A form feed is almost always desired; however, a program such as a banner-printer might suppress the form feed.
typedef union {
PageLayoutPaper PL_paper;
PageLayoutEnvelope PL_envelope;
PageLayoutLabel PL_label;
} PageLayout;
typedef WordFlags PageLayoutEnvelope; #define PLE_PATH 0x0040 #define PLE_ORIENTATION 0x0010 #define PLE_TYPE 0x0004
typedef WordFlags PageLayoutLabel; #define PLL_ROWS 0x7e00 /* labels down */ #define PLL_COLUMNS 0x01f8 /* labels across */ #define PLL_TYPE 0x0004 /* PT_LABEL */
typedef WordFlags PageLayoutPaper; #define PLP_ORIENTATION 0x0008 #define PLP_TYPE 0x0004
typedef struct {
word unused;
word PS_width;
word PS_height;
PageLayout PS_layout;
} PageSize;
typedef WordFlags PageSizeCtrlAttrs; #define PZCA_ACT_LIKE_GADGET 0x8000 #define PZCA_PAPER_SIZE 0x4000 #define PZCA_INITIALIZE 0x2000
typedef ByteFlags PageSizeControlFeatures; #define PSIZECF_MARGINS 0x04 #define PSIZECF_ALL 0x02 #define PSIZECF_PAGE_TYPE 0x01
typedef struct {
dword PSR_width;
dword PSR_height;
PageLayout PSR_layout;
PCMarginParams PSR_margins;
} PageSizeReport:
typedef ByteEnum PaperOrientation; #define PO_PORTRAIT 0x00 #define PO_LANDSCAPE 0x01
typedef enum
{
PARALLEL_LPT1 = 0,
PARALLEL_LPT2 = 2,
PARALLEL_LPT3 = 4,
PARALLEL_LPT4 = 6,
} ParallelUnit;
typedef ByteFlags ParserFlags; #define PF_HAS_LOOKAHEAD 0x80 #define PF_CONTAINS_DISPLAY_FUNC 0x40 #define PF_OPERATORS 0x20 #define PF_NUMBERS 0x10 #define PF_CELLS 0x08 #define PF_FUNCTIONS 0x04 #define PF_NAMES 0x02 #define PF_NEW_NAMES 0x01
typedef struct {
CommonParameters PP_common;
word PP_parserBufferSize;
ParserFlags PP_flags;
dword PP_textPtr;
ScannerToken PP_currentToken;
ScannerToken PP_lookAheadToken;
byte PP_error; /* ParserScannerEvaluatorError */
word PP_tokenStart;
word PP_tokenEnd;
} ParserParameters;
typedef ByteEnum ParserScannerEvaluatorError; /* * Scanner errors */ #define PSEE_BAD_NUMBER 0 #define PSEE_BAD_CELL_REFERENCE 1 #define PSEE_NO_CLOSE_QUOTE 2 #define PSEE_COLUMN_TOO_LARGE 3 #define PSEE_ROW_TOO_LARGE 4 #define PSEE_ILLEGAL_TOKEN 5 /* * Parser errors */ #define PSEE_GENERAL 6 #define PSEE_TOO_MANY_TOKENS 7 #define PSEE_EXPECTED_OPEN_PAREN 8 #define PSEE_EXPECTED_CLOSE_PAREN 9 #define PSEE_BAD_EXPRESSION 10 #define PSEE_EXPECTED_END_OF_EXPRESSION 11 #define PSEE_MISSING_CLOSE_PAREN 12 #define PSEE_UNKNOWN_IDENTIFIER 13 #define PSEE_NOT_ENOUGH_NAME_SPACE 14 /* * Serious evaluator errors */ #define PSEE_OUT_OF_STACK_SPACE 15 #define PSEE_NESTING_TOO_DEEP 16 /* * Evaluator errors that are returned as the result of formulas. * These are returned on the argument stack. */ #define PSEE_ROW_OUT_OF_RANGE 17 #define PSEE_COLUMN_OUT_OF_RANGE 18 #define PSEE_FUNCTION_NO_LONGER_EXISTS 19 #define PSEE_BAD_ARG_COUNT 20 #define PSEE_WRONG_TYPE 21 #define PSEE_DIVIDE_BY_ZERO 22 #define PSEE_UNDEFINED_NAME 23 #define PSEE_CIRCULAR_REF 24 #define PSEE_CIRCULAR_DEP 25 #define PSEE_CIRC_NAME_REF 26 #define PSEE_NUMBER_OUT_OF_RANGE 27 #define PSEE_GEN_ERR 28 #define PSEE_NA 29 /* * Dependency errors */ #define PSEE_TOO_MANY_DEPENDENCIES 30 #define PSEE_SSHEET_BASE 0xc0 #define PSEE_FLOAT_BASE 250 #define PSEE_APP_BASE 230 #define PSEE_FLOAT_POS_INFINITY PSEE_FLOAT_BASE #define PSEE_FLOAT_NEG_INFINITY (PSEE_FLOAT_BASE + 1) #define PSEE_FLOAT_GEN_ERR (PSEE_FLOAT_BASE + 2)
typedef union {
ParserTokenNumberData PTD_number;
ParserTokenStringData PTD_string;
ParserTokenNameData PTD_name;
ParserTokenCellData PTD_cell;
ParserTokenFunctionData PTD_function;
ParserTokenOperatorData PTD_operator;
} ParserTokenData;
typedef ByteEnum ParserTokenType; #define PARSER_TOKEN_NUMBER 0 #define PARSER_TOKEN_STRING 1 #define PARSER_TOKEN_CELL 2 #define PARSER_TOKEN_END_OF_EXPRESSION 3 #define PARSER_TOKEN_OPEN_PAREN 4 #define PARSER_TOKEN_CLOSE_PAREN 5 #define PARSER_TOKEN_NAME 6 #define PARSER_TOKEN_FUNCTION 7 #define PARSER_TOKEN_CLOSE_FUNCTION 8 #define PARSER_TOKEN_ARG_END 9 #define PARSER_TOKEN_OPERATOR 10
typedef enum /* word */ {
PCT_NULL, /* wipe out old path */
PCT_REPLACE, /* replace old path with upcoming path */
PCT_UNION, /* union old path with new */
PCT_INTERSECTION /* intersect old path with new */
} PathCombineType;
typedef ByteEnum PatternType; #define PT_SOLID 0 #define PT_SYSTEM_HATCH 1 #define PT_SYSTEM_BITMAP 2 #define PT_USER_HATCH 3 #define PT_USER_BITMAP 4 #define PT_CUSTOM_HATCH 5 #define PT_CUSTOM_BITMAP 6
typedef struct {
dword PCDSP_width;
dword PCDSP_height;
} PCDocSizeParams;
Use this structure to communicate document sizes to a Print Control.
typedef struct {
word PCMP_left; /* left margin */
word PCMP_top; /* top margin */
word PCMP_right; /* right margin */
word PCMP_bottom; /* bottom margin */
} PCMarginParams
This structure holds information about a document's or printer's margins.
typedef ByteEnum PDAType; #define PDAT_PC_EMULATOR 0x0 #define PDAT_N9000 0x1 #define PDAT_N9000i 0x2
These values correspond to the different Nokia 9000 Communicator hardware platforms. They are only available on builds 4 or newer of the device (see Versions for more information).
Include: respondr.goh
See Also:
RespGetPDAHardwareInfo()
typedef struct {
sbyte PD_hotX;
sbyte PD_hotY;
byte PD_mask[CURSOR_IMAGE_SIZE_32];
byte PD_image[CURSOR_IMAGE_SIZE_32];
} PointerDef32;
STANDARD_CURSOR_IMAGE_SIZE = 32
This structure defines a mouse pointer.
typedef struct {
WWFixed PF_x;
WWFixed PF_y;
} PointWWFixed;
These structures are used to specify graphics point coordinates. Which point structure to use depends on size of the coordinate space and accuracy required.
typedef WordFlags PrintControlAttrs; #define PCA_MARK_APP_BUSY 0x2000 /* mark busy while printing */ #define PCA_VERIFY_PRINT 0x1000 /* verify before printing */ #define PCA_SHOW_PROGRESS 0x0800 /* show print progress dialog box */ #define PCA_PROGRESS_PERCENT 0x0400 /* show progress by percentage */ #define PCA_PROGRESS_PAGE 0x0200 /* show progress by page */ #define PCA_FORCE_ROTATION 0x0100 /* Force rotation of output */ #define PCA_COPY_CONTROLS 0x0080 /* Copy controls are available */ #define PCA_PAGE_CONTROLS 0x0040 /* Page range controls available */ #define PCA_QUALITY_CONTROLS 0x0020 /* Quality controls available */ #define PCA_USES_DIALOG_BOX 0x0010 /* Dialog box should appear */ #define PCA_GRAPHICS_MODE 0x0008 /* Supports graphics mode output */ #define PCA_TEXT_MODE 0x0004 /* Supports text mode output */ #define PCA_DEFAULT_QUALITY 0x0002 /* default print quality */
typedef ByteFlags PrintControlFeatures; #define PRINTCF_PRINT_TRIGGER 0x02 /* wants a print trigger */ #define PRINTCF_FAX_TRIGGER 0x01 /* wants a fax trigger */
typedef enum {
PCS_PRINT_BOX_VISIBLE,
PCS_PRINT_BOX_NOT_VISIBLE
} PrintControlStatus;
typedef ByteFlags PrintControlToolboxFeatures; #define PRINTCTF_PRINT_TRIGGER 0x02 /* wants a print tool trigger */ #define PRINTCTF_FAX_TRIGGER 0x01 /* wants a fax tool trigger */
typedef enum PrinterDriverType; PDT_PRINTER, PDT_PLOTTER, PDT_FACSIMILE, PDT_CAMERA, PDT_OTHER, } PrinterDriverType;
This enumerated type indeicates the type of printer driver that we are dealing with.
typedef ByteFlags PrinterOutputModes; #define POM_GRAPHICS_LOW 0x10 #define POM_GRAPHICS_MEDIUM 0x08 #define POM_GRAPHICS_HIGH 0x04 #define POM_TEXT_DRAFT 0x02 #define POM_TEXT_NLQ 0x01 #define PRINT_GRAPHICS = (POM_GRAPHICS_LOW | POM_GRAPHICS_MEDIUM | POM_GRAPHICS_HIGH )
#define PRINT_TEXT = (POM_TEXT_DRAFT | POM_TEXT_NLQ)
typedef struct {
word PN_major;
word PN_minor;
} ProtocolNumber;
Defines the protocol level of a file, geode, or document.
PN_major
represents significant compatibility comparisons, and
PN_minor
represents less significant differences. If the major protocol is different between to items, they are incompatible. If the minor protocol is different, they may or may not be incompatible.
typedef struct _QuickSortParameters {
word _pascal (*QSP_compareCallback) (void * el1,
void * el2,
word valueForCallback)); void _pascal (*QSP_lockCallback) (void *el, word valueForCallback)); void _pascal (*QSP_unlockCallback) (void *el, word valueForCallback)); word QSP_insertLimit; word QSP_medianLimit; /* These are set internally by the quicksort algorithm and should not * be set by the caller: */ word QSP_nLesser; word QSP_nGreater; } QuickSortParameters;
This structure is passed to
ArrayQuickSort
. The fields have the following meanings:
*
QSP
_compareCallback
*
QSP
_lockCallback
ArrayQuickSort
examines or changes any element. It should be declared _pascal. You can pass a null function pointer, indicating that no locking callback routine should be called.
*
QSP
_lockCallback
ArrayQuickSort
examines or changes any element. It should be declared _pascal. You can pass a null function pointer, indicating that no unlocking callback routine should be called.
_insertLimit
_insertLimit
elements in a sublist,
ArrayQuickSort
will use an insertion sort for that sublist, rather than a QuickSort.
_medianLimit
_medianLimit
elements in a sublist, ArrayQuickSort will use the first element as a partition, instead of searching for the median element.typedef ByteFlags RangeEnumFlags; #define REF_ALL_CELLS 0x80 #define REF_NO_LOCK 0x40 #define REF_COLUMN_FLAGS 0x20 #define REP_MATCH_COLUMN_FLAGS 0x10 #define REF_CELL_ALLOCATED 0x08 #define REF_CELL_FREED 0x04 #define REF_OTHER_ALLOC_OR_FREE 0x02 #define REF_COLUMN_FLAGS_MODIFIED 0x01
These flags are used by
RangeEnum()
.
typedef struct {
PCB(RANGE_ENUM_CALLBACK_RETURN_TYPE, REP_callback,
(RangeEnumCallbackParams));
Rectangle REP_bounds; byte REP_columnFlags; word *REP_columnFlagsArray; CellFunctionParameters *REP_cfp; byte REP_matchFlags; word *REP_locals; } RangeEnumParams;
This structure is used by two routines,
RangeEnum()
and
CellGetExtent()
. When it is used by
RangeEnum()
, the structure specifies all the details about how
RangeEnum()
will function.
CellGetExtent()
is passed a blank
RangeEnumParams
structure; it fills in the
REP_bounds
field.
The callback routine, if any, should be declared _pascal.
Include: cell.h
typedef ByteFlags RangeSortCellExistsFlags; #define RSCEF_SECOND_CELL_EXISTS 0x02 #define RSCEF_FIRST_CELL_EXISTS 0x01
typedef ByteFlags RangeSortFlags; #define RSF_SORT_ROWS 0x80 #define RSF_SORT_ASCENDING 0x40 #define RSF_IGNORE_CASE 0x20
typedef struct {
Rectangle RSP_range;
Point RSP_active;
dword RSP_callback;
byte RSP_flags; /* RangeSortFlags */
dword RSP_cfp;
word RSP_sourceChunk;
word RSP_destChunk;
word RSP_base;
dword RSP_lockedEntry;
byte RSP_cachedFlags;
} RangeSortParams;
typedef struct {
RecordID RH_id;
word RH_size;
byte RH_fieldCount;
} RecordHeader;
Structure containing metadata about a record; first
FieldHeader
follows.
typedef dword RecordID;
Uniquely identifies a record in a datastore; this value stays constant and does not change when other records are added or deleted.
typedef dword RecordNum;
Specifies relative place in the datastore; this value may change when other records are added or deleted.
typedef struct {
sword R_left;
sword R_top;
sword R_right;
sword R_bottom;
} Rectangle;
This structure represents a graphics rectangle.
typedef struct {
sdword RD_left;
sdword RD_top;
sdword RD_right;
sdword RD_bottom;
} RectDWord;
This structure represents a graphics rectangle.
typedef struct {
word RR_y1M1;
word RR_eo1; /* EOREGREC */
word RR_y2;
word RR_x1;
word RR_x2;
word RR_eo2; /* EOREGREC */
word RR_eo3; /* EOREGREC */
} RectRegion;
typedef word Region; #define EOREGREC 0x8000 #define EOREG_HIGH 0x80
This structure represents a region of a graphics coordinate space.
Regions are described in terms of a rectangular array (thus the similarity to bitmaps). Instead of specifying an on/off value for each pixel, however, regions assume that the region will be fairly undetailed and that the data structure can thus be treated in the manner of a sparse array. Only the cells in which the color value of a row changes are recorded. The tricky part here is keeping in mind that when figuring out whether or not a row is the same as a previous row, the system works its way up from the bottom, so that you should compare each row with the row beneath it to determine whether it needs an entry.
The easiest region to describe is the null region, which is a special case described by a single word with the value EOREGREC (a constant whose name stands for E nd Of REG ion REC ord value). Describing a non-null region requires several numbers.
The first four numbers of the region description give the bounds of the region. Next come one or more series of numbers. Each series describes a row, specifying which pixels of that row are part of the region. The only rows which need to be described are those which are different from the row below. The first number of each row description is the row number, its y coordinate. The last number of each series is a special token, EOREGREC, which lets the kernel know that the next number of the description will be the start of another row. Between the row number and EOREGREC are the column numbers where the pixels toggle on and off. The first number after the row number corresponds to the first column in which the pixel is on; the next number is the first subsequent column in which the pixel is off; and so on.
typedef ByteEnum RegionFillRule; #define ODD_EVEN 0 #define WINDING 1
This enumerated type determines how a path or region should be filled. Winding fill is more versatile, but requires that the path or polygon's edges run in the correct direction.
typedef struct {
word RN_major;
word RN_minor;
word RN_change;
word RN_engineering;
} ReleaseNumber;
Used to record what version a file, document, or geode is. This represents the release level; the most significant numbers are
RN_major
and
RN_minor
. The other fields are typically used only internally to a manufacturer.
typedef dword RGBColorAsDWord; RGB_RED(val) ( val & 0xff) RGB_GREEN(val) ( (val >> 8) & 0xff ) RGB_BLUE(val) ( (val >> 16) & 0xff ) RGB_INDEX(val) ( (val >> 24) & 0xff )
See the
ColorQuad
data structure to find out the meanings of the fields.
typedef struct {
byte RGBT_red[256];
byte RGBT_green[256];
byte RGBT_blue[256];
} RGBTransfer;
typedef struct {
word SACA_opaqueSize;
/* label byte SACA_opaque; */
/* user-readable form of address follows opaque address--use
* SACA_opaqueSize to compute the offset to this data. */
} SACAddress;
The SocketAddressControl uses
SACAddress
structures to provide information about addresses.
Most programs won't need to look at the innards of this structure: they will just pass the opaque address information to
SocketResolve()
to make sure that the address is valid and reduce it to its primitive form.
However, if you need to construct a "raw" address to pass to
SocketResolve()
, you'll need to know the structure of the opaque address information. It's an
ExtendedSACAddress
buffer followed by a null-terminated user-readable connection address string..
The
ExtendedSACAddress
buffer consists of:
LinkType
value (one of LT_ADDR, LT_ID, or LT_DEFAULT), and parameters to identify the link. If the
LinkType
is LT_DEFAULT, then there are no further parameters. If the
LinkType
is LT_ID, then there is a word-length
LinkID
which acts as a permanent identifier for the link. If the
LinkType
is LT_ADDR, the parameter is a string which will be appended to the user-readable connection address string, surrounded by parentheses.Include: sac.goh
typedef struct {
DACSampleFormat SMID_format:15;
DACReferenceByte SMID_reference:1;
} SampleFormat;
typedef struct {
word SFD_manufact;
word SFD_format;
word SFD_rate;
word SFD_playFlags;
} SampleFormatDescription;
This structure acts as a header for a sampled sound, giving format information needed to properly interpret the sound data.
typedef union {
ScannerTokenNumberData STD_number;
ScannerTokenStringData STD_string;
ScannerTokenCellData STD_cell;
ScannerTokenIdentifierData STD_identifier;
ScannerTokenOperatorData STD_operator;
} ScannerTokenData;
typedef struct {
word STSD_start;
word STSD_length;
} ScannerTokenStringData;
typedef ByteEnum ScannerTokenType; #define SCANNER_TOKEN_NUMBER 0 #define SCANNER_TOKEN_STRING 1 #define SCANNER_TOKEN_CELL 2 #define SCANNER_TOKEN_END_OF_EXPRESSION 3 #define SCANNER_TOKEN_OPEN_PAREN 4 #define SCANNER_TOKEN_CLOSE_PAREN 5 #define SCANNER_TOKEN_IDENTIFIER 6 #define SCANNER_TOKEN_OPERATOR 7 #define SCANNER_TOKEN_LIST_SEPARATOR 8
typedef word ScriptAttrAsWord; /* High byte is a vertical offset, as a fraction of the font size. Low byte is a fractional scale to use.
Thus, setting a subscript attr to 0x8020 would result in subscript characters being printed half a line down and at 1/4 normal size. */
This structure specifies the offset and scale factor with which sub- and superscript characters should draw.
typedef ByteFlags SearchFlags; #define SF_BACKWARDS 0x80 #define SF_START_AT_END 0x40 #define SF_IGNORE_CASE 0x20 #define SF_NO_WILDCARDS 0x10 #define SF_PARTIAL_WORD 0x08
Flags to define search parameters; see
SearchParams
and
DataStoreStringSearch()
.
typedef struct {
SearchType SP_searchType;
dword SP_maxRecords;
FieldID SP_startField;
FieldCategory SP_category;
TCHAR *SP_searchString;
SearchFlags SP_flags;
} SearchParams;
Structure for specifying search conditions when calling
DataStoreStringSearch()
.
typedef ByteEnum SearchType; #define ST_ALL 1 /* search all string fields */ #define ST_FIELD 2 /* search by FieldID */ #define ST_CATEGORY 3 /* search by FieldCategory */
Values to specify in search parameters; see
SearchParams
and
DataStoreStringSearch()
.
typedef enum {
SE_NO_ERROR, /* No error occurred */
SE_TIMEOUT, /* The semaphore timed out before
* it could be grabbed by the thread */
SE_PREVIOUS_OWNER_DIED /* The current holder of the semaphore * exited abnormally */
} SemaphoreError;
Determines the error encountered by semaphore and threadlock routines such as
ThreadPSem()
and
ThreadPTimedSem()
.
typedef enum
{
SERIAL_BAUD_115200 = 1,
SERIAL_BAUD_57600 = 2,
SERIAL_BAUD_38400 = 3,
SERIAL_BAUD_19200 = 6,
SERIAL_BAUD_14400 = 8,
SERIAL_BAUD_9600 = 12,
SERIAL_BAUD_7200 = 16,
SERIAL_BAUD_4800 = 24,
SERIAL_BAUD_3600 = 32,
SERIAL_BAUD_2400 = 48,
SERIAL_BAUD_2000 = 58,
SERIAL_BAUD_1800 = 64,
SERIAL_BAUD_1200 = 96,
SERIAL_BAUD_600 = 192,
SERIAL_BAUD_300 = 384
} SerialBaud;
typedef ByteFlags SerialFormat; #define SERIAL_FORMAT_DLAB_OFFSET (7) #define SERIAL_FORMAT_DLAB (0x01 << SERIAL_FORMAT_DLAB_OFFSET) #define SERIAL_FORMAT_BREAK_OFFSET (6) #define SERIAL_FORMAT_BREAK (0x01 << SERIAL_FORMAT_BREAK_OFFSET) #define SERIAL_FORMAT_PARITY_OFFSET (3) #define SERIAL_FORMAT_PARITY (0x07 << SERIAL_FORMAT_PARITY_OFFSET) #define SERIAL_FORMAT_EXTRA_STOP_OFFSET (2) #define SERIAL_FORMAT_EXTRA_STOP (0x01 << \ SERIAL_FORMAT_EXTRA_STOP_OFFSET)
#define SERIAL_FORMAT_LENGTH_OFFSET (0) #define SERIAL_FORMAT_LENGTH (0x03 << SERIAL_FORMAT_LENGTH_OFFSET)
typedef ByteFlags SerialModem; #define SMC_RTS 0x02 /* Request-To-Send (1 asserts it) */ #define SMC_DTR 0x01 /* Data-Terminal Ready (1 asserts it) */ #define SERIAL_MODEM_RTS_OFFSET (1) #define SERIAL_MODEM_DTR_OFFSET (0) #define SERIAL_MODEM_DTR (0x01 << SERIAL_MODEM_DTR_OFFSET)
typedef enum
{
SERIAL_COM1 = 0,
SERIAL_COM2 = 2,
SERIAL_COM3 = 4,
SERIAL_COM4 = 6,
SERIAL_COM5 = 8,
SERIAL_COM6 = 10,
SERIAL_COM7 = 12,
SERIAL_COM8 = 14
} SerialPortNum;
typedef byte SerifFace; #define SF_SLAB 0x00c0 #define SF_MODERN 0x0080 #define SF_TRANS 0x0040 #define SF_OLD 0x0000
typedef ByteFlags ShiftState; #define SS_LALT 0x80 #define SS_RALT 0x40 #define SS_LCTRL 0x20 #define SS_RCTRL 0x10 #define SS_LSHIFT 0x08 #define SS_RSHIFT 0x04 #define SS_FIRE_BUTTON_1 0x02 #define SS_FIRE_BUTTON_2 0x01
Modifiers which will be incorporated into input information. Corresponds to alt keys, control keys, shift keys, or special system modifiers. Note that these bits will only be set if not already accounted for; that is, if you are passed the character "E", the shift modifiers of this structure will not be marked.
typedef word Socket;
A Socket represents one side of a communication managed by the Socket library.
Include: socket.goh
typedef struct {
SocketPort SA_port;
word SA_domainSize; /* size in bytes of SA_domain buffer */
char *SA_domain; /* null terminated domain name */
word SA_addressSize; /* size in bytes of address data */
} SocketAddress;
Addresses are made up of a port number, a domain, and address data:
SocketPort
structure.
SA_domain
is a pointer to the null-terminated domain name string and
SA_domainSize
is the size of the buffer containing the domain name string.
SocketAddress
structure. This means that you should have allocated memory for SA_domain, and initialized
SA_domain
and
SA_domainSize
.
SA_addressSize
field contains the size of the address data. The buffer containing the address data should fall immediately after the
SocketAddress
structure.
SocketAddress
structure. This means that you should leave room for address data after the structure and initialize the
SA_addressSize
field.Include: socket.goh
typedef WordFlags SocketBindFlags;
#define SBF_REUSE_PORT (0x8000)
These flags are used to specify options when binding a socket to a port.
There is only one flag: SBF_REUSE_PORT, requesting that the socket be bound to the port even if another socket is already bound to it. You may not use this flag with datagram sockets.
typedef struct {
word SCR_socket;
SocketCondition SCR_condition;
byte SCR_reserved;
} SocketCheckRequest;
typedef ByteEnum SocketCondition;
#define SC_READ 0x0 /* data arrived */
#define SC_WRITE 0x1 /* data can be written */
#define SC_ACCEPT 0x2 /* connect request arrived */
#define SC_EXCEPTION 0x3 /* an exception occurred */
#define SC_URGENT 0x4 /* urgent data arrived */
A
SocketCheckRequest
is used to query a socket about whether it is ready to carry out some operation. You will need to set two fields:
Include: socket.goh
SocketDeliveryType;
#define SDT_DATAGRAM 0x0 /* unreliable packets */
#define SDT_SEQ_PACKET 0x1 /* reliable packets */
#define SDT_STREAM 0x2 /* reliable bytes */
Include: socket.goh
typedef enum {
SE_NORMAL = 0x0,
/* operation completed successfully */
SE_OUT_OF_MEMORY,
/*
* the net library was unable to allocate memory
* either there is no more system memory available, or a net-library
* specific upper bound on memory usage has been exceeded
*/
SE_PORT_IN_USE,
/*
* Another socket is already bound to this port, and the
* SBF_REUSE_PORT flag was not set.
*/
SE_PORT_ALREADY_LISTENING,
/* Another socket is already listening on this port. */
SE_SOCKET_IN_USE,
/*
* The socket is already being used in a way inconsistent with the
* requested operation
*/
SE_SOCKET_ALREADY_BOUND,
/* The socket is already bound to a port. */
SE_SOCKET_NOT_BOUND,
/* The socket must be bound to a port for the requested operation. */
SE_SOCKET_NOT_LISTENING,
/* The socket must be listening on a port for the requested operation. */
SE_SOCKET_LISTENING,
/* A listening socket cannot be used for outgoing connections */
SE_CONNECTION_REFUSED,
/* Nobody is listening on the remote port. */
SE_CONNECTION_FAILED,
/* The connection is no longer valid, probably due to a
* link failure. */
SE_CONNECTION_CLOSED,
/* The connection has been closed from the other end. */
SE_NON_UNIQUE_CONNECTION,
/* Another connection with the same endpoint addresses and ports exists. */
SE_TIMED_OUT,
/*
* The timeout period expired before the operation completed.
* In some cases the protocol may enforce a shorter timeout then
* the user-specified value, so this is possible even where
* SOCKET_NO_TIMEOUT is used.
*/
SE_CANT_LOAD_DRIVER,
/* A driver required to establish the connection could
* not be loaded. */
SE_UNKNOWN_DOMAIN,
/* The requested domain is not known to the libarary. */
SE_SYSTEM_SHUTDOWN,
/* The operation was aborted because GEOS is exiting */
SE_SOCKET_NOT_CONNECTED,
/* The operation requires a connected socket */
SE_SOCKET_ALREADY_CLOSED,
/* The send side of the socket is already closed */
SE_SOCKET_BUSY,
/* Another thread is operating on the socket */
SE_IMPROPER_CONDITION,
/*
* The requested condition for SocketCheckReady is not valid
* for a socket in the current state
*/
SE_INFO_NOT_AVAILABLE,
/* The driver could not provide the requested information */
SE_DOMAIN_REQUIRES_16BIT_PORTS,
/*
* The requested domain only allows 16 bit port numbers. The
* SP_manuf field must be set to MANUFACTURER_ID_SOCKET_16BIT_PORT
*/
SE_CONNECTION_ERROR,
/*
* The connection was not made for some reason which does not have
* it's own specific SocketError
*/
SE_MEDIUM_BUSY,
/* The medium required for the connection is not available */
SE_DESTINATION_UNREACHABLE,
/* The requested destination is not available */
SE_LINK_FAILED,
/*
* The low level link used for this connection failed or could not be
* established
*/
SE_INTERNAL_ERROR,
/*
* The socket library received an impossible error code from the driver.
* Either the library or the driver has a bug.
*/
SE_CLOSE_SEND_NOT_SUPPORTED,
/*
* It is not possible to close only the send side of a socket in this
* domain. Use SocketClose instead.
*/
SE_BIND_CONFLICT,
/*
* The same port cannot have both domain restricted and
* domain unrestricted bindings.
*/
SE_ALL_PORTS_BUSY,
/*
* SocketConnect attempted to implicitly bind a socket,
* but failed because all port numbers in the range used by
* implicit binds were in use
*/
SE_SOCKET_NOT_INTERRUPTIBLE,
/*
* An operation which cannot be interrupted is in in progress on the
* socket
*/
SE_INTERRUPT,
/* The operation was interrupted with SocketInterrupt */
SE_PORT_NOT_LISTENING,
/* No listening socket or LoadOnMsg request exists for this port */
SE_LISTEN_QUEUE_EMPTY,
/* No connections are pending for this port */
SE_SOCKET_CLOSED,
/* The socket must be open for sending to call either
* SocketGetSocketName or SocketGetPeerName */
SE_BUFFER_TOO_SMALL,
/* Returned by SocketResolve to mean that buffer for resolved
* address is too small */
SE_TEMPORARY_ERROR,
/* Returned by SocketResolve to indicate that address resolution
* is temporarily unavailable for external reasons( such as
* network down or server failure )*/
SE_EXCEPTION,
SE_URGENT = SE_EXCEPTION,
/* Returned by SocketRecv to indicate that some urgent data
* arrived on a reliable socket or an exception was received
* for a datagram socket
*/
SE_NOT_IMPLEMENTED,
/* Returned by API functions which are not yet implemented */
SE_CONNECTION_RESET
/* The connection was reset by the peer, by the local driver (perhaps
* in response to SocketCloseDomainMedium()), or by the Socket library
* because the Socket is freed when its owning thread exits.
*/
} SocketError;
Certain socket routines generate error values or generate thread errors under certain conditions. The error value will consist of a word-length value: a
SocketError
value in the low byte, and perhaps a
SpecSocketDrError
value in the high byte.
typedef enum {
SLT_USER_LOAD_APPLICATION = 0x0,
SLT_GEODE_LOAD,
} SocketLoadType;
The Socket library has the ability to load an application when it senses packet coming in to a port. It uses the
SocketLoadType
to determine how to load the application: via
UserLoadApplication()
or
GeodeLoad()
.
Include: socket.goh
typedef enum {
SO_RECV_BUF = 0x0, /* receive buffer size */
SO_SEND_BUF = 0x2, /* send buffer size */
SO_INLINE = 0x4, /* inline urgent data */
SO_NODELAY = 0x6, /* send data immediately */
SO_OWNER = 0x8, /* which app owns socket */
} SocketOption;
Various options which may be changed on a per-Socket basis by means of the
SocketSetIntSocketOption()
routine.
Include: socket.goh
typedef struct {
word SP_port; /* 16-bit port number */
ManufacturerID SP_manuf; /* 16-bit manufacturer's ID */
} SocketPort;
Port numbers identify a particular line of communication within a machine. Port numbers may be 32-bit or 16-bit, depending on the domain. They are specified via the
SocketPort
structure, made up of a 16-bit
ManufacturerID
and 16-bit token number. If the domain uses 16-bit socket numbers, then use MANUFACTURER_ID_SOCKET_16BIT_PORT as the
ManufacturerID
. If the domain allows 32-bit socket numbers, then you may use MANUFACTURER_ID_SOCKET_16BIT_PORT or some other
ManufacturerID
.
Include: socket.goh
typedef WordFlags SocketRecvFlags;
#define SRF_ADDRESS (0x8000) /* return source address of data */
#define SRF_URGENT (0x4000) /* return urgent data, if any */
#define SRF_PEEK (0x2000) /* leave data in socket */
These flags allow you to set options when receiving data from a socket. SRF_ADDRESS requests the address of the machine sending the data. SRF_URGENT requests that only urgent data be returned, if any. SRF_PEEK asks that the data be left on the socket.
Include: socket.goh
typedef WordFlags SocketSendFlags;
#define SSF_ADDRESS (0x8000) /* an address is supplied */
#define SSF_URGENT (0x4000) /* this is urgent data */
#define SSF_OPEN_LINK (0x2000) /* this datagram should open the
* link, if it is closed */
Use this structure to specify options when sending data over a socket. You may signal that you are specifying an address and/or that the packet sent should be marked urgent.
Include: socket.goh
typedef WordFlags SoundDriverCapability; #define SDC_NOISE 0x8000 #define SDC_WAVEFORM 0x6000 #define SDC_TIMBRE 0x1800 #define SDC_ENVELOPE 0x0600 typedef WordFlags SoundDriverNoiseCapability; #define SDNC_NO_NOISE 0x0000 #define SDNC_WHITE_NOISE 0x8000 typedef WordFlags SoundDriverWaveFormCapability #define SDWFC_NONE 0x0000 #define SDWFC_SELECT 0x2000 #define SDWFC_GENERATE 0x4000 typedef WordFlags SoundDriverTimbreCapability; #define SDTC_TONE_GENERATOR 0x0000 #define SDTC_ADDITIVE 0x0800 #define SDTC_MODULATOR 0x1000 #define SDTC_SELECTIVE 0x1800 typedef WordFlags SoundDriverEnvelopeCapability; #define SDEC_NONE 0x0000 #define SDEC_ADSR 0x0200 #define SDEC_DSP 0x0400
These fields encode information about what the sound driver is capable of in terms of music synthesis.
typedef enum {
SP_SYSTEM_LEVEL=10, /* most urgent */
SP_ALARM=20,
SP_STANDARD=30,
SP_GAME=40,
SP_BACKGROUND=50 /* least urgent */
} SoundPriority;
#define SP_IMMEDIATE -1
#define SP_THEME +1
If the user's sound device can't play all requested sounds, it will use
SoundPriority
values to determine which sounds are the most important.
The highest priority sound you may construct using these values is (SP_SYSTME_LEVEL + SP_IMMEDIATE). The least priority sound would be (SP_BACKGROUND + SP_THEME).
typedef enum {
SSDTT_MSEC=8, /* wait for N mili seconds */
SSDTT_TICKS=10, /* wait for N ticks */
SSDTT_TEMPO=12, /* wait for N beats */
} SoundStreamDeltaTimeType;
/* The following macros may help when constructing music buffers */
#define DeltaTick(time) SSDTT_TICKS, time
#define DeltaMS(time) SSDTT_MSEC, time
#define DeltaTempo(time) SSDTT_TEMPO, time
These are the units by which you can specify a sound's duration: milliseconds, timer "ticks" (each 1/60 second), or by means of an independently supplied tempo.
typedef enum {
SSE_VOICE_ON=0, /* turn on voice event */
SSE_VOICE_OFF=2, /* turn off voice event */
SSE_CHANGE=4, /* change instrument */
SSE_GENERAL=6 /* system-specific event */
} SoundStreamEvents;
/* The following macros may help when constructing music buffers */
#define General(command) SSE_GENERAL, command
#define Rest(duration) General(GE_NO_EVENT), DeltaTick(duration)
#define VoiceOn(voice,freq,attack) SSE_VOICE_ON, voice, freq, attack
#define VoiceOff(voice) SSE_VOICE_OFF, voice
#define ChangeEnvelope(voice, instrument, table) \
SSE_CHANGE, voice, instrument, table
#define SoundNote(voice,freq,duration,attack) \ VoiceOn(voice, freq, attack), DeltaTempo(duration), VoiceOff(voice)
#define Staccato(voice,freq,duration,attack) \ VoiceOn(voice, freq, attack), DeltaTempo(((duration*0x03)/0x04)), \ VoiceOff(voice), DeltaTempo((duration/0x4))
#define Natural(voice,freq,duration,attack) \ VoiceOn(voice, freq, attack), DeltaTempo(((duration*0x07)/0x08)), VoiceOff(voice), DeltaTempo((duration/0x8))
#define Legato(voice,freq,duration,attack) \ SoundNote(voice, freq, duration, attack)
These are the "events" that make up a music buffer.
typedef word SoundStreamSize; #define SSS_ONE_SHOT 128 /* 128 bytes (very small) */ #define SSS_SMALL 256 /* 256 bytes */ #define SSS_MEDIUM 512 /* 512 bytes (nice size) */ #define SSS_LARGE 1024
typedef ByteEnum SpecSizeType; #define SST_PIXELS 0x0000 #define SST_COUNT 0x0400 #define SST_PCT_OF_FIELD_WIDTH 0x0800 #define SST_PCT_OF_FIELD_HEIGHT 0x0c00 #define SST_AVG_CHAR_WIDTHS 0x1000 #define SST_WIDE_CHAR_WIDTHS 0x1400 #define SST_LINES_OF_TEXT 0x1800
typedef enum /*word*/ {
SSDE_DEVICE_BUSY = 0x0100, /* serial port or modem
driver in use */
SSDE_DIAL_ERROR = 0x0200,
SSDE_LINE_BUSY = 0x0300, /* modem got a busy signal */
SSDE_NO_DIALTONE = 0x0400,
SSDE_NO_ANSWER = 0x0500,
SSDE_NO_CARRIER = 0x0600,
SSDE_BLACKLISTED = 0x0700, /* used in GSM network */
SSDE_DELAYED = 0x0800, /* used in GSM network */
SSDE_CALL_FAILED = 0x0900, /* couldn't dial for some reason */
SSDE_NEG_FAILED = 0x0a00,
SSDE_AUTH_REFUSED = 0x0b00,
SSDE_AUTH_FAILED = 0x0c00,
SSDE_LQM_FAILURE = 0x0d00,
SSDE_LOOPED_BACK = 0x0e00,
SSDE_IDLE_TIMEOUT = 0x0f00,
SSDE_DEVICE_NOT_FOUND = 0x1000,
SSDE_DEVICE_TIMEOUT = 0x1100,
SSDE_DEVICE_ERROR = 0x1200,
SSDE_NO_USERNAME = 0x1300, /* no username and password
prompting used */
SSDE_CANCEL = 0x1400, /* user cancelled */
SSDE_INVALID_ACCPNT = 0x1500 /* invalid access point */
} SpecSocketDrError;
Certain Socket library operations may return an error value as a
SocketError
value. If the root cause of the error was a low-level communications failure, then the high byte of the returned error word may contain a
SpecSocketDrError
value, with the
SocketError
value in the low byte.
typedef WordFlags SpecWidth #define SW_TYPE 0x8c00 #define SW_DATA 0x03ff
#define PCT_0 0x000 #define PCT_5 0x033 #define PCT_10 0x066 #define PCT_15 0x099 #define PCT_20 0x0cc #define PCT_25 0x100 #define PCT_30 0x133 #define PCT_35 0x166 #define PCT_40 0x199 #define PCT_45 0x1cc #define PCT_50 0x200 #define PCT_55 0x233 #define PCT_60 0x266 #define PCT_65 0x299 #define PCT_70 0x2cc #define PCT_75 0x300 #define PCT_80 0x333 #define PCT_85 0x366 #define PCT_90 0x399 #define PCT_95 0x3cc #define PCT_100 0x3ff
typedef WordFlags SpecWinSizeSpec; #define SWSS_RATIO 0x8000 #define SWSS_SIGN 0x4000 #define SWSS_MANTISSA 0x3c00 #define SWSS_FRACTION 0x03ff
typedef enum /* word */ {
SERROR_NO_SPOOL_FILE,
SERROR_NO_PRINT_DRIVER,
SERROR_NO_PORT_DRIVER,
SERROR_NO_PRINTERS,
SERROR_NO_MODE_AVAIL,
SERROR_CANT_ALLOC_BITMAP,
SERROR_NO_VIDMEM_DRIVER,
SERROR_MANUAL_PAPER_FEED,
SERROR_CANT_LOAD_PORT_DRIVER,
SERROR_PORT_BUSY,
SERROR_TEST_NO_PAPER,
SERROR_TEST_OFFLINE,
SERROR_TEST_PARALLEL_ERROR,
SERROR_MISSING_COM_PORT,
SERROR_PRINT_ON_STARTUP
} SpoolError;
typedef enum /* word */ {
SPOOL_OPERATION_SUCCESSFUL,
SPOOL_JOB_NOT_FOUND,
SPOOL_QUEUE_EMPTY,
SPOOL_QUEUE_NOT_EMPTY,
SPOOL_QUEUE_NOT_FOUND,
SPOOL_CANT_VERIFY_PORT,
SPOOL_OPERATION_FAILED
} SpoolOpStatus;
typedef struct {
byte STS_second; /* second of the minute (0-59) */
byte STS_minute; /* minute of the hour (0-59) */
byte STS_hour; /* hour of the day (0-23) */
} SpoolTimeStruct;
typedef enum {
SDBT_FILE_NEW_CANNOT_CREATE_TEMP_NAME,
SDBT_FILE_NEW_INSUFFICIENT_DISK_SPACE,
SDBT_FILE_NEW_ERROR,
SDBT_FILE_NEW_WRITE_PROTECTED,
SDBT_FILE_OPEN_SHARING_DENIED,
SDBT_FILE_OPEN_FILE_NOT_FOUND,
SDBT_FILE_OPEN_INVALID_VM_FILE,
SDBT_FILE_OPEN_INSUFFICIENT_DISK_SPACE,
SDBT_FILE_OPEN_ERROR,
SDBT_FILE_OPEN_READ_ONLY,
SDBT_FILE_OPEN_VM_DIRTY,
SDBT_FILE_OPEN_APP_MORE_RECENT_THAN_DOC,
SDBT_FILE_OPEN_DOC_MORE_RECENT_THAN_APP,
SDBT_FILE_SAVE_INSUFFICIENT_DISK_SPACE,
SDBT_FILE_SAVE_ERROR,
SDBT_FILE_SAVE_WRITE_PROTECTED,
SDBT_FILE_SAVE_AS_FILE_EXISTS,
SDBT_FILE_SAVE_AS_SHARING_DENIED,
SDBT_FILE_CLOSE_SAVE_CHANGES,
SDBT_FILE_CLOSE_ATTACH_DIRTY,
SDBT_FILE_REVERT_CONFIRM,
SDBT_FILE_REVERT_ERROR,
SDBT_FILE_ATTACH_DISK_NOT_FOUND,
SDBT_CANNOT_OPEN_VOLUME_SELECTED,
SDBT_QUERY_SAVE_AS_TEMPLATE,
SDBT_QUERY_SAVE_AS_EMPTY,
SDBT_QUERY_SAVE_AS_DEFAULT,
SDBT_QUERY_SAVE_AS_MULTI_USER,
SDBT_QUERY_SAVE_AS_PUBLIC,
SDBT_QUERY_RESET_EMPTY_FILE,
SDBT_QUERY_RESET_DEFAULT_FILE,
SDBT_CANNOT_OPEN_EMPTY_FILE
} StandardDialogBoxType;
typedef struct {
word SDP_customFlags;
char *SDP_customString;
char *SDP_stringArg1;
char *SDP_stringArg2;
StandardDialogResponseTriggerTable *SDP_customTriggers;
} StandardDialogParams;
typedef struct {
word SDOP_customFlags;
optr SDOP_customString;
optr SDOP_stringArg1;
optr SDOP_stringArg2;
optr SDOP_customTriggers;
} StandardDialogOptrParams;
typedef struct {
optr SDRTE_moniker;
word SDRTE_responseValue;
} StandardDialogResponseTriggerEntry;
typedef struct {
word SD1RTT_numTriggers;
StandardDialogResponseTriggerEntry SD1RTT_trigger1;
} StandardDialog1ResponseTriggerTable;
typedef struct {
word SD2RTT_numTriggers;
StandardDialogResponseTriggerEntry SD2RTT_trigger1;
StandardDialogResponseTriggerEntry SD2RTT_trigger2;
} StandardDialog2ResponseTriggerTable;
typedef struct {
word SD3RTT_numTriggers;
StandardDialogResponseTriggerEntry SD3RTT_trigger1;
StandardDialogResponseTriggerEntry SD3RTT_trigger2;
StandardDialogResponseTriggerEntry SD3RTT_trigger3;
} StandardDialog3ResponseTriggerTable;
typedef struct {
word SD4RTT_numTriggers;
StandardDialogResponseTriggerEntry SD4RTT_trigger1;
StandardDialogResponseTriggerEntry SD4RTT_trigger2;
StandardDialogResponseTriggerEntry SD4RTT_trigger3;
StandardDialogResponseTriggerEntry SD4RTT_trigger4;
} StandardDialog4ResponseTriggerTable;
typedef enum /* word */ {
SP_NOT_STANDARD_PATH=0,
SP_TOP=1,
SP_APPLICATION=3,
SP_DOCUMENT=5,
SP_SYSTEM=7,
SP_PRIVATE_DATA=9,
SP_STATE=11,
SP_FONT=13,
SP_SPOOL=15,
SP_SYS_APPLICATION=17,
SP_PUBLIC_DATA=19,
SP_MOUSE_DRIVERS=21,
SP_PRINTER_DRIVERS=23,
SP_FILE_SYSTEM_DRIVERS=25,
SP_VIDEO_DRIVERS=27,
SP_SWAP_DRIVERS=29,
SP_KEYBOARD_DRIVERS=31,
SP_FONT_DRIVERS=33,
SP_IMPORT_EXPORT_DRIVERS=35,
SP_TASK_SWITCH_DRIVERS=37,
SP_HELP_FILES=39,
SP_TEMPLATE=41,
SP_POWER_DRIVERS=43,
SP_DOS_ROOM=45,
SP_HWR=47,
SP_WASTE_BASKET=49,
SP_BACKUP=51,
SP_PAGER_DRIVERS=53
SP_DUMMY=256
} StandardPath;
Most routines which are passed disk handles can also be passed members of the
StandardPath
enumerated type. Standard paths let applications access files in a disk-independent manner. Standard paths are usually arranged in a certain hierarchy; for example, the STATE directory usually belongs to the PRIVDATA directory. However, this is entirely at the user's discretion; applications may not make any assumption about how the standard paths are arranged.
typedef enum{
STREAM_WOULD_BLOCK,
STREAM_CLOSING,
STREAM_CANNOT_ALLOC,
STREAM_BUFFER_TOO_LARGE,
STREAM_CLOSED,
STREAM_SHORT_READ_WRITE
} StreamError;
typedef enum {
STREAM_OPEN_NO_BLOCK = 0x01,
STREAM_OPEN_TIMEOUT = 0x02
} StreamOpenFlags
typedef enum {
STREAM_ROLES_WRITER = 0,
STREAM_ROLES_READER = -1,
STREAM_ROLES_BOTH = -2
} StreamRoles;
typedef struct {
VMFileHandle SCD_vmFile;
word SCD_vmBlockOrMemHandle;
ChunkHandle SCD_chunk;
} StyleChunkDesc;
typedef struct {
NameArrayElement SEH_meta;
word SEH_baseStyle;
StyleElementFlags SEH_flags;
dword SEH_privateData;
} StyleElementHeader;
typedef struct {
RefElementHeader SSEH_meta;
word SSEH_style;
} StyleSheetElementHeader;
typedef enum {
SEF_NO_FORMAT,
SEF_SBI_FORMAT,
SEF_CTI_FORMAT
} SupportedEnvelopeFormat;
These values specify how a sound device can simulate musical instruments, if it can at all.
typedef ByteFlags SysConfigFlags; #define SCF_UNDER_SWAT 0x80 #define SCF_2ND_IC 0x40 #define SCF_RTC 0x20 #define SCF_COPROC 0x10 #define SCF_RESTARTED 0x08 #define SCF_CRASHED 0x04 #define SCF_MCA 0x02 #define SCF_LOGGING 0x01
The above flags indicate the system configuration. Any or all of these flags may be set at a time; if a flag is set, the description is true. These flags are used by the kernel and can be retrieved with
SysGetConfig()
.
typedef ByteEnum SysMachineType; #define SMT_UNKNOWN 0 #define SMT_PC 1 #define SMT_PC_CONV 2 #define SMT_PC_JR 3 #define SMT_PC_XT 4 #define SMT_PC_XT_286 5 #define SMT_PC_AT 6 #define SMT_PS2_30 7 #define SMT_PS2_50 8 #define SMT_PS2_60 9 #define SMT_PS2_80 10 #define SMT_PS1 11
A byte-sized value indicating the type of machine running GEOS. This value can be retrieved with
SysGetConfig()
.
typedef ByteEnum SysProcessorType; #define SPT_8088 0 #define SPT_8086 0 #define SPT_80186 1 #define SPT_80286 2 #define SPT_80386 3 #define SPT_80486 4
This enumerated type is a byte that indicates the type of processor on the system running GEOS. It can be retrieved with
SysGetConfig()
.
typedef struct {
dword SS_idleCount; /* Idle ticks in the last second. */
SysSwapInfo SS_swapOuts; /* Outward-bound swap activity. */
SysSwapInfo SS_swapIns; /* Inward-bound swap actividy. */
word SS_contextSwitches; /* Context switches in last second. */
word SS_interrupts; /* Interrupts in the last second. */
word SS_runQueue; /* Runnable threads at end of
* last second. */
} SysStats;
This structure is returned by
SysStatistics()
and represents the current performance statistics of GEOS.
typedef struct {
word SSI_paragraphs; /* Number of paragraphs swapped. */
word SSI_blocks; /* Number of blocks swapped. */
} SysSwapInfo;
Structure used to represent current swap activity in
SysStats
structure.
typedef ByteEnum SystemDrawMask; #define SDM_TILE 0 #define SDM_SHADED_BAR 1 #define SDM_HORIZONTAL 2 #define SDM_VERTICAL 3 #define SDM_DIAG_NE 4 #define SDM_DIAG_NW 5 #define SDM_GRID 6 #define SDM_BIG_GRID 7 #define SDM_BRICK 8 #define SDM_SLANT_BRICK 9 #define SDM_0 89 #define SDM_12_5 81 #define SDM_25 73 #define SDM_37_5 65 #define SDM_50 57 #define SDM_62_5 49 #define SDM_75 41 #define SDM_87_5 33 #define SDM_100 25 #define SDM_CUSTOM 0x7f #define SET_CUSTOM_PATTERN SDM_CUSTOM
typedef ByteEnum SystemHatch; #define SH_VERTICAL 0 #define SH_HORIZONTAL 1 #define SH_45_DEGREE 2 #define SH_135_DEGREE 3 #define SH_BRICK 4 #define SH_SLANTED_BRICK 5
typedef enum /* word */ {
TL_TARGET = 0,
TL_CONTENT,
TL_GENERIC_OBJECTS = 1000,
TL_GEN_SYSTEM,
TL_GEN_FIELD,
TL_GEN_APPLICATION,
TL_GEN_PRIMARY,
TL_GEN_DISPLAY_CTRL,
TL_GEN_DISPLAY,
TL_GEN_VIEW,
TL_LIBRARY_LEVELS = 2000,
TL_APPLICATION_OBJECTS = 3000,
} TargetLevel;
typedef struct {
word TAPEA_linkSize; /* 3 */
byte TAPEA_linkType; /* LinkType (LT_ID) */
word TAPEA_accPntID;
} TcpAccPntExtendedAddress;
This is the "opaque" representation of a TCP address; specifically, the form used to identify a TCP address by means of its access point ID.
Set
TAPEA_linkSize
to 3; set
TAPEA_linkType
to LT_ID; set
TAPEA_accPntID
to the access point ID number.
typedef struct {
word TNAPEA_linkSize;
byte TNAPEA_linkType; /* LinkType (LT_ADDR) */
/* label byte TNAPEA_addr; link address immed. followed by IP address */
} TcpNonAccPntExtendedAddress;
This is the "opaque" representation of a TCP address; specifically, the form used to identify a TCP address which is not a known access point--you will need to specify a phone number to dial in addition to an IP address.
Set
TNAPEA_linkSize
to the size of the phone number string. Set
TNAPEA_linkType
to LT_ADDR. Follow the structure witha null-terminated string consisting of the phone number to dial followed by the human-readable form of the IP address; for example "15105551234acme.com".
typedef struct {
word TOEA_linkSize; /* 0 */
/* label byte TOEA_ipAddr; IP address */
} TcpOnlyExtendedAddress;
This is the "opaque" representation of a TCP address; specifically, the form used to identify a TCP address when a link address is not required.
Set
TOEA_linkSize
to 0; follow the structure with the IP address, expressed either as a null-terminated string; for example "204.156.128.1" or "acme.com".
typedef struct {
byte TA_colorFlag;
RGBValue TA_color;
SysDrawMask TA_mask;
GraphicPattern TA_pattern;
TextStyle TA_styleSet;
TextStyle TA_styleClear;
TextMode TA_modeSet;
TextMode TA_modeClear;
WBFixed TA_spacePad;
FontID TA_font;
WBFixed TA_size;
sword TA_trackKern;
} TextAttr;
typedef ByteFlags TextMode; #define TM_TRACK_KERN 0x40 #define TM_PAIR_KERN 0x20 #define TM_PAD_SPACES 0x10 #define TM_DRAW_BASE 0x08 #define TM_DRAW_BOTTOM 0x04 #define TM_DRAW_ACCENT 0x02 #define TM_DRAW_OPTIONAL_HYPHENS 0x01
typedef struct {
TR_type TextReferenceType;
TR_ref TextReferenceUnion;
} TextReference;
typedef struct {
MemHandle TRB_handle;
} TextReferenceBlock;
This structure corresponds to a
TextReferenceType
of TRT_BLOCK. It is used with MSG_VIS_TEXT_REPLACE_TEXT and MSG_VIS_TEXT_GET_TEXT_RANGE to reference text used by those messages.
TRB_
handle
stores the handle of the text buffer. No entries need to be filled in to allocate a destination buffer. The heap allocation request will be made with the HAF_NO_ERR flag. If VTGRF_RESIZE is passed then either the passed block or the allocated block will be resized to accommodate the text.
typedef struct {
optr TRBC_ref;
} TextReferenceBlockChunk;
This structure corresponds to a
TextReferenceType
of TRT_OPTR. It is used with MSG_VIS_TEXT_REPLACE_TEXT and MSG_VIS_TEXT_GET_TEXT_RANGE to reference text used by those messages.
TRBC_
ref
stores the optr to a text buffer (a group of character)s. The handle field of TRBC
_ref
must be filled in.
It is assumed that the LMem heap will be able to accommodate this allocation. The caller is responsible for ensuring that this is the case.
If VTGRF_RESIZE is passed then either the passed block or the allocated block will be resized to accommodate the text.
typedef struct {
FileHandle TRDBI_file;
DBItem TRDBI_item;
DBGroup TRDBI_group;
} TextReferenceDBItem;
This structure corresponds to a
TextReferenceType
of TRT_DB_ITEM. It is used with MSG_VIS_TEXT_REPLACE_TEXT and MSG_VIS_TEXT_GET_TEXT_RANGE to reference text used by those messages.
TRDBI__
file
stores the VM file associated with this DB item.
TRDBI_
item
stores the DB item itself.
TRDBI_
group
stores the DB group the item belongs to.
Both TRDBI_
file
and TRDBI_
group
must be filled in if you want a VM block to be allocated.
If the TRDBI_
group
field is set to DB_UNGROUPED then the item will be allocated ungrouped. TRDBI_group will hold the group in which the item was allocated on return.
If VTGRF_RESIZE is passed then either the passed block or the allocated block will be resized to accommodate the text.
typedef struct {
FileHandle TRHA_file;
word TRHA_array;
} TextReferenceHugeArray;
This structure corresponds to a
TextReferenceType
of TRT_HUGE_ARRAY. It is used with MSG_VIS_TEXT_REPLACE_TEXT and MSG_VIS_TEXT_GET_TEXT_RANGE to reference text used by those messages.
TRHA
_file
stores the VM file associated with this huge array.
TRHA_
array
stores the Huge Array.
The TRHA_
file
field must be set if you want a huge-array to be allocated.
If VTGRF_RESIZE is passed then either the passed block or the allocated block will be resized to accommodate the text.
typedef struct {
char _far *TRP_pointer;
} TextReferencePointer;
This structure corresponds to a
TextReferenceType
of TRT_POINTER. It is used with MSG_VIS_TEXT_REPLACE_TEXT and MSG_VIS_TEXT_GET_TEXT_RANGE to reference text used by those messages.
TRP
_pointer
stores the pointer to the text. This field must be filled in.
VTGRF_RESIZE has no meaning with this sort of reference. VTGRF_ALLOCATE and VTGRF_ALLOCATE_ALWAYS are not valid flags to pass with this type of text reference.
This reference is the safest way to copy text out of a text object. Since the caller allocates the block it can also handle errors in the allocation.
typedef struct {
ChunkHandle TRSC_chunk;
Segment TRSC_segment;
} TextReferenceSegmentChunk;
This structure corresponds to a
TextReferenceType
of TRT_SEGMENT_CHUNK. It is used with MSG_VIS_TEXT_REPLACE_TEXT and MSG_VIS_TEXT_GET_TEXT_RANGE to reference text used by those messages.
TRSC_
segment
stores the segment address of the text chunk. TRSC
_chunk
stores the chunk offset to the text.
It is assumed that the LMem heap will be able to accommodate this allocation. The caller is responsible for ensuring that this is the case.
If VTGRF_RESIZE is passed then either the passed block or the allocated block will be resized to accommodate the text.
typedef enum {
TRT_POINTER=0, /* TextReferencePointer */
TRT_SEGMENT_CHUNK=2, /* TextReferenceSegmentChunk */
TRT_OPTR=4, /* TextReferenceBlockChunk */
TRT_BLOCK=6, /* TextReferenceBlock */
TRT_VM_BLOCK=8, /* TextReferenceVMBlock */
TRT_DB_ITEM=10, / * TextReferenceDBItem */
TRT_HUGE_ARRAY=12, /* TextReferenceHugeArray */
} TextReferenceType;
typedef union {
TextReferencePointer TRU_pointer;
TextReferenceSegmentChunk TRU_segChunk;
TextReferenceBlockChunk TRU_blockChunk;
TextReferenceBlock TRU_block;
TextReferenceVMBlock TRU_vmBlock;
TextReferenceDBItem TRU_dbItem;
TextReferenceHugeArray TRU_hugeArray;
} TextReferenceUnion;
typedef struct {
FileHandle TRVMB_file;
VMBlockHandle TRVMB_block;
} TextReferenceVMBlock;
This structure corresponds to a
TextReferenceType
of TRT_VM_BLOCK. It is used with MSG_VIS_TEXT_REPLACE_TEXT and MSG_VIS_TEXT_GET_TEXT_RANGE to reference text used by those messages.
TRVMB
_file
stores the VM file associated with this VM block. This entry must be filled in if you want a VM block to be allocated.
TRVMB
_block
stores the VM block itself.
If VTGRF_RESIZE is passed then either the passed block or the allocated block will be resized to accommodate the text.
typedef ByteFlags TextStyle; #define TS_OUTLINE 0x40 #define TS_BOLD 0x20 #define TS_ITALIC 0x10 #define TS_SUPERSCRIPT 0x08 #define TS_SUBSCRIPT 0x04 #define TS_STRIKE_THRU 0x02 #define TS_UNDERLINE 0x01
typedef enum {
TE_DIVIDE_BY_ZERO=0,
TE_OVERFLOW=4,
TE_BOUND=8,
TE_FPU_EXCEPTION=12,
TE_SINGLE_STEP=16,
TE_BREAKPOINT=20
} ThreadException;
Processor exceptions used primarily for debugging, these are used with
ThreadHandleException()
.
typedef ByteFlags ThreadModifyFlags; #define TMF_BASE_PRIO 0x80 #define TMF_ZERO_USAGE 0x40
Used with
ThreadModify()
is modified.
typedef WordFlags TimerCompressedDate; #define TCD_YEAR 0xfe00 /* years since 1980; e.g. 1988 is `8' */ #define TCD_MONTH 0x01e0 /* months (1 - 12) (0 illegal) */ #define TCD_DAY 0x001f /* days (1-31) (0 illegal) */
typedef struct {
word TDAT_year; /* Year */
word TDAT_month; /* Number of month (1 through 12) */
word TDAT_day; /* Number of day in month (1 through 31) */
DaysOfTheWeek TDAT_dayOfWeek; /* DayOfTheWeek enumeration */
word TDAT_hours; /* Hour of the day (0 through 23) */
word TDAT_minutes; /* Minute in the hour (0 through 59) */
word TDAT_seconds; /* Second in the minute (0 through 59) */
} TimerDateAndTime;
This structure is used to keep track of the current time and date.
typedef ByteFlags ToggleState; #define TS_CAPSLOCK 0x80 #define TS_NUMLOCK 0x40 #define TS_SCROLLLOCK 0x20
This structure describes the state of certain "toggles" which will affect how input is interpreted. These toggles correspond to the caps lock, num lock, and scroll lock keys.
typedef struct {
GeodeToken TE_token; /* A GeodeToken structure for this file */
TokenDBItem TE_monikerList; /* A list of monikers for this token */
TokenFlags TE_flags; /* Flags indicating relocation status */
ReleaseNumber TE_release; /* Release number of the token DB */
ProtocolNumber TE_protocol; /* Protocol number of the toke DB */
} TokenEntry;
Used for the token entry in the map item of the token database, this structure identifies the structures and other information of each token. The
TE_monikerList
field points to a chunk containing the item numbers of the chunks of the token.
typedef WordFlags TokenFlags; #define TF_NEED_RELOCATION 0x8000
Used by token management routines, this flags record indicates whether the token has fields which must be relocated when the token is loaded or unloaded.
typedef struct {
TokenDBItem TMI_moniker;
word TMI_fileFlag; /* 0 if token is in shared token DB file;
* Non-0 if it's in local file */
} TokenMonikerInfo;
typedef WordFlags TokenRangeFlags; #define TRF_ONLY_GSTRING 0x8000 #define TRF_ONLY_PASSED_MANUFID 0x4000 #define TRF_UNUSED 0x3fff
typedef enum {
TE_NO_ERROR, /* No error */
TE_ERROR, /* General error */
TE_INVALID_FORMAT, /* Format is invalid */
TE_IMPORT_NOT_SUPPORTED, /* Format is not supported for export */
TE_EXPORT_NOT_SUPPORTED, /* Format is not supported for export */
TE_IMPORT_ERROR, /* General error during import */
TE_EXPORT_ERROR, /* General error during export */
TE_FILE_ERROR, /* Generic file error */
TE_DISK_FULL, /* The disk is full */
TE_FILE_OPEN, /* Error in opening a file */
TE_FILE_READ, /* Error in reading from a file */
TE_FILE_WRITE, /* Error in writing to a file */
TE_FILE_TOO_LARGE, /* File is too large to process */
TE_OUT_OF_MEMORY, /* Insufficient memory for import/export */
TE_METAFILE_CREATION_ERROR, /* Error in creating the metafile */
TE_EXPORT_FILE_EMPTY, /* File to be exported is empty */
TE_CUSTOM /* Custom error message */
} TransError;
This enumerated type contains error values the impex library may wish to generate when translating.
typedef struct {
TransError transError;
/* NOTE: customMsgHandle will be valid only if transError is TE_CUSTOM. */
word customMsgHandle;
} TransErrorInfo;
typedef dword TransferBlockID; #define BlockIDFromFileAndBlock(f,b) (((dword)(f) << 16) | (b)) #define FileFromTransferBlockID(id) ((VMFileHandle) ((id) >> 16)) #define BlockFromTransferBlockID(id) ((VMBlockHandle) (id))
typedef struct {
WWFixed TM_e11;
WWFixed TM_e12;
WWFixed TM_e21;
WWFixed TM_e22;
DWFixed TM_e31;
DWFixed TM_e32;
} TransMatrix;
The six variable elements of a coordinate transformation matrix.
typedef enum {
TO_NULL,
TO_SELF,
TO_OBJ_BLOCK_OUTPUT,
TO_PROCESS
} TravelOption;
/* VisClass defines one other travel option: */
typedef enum {
TO_VIS_PARENT=_FIRST_VisClass
} VisTravelOption;
/* GenClass defines some more travel options: */
typedef enum /* word */ {
TO_GEN_PARENT=_FIRST_GenClass,
TO_FOCUS,
TO_TARGET,
TO_MODEL,
TO_APP_FOCUS,
TO_APP_TARGET,
TO_APP_MODEL,
TO_SYS_FOCUS,
TO_SYS_TARGET,
TO_SYS_MODEL
} GenTravelOption;
This enumerated type can be used to specify the recipient of a message. Note that the values set up in the
TravelOption
,
VisTravelOption
, and
GenTravelOption
have been set up as descrete values.
word TypeFromFormatID(type);
ClipboardItemFormatID type;
This macro extracts the format ID from the given clipboard format ID and manufacturer value.
typedef ByteFlags UIFunctionsActive; #define UIFA_SELECT 0x80 #define UIFA_MOVE_COPY 0x40 #define UIFA_FEATURES 0x20 #define UIFA_CONSTRAIN 0x10 #define UIFA_PREF_A 0x08 #define UIFA_PREF_B 0x04 #define UIFA_PREF_C 0x02 #define UIFA_IN 0x01 #define UIFA_ADJUST 0x08 #define UIFA_EXTEND 0x04 #define UIFA_MOVE 0x08 #define UIFA_COPY 0x04 #define UIFA_POPUP 0x08 #define UIFA_PAN 0x04
These flags describe the context of the user's input, providing some modal information.
typedef enum /* word */ {
UADT_FLAGS,
UADT_PTR,
UADT_VM_CHAIN,
} UndoActionDataType;
typedef union {
/* To find out the type of data stored in this
* union, check the value of the UndoActionStruct's
* UAS_dataType field. */
UndoActionDataFlags UADU_flags;
UndoActionDataPtr UADU_ptr;
UndoActionDataVMChain UADU_vmChain;
} UndoActionDataUnion;
#define NULL_UNDO_CONTEXT 0
typedef struct {
/* This structure is filled in by the code for
* MSG_META_UNDO. VMChains passed to
* MSG_GEN_PROCESS_UNDO_ADD_ACTION should lie in the undo
* file (which can be obtained by sending
* MSG_GEN_PROCESS_UNDO_GET_FILE). */
VMChain UADVMC_vmChain;
VMFileHandle UADVMC_file;
} UndoActionDataVMChain;
typedef struct {
UndoActionDataType UAS_dataType;
UndoActionDataUnion UAS_data;
dword UAS_appType;
} UndoActionStruct;
typedef WordFlags UtilHexToAsciiFlags; #define UHTAF_INCLUDE_LEADING_ZEROS 0x0002 #define UHTAF_NULL_TERMINATE 0x0001
typedef struct {
word VDCH_dataType;
void (*VDCH_handler) (MemHandle mh, ChunkHandle ch,
VarDataEntry *extraData,
word dataType, void *handlerData);
} VarDataCHandler;
See
ObjVarScanData()
.
typedef struct {
word VDE_dataType; /* vardata data type */
word VDE_entrySize; /* size of extra data; this field only exists
* if the type has extra data. */
} VarDataEntry; #define VDE_extraData sizeof(VarDataEntry);
Structure of a variable data entry. If the data type has no extra data, there will be no
VDE_entrySize
field. The extra data begins at offset
VDE_extraData
, defined above.
typedef WordFlags VarDataFlags; #define VDF_TYPE 0xfffc /* 14-bit data type */ #define VDF_EXTRA_DATA 0x0002 /* set if has extra data */ #define VDF_SAVE_TO_STATE 0x0001 /* set if type saved to state */
This is a word record containing three fields. This word is stored in the vardata structure's
VDE_dataType
field (see
VarDataEntry
, above).
typedef struct {
VarDataFlags VOR_type; /* type and tag */
word VOR_offset;
} VarObjRelocation;
typedef ByteEnum VChar; #define VC_NULL 0x0 /* NULL */ #define VC_CTRL_A 0x1 /* <ctrl>-A */ #define VC_CTRL_B 0x2 /* <ctrl>-B */ #define VC_CTRL_C 0x3 /* <ctrl>-C */ #define VC_CTRL_D 0x4 /* <ctrl>-D */ #define VC_CTRL_E 0x5 /* <ctrl>-E */ #define VC_CTRL_F 0x6 /* <ctrl>-F */ #define VC_CTRL_G 0x7 /* <ctrl>-G */ #define VC_CTRL_H 0x8 /* <ctrl>-H */ #define VC_CTRL_I 0x9 /* <ctrl>-I */ #define VC_CTRL_J 0xa /* <ctrl>-J */ #define VC_CTRL_K 0xb /* <ctrl>-K */ #define VC_CTRL_L 0xc /* <ctrl>-L */ #define VC_CTRL_M 0xd /* <ctrl>-M */ #define VC_CTRL_N 0xe /* <ctrl>-N */ #define VC_CTRL_O 0xf /* <ctrl>-O */ #define VC_CTRL_P 0x10 /* <ctrl>-P */ #define VC_CTRL_Q 0x11 /* <ctrl>-Q */ #define VC_CTRL_R 0x12 /* <ctrl>-R */ #define VC_CTRL_S 0x13 /* <ctrl>-S */ #define VC_CTRL_T 0x14 /* <ctrl>-T */ #define VC_CTRL_U 0x15 /* <ctrl>-U */ #define VC_CTRL_V 0x16 /* <ctrl>-V */ #define VC_CTRL_W 0x17 /* <ctrl>-W */ #define VC_CTRL_X 0x18 /* <ctrl>-X */ #define VC_CTRL_Y 0x19 /* <ctrl>-Y */ #define VC_CTRL_Z 0x1a /* <ctrl>-Z */ #define VC_ESCAPE 0x1b /* ESC */ #define VC_BLANK 0x20 /* space */ /* * Numeric keypad keys */
#define VC_NUMPAD_ENTER 0xd /* only on PS/2 keyboards */ #define VC_NUMPAD_DIV `/' /* only on PS/2 keyboards */ #define VC_NUMPAD_MULT `*' #define VC_NUMPAD_PLUS `+' #define VC_NUMPAD_MINUS `-' #define VC_NUMPAD_PERIOD `.' #define VC_NUMPAD_0 `0' #define VC_NUMPAD_1 `1' #define VC_NUMPAD_2 `2' #define VC_NUMPAD_3 `3' #define VC_NUMPAD_4 `4' #define VC_NUMPAD_5 `5' #define VC_NUMPAD_6 `6' #define VC_NUMPAD_7 `7' #define VC_NUMPAD_8 `8' #define VC_NUMPAD_9 `9' /* * Extended keyboard codes -- non-ASCII */
#define VC_F1 0x80 /* Function keys */ #define VC_F2 0x81 #define VC_F3 0x82 #define VC_F4 0x83 #define VC_F5 0x84 #define VC_F6 0x85 #define VC_F7 0x86 #define VC_F8 0x87 #define VC_F9 0x88 #define VC_F10 0x89 #define VC_F11 0x8a /* only on PS/2 keyboards */ #define VC_F12 0x8b /* only on PS/2 keyboards */ #define VC_F13 0x8c /* non-standard key */ #define VC_F14 0x8d /* non-standard key */ #define VC_F15 0x8e /* non-standard key */ #define VC_F16 0x8f /* non-standard key */ #define VC_UP 0x90 /* Cursor keys */ #define VC_DOWN 0x91 #define VC_RIGHT 0x92 #define VC_LEFT 0x93 #define VC_HOME 0x94 /* Scroll commands */ #define VC_END 0x95 #define VC_PREVIOUS 0x96 #define VC_NEXT 0x97 #define VC_INS 0x98 /* INS */ #define VC_DEL 0x9a /* DEL */ #define VC_PRINTSCREEN 0x9b /* from <shift>-NUMPAD_MULT */ #define VC_PAUSE 0x9c /* from <ctrl>-NUMLOCK */ #define VC_BREAK 0x9e /* from <ctrl>- or <alt>-combo */ #define VC_SYSTEMRESET 0x9f /* <ctrl>-<alt>-<del> combo */ /* * Joystick control keys (0xa0 - 0xa9) */ #define VC_JOYSTICK_0 0xa0 ; joystick 0 degrees #define VC_JOYSTICK_45 0xa1 ; joystick 45 degrees #define VC_JOYSTICK_90 0xa2 ; joystick 90 degrees #define VC_JOYSTICK_135 0xa3 ; joystick 135 degrees #define VC_JOYSTICK_180 0xa4 ; joystick 180 degrees #define VC_JOYSTICK_225 0xa5 ; joystick 225 degrees #define VC_JOYSTICK_270 0xa6 ; joystick 270 degrees #define VC_JOYSTICK_315 0xa7 ; joystick 315 degrees #define VC_FIRE_BUTTON_1 0xa8 ; fire button #1 #define VC_FIRE_BUTTON_2 0xa9 ; fire button #2 /* * Shift Keys (0xe0 - 0xe7) */
#define VC_LALT 0xe0 #define VC_RALT 0xe1 #define VC_LCTRL 0xe2 #define VC_RCTRL 0xe3 #define VC_LSHIFT 0xe4 #define VC_RSHIFT 0xe5 #define VC_SYSREQ 0xe6 /* Not on base PC keyboard */ #define VC_ALT_GR 0xe7 /* * Toggle state keys (0xe8 - 0xef) */
#define VC_CAPSLOCK 0xe8 #define VC_NUMLOCK 0xe9 #define VC_SCROLLLOCK 0xea /* * Extended state keys (0xf0 - 0xf7) */
#define VC_INVALID_KEY 0xff #define VC_BACKSPACE VC_CTRL_H #define VC_TAB VC_CTRL_I #define VC_LF VC_CTRL_J #define VC_ENTER VC_CTRL_M
typedef ByteEnum VisRulerType; #define VRT_INCHES 0 #define VRT_CENTIMETERS 1 #define VRT_POINTS 2 #define VRT_PICAS 3 #define VRT_CUSTOM CUSTOM_RULER_DEFINITION #define VRT_NONE NO_RULERS #define VRT_DEFAULT SYSTEM_DEFAULT
typedef enum {
VTVT_PAGE_NUMBER,
VTVT_PAGE_NUMBER_IN_SECTION,
VTVT_NUMBER_OF_PAGES,
VTVT_NUMBER_OF_PAGES_IN_SECTION,
VTVT_SECTION_NUMBER,
VTVT_NUMBER_OF_SECTIONS,
VTVT_CREATION_DATE_TIME,
VTVT_MODIFICATION_DATE_TIME,
VTVT_CURRENT_DATE_TIME,
VTVT_STORED_DATE_TIME,
} VisTextVariableType;
The
VisClass
defines an enumerated value to be used in the place of a standard
TravelOption
. See the entry for
TravelOption
to see all possible values.
typedef ByteEnum VisUpdateMode; #define VUM_MANUAL 0 #define VUM_NOW 1 #define VUM_DELAYED_VIA_UI_QUEUE 2 #define VUM_DELAYED_VIA_APP_QUEUE 3
typedef ByteFlags VMAccessFlags; #define VMAF_FORCE_READ_ONLY 0x80 #define VMAF_FORCE_READ_WRITE 0x40 #define VMAF_ALLOW_SHARED_MEMORY 0x20 #define VMAF_FORCE_DENY_WRITE 0x10 #define VMAF_DISALLOW_SHARED_MULTIPLE 0x08 #define VMAF_USE_BLOCK_LEVEL_SYNCHRONIZATION 0x04
The
VMAccessFlags
specify what kind of access to the file the caller wants. The following flags are available:
typedef ByteFlags VMAttributes; #define VMA_SYNC_UPDATE 0x80 #define VMA_BACKUP 0x40 #define VMA_OBJECT_RELOC 0x20 #define VMA_PRESERVE_HANDLES 0x10 #define VMA_NOTIFY_DIRTY 0x08 #define VMA_NO_DISCARD_IF_IN_USE 0x04 #define VMA_COMPACT_OBJ_BLOCK 0x02 #define VMA_SINGLE_THREAD_ACCESS 0x01 /* * Attributes that must be set for object blocks: */
#define VMA_OBJECT_ATTRS (VMA_OBJECT_RELOC | VMA_PRESERVE_HANDLES | VMA_NO_DISCARD_IF_IN_USE | VMA_SINGLE_THREAD_ACCESS)
typedef struct {
VMChainLink VMCT_meta;
word VMCT_offset;
word VMCT_count;
} VMChainTree;
typedef ByteEnum VMOpenType; #define VMO_OPEN 0 #define VMO_TEMP_FILE 1 #define VMO_CREATE 2 #define VMO_CREATE_ONLY 3 #define VMO_CREATE_TRUNCATE 4 #define VMO_NATIVE_WITH_EXT_ATTRS 0x80
The following types are available:
VMOpen()
will return an error condition.typedef enum {
VMO_READ,
VMO_INTERNAL,
VMO_SAVE,
VMO_SAVE_AS,
VMO_REVERT,
VMO_UPDATE,
VMO_WRITE
} VMOperation;
typedef enum {
VMRT_UNRELOCATE_BEFORE_WRITE,
VMRT_RELOCATE_AFTER_READ,
VMRT_RELOCATE_AFTER_WRITE,
VMRT_RELOCATE_FROM_RESOURCE,
VMRT_UNRELOCATE_FROM_RESOURCE,
} VMRelocType;
typedef enum {
VMSERV_NO_CHANGES,
VMSERV_CHANGES,
VMSERV_TIMEOUT
} VMStartExclusiveReturnValue;
VMGrabExclusive()
returns a member of this enumerated type. It may have one of the following values:
VMGrabExclusive()
failed and timed out without getting access to the file.typedef enum /* word */ {
WIT_PRIVATE_DATA =0,
WIT_COLOR =2,
WIT_INPUT_OBJ =4,
WIT_EXPOSURE_OBJ =6,
WIT_STRATEGY =8,
WIT_FLAGS =10,
WIT_LAYER_ID =12,
WIT_PARENT_WIN =14,
WIT_FIRST_CHILD_WIN =16,
WIT_LAST_CHILD_WIN =18,
WIT_PREV_SIBLING_WIN =20,
WIT_NEXT_SIBLING_WIN =22,
WIT_PRIORITY=24,
} WinInfoType;
typedef WordFlags WinPassFlags; #define WPF_CREATE_GSTATE 0x8000 #define WPF_ROOT 0x4000 #define WPF_SAVE_UNDER 0x2000 #define WPF_INIT_EXCLUDED 0x1000 #define WPF_PLACE_BEHIND 0x0800 #define WPF_PLACE_LAYER_BEHIND 0x0400 #define WPF_LAYER 0x0200 #define WPF_ABS 0x0100 #define WPF_PRIORITY 0x00ff
typedef ByteEnum WinPriority; #define WIN_PRIO_POPUP 4 #define WIN_PRIO_MODAL 6 #define WIN_PRIO_ON_TOP 8 #define WIN_PRIO_COMMAND 10 #define WIN_PRIO_STD 12 #define WIN_PRIO_ON_BOTTOM 14
typedef struct {
word XYS_width;
word XYS_height;
} XYSize;
A graphics size, in two dimensions.
typedef dword XYValueAsDWord;
A graphics size, in two dimensions, expressed as a DWord.