00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef __MUDBOXSDK_MUDBOX_H__
00016 #define __MUDBOXSDK_MUDBOX_H__
00017
00018 #pragma once
00019
00020 #ifdef _WIN32
00021 #pragma warning( disable : 4251 )
00022 #endif
00023
00024
00025
00026
00027
00028
00029 #include <stdlib.h>
00030 #include <stdio.h>
00031 #ifdef _WIN32
00032 #include <intrin.h>
00033 #endif
00034
00035 #if defined(JAMBUILD)
00036 #include <Mudbox/dllinterface.h>
00037 #else
00038 #include "dllinterface.h"
00039 #endif
00040
00041
00042 #ifdef _DEBUG
00043 #ifndef MB_DEBUG
00044 #define MB_DEBUG
00045 #endif
00046 #endif
00047
00048
00049 #define MB_SDK_VERSION_STRING "2.0.0"
00050
00051
00052
00053
00054
00055
00056
00057 #define MB_SDK_VERSION 0x00020000
00058
00059 #define MB_SDK_VERSION_CHECK(major, minor, patch) ((major<<16)|(minor<<8)|(patch))
00060
00061
00062
00063
00064
00065 #ifndef MB_ASSERT
00066 #if defined(MB_DEBUG)
00067 #if defined(_WIN32)
00068 #define MB_ASSERT( condition ) { if (!(condition)&&mudbox::AssertFailed( __FILE__, __LINE__, #condition, "" )) __debugbreak(); }
00069 #else
00070 #define MB_ASSERT( condition ) { if (!(condition)) mudbox::AssertFailed( __FILE__, __LINE__, #condition, "" ); }
00071 #endif
00072 #else
00073 #define MB_ASSERT( condition ) {}
00074 #endif
00075 #endif
00076 #ifndef MB_VERIFY
00077 #ifdef MB_DEBUG
00078 #define MB_VERIFY( condition ) MB_ASSERT( condition )
00079 #else
00080 #define MB_VERIFY( condition ) { bool b___ = condition; b___; }
00081 #endif
00082 #endif
00083
00084
00085 #ifndef MB_VERIFY_EQ
00086 #ifdef MB_DEBUG
00087 #define MB_VERIFY_EQ( condition_, value_ ) MB_ASSERT( (condition_) == (value_) )
00088 #else
00089 #define MB_VERIFY_EQ( condition_, value_ ) (condition_)
00090 #endif
00091 #endif
00092
00093 #ifndef MB_VERIFY_TRUE
00094 #ifdef MB_DEBUG
00095 #define MB_VERIFY_TRUE( condition_ ) MB_ASSERT( (condition_) )
00096 #else
00097 #define MB_VERIFY_TRUE( condition_ ) (condition_)
00098 #endif
00099 #endif
00100
00101 #define MB_ONBUG( condition ) MB_ASSERT( !(condition) ); if ( condition )
00102 #define MB_SAFELY( condition ) MB_ASSERT( condition ); if ( condition )
00103
00104 #ifndef MB_DEBUG
00105 #define QT_NO_DEBUG_OUTPUT
00106 #endif
00107
00108 #if defined( MB_TEST ) || defined( MB_DEBUG )
00109
00110 #if defined(_MSC_VER)
00111 #define MB_TIMER( name ) static int ____iTimerIndex = -1; mudbox::Timer ____cTimer( __FUNCTION__" - "##name, ____iTimerIndex );
00112 #else
00113 #define MB_TIMER( name ) static int ____iTimerIndex = -1; mudbox::Timer ____cTimer( __FILE__ " - " name, ____iTimerIndex );
00114 #endif
00115
00116 #else
00117 #define MB_TIMER( name ) ;
00118 #endif
00119 #if defined(__GNUC__)
00120 #define MB_ERROR throw (new mudbox::Error( "", mudbox::Error::codeUnspecified, __PRETTY_FUNCTION__, __FILE__, __LINE__ ))->Format
00121 #define MB_ERRORQ(s) throw new mudbox::Error( s, mudbox::Error::codeUnspecified, __PRETTY_FUNCTION__, __FILE__, __LINE__ )
00122 #else
00123 #define MB_ERROR throw (new mudbox::Error( "", mudbox::Error::codeUnspecified, __FUNCTION__, __FILE__, __LINE__ ))->Format
00124 #define MB_ERRORQ(s) throw new mudbox::Error( s, mudbox::Error::codeUnspecified, __FUNCTION__, __FILE__, __LINE__ )
00125 #endif
00126
00127 #define MB_PLUGIN( name, description, author, url, initializer ) mudbox::Plugin __myplugin( name, description, author, url, __DATE__" "__TIME__, initializer );
00128
00129 #if defined(QT_VERSION) || defined(MB_USE_QT)
00130
00131 #include "MudBoxX11Clean.h"
00132
00133
00134
00135
00136 #include <QtCore/QString>
00137 #include <QtGui/QLabel>
00138 #include <QtCore/QFileInfoList>
00139 #endif
00140
00141
00142 #undef MessageBox
00143
00144 #ifndef _MSC_VER
00145 #ifndef __forceinline
00146 #define __forceinline inline
00147 #endif
00148 #endif
00149
00150 #if defined(_MSC_VER) || defined(__INTEL_COMPILER)
00151
00152 #define __MUDBOX_HAS_OPENMP_LIB__ 1
00153 #endif
00154
00155 #if (__GNUC__ >= 4) && (__GNUC_MINOR__ >= 2)
00156
00157 #define __MUDBOX_HAS_OPENMP_LIB__ 1
00158 #endif
00159
00160 class QColor;
00161 class QImage;
00162 class QString;
00163 class QWidget;
00164 class XMesh;
00165 class XSubdivisionLevel;
00166 class Manipulator;
00167
00168 namespace mudbox
00169 {
00170 class AttributeWidget;
00171 class BrushOperation;
00172
00173
00174 typedef long long int64;
00175 typedef unsigned long long uint64;
00176
00177 template <typename type> class Array;
00178 template <typename type> class Store;
00179
00180
00181 template < typename type >
00182 inline type Min( type a, type b ) { return a < b ? a : b; };
00183 template < typename type >
00184 inline type Max( type a, type b ) { return a > b ? a : b; };
00185 bool MBDLL_DECL AssertFailed( const char *sSourceFile, int iSourceLine, const char *sCondition, const char *sMessage );
00186
00187 float MBDLL_DECL Modf( float value );
00188 };
00189
00190
00191 #if defined(JAMBUILD)
00192 #include <Mudbox/i18n.h>
00193 #include <Mudbox/error.h>
00194 #include <Mudbox/array.h>
00195 #include <Mudbox/node.h>
00196 #include <Mudbox/stream.h>
00197 #include <Mudbox/plugin.h>
00198 #include <Mudbox/treenode.h>
00199 #include <Mudbox/math.h>
00200 #include <Mudbox/topology.h>
00201 #include <Mudbox/layer.h>
00202 #include <Mudbox/mesh.h>
00203 #include <Mudbox/preferences.h>
00204 #include <Mudbox/quadturtle.h>
00205 #include <Mudbox/tray.h>
00206 #include <Mudbox/transformation.h>
00207 #include <Mudbox/image.h>
00208 #include <Mudbox/imagePlane.h>
00209 #include <Mudbox/material.h>
00210 #include <Mudbox/renderer.h>
00211 #include <Mudbox/subdivision.h>
00212 #include <Mudbox/geometry.h>
00213 #include <Mudbox/light.h>
00214 #include <Mudbox/camera.h>
00215 #include <Mudbox/curve.h>
00216 #include <Mudbox/scene.h>
00217 #include <Mudbox/interface.h>
00218 #include <Mudbox/kernel.h>
00219 #include <Mudbox/importexport.h>
00220 #include <Mudbox/operation.h>
00221 #include <Mudbox/viewport.h>
00222 #include <Mudbox/selectionset.h>
00223 #include <Mudbox/nurbs.h>
00224 #include <Mudbox/brush.h>
00225 #include <Mudbox/brushmask.h>
00226 #include <Mudbox/ConvolutionKernel.h>
00227 #include <Mudbox/ImageFilter.h>
00228 #include <Mudbox/xref.h>
00229 #include <Mudbox/SSE.h>
00230 #include <Mudbox/UnitTest.h>
00231
00232 #else
00233 #include "i18n.h"
00234 #include "error.h"
00235 #include "array.h"
00236 #include "node.h"
00237 #include "stream.h"
00238 #include "plugin.h"
00239 #include "treenode.h"
00240 #include "math.h"
00241 #include "topology.h"
00242 #include "layer.h"
00243 #include "mesh.h"
00244 #include "preferences.h"
00245 #include "quadturtle.h"
00246 #include "tray.h"
00247 #include "transformation.h"
00248 #include "image.h"
00249 #include "imagePlane.h"
00250 #include "material.h"
00251 #include "renderer.h"
00252 #include "subdivision.h"
00253 #include "geometry.h"
00254 #include "light.h"
00255 #include "camera.h"
00256 #include "curve.h"
00257 #include "scene.h"
00258 #include "interface.h"
00259 #include "kernel.h"
00260 #include "importexport.h"
00261 #include "operation.h"
00262 #include "viewport.h"
00263 #include "selectionset.h"
00264 #include "nurbs.h"
00265 #include "brush.h"
00266 #include "brushmask.h"
00267 #include "ConvolutionKernel.h"
00268 #include "ImageFilter.h"
00269 #include "xref.h"
00270 #include "SSE.h"
00271 #include "UnitTest.h"
00272
00273 #endif
00274
00275 #ifdef QT_VERSION
00276 #if defined(JAMBUILD)
00277 #include <Mudbox/widgets.h>
00278 #else
00279 #include "widgets.h"
00280 #endif
00281 #endif
00282
00283 #ifdef MB_DEBUG
00284 #define MB_CHECK_GL_ERROR Kernel()->GLCheckError( __FILE__, __FUNCTION__, __LINE__ );
00285 #define MB_CHECK_GL_STATES Kernel()->GLCheckStates( __FILE__, __FUNCTION__, __LINE__ );
00286 #define MB_CHECK_CG_ERROR {CGerror error;\
00287 const char* const lastErrorString = cgGetLastErrorString(&error); \
00288 if( error != CG_NO_ERROR ) Kernel()->Log(NTRQ("Cg error: '%1'").arg(lastErrorString));}
00289 #else
00290 #define MB_CHECK_GL_ERROR
00291 #define MB_CHECK_GL_STATES
00292 #define MB_CHECK_CG_ERROR
00293 #endif
00294
00296 #define MB_SDN( a ) if( a ) { delete a; a = 0; };
00297
00298 #ifdef PLUGIN
00299 #undef DLL
00300 #undef PLUGIN
00301 #endif
00302
00303 #endif