00001
00002
00003
00004
00005
00006
00007
00008
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
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
00139 #define FBX_DEFAULT_FILE_VERSION FBX_FILE_VERSION_7400
00140
00141
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
01428
01429
01430
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
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
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
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
01725 };
01726
01727 #include <fbxsdk/fbxsdk_nsend.h>
01728
01729 #endif