Application::Application(void): main_frame(), ec(), ecm(), fc(), evc(), evcm(), fcm(), navigator_manager(), graphic_factory(), layer_tree(), plugin_map(), three_dimension_camera_controller(NULL), two_dimension_camera_controller(NULL), dc(NULL), plugin_running(false), srs() { //for being able to load all type of images wxInitAllImageHandlers(); #ifdef WIN32 //This is to activate memory-leaks detection _CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); #endif wmsInitialize(); application_time = ApplicationTime::GetInstance(); application_time->Off(); cpw::IdGenerator::SetNamespace(GetMACaddress()); #ifdef WIN32 SetThreadAffinityMask(GetCurrentThread(), 0); #endif }
bool ossimPlanetQtApplication::initWithArgs(int& argc, char** argv) { osg::Texture::setMinimumNumberOfTextureObjectsToRetainInCache(0); osg::Drawable::setMinimumNumberOfDisplayListsToRetainInCache(0); //osg::DisplaySettings::instance()->setMaxNumberOfGraphicsContexts(1); if(getMaximumFiles() < 1024) { setMaximumFiles(1024); } // setMaximumFiles(25); //osgDB::DatabasePager* databasePager = osgDB::Registry::instance()->getOrCreateDatabasePager(); ossimArgumentParser argumentParser(&argc, argv); wmsInitialize(); ossimInit::instance()->setPluginLoaderEnabledFlag(false); ossimInit::instance()->initialize(argumentParser); osg::ArgumentParser arguments(&argumentParser.argc(),argumentParser.argv()); std::string tempString; osg::ArgumentParser::Parameter stringParam(tempString); addCommandLineOptions(arguments); if(arguments.read("-h") || arguments.read("--help")) { arguments.getApplicationUsage()->write(std::cout); return false; } // if(arguments.read("--enable-flatland")) // { // theLandType = ossimPlanetLandType_FLAT; // } if(arguments.read("--wms-timeout", stringParam)) { setWmsNetworkTimeoutInSeconds(ossimString(tempString).toDouble()); } if(arguments.read("--disable-elevation")) { // theElevEnabled = false; writePreferenceSetting("elev-flag", "false"); } if(arguments.read("--elev-estimation", stringParam)) { // theElevEstimate = 1<<ossimString(tempString.c_str()).toUInt32(); writePreferenceSetting("elev-patchsize", ossimString::toString(1<<ossimString(tempString.c_str()).toUInt32()).c_str()); } if(arguments.read("--elev-patchsize", stringParam)) { writePreferenceSetting("elev-patchsize", tempString.c_str()); // theElevEstimate = ossimString(tempString.c_str()).toUInt32(); } if(arguments.read("--elev-exag", stringParam)) { // theElevExag = ossimString(tempString.c_str()).toDouble(); writePreferenceSetting("elev-exag", tempString.c_str()); } if(arguments.read("--split-metric", stringParam)) { // theSplitMetricRatio = ossimString(tempString.c_str()).toDouble(); writePreferenceSetting("split-metric", tempString.c_str()); } if(arguments.read("--elev-cache", stringParam)) { // theElevCache = tempString.c_str(); writePreferenceSetting("elev-cache", tempString.c_str()); } if(arguments.read("--level-detail", stringParam)) { // theLevelOfDetail = ossimString(tempString.c_str()).toUInt32(); writePreferenceSetting("level-detail", tempString.c_str()); } if(arguments.read("--enable-hud")) { writePreferenceSetting("hud-flag", "true"); // theHudEnabled = true; } else if(arguments.read("--disable-hud")) { writePreferenceSetting("hud-flag", "false"); } // archive mapping enabled if( arguments.read("--enable-archive-mapping-enabled") ) { writePreferenceSetting("archive-mapping-enabled", "true"); } else if( arguments.read("--disable-archive-mapping-enabled") ) { writePreferenceSetting("archive-mapping-enabled", "false"); } if(arguments.read("--disable-mipmap")) { writePreferenceSetting("mipmap-flag", "false"); // theMipMapping = false; } if(arguments.read("--enable-mipmap")) { writePreferenceSetting("mipmap-flag", "true"); // theMipMapping = false; } arguments.reportRemainingOptionsAsUnrecognized(); if (arguments.errors()) { arguments.writeErrorMessages(std::cout); } ossimFilename currentPath = ossimFilename(argv[0]).path(); ossimFilename imageBundle; ossimFilename referenceImageBundle; ossimInit::instance()->setPluginLoaderEnabledFlag(true); // ossimString paths = ossimEnvironmentUtility::instance()->getEnvironmentVariable("OSSIM_ELEVATION_PATH"); // std::vector<ossimString> pathArray; // ossimString pathSeparator = ":"; osgDB::Registry::instance()->getDataFilePathList().push_back(theUserSupportDirectory.toStdString()); ossimFilename installDir = ossimEnvironmentUtility::instance()->getInstalledOssimSupportDir(); if(installDir.exists()) { osgDB::Registry::instance()->getDataFilePathList().push_back(installDir); } ossimFilename userDir = ossimEnvironmentUtility::instance()->getUserOssimSupportDir(); ossimFilename userImageDir = userDir.dirCat("images"); ossimFilename userDataDir = userDir.dirCat("data"); ossimFilename userImageReferenceDir = userImageDir.dirCat("reference"); ossimFilename installImageDir = installDir.dirCat("images"); ossimFilename installDataDir = installDir.dirCat("data"); ossimFilename instalImageReferenceDir = installImageDir.dirCat("reference"); userDir = userDir.dirCat("images"); userDir = userDir.dirCat("reference"); installDir = installDir.dirCat("images"); installDir = installDir.dirCat("reference"); // tmp drb // ossimFilename userStatePlaneFile = userDataDir.dirCat("state_plane.csv"); // ossimFilename installStatePlaneFile = installDataDir.dirCat("state_plane.csv"); // if(userStatePlaneFile.exists()) // { // allow state plane to override from user directory any installed state plane file. // ossimStatePlaneProjectionFactory::instance()->addCsvFile(userStatePlaneFile); // } #ifdef __MACOSX__ // test for a bundle // ossimFilename contentsFolder = currentPath.path(); // Check for embedded geoid grid nder the resource folder Resources/egm96.grd ossimFilename resourceFolder = contentsFolder.dirCat("Resources"); ossimFilename geoid1996File = resourceFolder.dirCat("egm96.grd"); ossimFilename statePlaneFile = resourceFolder.dirCat("state_plane.csv"); if(geoid1996File.exists()) { ossimRefPtr<ossimGeoid> geoid96 = new ossimGeoidEgm96; if(geoid96->open(geoid1996File, OSSIM_BIG_ENDIAN)) { ossimGeoidManager::instance()->addGeoid(geoid96.get()); } } // if(statePlaneFile.exists()) // { // ossimStatePlaneProjectionFactory::instance()->addCsvFile(statePlaneFile); // } // Check for embedded plugins and reference images ossimFilename resources = contentsFolder.dirCat("Resources"); ossimFilename ossimPluginsBundle = contentsFolder.dirCat("plugins"); ossimFilename osgPlugins = contentsFolder.dirCat("osgplugins"); referenceImageBundle = contentsFolder.dirCat("Resources"); imageBundle = referenceImageBundle.dirCat("images"); referenceImageBundle = imageBundle.dirCat("reference"); if(ossimPluginsBundle.exists()) { ossimInit::instance()->loadPlugins(ossimPluginsBundle); } if(osgPlugins.exists()) { osgDB::Registry::instance()->getLibraryFilePathList().push_front(osgPlugins); } if(resources.exists()) { osgDB::Registry::instance()->getDataFilePathList().push_front(resources); osgDB::Registry::instance()->getDataFilePathList().push_front(resources.dirCat("fonts")); } theThemePath = resourceFolder; theThemePath = theThemePath.dirCat("themes"); ossimFilename elevation = resourceFolder.dirCat("elevation"); if(elevation.exists()) { ossimElevManager::instance()->loadElevationPath(elevation); } // addLibraryPath(contentsFolder.dirCat("qtplugins").c_str()); #endif #ifdef WIN32 ossimFilename geoid = currentPath.dirCat("geoid1996"); ossimFilename geoid1996File = geoid.dirCat("egm96.grd"); if(!geoid1996File.exists()) { geoid = currentPath.dirCat("geoids"); geoid = geoid.dirCat("geoid1996"); geoid1996File = geoid.dirCat("egm96.grd"); } if(geoid1996File.exists()) { ossimRefPtr<ossimGeoid> geoid96 = new ossimGeoidEgm96; if(geoid96->open(geoid1996File, OSSIM_BIG_ENDIAN)) { ossimGeoidManager::instance()->addGeoid(geoid96.get()); } } ossimFilename osgPluginsBundle = currentPath.dirCat("osgplugins"); // ossimFilename ossimPluginsBundle = currentPath.dirCat("plugins"); referenceImageBundle = currentPath; imageBundle = referenceImageBundle.dirCat("images"); referenceImageBundle = imageBundle.dirCat("reference"); if(osgPluginsBundle.exists()) { osgDB::Registry::instance()->getLibraryFilePathList().push_back(osgPluginsBundle); } // if(ossimPluginsBundle.exists()) // { // ossimInit::instance()->loadPlugins(ossimPluginsBundle); // } ossimFilename elevation = currentPath.dirCat("elevation"); if(elevation.exists()) { ossimElevManager::instance()->loadElevationPath(elevation); } // pathSeparator = ";"; #endif ossimFilename dataDir = currentPath.dirCat("data"); // tmp drb // ossimFilename statePlane = dataDir.dirCat("state_plane.csv"); // if(statePlane.exists()) // { // ossimStatePlaneProjectionFactory::instance()->addCsvFile(statePlane); //} // we will now initialize any other plugins outside the bundle in standard locations // // if(installStatePlaneFile.exists()) // { // ossimStatePlaneProjectionFactory::instance()->addCsvFile(installStatePlaneFile); // } ossimInit::instance()->initializePlugins(); if(arguments.argc() > 1) { ossimKeywordlist kwl; if(kwl.addFile(arguments.argv()[1])) { osg::ref_ptr<ossimPlanetTextureLayer> layer = ossimPlanetTextureLayerRegistry::instance()->createLayer(kwl.toString()); if(layer.valid()) { layer->resetLookAt(); theReferenceImages.push_front(layer); } } } else { ossimFilename refFiles; if(userDir.exists()) { refFiles = userDir; } else if(installDir.exists()) { refFiles = installDir; } else if(referenceImageBundle.exists()) { refFiles = referenceImageBundle; } if(refFiles.exists()) { ossimDirectory dir; if(dir.open(refFiles)) { ossimFilename file; dir.getFirst(file); do { ossimString ext = file.ext(); if((ext != "ovr")&& (ext != "omd")&& (ext != "geom")&& (ext != "his")) { osg::ref_ptr<ossimPlanetTextureLayer> layer = ossimPlanetTextureLayerRegistry::instance()->createLayer(ossimString(file.c_str())); if(layer.valid()) { layer->resetLookAt(); theReferenceImages.push_front(layer); } } }while(dir.getNext(file)); } } } if(userImageDir.dirCat("compass.png").exists()) { theCompassRing = userImageDir.dirCat("compass.png"); } else if(imageBundle.dirCat("compass.png").exists()) { theCompassRing = imageBundle.dirCat("compass.png"); } else if(installImageDir.dirCat("compassring.png").exists()) { theCompassRing = installImageDir.dirCat("compassring.png"); //theCompassRose = installImageDir.dirCat("compassrose.png"); } else if(userImageDir.dirCat("compassring.png").exists()) { theCompassRing = userImageDir.dirCat("compassring.png"); //theCompassRose = userImageDir.dirCat("compassrose.png"); } else if(imageBundle.dirCat("compassring.png").exists()) { theCompassRing = imageBundle.dirCat("compassring.png"); //theCompassRose = imageBundle.dirCat("compassrose.png"); } else if(installImageDir.dirCat("compassring.png").exists()) { theCompassRing = installImageDir.dirCat("compassring.png"); //theCompassRose = installImageDir.dirCat("compassrose.png"); } if(autoHistogramStretchMode().isEmpty()) { setAutoHistogramStretchMode("Linear Auto Min Max"); } return true; }