int main(int argc, char **argv) { int argparser_state; char *infile_value; char *outfile_value; char *config_file_value; char *clean_str; char *valid_config_lines[MAX_CONFIG_LINE_LEN]; size_t valid_line_num; argparser_state = argparser(argc, argv, &infile_value, &outfile_value, &config_file_value); if (argparser_state) { exit(EXIT_FAILURE); } clean_str = read_whole_str(infile_value); valid_line_num = read_config_lines(config_file_value, valid_config_lines); if (!clean_str) { printf("Not valid infile: %s\n", infile_value); exit(EXIT_FAILURE); } /* Configuration parser */ struct Calibration *calis[valid_line_num]; parse_config(valid_config_lines, valid_line_num, calis); /* Print valid calibration config information*/ print_cali_struct(valid_line_num, calis); /* Do calibrations */ clean_str = multi_cali(clean_str, valid_line_num, calis); printf("\n%s\n", clean_str); /* Save output to file */ write_str_to_file(outfile_value, clean_str); return 0; }
// `Main program' equivalent, creating windows and returning main app frame bool wxOsgApp::OnInit() { // copy wxargs to form we can use with osg std::vector< std::string > arguments; char *argarray[ 100 ]; for( int ii=0; ii<argc; ii++ ) { std::string argument = std::string( wxString( argv[ ii ] ).mb_str() ); arguments.push_back( argument ); } for( unsigned int ii = 0; ii < arguments.size(); ++ii ) { argarray[ ii ] = const_cast< char* >( arguments[ ii ].c_str() ); } int argcount = arguments.size(); // parse arguments if( argcount < 2 ) { std::cout << arguments[ 0 ] << ": requires filename argument." << std::endl; return( false ); } osg::ArgumentParser argparser(&argcount,argarray); flat_mode_ = argparser.read( "--flat" ); const int width = 800; const int treeWidth = 300; const int overallWidth = (width + treeWidth); const int height = 600; // // Create the main osg window MainFrame * frame = new MainFrame( NULL, wxT( "backdropFX wxpick" ), wxPoint( 10, 30 ), wxSize( overallWidth, height ) ); // create tree & edit window _tree = new osgWxTree::TreeControl( frame, wxID_ANY, wxDefaultPosition, wxSize(treeWidth, height), wxTR_DEFAULT_STYLE | wxTR_HAS_BUTTONS | wxTR_ROW_LINES | wxTR_SINGLE ); _tree->Show( true ); // create osg canvas int * attributes = new int[ 7 ]; attributes[ 0 ] = int( WX_GL_DOUBLEBUFFER ); attributes[ 1 ] = WX_GL_RGBA; attributes[ 2 ] = WX_GL_DEPTH_SIZE; attributes[ 3 ] = 8; attributes[ 4 ] = WX_GL_STENCIL_SIZE; attributes[ 5 ] = 8; attributes[ 6 ] = 0; OSGCanvas * canvas = new OSGCanvas( frame, wxID_ANY, wxPoint(treeWidth,0), wxSize( width, height ), wxSUNKEN_BORDER, wxT( "osgviewerWX" ), attributes ); GraphicsWindowWX * gw = new GraphicsWindowWX( canvas ); canvas->SetGraphicsWindow( gw ); // load the scene. osg::ref_ptr< osg::Group > root = new osg::Group; root->setName( "wxpick root" ); osg::ref_ptr< osg::Node > loadedModels = osgDB::readNodeFiles( argparser ); if( loadedModels.valid() ) root->addChild( loadedModels.get() ); // Convert loaded data to use shader composition. { backdropFX::ShaderModuleVisitor smv; smv.setAttachMain( false ); // Use bdfx-main smv.setAttachTransform( false ); // Use bdfx-transform smv.setSupportSunLighting( true ); // Use shaders that light from the Sun backdropFX::convertFFPToShaderModules( root.get(), &smv ); } backdropFXSetUp( root.get(), width, height ); // construct the viewer osg::ref_ptr< osgViewer::Viewer > viewer = new osgViewer::Viewer; viewer->getCamera()->setGraphicsContext( gw ); viewer->getCamera()->setViewport( 0, 0, width, height ); viewerSetUp( *viewer, (double)width / (double)height, root.get() ); viewer->addEventHandler( new osgWxTree::PickHandler( _tree ) ); viewer->addEventHandler( new EffectHandler( _tree ) ); viewer->setThreadingModel( osgViewer::Viewer::SingleThreaded ); // populate the ui control if ( !flat_mode_ ) { // create a full tree or osgWxTree::PopulateTreeControlWithNodeVisitor pt( _tree ); root->accept( pt ); } else { // create a flattened tree osgWxTree::setTreeToFlatGroup( _tree, root.get() ); } frame->SetViewer( viewer.get() ); frame->Show( true ); return( true ); }