home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fish 'n' More 2
/
fishmore-publicdomainlibraryvol.ii1991xetec.iso
/
dirs
/
dkbtrace_397.lzh
/
DKBTrace
/
DKBSource.LZH
/
dkbproto.h
< prev
next >
Wrap
C/C++ Source or Header
|
1990-08-26
|
17KB
|
341 lines
/*****************************************************************************
*
* dkbproto.h
*
* from DKBTrace (c) 1990 David Buck
*
* This module defines the prototypes for all system-independent functions.
*
* This software is freely distributable. The source and/or object code may be
* copied or uploaded to communications services so long as this notice remains
* at the top of each file. If any changes are made to the program, you must
* clearly indicate in the documentation and in the programs startup message
* who it was who made the changes. The documentation should also describe what
* those changes were. This software may not be included in whole or in
* part into any commercial package without the express written consent of the
* author. It may, however, be included in other public domain or freely
* distributed software so long as the proper credit for the software is given.
*
* This software is provided as is without any guarantees or warranty. Although
* the author has attempted to find and correct any bugs in the software, he
* is not responsible for any damage caused by the use of the software. The
* author is under no obligation to provide service, corrections, or upgrades
* to this package.
*
* Despite all the legal stuff above, if you do find bugs, I would like to hear
* about them. Also, if you have any comments or questions, you may contact me
* at the following address:
*
* David Buck
* 22C Sonnet Cres.
* Nepean Ontario
* Canada, K2H 8W7
*
* I can also be reached on the following bulleton boards:
*
* ATX (613) 526-4141
* OMX (613) 731-3419
* Mystic (613) 731-0088 or (613) 731-6698
*
* Fidonet: 1:163/109.9
* Internet: David_Buck@Carleton.CA
*
* IBM Port by Aaron A. Collins. Aaron may be reached on the following BBS'es:
*
* Lattice BBS (708) 916-1200
* The Information Exchange BBS (708) 945-5575
* Stillwaters BBS (708) 403-2826
*
*****************************************************************************/
/* Prototypes for functions defined in trace.c */
void close_all PARAMS((void));
void get_defaults PARAMS((void));
void read_options PARAMS((char *file_name));
void parse_option PARAMS((char *Option_String));
void parse_file_name PARAMS((char *File_Name));
void Print_Options PARAMS((void));
void print_stats PARAMS((void));
/* Prototypes for functions defined in render.c */
void Create_Ray PARAMS((RAY *ray, int width, int height, DBL x, DBL y));
void Write_Line PARAMS((COLOUR *Line, int y));
void Supersample PARAMS((COLOUR *result, int x, int y, int Width, int Height));
void Start_Tracing PARAMS((void));
void Trace PARAMS((RAY *Ray, COLOUR *Colour));
/* Prototypes for functions defined in tokenize.c */
void Tokenize PARAMS((char *name, FILE *in, FILE *symbol, FILE *out));
int Process_Token PARAMS((void));
int Skip_Spaces PARAMS((void));
int Parse_Comments PARAMS((void));
void Begin_String PARAMS((void));
void Stuff_Character PARAMS((char c));
void End_String PARAMS((void));
int Read_Float PARAMS((void));
int Parse_String PARAMS((void));
int Read_Include PARAMS((void));
int Read_Symbol PARAMS((void));
int Find_Reserved PARAMS((void));
int Find_Symbol PARAMS((void));
void Write_Token PARAMS((enum Token_Type Token_Id));
void Token_Error PARAMS((char *str));
/* Prototypes for functions defined in parse.c */
void Parse PARAMS((FILE *File, FRAME *Frame_Ptr));
void Token_Init PARAMS((void));
int Get_Token PARAMS((void));
void Unget_Token PARAMS((void));
void Frame_Init PARAMS((void));
COMPOSITE *Get_Composite_Object PARAMS((void));
SPHERE *Get_Sphere_Shape PARAMS((void));
QUADRIC *Get_Quadric_Shape PARAMS((void));
PLANE *Get_Plane_Shape PARAMS((void));
TRIANGLE *Get_Triangle_Shape PARAMS((void));
SMOOTH_TRIANGLE *Get_Smooth_Triangle_Shape PARAMS((void));
CSG_SHAPE *Get_CSG_Shape PARAMS((void));
CSG_SHAPE *Get_CSG_Union PARAMS((void));
CSG_SHAPE *Get_CSG_Intersection PARAMS((void));
CSG_SHAPE *Get_CSG_Difference PARAMS((void));
void Set_CSG_Parents PARAMS((CSG_SHAPE *, OBJECT *));
OBJECT *Get_Object PARAMS((void));
TEXTURE *Get_Texture PARAMS((void));
VIEWPOINT *Get_Viewpoint PARAMS((void));
COLOUR *Get_Colour PARAMS((void));
VECTOR *Get_Vector PARAMS((void));
DBL *Get_Float PARAMS((void));
TRANSFORMATION *Get_Transformation PARAMS((void));
DBL Parse_Float PARAMS((void));
void Parse_Vector PARAMS((VECTOR *Given_Vector));
void Parse_Colour PARAMS((COLOUR *Given_Colour));
COLOUR_MAP *Parse_Colour_Map PARAMS((void));
TEXTURE *Copy_Texture PARAMS((TEXTURE *Texture));
TEXTURE *Parse_Texture PARAMS((TEXTURE *Old_Texture));
SHAPE *Parse_Sphere PARAMS((void));
SHAPE *Parse_Plane PARAMS((void));
SHAPE *Parse_Triangle PARAMS((void));
SHAPE *Parse_Smooth_Triangle PARAMS((void));
SHAPE *Parse_Quadric PARAMS((void));
CSG_SHAPE *Parse_CSG PARAMS((int type, OBJECT *Parent_Object));
SHAPE *Parse_Shape PARAMS((OBJECT *Object));
OBJECT *Parse_Object PARAMS((void));
OBJECT *Parse_Composite PARAMS((void));
void Parse_Fog PARAMS((void));
void Parse_Frame PARAMS((void));
void Parse_Viewpoint PARAMS((VIEWPOINT *Given_Vp));
void Parse_Declare PARAMS((void));
void Init_Viewpoint PARAMS((VIEWPOINT *vp));
void Link PARAMS((OBJECT *New_Object,
OBJECT **Field,
OBJECT **Old_Object_List));
CONSTANT Find_Constant PARAMS((void));
char *Get_Token_String PARAMS((TOKEN Token_Id));
void Parse_Error PARAMS((TOKEN Token_Id));
void Type_Error PARAMS((void));
void Undeclared PARAMS((void));
void Error PARAMS((char *str));
/* Prototypes for functions defined in objects.c */
INTERSECTION *Object_Intersect PARAMS((OBJECT *Object, RAY *Ray));
int All_Composite_Intersections PARAMS((OBJECT *Object, RAY *Ray, PRIOQ *Depth_Queue));
int All_Object_Intersections PARAMS((OBJECT *Object, RAY *Ray, PRIOQ *Depth_Queue));
int Inside_Basic_Object PARAMS((VECTOR *Point, OBJECT *Object));
int Inside_Composite_Object PARAMS((VECTOR *Point, OBJECT *Object));
void *Copy_Basic_Object PARAMS((OBJECT *Object));
void *Copy_Composite_Object PARAMS((OBJECT *Object));
void Translate_Basic_Object PARAMS((OBJECT *Object, VECTOR *Vector));
void Rotate_Basic_Object PARAMS((OBJECT *Object, VECTOR *Vector));
void Scale_Basic_Object PARAMS((OBJECT *Object, VECTOR *Vector));
void Translate_Composite_Object PARAMS((OBJECT *Object, VECTOR *Vector));
void Rotate_Composite_Object PARAMS((OBJECT *Object, VECTOR *Vector));
void Scale_Composite_Object PARAMS((OBJECT *Object, VECTOR *Vector));
void Invert_Basic_Object PARAMS((OBJECT *Object));
void Invert_Composite_Object PARAMS((OBJECT *Object));
/* Prototypes for functions defined in spheres.c */
int All_Sphere_Intersections PARAMS((OBJECT *Object, RAY *Ray, PRIOQ *Depth_Queue));
int Intersect_Sphere PARAMS((RAY *Ray, SPHERE *Sphere, DBL *Depth1, DBL *Depth2));
int Inside_Sphere PARAMS((VECTOR *Point, OBJECT *Object));
void Sphere_Normal PARAMS((VECTOR *Result, OBJECT *Object, VECTOR *Intersection_Point));
void *Copy_Sphere PARAMS((OBJECT *Object));
void Translate_Sphere PARAMS((OBJECT *Object, VECTOR *Vector));
void Rotate_Sphere PARAMS((OBJECT *Object, VECTOR *Vector));
void Scale_Sphere PARAMS((OBJECT *Object, VECTOR *Vector));
void Invert_Sphere PARAMS((OBJECT *Object));
/* Prototypes for functions defined in quadrics.c */
int All_Quadric_Intersections PARAMS((OBJECT *Object, RAY *Ray, PRIOQ *Depth_Queue));
int Intersect_Quadric PARAMS((RAY *Ray, QUADRIC *Shape, DBL *Depth1, DBL *Depth2));
int Inside_Quadric PARAMS((VECTOR *Point, OBJECT *Object));
void Quadric_Normal PARAMS((VECTOR *Result, OBJECT *Object, VECTOR *Intersection_Point));
void *Copy_Quadric PARAMS((OBJECT *Object));
void Transform_Quadric PARAMS((QUADRIC *Shape, TRANSFORMATION *Transformation));
void Quadric_To_Matrix PARAMS((QUADRIC *Quadric, MATRIX *Matrix));
void Matrix_To_Quadric PARAMS((MATRIX *Matrix, QUADRIC *Quadric));
void Translate_Quadric PARAMS((OBJECT *Object, VECTOR *Vector));
void Rotate_Quadric PARAMS((OBJECT *Object, VECTOR *Vector));
void Scale_Quadric PARAMS((OBJECT *Object, VECTOR *Vector));
void Invert_Quadric PARAMS((OBJECT *Object));
/* Prototypes for functions defined in triangle.c */
void Find_Triangle_Dominant_Axis PARAMS((TRIANGLE *Triangle));
int Compute_Triangle PARAMS((TRIANGLE *Triangle));
void Compute_Smooth_Triangle PARAMS((SMOOTH_TRIANGLE *Triangle));
int All_Triangle_Intersections PARAMS((OBJECT *Object, RAY *Ray, PRIOQ *Depth_Queue));
int Intersect_Triangle PARAMS((RAY *Ray, TRIANGLE *Triangle, DBL *Depth));
int Inside_Triangle PARAMS((VECTOR *Point, OBJECT *Object));
void Triangle_Normal PARAMS((VECTOR *Result, OBJECT *Object, VECTOR *Intersection_Point));
void *Copy_Triangle PARAMS((OBJECT *Object));
void Translate_Triangle PARAMS((OBJECT *Object, VECTOR *Vector));
void Rotate_Triangle PARAMS((OBJECT *Object, VECTOR *Vector));
void Scale_Triangle PARAMS((OBJECT *Object, VECTOR *Vector));
void Invert_Triangle PARAMS((OBJECT *Object));
void Smooth_Triangle_Normal PARAMS((VECTOR *Result, OBJECT *Object, VECTOR *Intersection_Point));
void *Copy_Smooth_Triangle PARAMS((OBJECT *Object));
void Rotate_Smooth_Triangle PARAMS((OBJECT *Object, VECTOR *Vector));
/* Prototypes for functions defined in lighting.c */
void Colour_At PARAMS((COLOUR *Colour, OBJECT *Object, VECTOR *Intersection_Point));
void Perturb_Normal PARAMS((VECTOR *New_Normal, OBJECT *Object, VECTOR *Intersection_Point,
VECTOR *Surface_Normal));
void Ambient PARAMS((OBJECT *Object, VECTOR *Intersection_Point, COLOUR *Surface_Colour,
COLOUR *Colour));
void Diffuse PARAMS((OBJECT *Object, VECTOR *Intersection_Point, RAY *Eye, VECTOR *Surface_Normal,
COLOUR *Surface_Colour, COLOUR *Colour));
void Transmit PARAMS((OBJECT *Object, VECTOR *Intersection_Point, RAY *Ray,
VECTOR *Surface_Normal, COLOUR *Surface_Colour, COLOUR *Colour));
void Reflect PARAMS((OBJECT *Object, VECTOR *Intersection_Point, RAY *Ray,
VECTOR *Surface_Normal, COLOUR *Colour));
void Refract PARAMS((OBJECT *Object, VECTOR *Intersection_Point, RAY *Ray,
VECTOR *Surface_Normal, COLOUR *Colour));
void Fog PARAMS((DBL Distance, COLOUR *Fog_Colour, DBL Fog_Distance, COLOUR *Colour));
/* Prototypes for functions defined in prioq.c */
void pq_init PARAMS((void));
PRIOQ *pq_alloc PARAMS((void));
void pq_free PARAMS((PRIOQ *pq));
PRIOQ *pq_new PARAMS((int index_size));
void pq_balance PARAMS((PRIOQ *q, unsigned int entry_pos1));
void pq_add PARAMS((PRIOQ *q, INTERSECTION *entry));
INTERSECTION *pq_get_highest PARAMS((PRIOQ *q));
int pq_is_empty PARAMS((PRIOQ *q));
void pq_delete_highest PARAMS((PRIOQ *q));
/* Prototypes for functions defined in texture.c */
void Compute_Colour PARAMS((COLOUR *Colour, COLOUR_MAP *Colour_Map, DBL value));
void Initialize_Noise PARAMS((void));
void InitTextureTable PARAMS((void));
void InitRTable PARAMS((void));
int R PARAMS((VECTOR *v));
int Crc16 PARAMS((char *buf, int count));
DBL Noise PARAMS((DBL x, DBL y, DBL z));
void DNoise PARAMS((VECTOR *result, DBL x, DBL y, DBL z));
DBL cycloidal PARAMS((DBL value));
DBL Triangle_Wave PARAMS((DBL value));
DBL Turbulence PARAMS((DBL x, DBL y, DBL z));
void DTurbulence PARAMS((VECTOR *result, DBL x, DBL y, DBL z));
int Bozo PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, COLOUR *Colour));
int marble PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, COLOUR *colour));
void ripples PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, VECTOR *Vector));
void waves PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, VECTOR *Vector));
int wood PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, COLOUR *colour));
void checker PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, COLOUR *colour));
void spotted PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, COLOUR *Colour));
void bumps PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, VECTOR *normal));
void dents PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, VECTOR *normal));
void agate PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, COLOUR *colour));
void wrinkles PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, VECTOR *normal));
void granite PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, COLOUR *Colour));
void gradient PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, COLOUR *Colour));
void texture_map PARAMS((DBL x, DBL y, DBL z, OBJECT *Object, COLOUR *colour));
/* Prototypes for functions defined in csg.c */
int All_CSG_Union_Intersections PARAMS((OBJECT *Object, RAY *Ray, PRIOQ *Depth_Queue));
int All_CSG_Intersection_Intersections PARAMS((OBJECT *Object, RAY *Ray, PRIOQ *Depth_Queue));
int All_CSG_Difference_Intersections PARAMS((OBJECT *Object, RAY *Ray, PRIOQ *Depth_Queue));
int Inside_CSG_Union PARAMS((VECTOR *Point, OBJECT *Object));
int Inside_CSG_Intersection PARAMS((VECTOR *Point, OBJECT *Object));
void *Copy_CSG PARAMS((OBJECT *Object));
void Translate_CSG PARAMS((OBJECT *Object, VECTOR *Vector));
void Rotate_CSG PARAMS((OBJECT *Object, VECTOR *Vector));
void Scale_CSG PARAMS((OBJECT *Object, VECTOR *Vector));
void Invert_CSG PARAMS((OBJECT *Object));
/* Prototypes for functions defined in colour.c */
DBL Colour_Distance PARAMS((COLOUR *colour1, COLOUR *colour2));
void Add_Colour PARAMS((COLOUR *result, COLOUR *colour1, COLOUR *colour2));
void Scale_Colour PARAMS((COLOUR *result, COLOUR *colour, DBL factor));
void Clip_Colour PARAMS((COLOUR *result, COLOUR *colour));
/* Prototypes for functions defined in viewpnt.c */
void *Copy_Viewpoint PARAMS((OBJECT *Object));
void Translate_Viewpoint PARAMS((OBJECT *Object, VECTOR *Vector));
void Rotate_Viewpoint PARAMS((OBJECT *Object, VECTOR *Vector));
void Scale_Viewpoint PARAMS((OBJECT *Object, VECTOR *Vector));
/* Prototypes for functions defined in ray.c */
void Make_Ray PARAMS((RAY *r));
void Initialize_Ray_Containers PARAMS((RAY *Ray));
void Copy_Ray_Containers PARAMS((RAY *Dest_Ray, RAY *Source_Ray));
void Ray_Enter PARAMS((RAY *ray, OBJECT *object));
void Ray_Exit PARAMS((RAY *ray));
/* Prototypes for functions defined in planes.c */
int All_Plane_Intersections PARAMS((OBJECT *Object, RAY *Ray, PRIOQ *Depth_Queue));
int Intersect_Plane PARAMS((RAY *Ray, PLANE *Plane, DBL *Depth));
int Inside_Plane PARAMS((VECTOR *Point, OBJECT *Object));
void Plane_Normal PARAMS((VECTOR *Result, OBJECT *Object, VECTOR *Intersection_Point));
void *Copy_Plane PARAMS((OBJECT *Object));
void Translate_Plane PARAMS((OBJECT *Object, VECTOR *Vector));
void Rotate_Plane PARAMS((OBJECT *Object, VECTOR *Vector));
void Scale_Plane PARAMS((OBJECT *Object, VECTOR *Vector));
void Invert_Plane PARAMS((OBJECT *Object));
/* Prototypes for functions defined in raw.c */
int read_raw_byte PARAMS((FILE *f));
int read_raw_word PARAMS((FILE *f));
void read_raw_image PARAMS((IMAGE *Image, char *filename));
/* Prototypes for functions defined in iff.c */
void iff_error PARAMS((void));
int read_byte PARAMS((FILE *f));
int read_word PARAMS((FILE *f));
long read_long PARAMS((FILE *f));
void Read_Chunk_Header PARAMS((FILE *f, CHUNK_HEADER *dest));
void read_iff_image PARAMS((IMAGE *Image, char *filename));
/* Prototypes for functions defined in gif.c */
int out_line PARAMS((char *pixels, int linelen));
int get_byte PARAMS((void));
void read_gif_image PARAMS((IMAGE *Image, char *filename));
/* Prototypes for functions defined in gifdecod.c */
short init_exp PARAMS((short size));
short get_next_code PARAMS((void));
short decoder PARAMS((short linewidth));
/* Prototypes for functions defined in amiga.c */
void display_finished PARAMS((void));
void display_init PARAMS((void));
void display_close PARAMS((void));
void display_plot PARAMS((int x, int y, char Red, char Green, char Blue));
/* Prototypes for functions defined in matrices.c */
void MZero PARAMS((MATRIX *result));
void MIdentity PARAMS((MATRIX *result));
void MTimes PARAMS((MATRIX *result, MATRIX *matrix1, MATRIX *matrix2));
void MAdd PARAMS((MATRIX *result, MATRIX *matrix1, MATRIX *matrix2));
void MSub PARAMS((MATRIX *result, MATRIX *matrix1, MATRIX *matrix2));
void MScale PARAMS((MATRIX *result, MATRIX *matrix1, DBL amount));
void MTranspose PARAMS((MATRIX *result, MATRIX *matrix1));
void MTransformVector PARAMS((VECTOR *result, VECTOR *vector, TRANSFORMATION *transformation));
void MInverseTransformVector PARAMS((VECTOR *result, VECTOR *vector, TRANSFORMATION *transformation));
void Get_Scaling_Transformation PARAMS((TRANSFORMATION *result, VECTOR *vector));
void Get_Inversion_Transformation PARAMS((TRANSFORMATION *result));
void Get_Translation_Transformation PARAMS((TRANSFORMATION *transformation, VECTOR *vector));
void Get_Rotation_Transformation PARAMS((TRANSFORMATION *transformation, VECTOR *vector));
void Get_Look_At_Transformation PARAMS((TRANSFORMATION *transformation, VECTOR *Look_At, VECTOR *Up, VECTOR *Right));
void Compose_Transformations PARAMS((TRANSFORMATION *Original_Transformation, TRANSFORMATION *New_Transformation));