fbxsdk/fileio/fbxreader.h Source File
 
 
 
fbxsdk/fileio/fbxreader.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_READER_H_
00014 #define _FBXSDK_FILEIO_READER_H_
00015 
00016 #include <fbxsdk/fbxsdk_def.h>
00017 
00018 #include <fbxsdk/core/base/fbxarray.h>
00019 #include <fbxsdk/core/base/fbxstring.h>
00020 #include <fbxsdk/core/base/fbxtime.h>
00021 #include <fbxsdk/fileio/fbx/fbxio.h>
00022 
00023 #include <fbxsdk/fbxsdk_nsbegin.h>
00024 
00025 class FbxManager;
00026 class FbxFile;
00027 class FbxStream;
00028 class FbxObject;
00029 class FbxDocument;
00030 class FbxDocumentInfo;
00031 class FbxScene;
00032 class FbxImporter;
00033 class FbxIOSettings;
00034 class FbxAxisSystem;
00035 class FbxStatistics;
00036 class FbxSystemUnit;
00037 class FbxNode;
00038 class FbxProgress;
00039 class FbxTakeInfo;
00040 
00064 class FBXSDK_DLL FbxReader
00065 {
00066 public:
00072     FbxReader(FbxManager& pManager, int pID, FbxStatus& pStatus);
00073 
00076     virtual ~FbxReader();
00077     
00081     enum EInfoRequest
00082         {
00083         eInfoExtension,     
00084         eInfoDescriptions,      
00085         eReserved1 = 0xFBFB,
00086     };
00087 
00091     enum EFileOpenSpecialFlags
00092         {
00093                 eParseForGlobalSettings = 1, 
00094                 eParseForStatistics = 2      
00095         };
00096 
00098     typedef FbxReader*                  (*CreateFuncType)(FbxManager& pManager, FbxImporter& pImporter, int pSubID, int pPluginID);
00099 
00101     typedef void                                (*IOSettingsFillerFuncType)(FbxIOSettings& pIOS);
00102 
00104     typedef void*                               (*GetInfoFuncType)(EInfoRequest pRequest, int pReaderTypeId);
00105 
00111         virtual void                            GetVersion(int& pMajor, int& pMinor, int& pRevision){ pMajor = pMinor = pRevision = 0; }
00112 
00117     virtual bool                                FileOpen(char* pFileName) = 0;
00118 
00124         virtual bool                            FileOpen(FbxStream* pStream, void* pStreamData);
00125 
00129     virtual bool                                FileClose() = 0;
00130 
00134     virtual bool                                IsFileOpen() = 0;
00135 
00140     virtual bool                GetReadOptions(bool pParseFileAsNeeded = true) = 0;
00141 
00146     virtual bool                                Read(FbxDocument* pDocument) = 0;
00147 
00148 #ifndef FBXSDK_ENV_WINRT
00149 
00157         virtual void                            PluginReadParameters(FbxObject& pParams);
00158 #endif /* !FBXSDK_ENV_WINRT */
00159 
00165     virtual bool                                FileOpen(char* pFileName, EFileOpenSpecialFlags /*pFlags*/){ return FileOpen(pFileName); }
00166 
00172     virtual bool                                GetAxisInfo(FbxAxisSystem* /*pAxisSystem*/, FbxSystemUnit* /*pSystemUnits*/){ return false; }
00173 
00178     virtual bool                                GetStatistics(FbxStatistics* /*pStats*/){ return false; }
00179 
00186         virtual bool                GetFrameRate(FbxTime::EMode& pTimeMode) { pTimeMode = FbxTime::eDefaultMode; return false; }
00187 
00188 
00192     virtual FbxDocumentInfo*   GetSceneInfo(){return NULL;}
00193 
00197     virtual FbxArray<FbxTakeInfo*>* GetTakeInfo(){return NULL;}
00198 
00206         virtual bool                        GetDefaultRenderResolution(FbxString& pCamName, FbxString& pResolutionMode, double& pW, double& pH);
00207 
00212         bool                                            IsGenuine();
00213    
00218         virtual FbxIOSettings * GetIOSettings();
00219 
00223         virtual void SetIOSettings(FbxIOSettings * pIOSettings);
00224 
00228     virtual void SetProgressHandler(FbxProgress* /*pProgress*/){}
00229 
00230         virtual void SetEmbeddingExtractionFolder(const char* /*pExtractFolder*/){}
00231 
00233         virtual bool SupportsStreams() const;
00234 
00235 /*****************************************************************************************************************************
00236 ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
00237 *****************************************************************************************************************************/
00238 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00239     virtual bool                                FileOpen(FbxFile * pFile);
00240 
00241     FbxStatus& GetStatus()              { return mStatus; }
00242 
00243 protected:
00244         void                                            SetDefaultRenderResolution(const char* pCamName, const char* pResolutionMode, double pW, double pH);
00245 #ifndef FBXSDK_ENV_WINRT
00246         void                                            PluginsReadBegin(FbxScene& pScene);
00247         void                                            PluginsRead(const char* pName, const char* pVersion);
00248         void                                            PluginsReadEnd(FbxScene& pScene);
00249 #endif /* !FBXSDK_ENV_WINRT */
00250     FbxReader&                                  operator=(FbxReader const&) { return *this; }
00251     virtual bool                                CheckDuplicateNodeNames(FbxNode* pRootNode, FbxString& pDuplicateNodeNameList);
00252 
00253     FbxStatus&                      mStatus;
00254     FbxManager&                                         mManager;
00255     FbxIODefaultRenderResolution*       mData;
00256 
00257 private:
00258         int                             mInternalID;
00259         FbxIOSettings*  mIOSettings;
00260 
00261         friend struct FbxReaderFbx7_Impl;
00262 #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
00263 };
00264 
00266 #define IOS_REF (*GetIOSettings())
00267 
00268 #include <fbxsdk/fbxsdk_nsend.h>
00269 
00270 #endif /* _FBXSDK_FILEIO_READER_H_ */