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/fbxobject.h>
00019 #include <fbxsdk/fileio/fbxiosettingspath.h>
00020
00021 #include <fbxsdk/fbxsdk_nsbegin.h>
00022
00023
00024 #if (defined(_MSC_VER) || defined(__MINGW32__)) && defined(mkdir)
00025 #undef mkdir
00026 #endif
00027
00028 #define IOSVisible true
00029 #define IOSHidden false
00030
00031 #define IOSSavable true
00032 #define IOSNotSavable false
00033
00034 #define IOSEnabled true
00035 #define IOSDisabled false
00036
00037 #define IOSBinary 0
00038 #define IOSASCII 1
00039
00040 class FbxManager;
00041 class FbxIOSettings;
00042
00043
00044
00045
00046 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00047 class FbxIOPropInfo
00048 {
00049 public:
00050 FbxIOPropInfo();
00051 ~FbxIOPropInfo();
00052
00053 void* UIWidget;
00054 void* cbValueChanged;
00055 void* cbDirty;
00056 FbxStringList labels;
00057 };
00058
00059 class FBXSDK_DLL FbxIOInfo
00060 {
00061 public:
00062 enum EImpExp {eImport, eExport};
00063
00064 FbxIOInfo();
00065
00066 void Reset(EImpExp pImpExp);
00067 void SetTimeMode(FbxTime::EMode pTimeMode, double pCustomFrameRate = 0.0);
00068 FbxTime::EMode GetTimeMode(){ return mTimeMode; }
00069 FbxTime GetFramePeriod();
00070 void SetASFScene(FbxObject* pASFScene, bool pASFSceneOwned = false);
00071 FbxObject* GetASFScene(){ return mASFScene; }
00072 void Set_IOS(FbxIOSettings* pIOS){ios = pIOS;}
00073 void SetImportExportMode(EImpExp pImpExp){mImpExp = pImpExp;}
00074
00075 private:
00076 FbxTime::EMode mTimeMode;
00077 FbxObject* mASFScene;
00078 EImpExp mImpExp;
00079 FbxIOSettings* ios;
00080 };
00081 #endif
00082
00207 class FBXSDK_DLL FbxIOSettings : public FbxObject
00208 {
00209 FBXSDK_OBJECT_DECLARE(FbxIOSettings, FbxObject);
00210
00211 public:
00213 enum ELanguage
00214 {
00215 eENU,
00216 eDEU,
00217 eFRA,
00218 eJPN,
00219 eKOR,
00220 eCHS,
00221 eLanguageCount
00222 };
00223
00230 FbxProperty AddPropertyGroup(const char* pName, const FbxDataType& pDataType=FbxDataType(), const char* pLabel="");
00231
00242 FbxProperty AddPropertyGroup(const FbxProperty& pParentProperty, const char* pName, const FbxDataType& pDataType = FbxDataType(),
00243 const char* pLabel = "", bool pVisible = true, bool pSavable = true, bool pEnabled = true );
00244
00256 FbxProperty AddProperty(const FbxProperty& pParentProperty, const char* pName, const FbxDataType& pDataType = FbxDataType(),
00257 const char* pLabel = "", const void* pValue = NULL, bool pVisible = true,
00258 bool pSavable = true, bool pEnabled = true );
00259
00275 FbxProperty AddPropertyMinMax(const FbxProperty& pParentProperty, const char* pName, const FbxDataType& pDataType = FbxDataType(),
00276 const char* pLabel = "", const void* pValue = NULL, const double* pMinValue = NULL, const double* pMaxValue = NULL,
00277 bool pVisible = true, bool pSavable = true, bool pEnabled = true );
00278
00279
00286 FbxProperty GetProperty(const char* pName) const;
00287
00294 FbxProperty GetProperty(const FbxProperty& pParentProperty, const char* pName) const;
00295
00301 bool GetBoolProp(const char* pName, bool pDefValue) const;
00302
00307 void SetBoolProp(const char* pName, bool pValue);
00308
00314 double GetDoubleProp(const char* pName, double pDefValue) const;
00315
00320 void SetDoubleProp(const char* pName, double pValue);
00321
00327 int GetIntProp(const char* pName, int pDefValue) const;
00328
00333 void SetIntProp(const char* pName, int pValue);
00334
00339 FbxTime GetTimeProp(const char* pName, FbxTime pDefValue) const;
00340
00346 void SetTimeProp(const char* pName, FbxTime pValue);
00347
00366
00372 FbxString GetEnumProp(const char* pName, FbxString pDefValue) const;
00373
00379 int GetEnumProp(const char* pName, int pDefValue) const;
00380
00386 int GetEnumIndex(const char* pName, FbxString pValue) const;
00387
00393 void SetEnumProp(const char* pName, FbxString pValue);
00394
00400 void SetEnumProp(const char* pName, int pValue);
00401
00409 void RemoveEnumPropValue(const char* pName, FbxString pValue);
00410
00414 void EmptyEnumProp(const char* pName);
00415
00421 bool IsEnumExist(FbxProperty& pProp, const FbxString& enumString) const;
00422
00429 int GetEnumIndex(FbxProperty& pProp, const FbxString& enumString, bool pNoCase = false) const;
00431
00438 bool SetFlag(const char* pName, FbxPropertyAttr::EFlags propFlag, bool pValue);
00439
00445 FbxString GetStringProp(const char* pName, FbxString pDefValue) const;
00446
00451 void SetStringProp(const char* pName, FbxString pValue);
00452
00455
00460 virtual bool ReadXMLFile(const FbxString& path);
00461
00467 virtual bool WriteXMLFile(const FbxString& path);
00468
00475 bool WriteXmlPropToFile(const FbxString& pFullPath, const FbxString& propPath);
00477
00478
00479
00480
00481 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00482 FbxIOPropInfo* GetPropInfo(FbxProperty &pProp);
00483
00484 ELanguage UILanguage;
00485 FbxString GetLanguageLabel(FbxProperty& pProp);
00486 void SetLanguageLabel(FbxProperty& pProp, FbxString& pLabel);
00487 ELanguage Get_Max_Runtime_Language(FbxString pRegLocation);
00488
00489 FbxIOInfo impInfo;
00490 FbxIOInfo expInfo;
00491
00492 static FbxString GetUserMyDocumentDir();
00493 void SetPropVisible(FbxProperty& pProp, bool pWithChildren, bool pVisible);
00494
00495
00496 bool ReadXmlPropFromMyDocument(const FbxString& subDir, const FbxString& filename);
00497
00498
00499 bool WriteXmlPropToMyDocument(const FbxString& subDir, const FbxString& filename, const FbxString& propPath);
00500
00501 static const char* GetFileMergeDescription(int pIndex);
00502
00503 enum ELoadMode
00504 {
00505 eCreate,
00506 eMerge,
00507 eExclusiveMerge
00508 };
00509
00510
00511 enum EQuaternionMode { eAsQuaternion, eAsEuler, eResample };
00512 enum EObjectDerivation { eByLayer, eByEntity, eByBlock };
00513
00514 enum ESysUnits
00515 {
00516 eUnitsUser,
00517 eUnitsInches,
00518 eUnitsFeet,
00519 eUnitYards,
00520 eUnitsMiles,
00521 eUnitsMillimeters,
00522 eUnitsCentimeters,
00523 eUnitsMeters,
00524 eUnitsKilometers
00525 };
00526
00527 enum ESysFrameRate
00528 {
00529 eFrameRateUser,
00530 eFrameRateHours,
00531 eFrameRateMinutes,
00532 eFrameRateSeconds,
00533 eFrameRateMilliseconds,
00534 eFrameRateGames15,
00535 eFrameRateFilm24,
00536 eFrameRatePAL25,
00537 eFrameRateNTSC30,
00538 eFrameRateShowScan48,
00539 eFrameRatePALField50,
00540 eFrameRateNTSCField60
00541 };
00542
00543
00544 enum EEnveloppeSystem
00545 {
00546 eSkinModifier,
00547 ePhysic,
00548 eBonePro,
00549 eEnveloppeSystemCount
00550 };
00551
00552
00553 enum EGeometryType
00554 {
00555 eTriangle,
00556 eSimplifiedPoly,
00557 ePolygon,
00558 eNurbs,
00559 ePatch,
00560 eGeometryTypeCount
00561 };
00562
00563
00564 enum EIKType
00565 {
00566 eNone,
00567 eFBIK,
00568 eHumanIK
00569 };
00570
00571 protected:
00572 virtual void Construct(const FbxIOSettings* pFrom);
00573 virtual void ConstructProperties(bool pForceSet);
00574 virtual void Destruct(bool pRecursive);
00575
00576 private:
00577 void AddNewPropInfo(FbxProperty& pProp);
00578 void DeletePropInfo(FbxProperty& pProp);
00579 void DeleteAllPropInfo(FbxProperty& pProp);
00580 #endif
00581 };
00582
00583 #include <fbxsdk/fbxsdk_nsend.h>
00584
00585 #endif