/* * LWSDK Header File * Copyright 1999, NewTek, Inc. * * LWDYNA.H -- LightWave DynaTypes * * This header defines the types and macros for simple DynaTypes. */ #ifndef LWSDK_DYNA_H #define LWSDK_DYNA_H #include #include /* * DynaType codes. */ typedef int DynaType; #define DY_NULL 0 #define DY_STRING 1 #define DY_INTEGER 2 #define DY_FLOAT 3 #define DY_DISTANCE 4 #define DY_VINT 5 #define DY_VFLOAT 6 #define DY_VDIST 7 #define DY_BOOLEAN 8 #define DY_CHOICE 9 #define DY_SURFACE 10 #define DY_FONT 11 #define DY_TEXT 12 #define DY_LAYERS 13 #define DY_CUSTOM 14 #define DY__LAST DY_CUSTOM /* * DynaValue union. */ typedef struct st_DyValString { DynaType type; char *buf; int bufLen; } DyValString; typedef struct st_DyValInt { DynaType type; int value; int defVal; } DyValInt; typedef struct st_DyValFloat { DynaType type; double value; double defVal; } DyValFloat; typedef struct st_DyValIVector { DynaType type; int val[3]; int defVal; } DyValIVector; typedef struct st_DyValFVector { DynaType type; double val[3]; double defVal; } DyValFVector; typedef struct st_DyValCustom { DynaType type; int val[4]; } DyValCustom; typedef union un_DynaValue { DynaType type; DyValString str; DyValInt intv; DyValFloat flt; DyValIVector ivec; DyValFVector fvec; DyValCustom cust; } DynaValue; /* * Conversion hints. */ typedef struct st_DyChoiceHint { const char *item; int value; } DyChoiceHint; typedef struct st_DyBitfieldHint { char code; int bitval; } DyBitfieldHint; typedef struct st_DynaStringHint { DyChoiceHint *chc; DyBitfieldHint *bits; } DynaStringHint; /* * Dynamic Requester types. */ typedef struct st_DynaRequest *DynaRequestID; typedef struct st_DyReqStringDesc { DynaType type; int width; } DyReqStringDesc; typedef struct st_DyReqChoiceDesc { DynaType type; const char **items; int vertical; } DyReqChoiceDesc; typedef struct st_DyReqTextDesc { DynaType type; const char **text; } DyReqTextDesc; typedef union un_DyReqControlDesc { DynaType type; DyReqStringDesc string; DyReqChoiceDesc choice; DyReqTextDesc text; } DyReqControlDesc; /* * DynaType and DynaValue error codes. */ #define DYERR_NONE 0 #define DYERR_MEMORY (-1) #define DYERR_BADTYPE (-2) #define DYERR_BADSEQ (-3) #define DYERR_BADCTRLID (-4) #define DYERR_TOOMANYCTRL (-5) #define DYERR_INTERNAL (-6) /* * DynaValue conversion global service. */ #define LWDYNACONVERTFUNC_GLOBAL "LWM: Dynamic Conversion" typedef int DynaConvertFunc (const DynaValue *, DynaValue *, const DynaStringHint *); /* * Dynamic requester service. */ #define LWDYNAREQFUNCS_GLOBAL "LWM: Dynamic Request 2" typedef struct st_DynaReqFuncs { DynaRequestID (*create) (const char *); int (*addCtrl) (DynaRequestID, const char *, DyReqControlDesc *); DynaType (*ctrlType) (DynaRequestID, int); int (*valueSet) (DynaRequestID, int, DynaValue *); int (*valueGet) (DynaRequestID, int, DynaValue *); int (*post) (DynaRequestID); void (*destroy) (DynaRequestID); LWXPanelID (*xpanel) (DynaRequestID); } DynaReqFuncs; /* * Global monitor. */ #define LWDYNAMONITORFUNCS_GLOBAL "LWM: Dynamic Monitor" typedef struct st_DynaMonitorFuncs { LWMonitor * (*create) (const char *, const char *); void (*destroy) (LWMonitor *); } DynaMonitorFuncs; #endif