CompositeViewer::CompositeViewer(osg::ArgumentParser& arguments) { constructorInit(); arguments.getApplicationUsage()->addCommandLineOption("--SingleThreaded","Select SingleThreaded threading model for viewer."); arguments.getApplicationUsage()->addCommandLineOption("--CullDrawThreadPerContext","Select CullDrawThreadPerContext threading model for viewer."); arguments.getApplicationUsage()->addCommandLineOption("--DrawThreadPerContext","Select DrawThreadPerContext threading model for viewer."); arguments.getApplicationUsage()->addCommandLineOption("--CullThreadPerCameraDrawThreadPerContext","Select CullThreadPerCameraDrawThreadPerContext threading model for viewer."); arguments.getApplicationUsage()->addCommandLineOption("--run-on-demand","Set the run methods frame rate management to only rendering frames when required."); arguments.getApplicationUsage()->addCommandLineOption("--run-continuous","Set the run methods frame rate management to rendering frames continuously."); arguments.getApplicationUsage()->addCommandLineOption("--run-max-frame-rate","Set the run methods maximum permissable frame rate, 0.0 is default and switching off frame rate capping."); std::string filename; bool readConfig = false; while (arguments.read("-c",filename)) { readConfig = readConfiguration(filename) || readConfig; } while (arguments.read("--SingleThreaded")) setThreadingModel(SingleThreaded); while (arguments.read("--CullDrawThreadPerContext")) setThreadingModel(CullDrawThreadPerContext); while (arguments.read("--DrawThreadPerContext")) setThreadingModel(DrawThreadPerContext); while (arguments.read("--CullThreadPerCameraDrawThreadPerContext")) setThreadingModel(CullThreadPerCameraDrawThreadPerContext); while(arguments.read("--run-on-demand")) { setRunFrameScheme(ON_DEMAND); } while(arguments.read("--run-continuous")) { setRunFrameScheme(CONTINUOUS); } double runMaxFrameRate; while(arguments.read("--run-max-frame-rate", runMaxFrameRate)) { setRunMaxFrameRate(runMaxFrameRate); } osg::DisplaySettings::instance()->readCommandLine(arguments); osgDB::readCommandLine(arguments); }
Viewer::Viewer(osg::ArgumentParser& arguments) { _viewerBase = this; constructorInit(); // Add help for command-line options read here arguments.getApplicationUsage()->addCommandLineOption("--SingleThreaded","Select SingleThreaded threading model for viewer."); arguments.getApplicationUsage()->addCommandLineOption("--CullDrawThreadPerContext","Select CullDrawThreadPerContext threading model for viewer."); arguments.getApplicationUsage()->addCommandLineOption("--DrawThreadPerContext","Select DrawThreadPerContext threading model for viewer."); arguments.getApplicationUsage()->addCommandLineOption("--CullThreadPerCameraDrawThreadPerContext","Select CullThreadPerCameraDrawThreadPerContext threading model for viewer."); arguments.getApplicationUsage()->addCommandLineOption("--clear-color <color>","Set the background color of the viewer in the form \"r,g,b[,a]\"."); arguments.getApplicationUsage()->addCommandLineOption("--screen <num>","Set the screen to use when multiple screens are present."); arguments.getApplicationUsage()->addCommandLineOption("--window <x y w h>","Set the position (x,y) and size (w,h) of the viewer window."); // FIXME: Uncomment these lines when the options have been documented properly //arguments.getApplicationUsage()->addCommandLineOption("--3d-sd",""); //arguments.getApplicationUsage()->addCommandLineOption("--panoramic-sd",""); //arguments.getApplicationUsage()->addCommandLineOption("--radius",""); //arguments.getApplicationUsage()->addCommandLineOption("--collar",""); //arguments.getApplicationUsage()->addCommandLineOption("--im",""); std::string filename; bool readConfig = false; while (arguments.read("-c",filename)) { readConfig = readConfiguration(filename) || readConfig; } while (arguments.read("--SingleThreaded")) setThreadingModel(SingleThreaded); while (arguments.read("--CullDrawThreadPerContext")) setThreadingModel(CullDrawThreadPerContext); while (arguments.read("--DrawThreadPerContext")) setThreadingModel(DrawThreadPerContext); while (arguments.read("--CullThreadPerCameraDrawThreadPerContext")) setThreadingModel(CullThreadPerCameraDrawThreadPerContext); osg::DisplaySettings::instance()->readCommandLine(arguments); osgDB::readCommandLine(arguments); std::string colorStr; while (arguments.read("--clear-color",colorStr)) { float r, g, b; float a = 1.0f; int cnt = sscanf( colorStr.c_str(), "%f,%f,%f,%f", &r, &g, &b, &a ); if( cnt==3 || cnt==4 ) getCamera()->setClearColor( osg::Vec4(r,g,b,a) ); else osg::notify(osg::WARN)<<"Invalid clear color \""<<colorStr<<"\""<<std::endl; } int screenNum = -1; while (arguments.read("--screen",screenNum)) {} int x = -1, y = -1, width = -1, height = -1; while (arguments.read("--window",x,y,width,height)) {} bool ss3d = false; bool wowvx20 = false; bool wowvx42 = false; if ((wowvx20=arguments.read("--wowvx-20")) || (wowvx42=arguments.read("--wowvx-42")) || arguments.read("--wowvx")) { int wow_content=0x02, wow_factor=0x40, wow_offset=0x80; float wow_Zd, wow_vz, wow_M, wow_C; if (wowvx20){ wow_Zd = 0.459813f; wow_vz = 6.180772f; wow_M = -1586.34f; wow_C = 127.5f; } else if (wowvx42){ wow_Zd = 0.467481f; wow_vz = 7.655192f; wow_M = -1960.37f; wow_C = 127.5f; } while (arguments.read("--wow-content",wow_content)) {} while (arguments.read("--wow-factor",wow_factor)) {} while (arguments.read("--wow-offset",wow_offset)) {} while (arguments.read("--wow-zd",wow_Zd)) {} while (arguments.read("--wow-vz",wow_vz)) {} while (arguments.read("--wow-M",wow_M)) {} while (arguments.read("--wow-C",wow_C)) {} if (screenNum<0) screenNum = 0; setUpViewForWoWVxDisplay( screenNum, wow_content, wow_factor, wow_offset, wow_Zd, wow_vz, wow_M, wow_C ); } else if ((ss3d=arguments.read("--3d-sd")) || arguments.read("--panoramic-sd")) { double radius = 1.0; while (arguments.read("--radius",radius)) {} double collar = 0.45; while (arguments.read("--collar",collar)) {} std::string intensityMapFilename; while (arguments.read("--im",intensityMapFilename)) {} osg::ref_ptr<osg::Image> intensityMap = intensityMapFilename.empty() ? 0 : osgDB::readImageFile(intensityMapFilename); if (screenNum<0) screenNum = 0; if (ss3d) { setThreadingModel(SingleThreaded); setUpViewFor3DSphericalDisplay(radius, collar, screenNum, intensityMap.get()); } else { setThreadingModel(SingleThreaded); setUpViewForPanoramicSphericalDisplay(radius, collar, screenNum, intensityMap.get()); } } else if (width>0 && height>0) { if (screenNum>=0) setUpViewInWindow(x, y, width, height, screenNum); else setUpViewInWindow(x,y,width,height); } else if (screenNum>=0) { setUpViewOnSingleScreen(screenNum); } }
Viewer::Viewer(osg::ArgumentParser& arguments) { _viewerBase = this; constructorInit(); // Add help for command-line options read here arguments.getApplicationUsage()->addCommandLineOption("--SingleThreaded","Select SingleThreaded threading model for viewer."); arguments.getApplicationUsage()->addCommandLineOption("--CullDrawThreadPerContext","Select CullDrawThreadPerContext threading model for viewer."); arguments.getApplicationUsage()->addCommandLineOption("--DrawThreadPerContext","Select DrawThreadPerContext threading model for viewer."); arguments.getApplicationUsage()->addCommandLineOption("--CullThreadPerCameraDrawThreadPerContext","Select CullThreadPerCameraDrawThreadPerContext threading model for viewer."); arguments.getApplicationUsage()->addCommandLineOption("--clear-color <color>","Set the background color of the viewer in the form \"r,g,b[,a]\"."); arguments.getApplicationUsage()->addCommandLineOption("--screen <num>","Set the screen to use when multiple screens are present."); arguments.getApplicationUsage()->addCommandLineOption("--window <x y w h>","Set the position (x,y) and size (w,h) of the viewer window."); arguments.getApplicationUsage()->addCommandLineOption("--run-on-demand","Set the run methods frame rate management to only rendering frames when required."); arguments.getApplicationUsage()->addCommandLineOption("--run-continuous","Set the run methods frame rate management to rendering frames continuously."); arguments.getApplicationUsage()->addCommandLineOption("--run-max-frame-rate","Set the run methods maximum permissible frame rate, 0.0 is default and switching off frame rate capping."); arguments.getApplicationUsage()->addCommandLineOption("--enable-object-cache","Enable caching of objects, images, etc."); // FIXME: Uncomment these lines when the options have been documented properly //arguments.getApplicationUsage()->addCommandLineOption("--3d-sd",""); //arguments.getApplicationUsage()->addCommandLineOption("--panoramic-sd",""); //arguments.getApplicationUsage()->addCommandLineOption("--radius",""); //arguments.getApplicationUsage()->addCommandLineOption("--collar",""); //arguments.getApplicationUsage()->addCommandLineOption("--im",""); if (arguments.read("--ico")) { setIncrementalCompileOperation(new osgUtil::IncrementalCompileOperation()); } std::string filename; bool readConfig = false; while (arguments.read("-c",filename)) { readConfig = readConfiguration(filename) || readConfig; } // Enable caching? while (arguments.read("--enable-object-cache")) { if (osgDB::Registry::instance()->getOptions()==0) osgDB::Registry::instance()->setOptions(new osgDB::Options()); osgDB::Registry::instance()->getOptions()->setObjectCacheHint(osgDB::Options::CACHE_ALL); } while (arguments.read("--SingleThreaded")) setThreadingModel(SingleThreaded); while (arguments.read("--CullDrawThreadPerContext")) setThreadingModel(CullDrawThreadPerContext); while (arguments.read("--DrawThreadPerContext")) setThreadingModel(DrawThreadPerContext); while (arguments.read("--CullThreadPerCameraDrawThreadPerContext")) setThreadingModel(CullThreadPerCameraDrawThreadPerContext); osg::DisplaySettings::instance()->readCommandLine(arguments); osgDB::readCommandLine(arguments); std::string colorStr; while (arguments.read("--clear-color",colorStr)) { float r, g, b; float a = 1.0f; int cnt = sscanf( colorStr.c_str(), "%f,%f,%f,%f", &r, &g, &b, &a ); if( cnt==3 || cnt==4 ) { getCamera()->setClearColor( osg::Vec4(r,g,b,a) ); } else { OSG_WARN<<"Invalid clear color \""<<colorStr<<"\""<<std::endl; } } while(arguments.read("--run-on-demand")) { setRunFrameScheme(ON_DEMAND); } while(arguments.read("--run-continuous")) { setRunFrameScheme(CONTINUOUS); } double runMaxFrameRate; while(arguments.read("--run-max-frame-rate", runMaxFrameRate)) { setRunMaxFrameRate(runMaxFrameRate); } int screenNum = -1; while (arguments.read("--screen",screenNum)) {} int x = -1, y = -1, width = -1, height = -1; while (arguments.read("--window",x,y,width,height)) {} bool ss3d = false; bool wowvx20 = false; bool wowvx42 = false; if ((wowvx20=arguments.read("--wowvx-20")) || (wowvx42=arguments.read("--wowvx-42")) || arguments.read("--wowvx")) { osg::ref_ptr<WoWVxDisplay> wow = new WoWVxDisplay; if (screenNum>=0) wow->setScreenNum(screenNum); if (wowvx20) wow->WoWVx20(); if (wowvx42) wow->WoWVx42(); unsigned int c; float v; while (arguments.read("--wow-content",c)) { wow->setContent(c); } while (arguments.read("--wow-factor",c)) { wow->setFactor(c); } while (arguments.read("--wow-offset",c)) { wow->setOffset(c); } while (arguments.read("--wow-zd",v)) { wow->setDisparityZD(v); } while (arguments.read("--wow-vz",v)) { wow->setDisparityVZ(v); } while (arguments.read("--wow-M",v)) { wow->setDisparityM(v); } while (arguments.read("--wow-C",v)) { wow->setDisparityC(v); } apply(wow.get()); } else if ((ss3d=arguments.read("--3d-sd")) || arguments.read("--panoramic-sd")) { double radius = 1.0; while (arguments.read("--radius",radius)) {} double collar = 0.45; while (arguments.read("--collar",collar)) {} std::string intensityMapFilename; while (arguments.read("--im",intensityMapFilename)) {} osg::ref_ptr<osg::Image> intensityMap = intensityMapFilename.empty() ? 0 : osgDB::readImageFile(intensityMapFilename); if (screenNum<0) screenNum = 0; if (ss3d) { setThreadingModel(SingleThreaded); setUpViewFor3DSphericalDisplay(radius, collar, screenNum, intensityMap.get()); } else { setThreadingModel(SingleThreaded); setUpViewForPanoramicSphericalDisplay(radius, collar, screenNum, intensityMap.get()); } } else if (width>0 && height>0) { if (screenNum>=0) setUpViewInWindow(x, y, width, height, screenNum); else setUpViewInWindow(x,y,width,height); } else if (screenNum>=0) { setUpViewOnSingleScreen(screenNum); } }
void ossimPlanetQtApplication::addCommandLineOptions(osg::ArgumentParser& args) { args.getApplicationUsage()->setApplicationName(args.getApplicationName()); args.getApplicationUsage()->setDescription(args.getApplicationName()+" is the test application for accessing wms servers."); args.getApplicationUsage()->setCommandLineUsage(args.getApplicationName()+" [options] ..."); args.getApplicationUsage()->addCommandLineOption("-h or --help","Display this information"); args.getApplicationUsage()->addCommandLineOption("--enable-flatland", "Uses the flat land model"); args.getApplicationUsage()->addCommandLineOption("--disable-elevation", "Uses elevation"); args.getApplicationUsage()->addCommandLineOption("--elev-estimation", "number of levels to estimate. A value of 4 will say 2^4 or 16 number of rows and cols."); args.getApplicationUsage()->addCommandLineOption("--split-metric", "set Split Metric Ratio. Default is 3.0"); args.getApplicationUsage()->addCommandLineOption("--elev-patchsize", "number of points in each chunk."); args.getApplicationUsage()->addCommandLineOption("--elev-exag", "Multiplier for the height values"); args.getApplicationUsage()->addCommandLineOption("--elev-cache", "Cache directory for elevation"); args.getApplicationUsage()->addCommandLineOption("--level-detail", "Maximum level of detail to split to. Default is 16 levels"); args.getApplicationUsage()->addCommandLineOption("--enable-hud", "Enables the lat lon read outs"); args.getApplicationUsage()->addCommandLineOption("--disable-hud", "Disable the lat lon read outs"); args.getApplicationUsage()->addCommandLineOption("--disable-mipmap", "Doesn't use MipMapping"); args.getApplicationUsage()->addCommandLineOption("--enable-mipmap", "Use MipMapping"); args.getApplicationUsage()->addCommandLineOption("--wms-timeout", "Time out for WMS get Capabiltites for the WmsDialog specified in seconds"); }