Go to
the documentation of this file.
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00013 #ifndef _FBXSDK_FILEIO_IO_PLUGIN_REGISTRY_H_
00014 #define _FBXSDK_FILEIO_IO_PLUGIN_REGISTRY_H_
00015
00016 #include <fbxsdk/fbxsdk_def.h>
00017
00018 #include <fbxsdk/fileio/fbxreader.h>
00019 #include <fbxsdk/fileio/fbxwriter.h>
00020
00021 #include <fbxsdk/fbxsdk_nsbegin.h>
00022
00037 class FBXSDK_DLL FbxIOPluginRegistry
00038 {
00039 public:
00040
00043 FbxIOPluginRegistry();
00044
00047 virtual ~FbxIOPluginRegistry();
00048
00049 #ifndef FBXSDK_ENV_WINRT
00050
00056 void RegisterReader(const char* pPluginPath,
00057 int& pFirstPluginID,
00058 int& pRegisteredCount,
00059 bool pOverride = false);
00060 #endif
00061
00070 void RegisterReader(FbxReader::CreateFuncType pCreateF,
00071 FbxReader::GetInfoFuncType pInfoF,
00072 int& pFirstPluginID,
00073 int& pRegisteredCount,
00074 FbxReader::IOSettingsFillerFuncType pIOSettingsFillerF = NULL,
00075 bool pOverride = false);
00076
00077 #ifndef FBXSDK_ENV_WINRT
00078
00084 void RegisterWriter(const char* pPluginPath,
00085 int& pFirstPluginID,
00086 int& pRegisteredCount,
00087 bool pOverride = false);
00088 #endif
00089
00098 void RegisterWriter(FbxWriter::CreateFuncType pCreateF,
00099 FbxWriter::GetInfoFuncType pInfoF,
00100 int& pFirstPluginID,
00101 int& pRegisteredCount,
00102 FbxWriter::IOSettingsFillerFuncType pIOSettingsFillerF = NULL,
00103 bool pOverride = false);
00104
00110 FbxReader* CreateReader(FbxManager& pManager,
00111 FbxImporter& pImporter,
00112 int pPluginID) const;
00113
00119 FbxWriter* CreateWriter(FbxManager& pManager,
00120 FbxExporter& pExporter,
00121 int pPluginID) const;
00122
00127 int FindReaderIDByExtension(const char* pExt) const;
00128
00133 int FindWriterIDByExtension(const char* pExt) const;
00134
00139 int FindReaderIDByDescription(const char* pDesc) const;
00140
00145 int FindWriterIDByDescription(const char* pDesc) const;
00146
00151 bool ReaderIsFBX(int pFileFormat) const;
00152
00157 bool WriterIsFBX(int pFileFormat) const;
00158
00163 bool ReaderIsGenuine(int pFileFormat) const;
00164
00169 bool WriterIsGenuine(int pFileFormat) const;
00170
00174 int GetReaderFormatCount() const;
00175
00182 int GetWriterFormatCount() const;
00183
00188 const char* GetReaderFormatDescription(int pFileFormat) const;
00189
00194 const char* GetWriterFormatDescription(int pFileFormat) const;
00195
00200 const char* GetReaderFormatExtension(int pFileFormat) const;
00201
00206 const char* GetWriterFormatExtension(int pFileFormat) const;
00207
00212 char const* const* GetWritableVersions(int pFileFormat) const;
00213
00224 bool DetectReaderFileFormat(const char* pFileName, int& pFileFormat) const;
00225
00236 bool DetectWriterFileFormat(const char* pFileName, int& pFileFormat) const;
00237
00241 int GetNativeReaderFormat();
00242
00246 int GetNativeWriterFormat();
00247
00251 void FillIOSettingsForReadersRegistered(FbxIOSettings & pIOS);
00252
00256 void FillIOSettingsForWritersRegistered(FbxIOSettings & pIOS);
00257
00258
00259
00260
00261
00262 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00263 private:
00264 void RegisterInternalIOPlugins();
00265
00266 struct ReaderPluginEntry
00267 {
00268 ReaderPluginEntry(const char* pExtension, const char* pDescription, FbxReader::CreateFuncType pCreatorFunction, int pBaseID,
00269 FbxReader::IOSettingsFillerFuncType pIOSettingsFillerFunction=NULL);
00270
00271 const char* mExtension;
00272 const char* mDescription;
00273 FbxReader::CreateFuncType mCreatorFunction;
00274 FbxReader::IOSettingsFillerFuncType mIOSettingsFillerFunction;
00275 int mBaseID;
00276 bool mIsFBX;
00277 bool mIsInternalPlugin;
00278 };
00279
00280 struct WriterPluginEntry
00281 {
00282 WriterPluginEntry(const char* pExtension, const char* pDescription, char const* const* pVersions, FbxWriter::CreateFuncType pCreatorFunction, int pBaseID,
00283 FbxWriter::IOSettingsFillerFuncType pIOSettingsFillerFunction=NULL);
00284
00285 const char* mExtension;
00286 const char* mDescription;
00287 char const* const* mVersions;
00288 FbxWriter::CreateFuncType mCreatorFunction;
00289 FbxWriter::IOSettingsFillerFuncType mIOSettingsFillerFunction;
00290 int mBaseID;
00291 bool mIsFBX;
00292 bool mIsInternalPlugin;
00293 };
00294
00295 FbxArray<ReaderPluginEntry*> mReaders;
00296 FbxArray<WriterPluginEntry*> mWriters;
00297 int mNativeReaderFormat;
00298 int mNativeWriterFormat;
00299 bool mInternalPluginMode;
00300 #endif
00301 };
00302
00303 #include <fbxsdk/fbxsdk_nsend.h>
00304
00305 #endif