コード例 #1
0
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;
}
コード例 #2
0
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;
}