/**************************************************************************** * PROJECT: Balloon 3D Graphics Subsystem for Squeak * FILE: b3d.h * CONTENT: Main include file * * AUTHOR: Andreas Raab (ar) * ADDRESS: Walt Disney Imagineering, Glendale, CA * EMAIL: andreasr@wdi.disney.com * RCSID: $Id: b3d.h 2 2001-10-24 23:11:49Z rowledge $ * * NOTES: * * *****************************************************************************/ #ifndef __B3D_H #define __B3D_H #ifdef DEBUG #define b3dDebug 1 #else #define b3dDebug 0 #endif #define b3dDoStats 1 /* primary include file */ #include "b3dTypes.h" #include "b3dAlloc.h" typedef int (*b3dDrawBufferFunction) (int leftX, int rightX, int yValue); typedef struct B3DRasterizerState { /* The three sources for allocating temporary rasterizer objects */ B3DFaceAllocList *faceAlloc; B3DEdgeAllocList *edgeAlloc; B3DAttrAllocList *attrAlloc; /* The active edge table */ B3DActiveEdgeTable *aet; /* The list for newly added edges */ B3DPrimitiveEdgeList *addedEdges; /* The fill list */ B3DFillList *fillList; /* The input objects for the rasterizer */ int nObjects; B3DPrimitiveObject **objects; /* The input textures for the rasterizer */ int nTextures; B3DTexture *textures; /* Length and location of span buffer to use */ int spanSize; unsigned int *spanBuffer; /* Function to call on drawing the output buffer */ b3dDrawBufferFunction spanDrawer; } B3DRasterizerState; extern B3DRasterizerState *currentState; /* from b3dInit.c */ int b3dInitializeEdgeAllocator(void* base, int length); int b3dInitializeFaceAllocator(void* base, int length); int b3dInitializeAttrAllocator(void* base, int length); int b3dInitializeAET(void* base, int length); int b3dInitializeEdgeList(void* base, int length); int b3dInitializeFillList(void* base, int length); int b3dSetupObjects(B3DRasterizerState *state); int b3dAddPolygonObject(void *objBase, int objLength, int objFlags, int textureIndex, B3DPrimitiveVertex *vtxPointer, int nVertices, B3DPrimitiveViewport *vp); int b3dAddIndexedQuadObject(void *objBase, int objLength, int objFlags, int textureIndex, B3DPrimitiveVertex *vtxPointer, int nVertices, B3DInputQuad *quadPtr, int nQuads, B3DPrimitiveViewport *vp); int b3dAddIndexedTriangleObject(void *objBase, int objLength, int objFlags, int textureIndex, B3DPrimitiveVertex *vtxPointer, int nVertices, B3DInputFace *facePtr, int nFaces, B3DPrimitiveViewport *vp); int b3dLoadTexture(B3DTexture *texture, int width, int height, int depth, unsigned int *bits, int cmSize, unsigned int *colormap); /* from b3dRemap.c */ int b3dValidateAndRemapState(B3DRasterizerState *state); /* from b3dDraw.c */ typedef void (*b3dPixelDrawer) (int leftX, int rightX, int yValue, B3DPrimitiveFace *face); extern b3dPixelDrawer B3D_FILL_FUNCTIONS[]; /* from b3dMain.c */ void b3dAbort(char *msg); int b3dMainLoop(B3DRasterizerState *state, int stopReason); #endif