Go to the
documentation of this file.
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00013 #ifndef _FBXSDK_FILEIO_WRITER_H_
00014 #define _FBXSDK_FILEIO_WRITER_H_
00015
00016 #include <fbxsdk/fbxsdk_def.h>
00017
00018 #include <fbxsdk/core/base/fbxerror.h>
00019 #include <fbxsdk/core/base/fbxstring.h>
00020 #include <fbxsdk/core/base/fbxarray.h>
00021
00022 #include <fbxsdk/utils/fbxrenamingstrategy.h>
00023
00024 #include <fbxsdk/fbxsdk_nsbegin.h>
00025
00026 class FbxNode;
00027 class FbxDocument;
00028 class FbxScene;
00029 class FbxManager;
00030 class FbxExporter;
00031 class FbxIOSettings;
00032 class FbxObject;
00033 class FbxIO;
00034 class FbxProgress;
00035 class FbxStream;
00036
00037 #define IOSP GetIOSettings()
00038
00061 class FBXSDK_DLL FbxWriter
00062 {
00063 public:
00068 FbxWriter(FbxManager& pManager, int pID);
00070 virtual ~FbxWriter();
00071
00074 enum EErrorCode
00075 {
00076 eFileCorrupted,
00077 eFileNotOpened,
00078 eFileNotCreated,
00079 eOutOfSpace,
00080 eInvalidDocumentHandle,
00081 eDocumentNotSupported,
00082 eUnknownError,
00083 eEmbeddedOutOfSpace,
00084 eErrorCount
00085 };
00086
00090 enum EInfoRequest
00091 {
00092 eInfoExtension,
00093 eInfoDescriptions,
00094 eInfoVersions,
00095 eInfoCompatibleDesc,
00096 eInfoUILabel,
00097 eReserved1 = 0xFBFB,
00098 };
00099
00101 typedef FbxWriter* (*CreateFuncType)(FbxManager& pManager, FbxExporter& pExporter, int pSubID, int pPluginID);
00102
00104 typedef void (*IOSettingsFillerFuncType)(FbxIOSettings& pIOS);
00105
00107 typedef void* (*GetInfoFuncType)(EInfoRequest pRequest, int pWriterTypeId);
00108
00112 virtual bool FileCreate(char* pFileName) = 0;
00113
00118 virtual bool FileCreate(FbxStream* pStream, void* pStreamData);
00119
00122 virtual bool FileClose() = 0;
00123
00126 virtual bool IsFileOpen() = 0;
00127
00130 virtual void GetWriteOptions() = 0;
00131
00135 virtual bool Write(FbxDocument* pDocument) = 0;
00136
00140 virtual bool PreprocessScene(FbxScene &pScene) = 0;
00141
00145 virtual bool PostprocessScene(FbxScene &pScene) = 0;
00146
00155 virtual void PluginWriteParameters(FbxObject& pParams);
00156
00161 virtual FbxNode* FindRootNode(FbxScene& pScene);
00162
00170 virtual bool CheckSpaceInNodeNameRecursive(FbxNode* pNode, FbxString& pNodeNameList);
00171
00175 bool SetFileExportVersion(FbxString pVersion);
00176
00180 void SetRenamingMode(FbxSceneRenamer::ERenamingMode pRenamingMode){mRenamingMode = pRenamingMode;}
00181
00185 inline void SetResamplingRate(double pResamplingRate){mResamplingRate = pResamplingRate;}
00186
00191 bool IsGenuine();
00192
00196 FbxError& GetError();
00197
00201 EErrorCode GetLastErrorID() const;
00202
00206 const char* GetLastErrorString() const;
00207
00211 void GetMessage(FbxString &pMessage) const;
00212
00216 FbxString& GetMessage();
00217
00220 void ClearMessage();
00221
00226 virtual FbxIOSettings * GetIOSettings();
00227
00231 virtual void SetIOSettings(FbxIOSettings * pIOSettings);
00232
00236 virtual void SetProgressHandler(FbxProgress* ){}
00237
00239 virtual bool SupportsStreams() const;
00240
00241 protected:
00243 void PluginsWriteBegin(FbxScene& pScene);
00249 void PluginsWrite(FbxIO& pFbx, bool pWriteObjectId);
00251 void PluginsWriteEnd(FbxScene& pScene);
00252
00253 FbxWriter& operator=(FbxWriter const&) { return *this; }
00254
00255 FbxManager& mManager;
00256 FbxString mFileVersion;
00258 double mResamplingRate;
00260 FbxSceneRenamer::ERenamingMode mRenamingMode;
00261
00262 private:
00263 FbxError mError;
00264 FbxString mMessage;
00265 int mInternalID;
00266 FbxIOSettings * mIOSettings;
00267
00268 friend struct FbxWriterFbx7_Impl;
00269 };
00270
00272 #define IOS_REF (*GetIOSettings())
00273
00274 #include <fbxsdk/fbxsdk_nsend.h>
00275
00276 #endif