--- ray/src/hd/holo.h 1998/01/07 21:27:29 3.14 +++ ray/src/hd/holo.h 1998/11/09 17:10:53 3.17 @@ -1,4 +1,4 @@ -/* Copyright (c) 1997 Silicon Graphics, Inc. */ +/* Copyright (c) 1998 Silicon Graphics, Inc. */ /* SCCSid "$SunId$ SGI" */ @@ -14,21 +14,19 @@ #ifndef HDMAX #define HDMAX 128 /* maximum active holodeck sections */ #endif -#ifndef int2 -#define int2 short + +#ifndef MAXDIRSE +#define MAXDIRSE 32 /* maximum seeks per directory write */ #endif -#ifndef int4 -#define int4 int -#endif #define DCINF (unsigned)((1L<<16)-1) /* special value for infinity */ #define DCLIN (unsigned)(1L<<11) /* linear depth limit */ typedef struct { BYTE r[2][2]; /* ray direction index */ - COLR v; /* value */ - unsigned int2 d; /* depth code */ -} RAYVAL; /* ray value (from second wall) */ + COLR v; /* color value */ + unsigned int2 d; /* depth code (from entry wall) */ +} RAYVAL; /* ray value */ /* * Walls are ordered: X0 X1 X2 WN @@ -71,7 +69,10 @@ typedef struct holo { FVECT xv[3]; /* side vectors (second) */ int2 grid[3]; /* grid resolution (third) */ int fd; /* file descriptor */ - short dirty; /* beam index needs update to file */ + struct { + int s, n; /* dirty section start, length */ + } dirseg[MAXDIRSE+1]; /* dirty beam index segments */ + short dirty; /* number of dirty segments */ double tlin; /* linear range for depth encoding */ FVECT wg[3]; /* wall grid vectors (derived) */ double wo[6]; /* wall grid offsets (derived) */ @@ -92,8 +93,8 @@ typedef struct { #define bnrays(hp,i) ((hp)->bl[i]!=NULL ? (hp)->bl[i]->nrm : (hp)->bi[i].nrd) -#define hdflush(hp) (hdfreebeam(hp,0) && hdsync(hp,0)) -#define hdclobber(hp) (hdkillbeam(hp,0) && hdsync(hp,0)) +#define hdflush(hp) (hdfreebeam(hp,0), hdsync(hp,0)) +#define hdclobber(hp) (hdkillbeam(hp,0), hdsync(hp,0)) extern HOLO *hdinit(), *hdalloc(); extern BEAM *hdgetbeam();