00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00013 #ifndef _FBXSDK_FILEIO_IO_SETTINGS_H_
00014 #define _FBXSDK_FILEIO_IO_SETTINGS_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/fbxobject.h>
00021
00022
00023 #if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(mkdir)
00024 #undef mkdir
00025 #endif
00026
00027 #include <fbxsdk/core/fbxpropertytypes.h>
00028
00029 #include <fbxsdk/fileio/fbxiosettingspath.h>
00030
00031 #include <fbxsdk/fbxsdk_nsbegin.h>
00032
00033 #define IOSVisible true
00034 #define IOSHidden false
00035
00036 #define IOSSavable true
00037 #define IOSNotSavable false
00038
00039 #define IOSEnabled true
00040 #define IOSDisabled false
00041
00042 #define IOSBinary 0
00043 #define IOSASCII 1
00044
00045 class FbxIOSettings;
00046
00047 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00048
00051 class FBXSDK_DLL FbxIOInfo
00052 {
00053 public:
00054 enum EImpExp
00055 {
00056 eImport,
00057 eExport
00058 };
00059
00060 public:
00062 FbxIOInfo();
00063
00065 void Reset(EImpExp pImpExp);
00066
00068 void SetTimeMode(FbxTime::EMode pTimeMode, double pCustomFrameRate = 0.0);
00069
00071 FbxTime::EMode GetTimeMode(){ return mTimeMode; }
00072
00074 FbxTime GetFramePeriod();
00075
00076 void SetASFScene(FbxObject* pASFScene, bool pASFSceneOwned = false);
00077 FbxObject* GetASFScene(){ return mASFScene; }
00078
00079 void Set_IOS(FbxIOSettings* pIOS){ios = pIOS;}
00080
00082 void SetImportExportMode(EImpExp pImpExp){mImpExp = pImpExp;}
00083
00084 private:
00085
00086 FbxTime::EMode mTimeMode;
00087 FbxObject* mASFScene;
00088
00089 EImpExp mImpExp;
00090
00091 FbxIOSettings* ios;
00092 };
00093
00094 #endif // DOXYGEN_SHOULD_SKIP_THIS
00095
00096 class FbxManager;
00097
00098 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00099
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113 enum EFbxUILanguage
00114 {
00115 eENU = 0,
00116 eDEU,
00117 eFRA,
00118 eJPN,
00119 eKOR,
00120 eCHS,
00121 eFbxUILanguageCount
00122 };
00123
00124
00125 class PropInfo
00126 {
00127 public:
00128 PropInfo();
00129 ~PropInfo();
00130
00131 void* UIWidget;
00132 void* cbValueChanged;
00133 void* cbDirty;
00134 FbxStringList labels;
00135 };
00136 #endif // DOXYGEN_SHOULD_SKIP_THIS
00137
00262 class FBXSDK_DLL FbxIOSettings : public FbxObject
00263 {
00264 FBXSDK_OBJECT_DECLARE(FbxIOSettings,FbxObject);
00265
00266 public:
00267
00272 virtual void Destruct(bool pRecursive, bool pDependents);
00273
00280 FbxProperty AddPropertyGroup(const char* pName, const FbxDataType& pDataType=FbxDataType(), const char* pLabel="");
00281
00292 FbxProperty AddPropertyGroup(const FbxProperty& pParentProperty, const char* pName, const FbxDataType& pDataType = FbxDataType(),
00293 const char* pLabel = "", bool pVisible = true, bool pSavable = true, bool pEnabled = true );
00294
00306 FbxProperty AddProperty(const FbxProperty& pParentProperty, const char* pName, const FbxDataType& pDataType = FbxDataType(),
00307 const char* pLabel = "", const void* pValue = NULL, bool pVisible = true,
00308 bool pSavable = true, bool pEnabled = true );
00309
00325 FbxProperty AddPropertyMinMax(const FbxProperty& pParentProperty, const char* pName, const FbxDataType& pDataType = FbxDataType(),
00326 const char* pLabel = "", const void* pValue = NULL, const double* pMinValue = NULL, const double* pMaxValue = NULL,
00327 bool pVisible = true, bool pSavable = true, bool pEnabled = true );
00328
00329
00336 FbxProperty GetProperty(const char* pName) const;
00337
00344 FbxProperty GetProperty(const FbxProperty& pParentProperty, const char* pName) const;
00345
00351 bool GetBoolProp(const char* pName, bool pDefValue) const;
00352
00357 void SetBoolProp(const char* pName, bool pValue);
00358
00364 double GetDoubleProp(const char* pName, double pDefValue) const;
00365
00370 void SetDoubleProp(const char* pName, double pValue);
00371
00377 int GetIntProp(const char* pName, int pDefValue) const;
00378
00383 void SetIntProp(const char* pName, int pValue);
00384
00389 FbxTime GetTimeProp(const char* pName, FbxTime pDefValue) const;
00390
00396 void SetTimeProp(const char* pName, FbxTime pValue);
00397
00416
00422 FbxString GetEnumProp(const char* pName, FbxString pDefValue) const;
00423
00429 int GetEnumProp(const char* pName, int pDefValue) const;
00430
00436 int GetEnumIndex(const char* pName, FbxString pValue) const;
00437
00443 void SetEnumProp(const char* pName, FbxString pValue);
00444
00450 void SetEnumProp(const char* pName, int pValue);
00451
00459 void RemoveEnumPropValue(const char* pName, FbxString pValue);
00460
00464 void EmptyEnumProp(const char* pName);
00465
00471 bool IsEnumExist(FbxProperty& pProp, const FbxString& enumString) const;
00472
00479 int GetEnumIndex(FbxProperty& pProp, const FbxString& enumString, bool pNoCase = false) const;
00481
00488 bool SetFlag(const char* pName, FbxPropertyAttr::EFlags propFlag, bool pValue);
00489
00495 FbxString GetStringProp(const char* pName, FbxString pDefValue) const;
00496
00501 void SetStringProp(const char* pName, FbxString pValue);
00502
00505
00510 virtual bool ReadXMLFile(const FbxString& path);
00511
00517 virtual bool WriteXMLFile(const FbxString& path);
00518
00525 bool WriteXmlPropToFile(const FbxString& pFullPath, const FbxString& propPath);
00527
00529
00530
00531
00532
00533
00534
00536 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00537 public:
00538 PropInfo* GetPropInfo(FbxProperty &pProp);
00539
00540 EFbxUILanguage UILanguage;
00541 FbxString GetLanguageLabel(FbxProperty& pProp);
00542 void SetLanguageLabel(FbxProperty& pProp, FbxString& pLabel);
00543 EFbxUILanguage Get_Max_Runtime_Language(FbxString pRegLocation);
00544
00545 FbxIOInfo impInfo;
00546 FbxIOInfo expInfo;
00547
00548 static FbxString GetUserMyDocumentDir();
00549 void SetPropVisible(FbxProperty& pProp, bool pWithChildren, bool pVisible);
00550
00551 virtual bool ConstructProperties(bool pForceSet);
00552
00553
00554 bool ReadXmlPropFromMyDocument(const FbxString& subDir, const FbxString& filename);
00555
00556
00557 bool WriteXmlPropToMyDocument(const FbxString& subDir, const FbxString& filename, const FbxString& propPath);
00558
00559 static const char* GetFileMergeDescription(int pIndex);
00560
00561 enum ELoadMode
00562 {
00563 eCreate,
00564 eMerge,
00565 eExclusiveMerge
00566 };
00567
00568
00569 enum EQuaternionMode { eAsQuaternion, eAsEuler, eResample };
00570 enum EObjectDerivation { eByLayer, eByEntity, eByBlock };
00571
00572 enum ESysUnits
00573 {
00574 eUnitsUser,
00575 eUnitsInches,
00576 eUnitsFeet,
00577 eUnitYards,
00578 eUnitsMiles,
00579 eUnitsMillimeters,
00580 eUnitsCentimeters,
00581 eUnitsMeters,
00582 eUnitsKilometers
00583 };
00584
00585 enum ESysFrameRate
00586 {
00587 eFrameRateUser,
00588 eFrameRateHours,
00589 eFrameRateMinutes,
00590 eFrameRateSeconds,
00591 eFrameRateMilliseconds,
00592 eFrameRateGames15,
00593 eFrameRateFilm24,
00594 eFrameRatePAL25,
00595 eFrameRateNTSC30,
00596 eFrameRateShowScan48,
00597 eFrameRatePALField50,
00598 eFrameRateNTSCField60
00599 };
00600
00601
00602 enum EEnveloppeSystem
00603 {
00604 eSkinModifier,
00605 ePhysic,
00606 eBonePro,
00607 eEnveloppeSystemCount
00608 };
00609
00610
00611 enum EGeometryType
00612 {
00613 eTriangle,
00614 eSimplifiedPoly,
00615 ePolygon,
00616 eNurbs,
00617 ePatch,
00618 eGeometryTypeCount
00619 };
00620
00621
00622 enum EIKType
00623 {
00624 eNone,
00625 eFBIK,
00626 eHumanIK
00627 };
00628
00629 protected:
00630 FbxIOSettings(FbxManager& pManager,const char* pName);
00631
00632 private:
00633 void AddNewPropInfo(FbxProperty& pProp);
00634 void DeletePropInfo(FbxProperty& pProp);
00635 void DeleteAllPropInfo(FbxProperty& pProp);
00636
00637 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00638 };
00639
00640 #include <fbxsdk/fbxsdk_nsend.h>
00641
00642 #endif