43 #include <boost/array.hpp>
44 #include <boost/bind.hpp>
45 #include <boost/function.hpp>
46 #include <boost/noncopyable.hpp>
47 #include <boost/optional.hpp>
48 #include <boost/program_options/errors.hpp>
49 #include <boost/program_options/options_description.hpp>
50 #include <boost/program_options/parsers.hpp>
51 #include <boost/program_options/variables_map.hpp>
52 #include <boost/random.hpp>
53 #include <boost/range.hpp>
54 #include <boost/scoped_array.hpp>
55 #include <boost/scoped_ptr.hpp>
57 #include <QApplication>
58 #include <QButtonGroup>
61 #include <QColorDialog>
65 #include <QFileDialog>
67 #include <QGridLayout>
73 #include <QMessageBox>
75 #include <QProgressDialog>
76 #include <QPushButton>
77 #include <QRadioButton>
82 #include <QTextBrowser>
87 #include <QVBoxLayout>
90 #define GL_GLEXT_PROTOTYPES
94 #include <QtOpenGL/qgl.h>
96 #define stringify(S) __STRING(S)
98 typedef unsigned int uint;
99 typedef unsigned short ushort;
100 typedef unsigned char uchar;
102 template <
class T>
inline const T maximum(T a,T b) {
return (a>b ? a : b);}
103 template <
class T>
inline const T minimum(T a,T b) {
return (a<b ? a : b);}
105 template <
class T>
inline const T maximum(T a,T b,T c) {
return maximum(a,maximum(b,c));}
106 template <
class T>
inline const T minimum(T a,T b,T c) {
return minimum(a,minimum(b,c));}
108 template <
class T>
inline const T maximum(T a,T b,T c,T d) {
return maximum(maximum(a,b),maximum(c,d));}
109 template <
class T>
inline const T minimum(T a,T b,T c,T d) {
return minimum(minimum(a,b),minimum(c,d));}
111 template <
class T>
inline const T sqr(T a) {
return a*a;}
113 template <
class T>
inline const T clamped(T v,T lo,T hi) {
return (v<lo ? lo : (v>hi ? hi : v));}
115 template <
class T>
inline void clamp(T& v,T lo,T hi) {v=(v<lo ? lo : (v>hi ? hi : v));}
117 template <
class T>
inline void exchange(T& a,T& b) {
const T x(a);a=b;b=x;}
119 extern void fatal_error(
const char*);
121 inline void fatal_error(
const std::string& s)
123 fatal_error(s.c_str());
126 extern void fatal_internal_error(
const char* src_file,uint src_line);
128 extern void constraint_violation(
const char* test,
const char* src_file,uint src_line);
129 #define constraint(TEST) {if (!TEST) {constraint_violation(#TEST,__FILE__,__LINE__);}}