Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #include <vlCore/VisualizationLibrary.hpp>
00033 #include <vlCore/VLSettings.hpp>
00034 #include <vlCore/FileSystem.hpp>
00035 #include <vlCore/LoadWriterManager.hpp>
00036 #include <vlCore/Log.hpp>
00037 #include <vlCore/Say.hpp>
00038 #include <vlCore/Quaternion.hpp>
00039 #include <vlCore/AABB.hpp>
00040 #include <vlCore/Sphere.hpp>
00041 #include <vlCore/version.hpp>
00042 #include <cassert>
00043
00044 using namespace vl;
00045
00046 #if defined(VL_IO_2D_JPG)
00047 #include "plugins/vlJPG.hpp"
00048 #endif
00049 #if defined(VL_IO_2D_PNG)
00050 #include "plugins/vlPNG.hpp"
00051 #endif
00052 #if defined(VL_IO_2D_TIFF)
00053 #include "plugins/vlTIFF.hpp"
00054 #endif
00055 #if defined(VL_IO_2D_TGA)
00056 #include "plugins/vlTGA.hpp"
00057 #endif
00058 #if defined(VL_IO_2D_DAT)
00059 #include "plugins/vlDAT.hpp"
00060 #endif
00061 #if defined(VL_IO_2D_DDS)
00062 #include "plugins/vlDDS.hpp"
00063 #endif
00064 #if defined(VL_IO_2D_BMP)
00065 #include "plugins/vlBMP.hpp"
00066 #endif
00067 #if defined(VL_IO_2D_DICOM)
00068 #include "plugins/vlDICOM.hpp"
00069 #endif
00070
00071
00072 VL_COMPILE_TIME_CHECK( sizeof(double) == 8 )
00073 VL_COMPILE_TIME_CHECK( sizeof(float) == 4 )
00074 VL_COMPILE_TIME_CHECK( sizeof(long long) == 8 )
00075 VL_COMPILE_TIME_CHECK( sizeof(int) == 4 )
00076 VL_COMPILE_TIME_CHECK( sizeof(short) == 2 )
00077 VL_COMPILE_TIME_CHECK( sizeof(char) == 1 )
00078 VL_COMPILE_TIME_CHECK( sizeof(wchar_t) >= 2 )
00079 VL_COMPILE_TIME_CHECK( sizeof(vec2) == sizeof(Real)*2 )
00080 VL_COMPILE_TIME_CHECK( sizeof(vec3) == sizeof(Real)*3 )
00081 VL_COMPILE_TIME_CHECK( sizeof(vec4) == sizeof(Real)*4 )
00082 VL_COMPILE_TIME_CHECK( sizeof(mat2) == sizeof(Real)*2*2 )
00083 VL_COMPILE_TIME_CHECK( sizeof(mat3) == sizeof(Real)*3*3 )
00084 VL_COMPILE_TIME_CHECK( sizeof(mat4) == sizeof(Real)*4*4 )
00085 VL_COMPILE_TIME_CHECK( sizeof(quat) == sizeof(Real)*4 )
00086 VL_COMPILE_TIME_CHECK( sizeof(AABB) == sizeof(Real)*6 )
00087 VL_COMPILE_TIME_CHECK( sizeof(Sphere) == sizeof(Real)*4 )
00088
00089
00090
00091 namespace
00092 {
00093 std::string gVersionString = String( Say("%n.%n.%n") << VL_Major << VL_Minor << VL_Build ).toStdString();
00094 bool gInitializedCore = false;
00095 };
00096
00097 bool VisualizationLibrary::isCoreInitialized() { return gInitializedCore; }
00098
00099 const char* VisualizationLibrary::versionString() { return gVersionString.c_str(); }
00100
00101
00102
00103 namespace
00104 {
00105 ref<VLSettings> gSettings = NULL;
00106 }
00107 VLSettings* vl::globalSettings()
00108 {
00109 return gSettings.get();
00110 }
00111
00112
00113
00114 namespace
00115 {
00116 ref<Log> gDefaultLogger;
00117 }
00118 void vl::setDefLogger(Log* logger)
00119 {
00120 gDefaultLogger = logger;
00121 }
00122 Log* vl::defLogger()
00123 {
00124 return gDefaultLogger.get();
00125 }
00126
00127
00128
00129 namespace
00130 {
00131 ref<LoadWriterManager> gDefaultLoadWriterManager = NULL;
00132 }
00133 LoadWriterManager* vl::defLoadWriterManager()
00134 {
00135 return gDefaultLoadWriterManager.get();
00136 }
00137 void vl::setDefLoadWriterManager(LoadWriterManager* lwm)
00138 {
00139 gDefaultLoadWriterManager = lwm;
00140 }
00141
00142
00143
00144 namespace
00145 {
00146 ref<FileSystem> gDefaultFileSystem = NULL;;
00147 }
00148 FileSystem* vl::defFileSystem()
00149 {
00150 return gDefaultFileSystem.get();
00151 }
00152 void vl::setDefFileSystem(FileSystem* fs)
00153 {
00154 gDefaultFileSystem = fs;
00155 }
00156
00157 void VisualizationLibrary::initCore(bool log_info)
00158 {
00159 VL_CHECK(!gInitializedCore);
00160 if (gInitializedCore)
00161 {
00162 Log::bug("VisualizationLibrary::initCore(): Visualization Library Core is already initialized!\n");
00163 return;
00164 }
00165
00166
00167
00168
00169 gSettings = new VLSettings;
00170
00171
00172 ref<StandardLog> logger = new StandardLog;
00173 logger->setLogFile( globalSettings()->defaultLogPath() );
00174 setDefLogger( logger.get() );
00175
00176
00177 gDefaultLoadWriterManager = new LoadWriterManager;
00178
00179
00180 gDefaultFileSystem = new FileSystem;
00181 gDefaultFileSystem->directories()->push_back( new DiskDirectory( globalSettings()->defaultDataPath() ) );
00182
00183
00184 #if defined(VL_IO_2D_JPG)
00185 registerLoadWriter(new LoadWriterJPG);
00186 #endif
00187 #if defined(VL_IO_2D_PNG)
00188 registerLoadWriter(new LoadWriterPNG);
00189 #endif
00190 #if defined(VL_IO_2D_TIFF)
00191 registerLoadWriter(new LoadWriterTIFF);
00192 #endif
00193 #if defined(VL_IO_2D_TGA)
00194 registerLoadWriter(new LoadWriterTGA);
00195 #endif
00196 #if defined(VL_IO_2D_BMP)
00197 registerLoadWriter(new LoadWriterBMP);
00198 #endif
00199 #if defined(VL_IO_2D_DDS)
00200 registerLoadWriter(new LoadWriterDDS);
00201 #endif
00202 #if defined(VL_IO_2D_DAT)
00203 registerLoadWriter(new LoadWriterDAT);
00204 #endif
00205 #if defined(VL_IO_2D_DICOM)
00206 registerLoadWriter(new LoadWriterDICOM);
00207 #endif
00208
00209
00210 if (globalSettings()->verbosityLevel() && log_info)
00211 Log::logSystemInfo();
00212
00213
00214 gInitializedCore = true;
00215 }
00216
00217 void VisualizationLibrary::shutdownCore()
00218 {
00219
00220 gInitializedCore = false;
00221
00222
00223
00224
00225 gDefaultLoadWriterManager->loadCallbacks()->clear();
00226 gDefaultLoadWriterManager->writeCallbacks()->clear();
00227 gDefaultLoadWriterManager->loadWriters()->clear();
00228 gDefaultLoadWriterManager = NULL;
00229
00230
00231 gDefaultFileSystem->directories()->clear();
00232 gDefaultFileSystem = NULL;
00233
00234
00235 if (globalSettings()->verbosityLevel())
00236 {
00237 Log::print("Visualization Library shutdown.\n");
00238 }
00239
00240
00241
00242
00243
00244 }
00245
00246 #if defined(_WIN32)
00247
00248 #include <stdio.h>
00249 #include <io.h>
00250 #include <fcntl.h>
00251 #include <commdlg.h>
00252 #endif
00253
00254 void vl::showWin32Console()
00255 {
00256 #if defined(_WIN32)
00257 AllocConsole();
00258
00259 HANDLE handle_out = GetStdHandle(STD_OUTPUT_HANDLE);
00260 int hCrt = _open_osfhandle((intptr_t)handle_out, _O_TEXT);
00261 FILE* hf_out = _fdopen(hCrt, "w");
00262 setvbuf(hf_out, NULL, _IONBF, 1);
00263 *stdout = *hf_out;
00264
00265 handle_out = GetStdHandle(STD_ERROR_HANDLE);
00266 hCrt = _open_osfhandle((intptr_t)handle_out, _O_TEXT);
00267 hf_out = _fdopen(hCrt, "w");
00268 setvbuf(hf_out, NULL, _IONBF, 1);
00269 *stderr = *hf_out;
00270 #endif
00271 }
00272