home *** CD-ROM | disk | FTP | other *** search
- /*
- * LWSDK Header File
- * Copyright 1995 NewTek, Inc.
- */
- #ifndef LW_RAN_H
- #define LW_RAN_H
-
- #include <lwbase.h>
-
- typedef unsigned char BufferValue;
- typedef void * LWItemID;
- #define LWITEM_NULL ((LWItemID) 0)
- typedef int LWItemType;
- #define LWI_OBJECT 0
- #define LWI_LIGHT 1
- #define LWI_CAMERA 2
- #define LWI_BONE 3
- typedef int LWItemParam;
- #define LWIP_POSITION 1
- #define LWIP_RIGHT 2
- #define LWIP_UP 3
- #define LWIP_FORWARD 4
- #define LWIP_ROTATION 5
- #define LWIP_SCALING 6
- #define LWIP_PIVOT 7
- #define LWIP_W_POSITION 8
- typedef int LWFrame;
- typedef double LWTime;
- typedef const char * LWError;
- typedef void * LWInstance;
- #define LWIO_OBJECT 0
- #define LWIO_SCENE 1
- typedef struct st_LWLoadState {
- int ioMode;
- void *readData;
- int (*read) (void *readData, char *buf,
- int len);
- } LWLoadState;
-
- typedef struct st_LWSaveState {
- int ioMode;
- void *writeData;
- void (*write) (void *writeData, char *buf,
- int len);
- } LWSaveState;
- typedef struct LWInstHandler {
- LWInstance (*create) (LWError *);
- void (*destroy) (LWInstance);
- LWError (*copy) (LWInstance from, LWInstance to);
- LWError (*load) (LWInstance, const LWLoadState *);
- LWError (*save) (LWInstance, const LWSaveState *);
- } LWInstHandler;
- #define LWVECF_0 (1<<0)
- #define LWVECF_1 (1<<1)
- #define LWVECF_2 (1<<2)
- #define LWOSHAD_SELF (1<<0)
- #define LWOSHAD_CAST (1<<1)
- #define LWOSHAD_RECEIVE (1<<2)
- #define LWBONEF_ACTIVE (1<<0)
- #define LWBONEF_LIMITEDRANGE (1<<1)
- #define LWLIGHT_DISTANT 0
- #define LWLIGHT_POINT 1
- #define LWLIGHT_SPOT 2
- #define LWLSHAD_OFF 0
- #define LWLSHAD_RAYTRACE 1
- #define LWLSHAD_MAP 2
- #define LWRTYPE_WIRE 0
- #define LWRTYPE_QUICK 1
- #define LWRTYPE_REALISTIC 2
- typedef void * LWImageID;
- typedef void * MemChunk;
- #define LWBUF_SPECIAL 0
-
- #define LWBUF_LUMINOUS 1
- #define LWBUF_DIFFUSE 2
- #define LWBUF_SPECULAR 3
- #define LWBUF_MIRROR 4
- #define LWBUF_TRANS 5
- #define LWBUF_RAW_RED 6
- #define LWBUF_RAW_GREEN 7
- #define LWBUF_RAW_BLUE 8
-
- #define LWBUF_SHADING 9
- #define LWBUF_SHADOW 10
- #define LWBUF_GEOMETRY 11
- #define LWBUF_DEPTH 12
-
- #define LWBUF_RED 32
- #define LWBUF_GREEN 33
- #define LWBUF_BLUE 34
- #define LWBUF_ALPHA 35
- typedef struct st_FilterAccess {
- int width, height;
- LWFrame frame;
- LWTime start, end;
- BufferValue * (*bufLine) (int type, int y);
- float * (*fltLine) (int type, int y);
- void (*setRGB) (int x, int y, BufferValue[3]);
- void (*setAlpha) (int x, int y, BufferValue);
- #ifndef LW_PRERELEASE
- Monitor *monitor;
- #endif
- } FilterAccess;
- typedef struct st_ImageFilterHandler {
- LWInstHandler inst;
- void (*process) (LWInstance, const FilterAccess *);
- unsigned int (*flags) (LWInstance);
- } ImageFilterHandler;
- typedef struct st_ShaderAccess {
- int sx, sy;
- double oPos[3], wPos[3];
- double gNorm[3];
- double spotSize;
- double raySource[3];
- double rayLength;
- double cosine;
- double oXfrm[9], wXfrm[9];
- LWItemID objID;
- #ifndef LW_PRERELEASE
- int polNum;
- #endif
- double wNorm[3];
- double color[3];
- double luminous;
- double diffuse;
- double specular;
- double mirror;
- double transparency;
- double eta;
- double roughness;
- int (*illuminate) (LWItemID light,
- const double position[3],
- double direction[3],
- double color[3]);
- double (*rayTrace) (const double position[3],
- const double direction[3],
- double color[3]);
- } ShaderAccess;
- #define LWSHF_NORMAL (1<<0)
- #define LWSHF_COLOR (1<<1)
- #define LWSHF_LUMINOUS (1<<2)
- #define LWSHF_DIFFUSE (1<<3)
- #define LWSHF_SPECULAR (1<<4)
- #define LWSHF_MIRROR (1<<5)
- #define LWSHF_TRANSP (1<<6)
- #define LWSHF_ETA (1<<7)
- #define LWSHF_ROUGH (1<<8)
- #define LWSHF_RAYTRACE (1<<10)
- typedef struct st_ShaderHandler {
- LWInstHandler inst;
- LWError (*init) (LWInstance);
- void (*cleanup) (LWInstance);
- LWError (*newTime) (LWInstance, LWFrame, LWTime);
- void (*evaluate) (LWInstance, ShaderAccess *);
- unsigned int (*flags) (LWInstance);
- } ShaderHandler;
- typedef struct st_DisplacementAccess {
- double oPos[3];
- double source[3];
- } DisplacementAccess;
- typedef struct st_DisplacementHandler {
- LWInstHandler inst;
- LWError (*newTime) (LWInstance, LWItemID,
- LWFrame, LWTime);
- void (*evaluate) (LWInstance,
- DisplacementAccess *);
- unsigned int (*flags) (LWInstance);
- } DisplacementHandler;
-
- #define LWDMF_WORLD (1<<0)
- typedef struct st_ItemMotionAccess {
- LWItemID item;
- LWFrame frame;
- LWTime time;
- void (*getParam) (LWItemParam, LWTime,
- double vector[3]);
- void (*setParam) (LWItemParam,
- const double vector[3]);
- } ItemMotionAccess;
- typedef struct st_ItemMotionHandler {
- LWInstHandler inst;
- void (*evaluate) (LWInstance,
- const ItemMotionAccess *);
- } ItemMotionHandler;
- #define OBJREP_NONE 0
- #define OBJREP_PREVIEW 1
- #define OBJREP_RENDER 2
- typedef struct st_ObjReplacementAccess {
- LWItemID objectID;
- LWFrame curFrame, newFrame;
- LWTime curTime, newTime;
- int curType, newType;
- const char *curFilename;
- const char *newFilename;
- } ObjReplacementAccess;
- typedef struct st_ObjReplacementHandler {
- LWInstHandler inst;
- void (*evaluate) (LWInstance,
- ObjReplacementAccess *);
- } ObjReplacementHandler;
- typedef struct st_FrameBufferHandler {
- LWInstHandler inst;
- LWError (*open) (LWInstance, int w, int h);
- void (*close) (LWInstance);
- LWError (*begin) (LWInstance);
- LWError (*write) (LWInstance,
- const BufferValue *R,
- const BufferValue *G,
- const BufferValue *B,
- const BufferValue *alpha);
- void (*pause) (LWInstance);
- } FrameBufferHandler;
- typedef struct st_AnimSaverHandler {
- LWInstHandler inst;
- LWError (*open) (LWInstance, int w, int h,
- const char *filename);
- void (*close) (LWInstance);
- LWError (*begin) (LWInstance);
- LWError (*write) (LWInstance,
- const BufferValue *R,
- const BufferValue *G,
- const BufferValue *B,
- const BufferValue *alpha);
- } AnimSaverHandler;
- typedef struct st_SceneConverter {
- const char *filename;
- LWError readFailure;
- const char *tmpScene;
- void (*deleteTmp) (const char *tmpScene);
- } SceneConverter;
- typedef struct st_LWItemInfo {
- LWItemID (*first) (LWItemType, LWItemID);
- LWItemID (*next) (LWItemID);
- LWItemID (*firstChild) (LWItemID parent);
- LWItemID (*nextChild) (LWItemID parent, LWItemID prevChild);
- LWItemID (*parent) (LWItemID);
- LWItemID (*target) (LWItemID);
- LWItemID (*goal) (LWItemID);
- LWItemType (*type) (LWItemID);
- const char * (*name) (LWItemID);
- void (*param) (LWItemID, LWItemParam, LWTime,
- double vector[3]);
- unsigned int (*limits) (LWItemID, LWItemParam,
- double min[3], double max[3]);
- } LWItemInfo;
- typedef struct st_LWObjectInfo {
- const char * (*filename) (LWItemID);
- int (*numPoints) (LWItemID);
- int (*numPolygons) (LWItemID);
- unsigned int (*shadowOpts) (LWItemID);
- double (*dissolve) (LWItemID, LWTime);
- } LWObjectInfo;
- typedef struct st_LWBoneInfo {
- unsigned int (*flags) (LWItemID);
- void (*restParam) (LWItemID, LWItemParam,
- double vector[3]);
- double (*restLength) (LWItemID);
- void (*limits) (LWItemID, double *inner,
- double *outer);
- } LWBoneInfo;
- typedef struct st_LWLightInfo {
- void (*ambient) (LWTime, double color[3]);
- int (*type) (LWItemID);
- void (*color) (LWItemID, LWTime, double color[3]);
- int (*shadowType) (LWItemID);
- void (*coneAngles) (LWItemID, double *radius,
- double *edge);
- } LWLightInfo;
- typedef struct st_LWCameraInfo {
- double (*zoomFactor) (LWItemID, LWTime);
- double (*focalLength) (LWItemID, LWTime);
- double (*focalDistance) (LWItemID, LWTime);
- double (*fStop) (LWItemID, LWTime);
- double (*blurLength) (LWItemID, LWTime);
- void (*fovAngles) (LWItemID, LWTime,
- double *horizontal,
- double *vertical);
- } LWCameraInfo;
- #define LWROPT_SHADOWTRACE (1<<0)
- #define LWROPT_REFLECTTRACE (1<<1)
- #define LWROPT_REFRACTTRACE (1<<2)
- #define LWROPT_FIELDS (1<<3)
- #define LWROPT_EVENFIELDS (1<<4)
- #define LWROPT_MOTIONBLUR (1<<5)
- #define LWROPT_DEPTHOFFIELD (1<<6)
- #define LWROPT_LIMITEDREGION (1<<7)
- typedef struct st_LWSceneInfo {
- const char *name;
- const char *filename;
- int numPoints;
- int numPolygons;
- int renderType;
- int renderOpts;
- LWFrame frameStart;
- LWFrame frameEnd;
- LWFrame frameStep;
- double framesPerSecond;
- int frameWidth;
- int frameHeight;
- double pixelAspect;
- int minSamplesPerPixel;
- int maxSamplesPerPixel;
- int limitedRegion[4]; /* x0, y0, x1, y1 */
- } LWSceneInfo;
- typedef struct st_LWImageList {
- LWImageID (*first) (void);
- LWImageID (*next) (LWImageID);
- LWImageID (*load) (const char *);
- const char * (*name) (LWImageID);
- #ifndef LW_PRERELEASE
- const char * (*filename) (LWImageID, LWFrame);
- #else
- const char * (*filename) (LWImageID);
- #endif
- int (*isColor) (LWImageID);
- void (*needAA) (LWImageID);
- void (*size) (LWImageID, int *w, int *h);
- BufferValue (*luma) (LWImageID, int x, int y);
- void (*RGB) (LWImageID, int x, int y,
- BufferValue[3]);
- double (*lumaSpot) (LWImageID, double x, double y,
- double spotSize, int blend);
- void (*RGBSpot) (LWImageID, double x, double y,
- double spotSize, int blend,
- double[3]);
- #ifndef LW_PRERELEASE
- void (*clear) (LWImageID);
- #endif
- } LWImageList;
- #ifndef LW_PRERELEASE
- typedef struct st_LWCompInfo {
- LWImageID bg;
- LWImageID fg;
- LWImageID fgAlpha;
- } LWCompInfo;
- #endif
- typedef struct st_GlobalPool {
- MemChunk (*first) (void);
- MemChunk (*next) (MemChunk);
- const char * (*ID) (MemChunk);
- int (*size) (MemChunk);
- MemChunk (*find) (const char *ID);
- MemChunk (*create) (const char *ID, int size);
- } GlobalPool;
-
- #endif
-