ON_BOOL32 ON_3dmProperties::Read(ON_BinaryArchive& file ) { Default(); ON_BOOL32 rc = true; unsigned int tcode; ON__INT64 value; for(;;) { rc = file.BeginRead3dmBigChunk( &tcode, &value ); if ( !rc ) break; switch(tcode) { case TCODE_PROPERTIES_OPENNURBS_VERSION: { int on_version = 0; if ( value > 299912319 || (value != 0 && value < 200101010) ) { ON_ERROR("ON_3dmProperties::Read - TCODE_PROPERTIES_OPENNURBS_VERSION corrupt value"); rc = false; } else { on_version = (int)value; } ON_SetBinaryArchiveOpenNURBSVersion(file,on_version); } break; case TCODE_PROPERTIES_REVISIONHISTORY: // file creation/revision information m_RevisionHistory.Read(file); break; case TCODE_PROPERTIES_NOTES: // file notes m_Notes.Read(file); break; case TCODE_PROPERTIES_PREVIEWIMAGE: // uncompressed preview image m_PreviewImage.ReadUncompressed(file); break; case TCODE_PROPERTIES_COMPRESSED_PREVIEWIMAGE: // compressed preview image m_PreviewImage.ReadCompressed(file); break; case TCODE_PROPERTIES_APPLICATION: // application that created 3dm file m_Application.Read(file); break; default: // information added in future will be skipped by file.EndRead3dmChunk() break; } if ( !file.EndRead3dmChunk() ) { rc = false; break; } if ( TCODE_ENDOFTABLE == tcode ) break; } return rc; }
bool ON_3dmProperties::Read(ON_BinaryArchive& file ) { *this = ON_3dmProperties::Empty; bool rc = true; unsigned int tcode; ON__INT64 value; for(;;) { rc = file.BeginRead3dmBigChunk( &tcode, &value ); if ( !rc ) break; switch(tcode) { case TCODE_PROPERTIES_OPENNURBS_VERSION: { unsigned int opennurbs_version = 0; if ( value > 0 && value <= 0xFFFFFFFFll) { opennurbs_version = (unsigned int)((ON__UINT64)value); } if ( !ON_VersionNumberIsValid(opennurbs_version) && !ON_VersionNumberIsYearMonthDateFormat(file.Archive3dmVersion(),opennurbs_version) ) { ON_ERROR("ON_3dmProperties::Read - TCODE_PROPERTIES_OPENNURBS_VERSION corrupt value"); rc = false; } ON_SetBinaryArchiveOpenNURBSVersion(file,opennurbs_version); } break; case TCODE_PROPERTIES_AS_FILE_NAME: rc = file.ReadString(m_3dmArchiveFullPathName); break; case TCODE_PROPERTIES_REVISIONHISTORY: // file creation/revision information rc = m_RevisionHistory.Read(file); break; case TCODE_PROPERTIES_NOTES: // file notes rc = m_Notes.Read(file); break; case TCODE_PROPERTIES_PREVIEWIMAGE: // uncompressed preview image rc = m_PreviewImage.ReadUncompressed(file); break; case TCODE_PROPERTIES_COMPRESSED_PREVIEWIMAGE: // compressed preview image rc = m_PreviewImage.ReadCompressed(file); break; case TCODE_PROPERTIES_APPLICATION: // application that created 3dm file rc = m_Application.Read(file); break; default: // information added in future will be skipped by file.EndRead3dmChunk() break; } if ( !file.EndRead3dmChunk() ) rc = false; if (!rc) break; if ( TCODE_ENDOFTABLE == tcode ) break; } return rc; }