Serious-Engine/Sources/LWSkaExporter/SDK/lwdyna.h
2016-03-11 15:57:17 +02:00

189 lines
4.3 KiB
C

/*
* 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 <lwmonitor.h>
#include <lwxpanel.h>
/*
* 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