00001
00004 #ifndef _FBXSDK_IMPORTER_H_
00005 #define _FBXSDK_IMPORTER_H_
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043 #include <kaydaradef.h>
00044 #ifndef KFBX_DLL
00045 #define KFBX_DLL K_DLLIMPORT
00046 #endif
00047
00048 #include <kfbxio/kfbxio.h>
00049 #include <kfbxevents/kfbxevents.h>
00050
00051 #include <klib/kstring.h>
00052 #include <klib/karrayul.h>
00053
00054
00055
00056 #include <kbaselib_forward.h>
00057 #ifndef MB_FBXSDK
00058 #include <kbaselib_nsuse.h>
00059 #endif
00060
00061 #ifdef KARCH_DEV_MACOSX_CFM
00062 #include <CFURL.h>
00063 #include <Files.h>
00064 #endif
00065
00066 #include <fbxfilesdk_nsbegin.h>
00067
00068 class KFbxDocument;
00069 class KFbxImporterImp;
00070 class KFbxStreamOptionsFbx;
00071 class KFbxTakeInfo;
00072 class KFbxDocumentInfo;
00073 class KFbxStreamOptionsFbxReader;
00074 class KFbxAxisSystem;
00075 class KFbxSystemUnit;
00076 class KFbxStatistics;
00077 class KFile;
00078 class KFbxFileHeaderInfo;
00079
00081 class KFBX_DLL KFbxEventPreImport : public KFbxEvent<KFbxEventPreImport>
00082 {
00083 KFBXEVENT_DECLARE(KFbxEventPreImport);
00084 public:
00085 inline KFbxEventPreImport( KFbxDocument* pDocument ) : mDocument(pDocument) {};
00086
00088 KFbxDocument* mDocument;
00089 };
00090
00092 class KFBX_DLL KFbxEventPostImport : public KFbxEvent<KFbxEventPostImport>
00093 {
00094 KFBXEVENT_DECLARE(KFbxEventPostImport);
00095 public:
00096 inline KFbxEventPostImport( KFbxDocument* pDocument ) : mDocument(pDocument) {};
00097
00099 KFbxDocument* mDocument;
00100 };
00101
00110 class KFBX_DLL KFbxImporter : public KFbxIO
00111 {
00112 KFBXOBJECT_DECLARE(KFbxImporter,KFbxIO);
00113 public:
00118
00124 virtual bool Initialize(const char *pFileName);
00125
00131 virtual bool Initialize(KFile * pFile);
00132
00133 #ifdef KARCH_DEV_MACOSX_CFM
00134 virtual bool Initialize(const FSSpec &pMacFileSpec);
00135 virtual bool Initialize(const FSRef &pMacFileRef);
00136 virtual bool Initialize(const CFURLRef &pMacURL);
00137 #endif
00138
00142 virtual KFile * GetFile();
00143
00151 void GetFileVersion(int& pMajor, int& pMinor, int& pRevision);
00152
00161 bool GetDefaultRenderResolution(KString& pCamName, KString& pResolutionMode, double& pW, double& pH);
00162
00166 KFbxFileHeaderInfo* GetFileHeaderInfo();
00167
00173 typedef enum
00174 {
00175 eSTREAMOPTIONS_PARSE_FILE,
00176 eSTREAMOPTIONS_FAST,
00177 eSTREAMOPTIONS_COUNT
00178 } EStreamOptionsGeneration;
00179
00185 KFbxStreamOptions* GetImportOptions(EStreamOptionsGeneration pStreamOptionsGeneration = eSTREAMOPTIONS_PARSE_FILE);
00186
00192 KFbxStreamOptions* GetImportOptions(KFbx* pFbxObject);
00193
00203 bool Import(KFbxDocument* pDocument, KFbxStreamOptions* pStreamOptions = NULL);
00204
00215 bool Import(KFbxDocument* pDocument, KFbxStreamOptions* pStreamOptions, KFbx* pFbxObject);
00216
00220 void ReleaseImportOptions(KFbxStreamOptions* pStreamOptions);
00221
00223
00228 void SetPassword(char* pPassword);
00229
00234
00239 int GetTakeCount();
00240
00247 KFbxTakeInfo* GetTakeInfo(int pIndex);
00248
00253 char* GetCurrentTakeName();
00254
00256
00261
00266 KFbxDocumentInfo* GetSceneInfo();
00267
00269
00273
00277 void SetFileFormat (int pFileFormat);
00278
00282 int GetFileFormat ();
00283
00286 bool IsFBX();
00288
00290
00291
00292
00293
00294
00295
00297
00298 void ParseForGlobalSettings(bool pState);
00299 bool GetAxisInfo(KFbxAxisSystem* pAxisSystem, KFbxSystemUnit* pSystemUnits);
00300
00301 void ParseForStatistics(bool pState);
00302 bool GetStatistics(KFbxStatistics* pStatistics);
00303
00304 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00305 bool UpdateImportOptions(KFbxStreamOptions* pStreamOptions);
00306
00307 protected:
00308
00309
00310 void SetImportOptionsInfo(KFbxStreamOptionsFbxReader* pStreamOptionsFbx);
00311 void GetImportOptionsInfo(KFbxStreamOptionsFbxReader* pStreamOptionsFbx);
00312
00313 KFbxImporter(KFbxSdkManager& pManager,char const* pName);
00314 virtual ~KFbxImporter();
00315
00316 void Reset();
00317
00318 bool FileOpen(KFile* pFile = NULL);
00319 void FileClose();
00320
00321 bool IsNativeExtension ();
00322
00323 KFbxImporterImp* mImp;
00324 KFile* mFile;
00325 bool mImportOptionsDone;
00326 KArrayTemplate<KFbxTakeInfo*> mTakeInfo;
00327 KFbxDocumentInfo* mSceneInfo;
00328 KString mCurrentTakeName;
00329 int mMajorVersion;
00330 int mMinorVersion;
00331 int mRevisionVersion;
00332 KFbxFileHeaderInfo *mHeaderInfo;
00333
00334 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00335 };
00336
00337 #include <fbxfilesdk_nsend.h>
00338
00339 #endif // #ifndef _FBXSDK_IMPORTER_H_
00340
00341