/**************************************************************************** * os2conf.h * * This header file contains all constants and types required to compile a * text mode only EXE of POV-Ray for use with OS/2 2.x. * RENAME this file to CONFIG.H before compiling. * * Developed for & with IBM's CSet/2 C/C++ compiler. * * From Persistence of Vision Raytracer * Copyright 1991, 1992, 1993 Persistence of Vision Team * Bill Pulver 2-1-93 *--------------------------------------------------------------------------- * NOTICE: This source code file is provided so that users may experiment * with enhancements to POV-Ray and to port the software to platforms other * than those supported by the POV-Ray Team. There are strict rules under * which you are permitted to use this file. The rules are in the file * named POVLEGAL.DOC which should be distributed with this file. If * POVLEGAL.DOC is not available or for more info please contact the POV-Ray * Team Coordinator by leaving a message in CompuServe's Graphics Developer's * Forum. (GO GRAPHDEV) The latest version of POV-Ray may be found there * as well. * * This program is based on the popular DKB raytracer version 2.12. * DKBTrace was originally written by David K. Buck. * DKBTrace Ver 2.0-2.12 were written by David K. Buck & Aaron A. Collins. * *****************************************************************************/ /* Below are several defines needed by the generic parts of POV. You * may redefine them as needed in this config.h file. * * The following constants are needed by various POV modules. Each has * a default (shown below) which is will be defined in frame.h if you don't * define them here. * * #define EPSILON 1.0e-10 - a small value used for POLY * #define FILE_NAME_LENGTH 150 - default file name length * #define HUGE_VAL 1.0e+17 - a really big number * #define DBL_FORMAT_STRING "%lf" - the string to use for scanfs of doubles * #define DEFAULT_OUTPUT_FORMAT 'd' - the default +f format * #define RED_RAW_FILE_EXTENSION ".red" - for +fr, this is the extension for the * red file * #define GREEN_RAW_FILE_EXTENSION ".grn" - ditto for the green file * #define BLUE_RAW_FILE_EXTENSION ".blu" - ditto again for the blue file * #define FILENAME_SEPARATOR "/" - the character that separates names * in a path. * #define CASE_SENSITIVE_DEFAULT 2 - controls case sensitivity in DAT files * #define READ_FILE_STRING "rb" - special binary (raw, uncooked) * #define WRITE_FILE_STRING "wb" modes of fopen() * #define APPEND_FILE_STRING "ab" * #define NORMAL '0' - machine-specific PaletteOption settings * #define GREY 'G' * * These routines are required by POV to compute trace times. The defaults * shown below are defined in most versions of C. You may redefine them if * your compiler doesn't support these. If time is completely unsupported * define them as 0. * * #define START_TIME time(&tstart); * #define STOP_TIME time(&tstop); * #define TIME_ELAPSED difftime (tstop, tstart); * * Note difftime can be replaced with: #define TIME_ELAPSED (tstop - tstart); * in some cases. * * These are optional routines that POV calls. You may define them * or if undefined they will be defined as empty in frame.h. * * #define STARTUP_POVRAY - first executable statement of main * (useful for initialization) * #define PRINT_OTHER_CREDITS - used for people who extend the machine specific modules * (put your own printf's here) * #define TEST_ABORT - code to test for ^C or abort * (called on each pixel) * #define FINISH_POVRAY - last statement before exiting normally * #define COOPERATE - called for multi-tasking * * These items are standard on some C compilers. If they are not defined * on your compiler or are called something different you may define your * own or use the defaults supplied in frame.h as shown below. * * #define DBL double - floating point precision * #define ACOS acos - arc cosine of DBL * #define SQRT sqrt - square root of DBL * #define POW pow - x to the y power - x, y DBL * #define COS cos - cosine of DBL * #define SIN sin - sine of DBL * #define labs(x) (long) ((x<0)?-x:x) - Returns the absolute value of long integer x * #define max (x,y) ((x<y)?y:x) - greater of x and y * * On some systems "sprintf" returns the string rather than the length * of the string. If the string is returned, define the following: * #define STRLN(x) strlen(x) * * #define setvbuf(w,x,y,z) - some systems don't understand setvbuf. * If not, just define it away - it's * not critical to the raytracer. It * just buffers disk accesses. * This macro controls prototyping and is required by POV. Choose one * of the two options below or if left undefined it will default to ANSI * in frame.h * * #define PARAMS (x) x - do ANSI prototyping * #define PARAMS (x) () - do K&R non-ANSI prototyping * * These allow command line vs non-command line versions and alternate * main routines. Normally they should be undefined. Define them 1 if needed. * #define ALTMAIN 1 * #define NOCMDLINE 1 ****************************************************/ #ifdef _STDC_ #define PARAMS(x) x #else #define PARAMS(x) () #define volatile #endif #define COMPILER_VER ".ibmCset/2++" #define DBL double /* Mask floating point underflow, etc. for IBM C Set/2, 2 ways are */ /* defined below. */ /* IBM C Set/2 does not trap open matherr, we must use _control87 to trap */ /* them. We must also disable stream buffering. NOTE: The I/O buffer */ /* disabling is handled as MACRO invoked from the makefile in this case. */ /* (NOPRNBUF) */ #include <conio.h> #include <float.h> /* #define CONFIG_MATH _control87 (CW_DEFAULT + EM_UNDERFLOW + EM_OVERFLOW + EM_ZERODIVIDE, MCW_EM);*/ #define CONFIG_MATH _control87(MCW_EM, MCW_EM); #ifdef NOPRNBUF void Initialize (void) { /* Disable buffering for ...printf calls for C Set/2 */ setvbuf (stdout, NULL, _IONBF, 0); setvbuf (stderr, NULL, _IONBF, 0); } #define STARTUP_POVRAY Initialize (); #endif /* Define default output file format as TARGA */ #define DEFAULT_OUTPUT_FORMAT 't' /* Allow Keyboard abort, slows down rendering quite a bit under OS/2 due to */ /* KB polling. IDLE_TIME may be able to compensate to a certain extent.... */ /* NOTE THAT YOU MAY NEED TO ADD/DELETE UNDERSCORES IN FRONT OF kbhit AND */ /* getch. It compiles fine either way for me but did not work for another */ /* person until the "_"'s were deleted....... */ #define TEST_ABORT if (Options & EXITENABLE) if (kbhit()) { Stop_Flag = TRUE; getch(); } #define EPSILON 1.0e-15 /* Need prototypes for these standard routines */ char *getenv PARAMS((char *name)); char *malloc PARAMS((int size)); void free PARAMS((void *)); #define MAIN_TYPE int