void VRML_MODEL_PARSER::Load( const wxString aFilename ) { char line[1024], * text; FILE* file; int LineNum = 0; file = wxFopen( aFilename, wxT( "rt" ) ); if( file == NULL ) { return; } // Switch the locale to standard C (needed to print floating point numbers like 1.3) SetLocaleTo_C_standard(); while( GetLine( file, line, &LineNum, 512 ) ) { text = strtok( line, sep_chars ); if ( text == NULL ) continue; if( stricmp( text, "DEF" ) == 0 || stricmp( text, "Group" ) == 0 ) { while( GetLine( file, line, &LineNum, 512 ) ) { text = strtok( line, sep_chars ); if( text == NULL ) continue; if( *text == '}' ) break; if( stricmp( text, "children" ) == 0 ) { readChildren( file, &LineNum ); } } } } fclose( file ); SetLocaleTo_Default(); // revert to the current locale }
void hotspot::updateParentLocation(float *robot,int candidate){ float xx[4],yy[4]; switch(candidate){ case 0: readChildren(xx,yy,5,0,1,2) ;break; case 1: readChildren(xx,yy,0,1,2,3) ;break; case 2: readChildren(xx,yy,1,2,3,4) ;break; case 3: readChildren(xx,yy,2,3,4,5) ;break; case 4: readChildren(xx,yy,3,4,5,0) ;break; case 5: readChildren(xx,yy,4,5,1,0) ;break; } lineIntesection(robot,xx,yy); }
bool XmlStateTab::load(const QDomElement& elParent) { if (!readOrCreateIdentifier(elParent)) { return false; } mPositions = Top; if (elParent.firstChildElement(QLatin1String("Sky:Bottom")).isElement()) { mPositions = Bottom; } else if (elParent.firstChildElement(QLatin1String("Sky:Left")).isElement()) { mPositions = Left; } else if (elParent.firstChildElement(QLatin1String("Sky:Right")).isElement()) { mPositions = Right; } else if (!elParent.firstChildElement(QLatin1String("Sky:Top")).isElement()) { return false; } return readChildren(elParent, CTContainers|CTViews); }
bool XmlStateWindow::load(const QDomElement& elParent) { return readOrCreateIdentifier(elParent) && readChildren(elParent, CTContainers); }
bool XmlStateRoot::load(const QDomElement& elParent) { return readChildren(elParent, CTWindows); }
// functions inherited from WRL2NODE bool WRL2TRANSFORM::Read( WRLPROC& proc, WRL2BASE* aTopNode ) { /* * Structure of a Transform node (p.120): * * Transform { * eventIn MFNode addChildren * eventIn MFNode removeChildren * exposedField SFVec3f center 0 0 0 * exposedField MFNode children [] * exposedField SFRotation rotation 0 0 1 0 * exposedField SFVec3f scale 1 1 1 * exposedField SFRotation scaleOrientation 0 0 1 0 * exposedField SFVec3f translation 0 0 0 * field SFVec3f bboxCenter 0 0 0 * field SFVec3f bboxSize 0 0 0 * } */ if( NULL == aTopNode ) { #ifdef DEBUG_VRML2 do { std::ostringstream ostr; ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n"; ostr << " * [BUG] aTopNode is NULL"; wxLogTrace( MASK_VRML, "%s\n", ostr.str().c_str() ); } while( 0 ); #endif return false; } center.x = 0.0; center.y = 0.0; center.z = 0.0; translation = center; bboxCenter = center; bboxSize = center; rotation.x = 0.0; rotation.y = 0.0; rotation.z = 1.0; rotation.w = 0.0; scaleOrientation = rotation; scale.x = 1.0; scale.y = 1.0; scale.z = 1.0; size_t line, column; proc.GetFilePosData( line, column ); char tok = proc.Peek(); if( proc.eof() ) { #if defined( DEBUG_VRML2 ) && ( DEBUG_VRML2 > 1 ) do { std::ostringstream ostr; ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n"; ostr << " * [INFO] bad file format; unexpected eof at line "; ostr << line << ", column " << column; wxLogTrace( MASK_VRML, "%s\n", ostr.str().c_str() ); } while( 0 ); #endif return false; } if( '{' != tok ) { #if defined( DEBUG_VRML2 ) && ( DEBUG_VRML2 > 1 ) do { std::ostringstream ostr; ostr << proc.GetError() << "\n"; ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n"; ostr << " * [INFO] bad file format; expecting '{' but got '" << tok; ostr << "' at line " << line << ", column " << column; wxLogTrace( MASK_VRML, "%s\n", ostr.str().c_str() ); } while( 0 ); #endif return false; } proc.Pop(); std::string glob; while( true ) { if( proc.Peek() == '}' ) { proc.Pop(); break; } if( !proc.ReadName( glob ) ) { #if defined( DEBUG_VRML2 ) && ( DEBUG_VRML2 > 1 ) do { std::ostringstream ostr; ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n"; ostr << proc.GetError(); wxLogTrace( MASK_VRML, "%s\n", ostr.str().c_str() ); } while( 0 ); #endif return false; } // expecting one of: // center // children // rotation // scale // ScaleOrientation // translation proc.GetFilePosData( line, column ); if( !glob.compare( "center" ) ) { if( !proc.ReadSFVec3f( center ) ) { #if defined( DEBUG_VRML2 ) && ( DEBUG_VRML2 > 1 ) do { std::ostringstream ostr; ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n"; ostr << " * [INFO] invalid center at line " << line << ", column "; ostr << column << "\n"; ostr << " * [INFO] file: '" << proc.GetFileName() << "'\n"; ostr << " * [INFO] message: '" << proc.GetError() << "'"; wxLogTrace( MASK_VRML, "%s\n", ostr.str().c_str() ); } while( 0 ); #endif return false; } // convert from 1 VRML Unit = 0.1 inch to 1 VRML Unit = 1 mm center.x *= 2.54; center.y *= 2.54; center.z *= 2.54; } else if( !glob.compare( "rotation" ) ) { if( !proc.ReadSFRotation( rotation ) ) { #if defined( DEBUG_VRML2 ) && ( DEBUG_VRML2 > 1 ) do { std::ostringstream ostr; ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n"; ostr << " * [INFO] invalid rotation at line " << line << ", column "; ostr << column << "\n"; ostr << " * [INFO] file: '" << proc.GetFileName() << "'\n"; ostr << " * [INFO] message: '" << proc.GetError() << "'"; wxLogTrace( MASK_VRML, "%s\n", ostr.str().c_str() ); } while( 0 ); #endif return false; } } else if( !glob.compare( "scale" ) ) { if( !proc.ReadSFVec3f( scale ) ) { #if defined( DEBUG_VRML2 ) && ( DEBUG_VRML2 > 1 ) do { std::ostringstream ostr; ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n"; ostr << " * [INFO] invalid scale at line " << line << ", column "; ostr << column << "\n"; ostr << " * [INFO] file: '" << proc.GetFileName() << "'\n"; ostr << " * [INFO] message: '" << proc.GetError() << "'"; wxLogTrace( MASK_VRML, "%s\n", ostr.str().c_str() ); } while( 0 ); #endif return false; } } else if( !glob.compare( "scaleOrientation" ) ) { if( !proc.ReadSFRotation( scaleOrientation ) ) { #if defined( DEBUG_VRML2 ) && ( DEBUG_VRML2 > 1 ) do { std::ostringstream ostr; ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n"; ostr << " * [INFO] invalid scaleOrientation at line " << line << ", column "; ostr << column << "\n"; ostr << " * [INFO] file: '" << proc.GetFileName() << "'\n"; ostr << " * [INFO] message: '" << proc.GetError() << "'"; wxLogTrace( MASK_VRML, "%s\n", ostr.str().c_str() ); } while( 0 ); #endif return false; } } else if( !glob.compare( "translation" ) ) { if( !proc.ReadSFVec3f( translation ) ) { #if defined( DEBUG_VRML2 ) && ( DEBUG_VRML2 > 1 ) do { std::ostringstream ostr; ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n"; ostr << " * [INFO] invalid translation at line " << line << ", column "; ostr << column << "\n"; ostr << " * [INFO] file: '" << proc.GetFileName() << "'\n"; ostr << " * [INFO] message: '" << proc.GetError() << "'"; wxLogTrace( MASK_VRML, "%s\n", ostr.str().c_str() ); } while( 0 ); #endif return false; } // convert from 1 VRML Unit = 0.1 inch to 1 VRML Unit = 1 mm translation.x *= 2.54; translation.y *= 2.54; translation.z *= 2.54; } else if( !glob.compare( "children" ) ) { if( !readChildren( proc, aTopNode ) ) return false; } else { #if defined( DEBUG_VRML2 ) && ( DEBUG_VRML2 > 1 ) do { std::ostringstream ostr; ostr << __FILE__ << ": " << __FUNCTION__ << ": " << __LINE__ << "\n"; ostr << " * [INFO] bad Transform at line " << line << ", column "; ostr << column << "\n"; ostr << " * [INFO] file: '" << proc.GetFileName() << "'"; wxLogTrace( MASK_VRML, "%s\n", ostr.str().c_str() ); } while( 0 ); #endif return false; } } // while( true ) -- reading contents of Transform{} return true; }
void ZDLInterface::startRead(){ emit readChildren(this); newConfig(); }