fbxsdk/fileio/fbx/fbxio.h Source File
 
 
 
fbxsdk/fileio/fbx/fbxio.h
Go to the documentation of this file.
00001 /****************************************************************************************
00002  
00003    Copyright (C) 2013 Autodesk, Inc.
00004    All rights reserved.
00005  
00006    Use of this software is subject to the terms of the Autodesk license agreement
00007    provided at the time of installation or download, or which otherwise accompanies
00008    this software in either electronic or hard copy form.
00009  
00010 ****************************************************************************************/
00011 
00013 #ifndef _FBXSDK_FILEIO_FBX_IO_H_
00014 #define _FBXSDK_FILEIO_FBX_IO_H_
00015 
00016 #include <fbxsdk/fbxsdk_def.h>
00017 
00018 #include <fbxsdk/core/base/fbxstring.h>
00019 #include <fbxsdk/core/base/fbxtime.h>
00020 #include <fbxsdk/core/base/fbxstatus.h>
00021 
00022 #include <fbxsdk/fbxsdk_nsbegin.h>
00023 
00024 class FbxIO;
00025 class FbxReader;
00026 class FbxWriter;
00027 class FbxFile;
00028 class FbxStream;
00029 class FbxXRefManager;
00030 
00119 //File version numbers
00120 #define FBX_FILE_VERSION_2000           2000    //FBX 2.0
00121 #define FBX_FILE_VERSION_2001           2001    //FBX 2.01
00122 #define FBX_FILE_VERSION_3000           3000    //FBX 3.0
00123 #define FBX_FILE_VERSION_3001           3001    //FBX 3.01
00124 #define FBX_FILE_VERSION_4000           4000    //FBX 4.0
00125 #define FBX_FILE_VERSION_4001           4001    //FBX 4.01
00126 #define FBX_FILE_VERSION_4050           4050    //FBX 4.5
00127 #define FBX_FILE_VERSION_5000           5000    //FBX 5.0
00128 #define FBX_FILE_VERSION_5800           5800    //FBX 5.8
00129 #define FBX_FILE_VERSION_6000           6000    //FBX 6.0
00130 #define FBX_FILE_VERSION_6100           6100    //FBX 6.1 (guarantee compatibility with Autodesk 2010 products)
00131 #define FBX_FILE_VERSION_7000           7000    //Compatible with 7.1, and taken as such
00132 #define FBX_FILE_VERSION_7099           7099    //Compatible with 7.1, and taken as such
00133 #define FBX_FILE_VERSION_7100           7100    //FBX 7.1 (guarantee compatibility with Autodesk 2011 products)
00134 #define FBX_FILE_VERSION_7200           7200    //FBX 7.2 (guarantee compatibility with Autodesk 2012 products)
00135 #define FBX_FILE_VERSION_7300           7300    //FBX 7.3 (guarantee compatibility with Autodesk 2013 products)
00136 #define FBX_FILE_VERSION_7400           7400    //FBX 7.4 (guarantee compatibility with Autodesk 2014 products)
00137 
00138 //Default file version number used when writing new FBX files
00139 #define FBX_DEFAULT_FILE_VERSION        FBX_FILE_VERSION_7400
00140 
00141 //File version compatibility strings
00142 #define FBX_53_MB55_COMPATIBLE          "FBX53_MB55"
00143 #define FBX_60_COMPATIBLE                       "FBX60_MB60"
00144 #define FBX_2005_08_COMPATIBLE          "FBX200508_MB70"
00145 #define FBX_2006_02_COMPATIBLE          "FBX200602_MB75"
00146 #define FBX_2006_08_COMPATIBLE          "FBX200608"
00147 #define FBX_2006_11_COMPATIBLE          "FBX200611"
00148 #define FBX_2009_00_COMPATIBLE          "FBX200900"
00149 #define FBX_2009_00_V7_COMPATIBLE       "FBX200900v7"
00150 #define FBX_2010_00_COMPATIBLE          "FBX201000"
00151 #define FBX_2011_00_COMPATIBLE          "FBX201100"
00152 #define FBX_2012_00_COMPATIBLE          "FBX201200"
00153 #define FBX_2013_00_COMPATIBLE          "FBX201300"
00154 #define FBX_2014_00_COMPATIBLE          "FBX201400"
00155 
00169 FBXSDK_DLL int FbxFileVersionStrToInt(const char* pFileVersion);
00170 
00172 enum
00173 {
00174         FBX_NO_SECTION = -1,    
00175         FBX_MAIN_SECTION,               
00176         FBX_EXTENSION_SECTION_0 
00177 };
00178 
00182 class FBXSDK_DLL FbxIODefaultRenderResolution
00183 {
00184 public:
00186     bool    mIsOK;
00188     FbxString mCameraName;
00190         FbxString mResolutionMode;
00192     double mResolutionW;
00194     double mResolutionH;
00195 
00200 
00201     FbxIODefaultRenderResolution();
00203 
00208 
00209     void Reset();
00211 };
00212 
00217 class FBXSDK_DLL FbxIOFileHeaderInfo
00218 {
00219 public:
00224 
00225     FbxIOFileHeaderInfo();
00226 
00228     virtual ~FbxIOFileHeaderInfo();
00230 
00235 
00237         virtual void                            Reset();
00238 
00242     virtual bool                                ReadExtendedHeaderInformation(FbxIO*);
00244 
00246     FbxIODefaultRenderResolution    mDefaultRenderResolution;
00247 
00249         
00251 
00255     int                         mFileVersion;
00256 
00258     bool                        mCreationTimeStampPresent;
00259 
00261     FbxLocalTime                  mCreationTimeStamp;
00262 
00266     FbxString                     mCreator;                             
00267 
00269         bool                                            mIOPlugin;
00270 
00272     bool                        mPLE;
00274 };
00275 
00318 class FBXSDK_DLL FbxIO
00319 {
00320 public:
00321 
00324     struct FbxAutoResetXRefManager
00325     {
00326         FbxIO*                   mFbx;
00327         const FbxXRefManager*  mXRefManager;
00328 
00330         FbxAutoResetXRefManager(FbxIO* pFbx, FbxXRefManager& pXRefManager)
00331         : mFbx(pFbx)
00332         , mXRefManager(NULL)
00333         {
00334             if( mFbx )
00335             {
00336                 mXRefManager = mFbx->ProjectGetXRefManager();
00337                 mFbx->ProjectSetXRefManager(&pXRefManager);
00338             }
00339         }
00340 
00342         ~FbxAutoResetXRefManager()
00343         {
00344             if( mFbx )
00345             {
00346                 mFbx->ProjectSetXRefManager(mXRefManager);
00347             }
00348         }
00349     };
00350 
00355     static FbxIO* Create(FbxStatus& pStatus){ return FbxNew< FbxIO >(pStatus); }
00356 
00358     FbxIO(FbxStatus& pStatus);
00359 
00361     virtual ~FbxIO();
00362 
00369 
00379     bool ProjectOpen(void* pAddress, FbxULong pMaxLength, FbxReader* pReader, bool pCheckCRC = false, bool pOpenMainSection = true, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL);
00380 
00389     bool ProjectOpen(const char* pName, FbxReader* pReader, bool pCheckCRC = false, bool pOpenMainSection = true, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL);
00390 
00400     bool ProjectOpen(FbxStream* pStream, void* pStreamData, FbxReader* pReader, bool pCheckCRC = false, bool pOpenMainSection = true, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL);
00401 
00410     bool ProjectOpenDirect(const char* pName, FbxReader* pReader, bool pCheckCRC = false, bool pOpenMainSection = true, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL);
00411 
00421     bool ProjectCreate(void* pAddress, FbxUInt pSize, FbxWriter* pWriter, bool pBinary, bool pEncrypted, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL);
00422 
00431     bool ProjectCreate(const char* pName, FbxWriter* pWriter, bool pBinary, bool pEncrypted, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL);
00432 
00442     bool ProjectCreate(FbxStream* pStream, void* pStreamData, FbxWriter* pWriter, bool pBinary, bool pEncrypted, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL);
00443 
00452     bool ProjectCreateDirect(const char* pName, FbxWriter* pWriter, bool pBinary, bool pEncrypted, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL);
00453 
00462     bool ProjectCreateEmpty(const char* pName, FbxWriter* pWriter, int pVersion, bool pBinary, bool pEncrypted);
00463 
00473     bool ProjectCreateEmpty(FbxStream* pStream, void* pStreamData, FbxWriter* pWriter, int pVersion, bool pBinary, bool pEncrypted);
00474 
00478     bool ProjectWrite_BeginFileHeader();
00479 
00483     bool ProjectWrite_BeginExtendedHeader();
00484 
00489     bool ProjectWrite_WriteExtendedHeader(const FbxIOFileHeaderInfo* pExtendedHeader);
00490 
00494     bool ProjectWrite_EndExtendedHeader();
00495 
00499     bool ProjectWrite_EndFileHeader();
00500 
00506     bool ProjectClose(void** pData=0, size_t* pSize=0);
00507 
00511     void ProjectSetXRefManager(const FbxXRefManager*);
00512 
00516     const FbxXRefManager* ProjectGetXRefManager() const;
00517 
00532     bool ProjectCreateEmbeddedFolder(const FbxXRefManager& pXRefManager, FbxString& pCreatedFolder, const char* pUserDefinedFolder = NULL); 
00533 
00537     void SetEmbedded(bool pValue);
00538 
00542     void SetEmbeddingExtractionFolder(const char* pExtractionFolder);
00543 
00546     const char* GetEmbeddingExtractionFolder();
00547 
00551     bool IsEmbedded() const;
00552 
00556     bool IsBinary() const;
00557 
00561     bool IsEncrypted () const;
00562 
00566     bool CheckCRC();
00567 
00571     FbxUInt32 GetFileVersionNumber() const; 
00572 
00576     void CacheSize(FbxUInt32 pCacheSize);
00577 
00581     FbxUInt32 CacheSize() const; 
00582 
00584 
00595 
00597     bool Fbx7Support() const;
00598 
00602     void Fbx7Support(bool pSupport);
00603 
00605     bool CompressArrays() const;
00606 
00610     void CompressArrays(bool pCompress);
00611 
00613     int  CompressMinimumSize() const;
00614 
00618     void CompressMinimumSize(int pSize);
00619 
00621     int  CompressLevel() const;
00622 
00628     void CompressLevel(int pLevel);
00630 
00636 
00640     bool ProjectOpenMainSection();
00641 
00645     int ProjectGetExtensionSectionCount() const;
00646 
00651     bool ProjectOpenExtensionSection(int pExtensionSectionIndex);
00652 
00657     bool ProjectCreateExtensionSection(bool pOverwriteLastExtensionSection = false);
00658 
00661     void ProjectCloseSection();
00662 
00666     int ProjectGetCurrentSection() const;
00667 
00671     int ProjectGetCurrentSectionMode() const;
00672 
00676     int ProjectGetCurrentSectionVersion() const;
00677 
00685     int ProjectGetSectionVersion(int pSection) const;
00686 
00693     static void ProjectConvertVersionNumber(int pVersion, int& pMajor, int& pMinor, int& pRevision);
00694 
00698     bool IsPasswordProtected() const;
00699 
00705     bool CheckPassword(const char* pPassword);
00706 
00713     bool WritePassword(const char* pPassword);
00714 
00716 
00721 
00725     const char* GetFilename() const;
00726 
00731     FbxString GetDataDirectory(bool pAutoCreate = true);
00732 
00741     FbxString GetMediaDirectory(bool pCreate = false, const char* pUserDefinedFolder = NULL);
00742 
00748     FbxString GetContainerTemplateDirectory(const char* pTemplateName, bool pCreate);
00749 
00754     char* GetRelativePath(const char* pPath);
00755 
00760     char* GetRelativeFilePath(const char* pFilePath);
00761 
00766     char* GetFullPath(const char* pRelativePath);
00767 
00772     char* GetFullFilePath(const char* pRelativeFilePath);
00773 
00778     char* GetTmpProjectName(const char* pName) const;
00779 
00786     bool SwapFromTmpProject(const char* pName, char* pError=NULL, int pErrorSize=0);
00787 
00789 
00795 
00798     void FieldReadResetPosition();
00799 
00803     int FieldGetCount() const;
00804 
00809     const char* FieldGetName(int pFieldIndex) const;
00810 
00815     int FieldGetInstanceCount(const char* pFieldName) const;
00816 
00822     bool FieldReadBegin(int pFieldIndex, int pInstance);
00823 
00828     bool FieldReadBegin(const char* pFieldName);
00829 
00835     bool FieldReadBegin(const char* pFieldName, int pInstance);
00836 
00838     void FieldReadEnd();
00839 
00841     bool FieldReadIsBlock();
00842 
00844     bool FieldReadBlockBegin();
00845 
00847     void FieldReadBlockEnd();
00848 
00850     int FieldReadGetCount() const;
00851 
00853     int FieldReadGetRemain() const;
00854 
00856     char FieldReadGetType() const;
00857 
00859     char FieldReadCH();
00860 
00865     char FieldReadCH(const char* pFieldName, char pDefault=0);
00866 
00868     const char* FieldReadC();
00869 
00874     const char* FieldReadC(const char* pFieldName, const char* pDefault="");
00875 
00877     const char* FieldReadS();
00878 
00883     const char* FieldReadS(const char* pFieldName, const char* pDefault="");
00884 
00886     bool FieldReadB();
00887 
00892     bool FieldReadB(const char* pFieldName, bool pDefault = false);
00893 
00895     int FieldReadI();
00896 int FieldReadI(const char* pFieldName, int pDefault=0);
00901 
00903     FbxLongLong FieldReadLL();
00904 
00909     FbxLongLong FieldReadLL(const char* pFieldName, FbxLongLong pDefault=0);
00910 
00912     float FieldReadF();
00913 
00918     float FieldReadF(const char* pFieldName, float pDefault=0);
00919 
00921     double FieldReadD();
00922 
00927     double FieldReadD(const char* pFieldName, double pDefault=0);
00928 
00932     FbxTime FieldReadT(const char* pFieldName);
00933 
00935     FbxTime FieldReadT();
00936 
00940     FbxTimeSpan FieldReadTS(const char* pFieldName);
00941 
00943     FbxTimeSpan FieldReadTS();
00944 
00949     void FieldReadFn(float* pValue, FbxUInt pn);
00950 
00954     void FieldRead3F(float* pValue);
00955 
00959     void FieldRead4F(float* pValue);
00960 
00967     void FieldReadFn(const char* pFieldName, float* pValue, const float *pDefault, FbxUInt pn);
00968 
00974     void FieldRead3F(const char* pFieldName, float* pValue, const float* pDefault=NULL);
00975 
00981     void FieldRead4F(const char* pFieldName, float* pValue, const float* pDefault=NULL);
00982 
00987     void FieldReadDn(double* pValue, FbxUInt pn);
00988 
00992     void FieldRead3D(double* pValue);
00993 
00997     void FieldRead4D(double* pValue);
00998 
01005     void FieldReadDn(const char* pFieldName, double* pValue, const double *pDefault, FbxUInt pn);
01006 
01012     void FieldRead3D(const char* pFieldName, double* pValue, const double* pDefault=NULL);
01013 
01019     void FieldRead4D(const char* pFieldName, double* pValue, const double* pDefault=NULL);
01020 
01024     void* FieldReadR(int* pByteSize);
01025 
01030     void* FieldReadR(const char* pFieldName,int* pByteSize);
01031 
01036 
01037     FbxChar FieldReadByte();
01038 
01043     FbxChar FieldReadByte(const char* pFieldName, FbxChar pDefault=0);
01044 
01046     FbxUChar FieldReadUByte();
01047 
01052     FbxUChar FieldReadUByte(const char* pFieldName, FbxUChar pDefault=0);
01053 
01055     FbxShort FieldReadShort();
01056 
01061     FbxShort FieldReadShort(const char* pFieldName, FbxShort pDefault=0);
01062 
01064     FbxUShort FieldReadUShort();
01065 
01070     FbxUShort FieldReadUShort(const char* pFieldName, FbxUShort pDefault=0);
01071 
01073     unsigned int FieldReadUI();
01074         
01079     unsigned int FieldReadUI(const char* pFieldName, unsigned int pDefault=0);
01080 
01082     FbxULongLong FieldReadULL();
01083 
01088     FbxULongLong FieldReadULL(const char* pFieldName, FbxULongLong pDefault=0);
01089 
01093         const FbxChar*          FieldReadArraySBytes( int &pCount );
01097         const FbxShort*         FieldReadArrayShort     ( int &pCount );
01101         const FbxUShort*                FieldReadArrayUShort( int &pCount );
01105         const unsigned int*     FieldReadArrayUI        ( int &pCount );
01109         const FbxULongLong*     FieldReadArrayULL       ( int &pCount );
01110 
01114         const FbxChar*        FieldReadArray(int &pCount, const FbxChar*);
01121         const FbxShort*         FieldReadArray(int &pCount, const FbxShort*);
01125         const FbxUShort*                FieldReadArray(int &pCount, const FbxUShort*);
01129         const unsigned int* FieldReadArray(int &pCount, const unsigned int*);
01133         const FbxULongLong*     FieldReadArray(int &pCount, const FbxULongLong*);
01135 
01144     virtual bool FieldReadEmbeddedFile (FbxString& pFileName, FbxString& pRelativeFileName, const char* pEmbeddedMediaDirectory = "", bool *pIsFileCreated=NULL);
01145 
01149     const double*   FieldReadArrayD( int &pCount );
01153     const float*    FieldReadArrayF( int &pCount );
01157     const int*      FieldReadArrayI( int &pCount );
01161     const FbxLongLong*FieldReadArrayLL(int &pCount );
01165     const bool*     FieldReadArrayB( int &pCount );
01169     const FbxUChar*   FieldReadArrayBytes( int &pCount );
01170 
01174     const int*    FieldReadArray(int& pCount, const int*);
01178     const float*  FieldReadArray(int& pCount, const float*);
01182     const double* FieldReadArray(int& pCount, const double*);
01186     const FbxLongLong* FieldReadArray(int& pCount, const FbxLongLong*);
01190     const bool* FieldReadArray(int& pCount, const bool*);
01194     const FbxUChar* FieldReadArray(int& pCount, const FbxUChar*);
01195 
01197 
01203 
01207     void FieldWriteBegin(const char* pFieldName);
01208 
01210     void FieldWriteEnd();
01211 
01213     void FieldWriteBlockBegin();
01214 
01220     void FieldWriteObjectBegin(const char* pObjectType, const char* pName, const char* pSubType=NULL);
01221 
01223     void FieldWriteObjectEnd();
01224 
01229     void FieldWriteBlockBegin(const char* pFileName);
01230 
01232     void FieldWriteBlockEnd ();
01233 
01237     void FieldWriteCH(char pValue);
01238 
01243     void FieldWriteCH(const char* pFieldName, char pValue);
01244 
01248     void FieldWriteC(const char* pValue);
01249 
01254     void FieldWriteC(const char* pFieldName, const char* pValue);
01255 
01259     void FieldWriteS(const char* pValue);
01260 
01264     void FieldWriteS(const FbxString& pValue);
01265 
01270     void FieldWriteS(const char* pFieldName, const char* pValue);
01271 
01276     void FieldWriteS(const char* pFieldName, const FbxString& pValue);
01277 
01281     void FieldWriteB(bool pValue);
01282 
01287     void FieldWriteB(const char* pFieldName, bool pValue);
01288 
01292     void FieldWriteI(int pValue);
01293 
01298     void FieldWriteI(const char* pFieldName, int pValue);
01299 
01303     void FieldWriteLL(FbxLongLong pValue);
01304 
01309     void FieldWriteLL(const char* pFieldName, FbxLongLong pValue);
01310 
01315     void FieldWriteF(float pValue);
01316 
01322     void FieldWriteF(const char* pFieldName, float pValue);
01323 
01327     void FieldWriteD(double  pValue);
01328 
01333     void FieldWriteD(const char* pFieldName, double pValue);
01334 
01338     void FieldWriteT(FbxTime pTime);
01339 
01344     void FieldWriteT(const char* pFieldName,FbxTime pValue);
01345 
01349     void FieldWriteTS(FbxTimeSpan pTimeSpan);
01350 
01355     void FieldWriteTS(const char* pFieldName,FbxTimeSpan pValue);
01356 
01361     void FieldWriteFn(const float* pValue, FbxUInt pn);
01362 
01368     void FieldWriteFn(const char* pFieldName, const float* pValue, FbxUInt pn);
01369 
01373     void FieldWrite3F(const float* pValue);
01374 
01379     void FieldWrite3F(const char* pFieldName, const float* pValue);
01380 
01384     void FieldWrite4F(const float* pValue);
01385 
01390     void FieldWrite4F(const char* pFieldName, const float* pValue);
01391 
01396     void FieldWriteDn(const double* pValue, FbxUInt pn);
01397 
01403     void FieldWriteDn(const char* pFieldName, const double* pValue, FbxUInt pn);
01404 
01408     void FieldWrite3D(const double* pValue);
01409 
01414     void FieldWrite3D(const char* pFieldName, const double* pValue);
01415 
01419     void FieldWrite4D(const double* pValue);
01420 
01425     void FieldWrite4D(const char* pFieldName, const double* pValue);
01426 
01427     // The maximum number of value entries is, in theory, 2**32.  In practice it should be a lot less than that.
01428     // pSize is the number of values to write from each pointer location, and stride is how much we 
01429     // advance to get to the next value; if the stride is zero, values are tighly packed together.
01430     // So in total we'll write n * pSize items.
01431 
01438     void FieldWriteArrayD( int n, const double*     pValue, int pSize = 1, int pStride = 0 );
01445     void FieldWriteArrayF( int n, const float*      pValue, int pSize = 1, int pStride = 0 );
01452     void FieldWriteArrayI( int n, const int*        pValue, int pSize = 1, int pStride = 0 );
01459     void FieldWriteArrayLL(int n, const FbxLongLong*  pValue, int pSize = 1, int pStride = 0 );
01466     void FieldWriteArrayB( int n, const bool*       pValue, int pSize = 1, int pStride = 0 );
01473     void FieldWriteArrayBytes( int n, const FbxUChar* pValue, int pSize = 1, int pStride = 0 );
01474 
01479     void FieldWriteR(const void* pRawData, int pByteSize);
01480 
01486     void FieldWriteR(const char* pFieldName, const void* pRawData, int pByteSize);
01487 
01492 
01496     void FieldWriteByte(FbxChar pValue);
01497 
01502     void FieldWriteByte(const char* pFieldName, FbxChar pValue);
01503 
01507     void FieldWriteUByte(FbxUChar pValue);
01508 
01513     void FieldWriteUByte(const char* pFieldName, FbxUChar pValue);
01514 
01518     void FieldWriteShort(FbxShort pValue);
01519 
01524     void FieldWriteShort(const char* pFieldName, FbxShort pValue);
01525 
01529     void FieldWriteUShort(FbxUShort pValue);
01530 
01535     void FieldWriteUShort(const char* pFieldName, FbxUShort pValue);
01536 
01540     void FieldWriteUI(unsigned int pValue);
01541 
01546     void FieldWriteUI(const char* pFieldName, unsigned int pValue);
01547 
01551     void FieldWriteULL(FbxULongLong pValue);
01552 
01558     void FieldWriteULL(const char* pFieldName, FbxULongLong pValue);
01559 
01566         void FieldWriteArraySBytes( int n, const FbxChar* pValue, int pSize = 1, int pStride = 0 );
01573         void FieldWriteArrayShort( int n, const FbxShort* pValue, int pSize = 1, int pStride = 0 );
01580         void FieldWriteArrayUShort( int n, const FbxUShort* pValue, int pSize = 1, int pStride = 0 );
01587     void FieldWriteArrayUI( int n, const unsigned int*        pValue, int pSize = 1, int pStride = 0 );
01594     void FieldWriteArrayULL(int n, const FbxULongLong*  pValue, int pSize = 1, int pStride = 0 );
01596 
01600     int GetFieldRMaxChunkSize() const;
01601 
01605     void FieldWriteObjectReference(const char* pName);
01606 
01611     void FieldWriteObjectReference(const char* pFieldName, const char* pName);
01612 
01619     bool FieldWriteEmbeddedFile (FbxString pFileName, FbxString pRelativeFileName);
01620 
01624     void WriteComments(const char* pFieldName);
01625 
01627 
01628 #ifdef _DEBUG
01629     // Dump function for debugging purpose only
01630     void StdoutDump();
01631 #endif
01632 
01640     bool GetHaveLoadedEmbededFile() const;
01641 
01646     void GetMemoryFileInfo(void** pMemPtr, size_t& pSize) const;
01647 
01651     bool    IsBeforeVersion6() const;
01652 
01656     void    SetIsBeforeVersion6(bool pIsBeforeVersion6);
01657 
01658 /*****************************************************************************************************************************
01659 ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
01660 *****************************************************************************************************************************/
01661 #ifndef DOXYGEN_SHOULD_SKIP_THIS
01662     bool ProjectOpen (FbxFile * pFile, FbxReader* pReader, bool pCheckCRC = false, bool pOpenMainSection = true, FbxIOFileHeaderInfo* pFileHeaderInfo = NULL);
01663 
01664 private:
01665     // to resolve warning C4512: 'class' : assignment operator could not be generated
01666     FbxIO& operator=(const FbxIO& pOther);
01667 
01668     FbxStatus& mStatus;
01669 
01670     struct InternalImpl;
01671     InternalImpl* mImpl;
01672 
01674 
01675     void ProjectClear();
01676     void ProjectReset();
01677 
01678     bool ProjectReadHeader(bool pCheckASCIIHeader, bool pCheckCRC, bool pOpenMainSection, FbxIOFileHeaderInfo* pFileHeaderInfo);
01679     bool ProjectReadExtendedHeader(int& pExtendedHeaderEnd, FbxIOFileHeaderInfo* pFileHeaderInfo);
01680     bool BinaryReadHeader();
01681     bool BinaryReadSectionPosition();
01682     bool ASCIIReadHeader();
01683     bool ASCIIReadSectionPosition();
01684 
01685     bool ProjectWriteHeader(FbxIOFileHeaderInfo* pFileHeaderInfo);
01686     bool ProjectWriteExtendedHeader(FbxIOFileHeaderInfo* pFileHeaderInfo);
01687     void BinaryWriteHeader();
01688     void ASCIIWriteHeader();
01689 
01690     void ReadEncryptionKey(char* pEncryptionKey);
01691     void WriteEncryptionKey(char* pEncryptionKey);
01692 
01694 
01695     bool ProjectClearSection();
01696     bool ProjectOpenSection(int pSection);
01697     bool BinaryReadSectionHeader();
01698     int BinaryReadSectionFooter(char* pSourceCheck);
01699     bool BinaryReadExtensionCode(FbxUInt32 pFollowingSectionStart, FbxUInt32& pSectionStart, FbxUInt32& pSectionVersion);
01700     void BinaryReadSectionPassword();
01701 
01702     bool ProjectWriteSectionHeader();
01703     void BinaryWriteSectionFooter();
01704     bool BinaryWriteExtensionCode(FbxUInt32 pSectionStart, FbxUInt32 pSectionVersion);
01705 
01706     FbxString GetCreationTime() const;
01707     void SetCreationTime(FbxString pCreationTime);
01708     void CreateSourceCheck(char* lSourceCheck);
01709     bool TestSourceCheck(char* pSourceCheck, char* pSourceCompany);
01710     FbxString GetMangledCreationTime();
01711     void EncryptSourceCheck(char* pSourceCheck, char* pEncryptionData);
01712     void DecryptSourceCheck(char* pSourceCheck, const char* pEncryptionData);
01713 
01714     void EncryptPasswordV1(FbxString pOriginalPassword, FbxString &pEncryptedPassword);
01715     void DecryptPasswordV1(FbxString pEncryptedPassword, FbxString &pDecryptedPassword);
01716 
01718 
01719     void CheckValidityOfFieldName(const char* pFieldName);
01720     void GetUnusedEmbeddedName(const FbxString& pDirectory, const FbxString& pName, FbxString& pResult, bool pCreateSubdirectory);
01721 
01723     FbxString GetDirectory(bool pAutoCreate, const char* pExtension);
01724 #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
01725 };
01726 
01727 #include <fbxsdk/fbxsdk_nsend.h>
01728 
01729 #endif /* _FBXSDK_FILEIO_FBX_IO_H_ */