- Main Page
- Classes
- Files
- Directories

- File List
- File Members

# 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_ */