1 /****************************************************************************
2  *                  patches.h
3  *
4  * switches for patches from MegaPOV
5  *
6  * from Persistence of Vision(tm) Ray Tracer version 3.6.
7  * Copyright 1991-2003 Persistence of Vision Team
8  * Copyright 2003-2004 Persistence of Vision Raytracer Pty. Ltd.
9  *---------------------------------------------------------------------------
10  * NOTICE: This source code file is provided so that users may experiment
11  * with enhancements to POV-Ray and to port the software to platforms other
12  * than those supported by the POV-Ray developers. There are strict rules
13  * regarding how you are permitted to use this file. These rules are contained
14  * in the distribution and derivative versions licenses which should have been
15  * provided with this file.
16  *
17  * These licences may be found online, linked from the end-user license
18  * agreement that is located at http://www.povray.org/povlegal.html
19  *---------------------------------------------------------------------------
20  * This program is based on the popular DKB raytracer version 2.12.
21  * DKBTrace was originally written by David K. Buck.
22  * DKBTrace Ver 2.0-2.12 were written by David K. Buck & Aaron A. Collins.
23  *---------------------------------------------------------------------------
24  *
25  *===========================================================================
26  * This file is part of MegaPOV, a modified and unofficial version of POV-Ray
27  * For more information on MegaPOV visit our website:
28  * http://megapov.inetart.net/
29  *===========================================================================
30  *
31  * $RCSfile: patches.h,v $
32  * $Revision: 1.56 $
33  * $Author: chris $
34  *
35  *****************************************************************************/
36 #ifndef PATCHES_H
37 #define PATCHES_H
38 #define MEGAPOV_MASTER_SWITCH //Main switch, comment this out to turn off all patches
39                               //for testing purposes.
40 
41 #ifdef MEGAPOV_MASTER_SWITCH
42   #define UNOFFICIAL_BLOCKING_PATCH  //needed for all patches, must be first
43   //Main switch for each author
44   #define PATCHES_BY_ABX
45   #define PATCHES_BY_CHRISTOPHE_BOUFFARTIGUE
46   #define PATCHES_BY_CHRISTOPH_HORMANN
47   #define PATCHES_BY_MASSIMO_VALENTINI
48   #define PATCHES_BY_THORSTEN_FROEHLICH
49   #define PATCHES_BY_VAHUR_KROUVERK
50   #define PATCHES_BY_WILLIAM_F_POKORNY
51   #define PATCHES_BY_JURJEN
52   #define PATCHES_BY_MICHA_RISER
53   #define PATCHES_BY_SMELLENBERGH
54   #define PATCHES_BY_NATHAN_KOPP
55   #define PATCHES_BY_CHRIS_HUFF
56   #define PATCHES_BY_KARI_KIVISALO
57   #define PATCHES_BY_MAEL
58   #define PATCHES_BY_THOMAS_WILLHALM
59   #define PATCHES_BY_LUTZ_PETER_HOOGE
60 
61   #ifdef PATCHES_BY_ABX
62   // patches to avoid some warnings with gcc (under djgpp), bcc and dmc
63     #define AVOID_TYPE_CONVERSION_WARNINGS_PATCH
64     #define AVOID_MIGHT_BE_USED_UNINITIALIZED_WARNINGS_PATCH
65     #define AVOID_EMPTY_STRING_WARNING
66     #define REMOVE_NOT_USED_CODE_WARNINGS_PATCH
67     #define AVOID_ALWAYS_FALSE_COMPARISON_WARNINGS_PATCH
68     #define WHITE_SPACE_BEFORE_SEMICOLON_PATCH
69 
70   // command options
71     #define FRAME_STEP_PATCH
72 
73   // radiosity
74     #define CACHE_IN_ANIMATED_RADIOSITY_PATCH
75 
76   // connecting similar code
77     #define MAKE_COLOR_SHORTER_PATCH
78 
79   // parametric related patches
80     #define PARAMETRIC_MINOR_CHANGES_PATCH
81 
82   // spline related patches
83     #define SOR_SPLINE_PATCH
84     #define TCB_SPLINE_PATCH // Kochanek-Bartels
85     #define AKIMA_SPLINE_PATCH
86     #define BASIC_X_SPLINE_PATCH
87     #define EXTENDED_X_SPLINE_PATCH
88     #define GENERAL_X_SPLINE_PATCH
89     #define SPLINE_LIKE_ARRAY_ACCESS_PATCH
90 
91   // internal functions
92     #define F_TRIANGLE_PATCH
93     #define MISSED_FLOAT_CONSTANTS_RECOGNITION_PATCH
94 
95   // expressions
96     #define IS_PATCH
97     #define VECTORS_IN_DIMENSION_SIZE_PATCH
98     #define POLYNOMIAL_SOLVER_PATCH
99     #define NTH_OUTPUT_FILE_NAME_PATCH
100 
101   // platform specific patches
102     #define CUSTOM_KEYWORDS_IN_WINPOV_PATCH
103     #define CONTINUED_BMP_BUGFIX_PATCH
104 
105   // post processing
106     #define POST_PROCESS_PATCH
107 
108   // camera stuff
109     #define USER_DEFINED_CAMERA_PATCH
110     #define PIGMENT_CAMERA_VIEW_PATCH
111 
112   // pattern stuff
113 //    #define SIMPLE_PATTERN_CACHE_PATCH
114     #define IMAGES_SIZES_PATCH
115 
116   // bugfixes
117     #define BLOB_QUEUE_MEMORY_LEAK_PATCH
118 
119   #endif  //PATCHES_BY_ABX
120 
121   #ifdef PATCHES_BY_MASSIMO_VALENTINI
122   	#define FIX_MEMORY_LEAKS_PATCH
123 
124   #endif
125 
126   #ifdef PATCHES_BY_THORSTEN_FROEHLICH
127     #define SPLINE_IN_FUNCTION_PATCH
128     #define MACRO_PARAMETER_BUGFIX_PATCH
129   #endif  //PATCHES_BY_THORSTEN_FROEHLICH
130 
131   #ifdef PATCHES_BY_VAHUR_KROUVERK
132     #define HMATH_PATCH
133   #endif  //PATCHES_BY_VAHUR_KROUVERK
134 
135   #ifdef PATCHES_BY_WILLIAM_F_POKORNY
136   #endif  //PATCHES_BY_WILLIAM_F_POKORNY
137 
138   #ifdef PATCHES_BY_JURJEN
139     #define TRANSPARENT_INVERTED_NORMALS_PATCH
140   #endif  //PATCHES_BY_JURJEN
141 
142   #ifdef PATCHES_BY_MICHA_RISER
143     #define BOUNDINGS_AS_INSIDE_PATCH
144   #endif  //PATCHES_BY_MICHA_RISER
145 
146   #ifdef PATCHES_BY_CHRIS_HUFF
147     #define SET_PATCH
148     #define GLOW_PATCH
149     #define DISPLACE_WARP_PATCH
150     #define LISTED_PATTERN_PATCH
151     #define NOISE_PIGMENT_PATCH
152   #endif  //PATCHES_BY_CHRIS_HUFF
153 
154   #ifdef PATCHES_BY_SMELLENBERGH
155   	#define FASTER_PROGRESS_DISPLAY_PATCH
156     #define STRDUP_MEM_TRACE_PATCH     //Will be turned off in a final release
157     #define STORE_TOKEN_POSITION_START_IN_FILE_PATCH
158     #define LESS_MEMORY_IN_PATTERNS_PATCH
159     #define MESSAGE_PATCH
160     #define TIME_DATE_PATCH
161     #define TIME_MEASUREMENT_PATCH
162     #define FONT_ALIGNMENT_PATCH
163   #endif  //PATCHES_BY_SMELLENBERGH
164 
165   #ifdef PATCHES_BY_NATHAN_KOPP
166     #define MOTION_BLUR_PATCH
167     #define UNOFFICIAL_BLOCKING_PATCH  //we are MegaPOV we need #version unofficial MegaPov x.x in all files
168   #endif  //PATCHES_BY_NATHAN_KOPP
169 
170 
171   #ifdef PATCHES_BY_CHRISTOPH_HORMANN
172     #define MECHANICS_SIMULATION_PATCH
173     #define UNIX_FINISH_BEEP_PATCH
174     #define RAD_CUSTOM_SAMPLES_PATCH
175     #define RAD_SAMPLES_RANDOMIZE_PATCH
176     #define NORMAL_TRANSFORM_PATCH
177     #define HDR_PATCH
178     #define INSIDE_FUNCTION_FOR_MESHES_PATCH
179     #define NO_RADIOSITY_PATCH
180     #define AREA_LIGHT_REFLECTION_PATCH
181     #define CUSTOM_TONE_MAPPING_PATCH
182     #define RADIOSITY_STATISTICS_PATCH
183     #define RADIOSITY_VISUALIZE_PATCH
184     #define RADIOSITY_ADAPTIVE_RADIUS_PATCH
185     #define NEW_RADIOSITY_PRETRACE_PATCH
186     #define CRAND_BUGFIX_PATCH
187     #define ALPHA_CLIPPING_BUGFIX_PATCH
188     #define PPM_READING_COMPATIBILITY_PATCH
189 
190     //#define RADSTATS
191   #endif  //PATCHES_BY_CHRISTOPH_HORMANN
192 
193   #ifdef PATCHES_BY_CHRISTOPHE_BOUFFARTIGUE
194      #define CLOTHRAY_PATCH
195   #endif  //PATCHES_BY_CHRISTOPHE_BOUFFARTIGUE
196 
197   #ifdef PATCHES_BY_KARI_KIVISALO
198     #define FILM_EXPOSURE_SIMULATION_PATCH
199   #endif  //PATCHES_BY_KARI_KIVISALO
200 
201   #ifdef PATCHES_BY_MAEL
202     #define ANGLE_OF_INCIDENCE_PATCH
203     #define PROJECTION_PATCH
204     #define HDR_PATCH
205   #endif  //PATCHES_BY_MAEL
206 
207   #ifdef PATCHES_BY_THOMAS_WILLHALM
208     #define FUR_PATCH
209   #endif  //PATCHES_BY_THOMAS_WILLHALM
210 
211   #ifdef PATCHES_BY_LUTZ_PETER_HOOGE
212     #define BICUBIC_INTERPOLATION_PATCH
213   #endif  //PATCHES_BY_LUTZ_PETER_HOOGE
214 
215 #endif  //MASTER_SWITCH
216 #endif	//#ifndef PATCHES_H
217