kfbxrenamingstrategy.h
Go to the documentation of this file.00001
00003 #ifndef _FBXSDK_RENAMING_STRATEGY_H_
00004 #define _FBXSDK_RENAMING_STRATEGY_H_
00005
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 #include <klib/kstring.h>
00042 #include <klib/kstringlist.h>
00043 #include <klib/krenamingstrategy.h>
00044 #include <klib/kcharptrset.h>
00045
00046 #ifndef MB_FBXSDK
00047 #include <kbaselib_nsuse.h>
00048 #endif
00049
00050 #include <fbxfilesdk_nsbegin.h>
00051 class KFbxNode;
00052 class KFbxTexture;
00053 class KFbxVideo;
00054 class KFbxScene;
00055 class KFbxNodeAttribute;
00056
00057
00065 class KFbxRenamingStrategy : public KRenamingStrategy
00066 {
00067 public:
00068
00074 enum EMode
00075 {
00076 eTO_FBX,
00077 eFROM_FBX,
00078 eMODE_COUNT
00079 };
00080
00086 enum EClashType
00087 {
00088 eNAMECLASH_AUTO,
00089 eNAMECLASH_TYPE1,
00090 eNAMECLASH_TYPE2
00091 };
00092
00093
00095 KFbxRenamingStrategy(EMode pMod, bool pOnCreationRun = false);
00096
00098 virtual ~KFbxRenamingStrategy ();
00099
00101 void SetClashSoverType(EClashType pType);
00102
00107 virtual bool Rename(KName& pName);
00108
00110 virtual void Clear();
00111
00116 virtual KRenamingStrategy* Clone();
00117
00122 static char* NoPrefixName (char const* pName);
00123 static char* NoPrefixName (KString& pName);
00124
00128 virtual char* GetNameSpace() { return mNameSpace.GetBuffer(); }
00129
00133 virtual void SetInNameSpaceSymbol(KString pNameSpaceSymbol){mInNameSpaceSymbol = pNameSpaceSymbol;}
00134
00138 virtual void SetOutNameSpaceSymbol(KString pNameSpaceSymbol){mOutNameSpaceSymbol = pNameSpaceSymbol;}
00139
00143 virtual void SetCaseSensibility(bool pIsCaseSensitive){mCaseSensitive = pIsCaseSensitive ;}
00144
00148 virtual void SetReplaceNonAlphaNum(bool pReplaceNonAlphaNum){mReplaceNonAlphaNum = pReplaceNonAlphaNum;}
00149
00153 virtual void SetFirstNotNum(bool pFirstNotNum){mFirstNotNum = pFirstNotNum;}
00154
00160 virtual bool RenameUnparentNameSpace(KFbxNode* pNode, bool pIsRoot = false);
00161
00166 virtual bool RemoveImportNameSpaceClash(KFbxNode* pNode);
00167
00168 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00169
00170 virtual void GetParentsNameSpaceList(KFbxNode* pNode, KArrayTemplate<KString*> &pNameSpaceList);
00171 virtual bool PropagateNameSpaceChange(KFbxNode* pNode, KString OldNS, KString NewNS);
00172
00173 protected:
00174
00175 virtual bool RenameToFBX(KName& pName);
00176 virtual bool RenameFromFBX(KName& pName);
00177 virtual KString& ReplaceNonAlphaNum(KString& pName, char* pReplace, bool pIgnoreNameSpace);
00178
00179 EMode mMode;
00180 EClashType mType;
00181
00182 struct NameCell
00183 {
00184 NameCell(char const* pName) :
00185 mName(pName),
00186 mInstanceCount(0)
00187 {
00188 }
00189
00190 KString mName;
00191 int mInstanceCount;
00192 };
00193
00194
00195 KCharPtrSet mStringNameArray;
00196 KArrayTemplate<NameCell*> mExistingNsList;
00197 bool mOnCreationRun;
00198 bool mCaseSensitive;
00199 bool mReplaceNonAlphaNum;
00200 bool mFirstNotNum;
00201 KString mNameSpace;
00202 KString mInNameSpaceSymbol;
00203 KString mOutNameSpaceSymbol;
00204
00205 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00206
00207 };
00208
00217 class KFbxSceneRenamer
00218 {
00219
00220 public:
00221
00225 KFbxSceneRenamer(KFbxScene* pScene){mScene = pScene;};
00226
00230 virtual ~KFbxSceneRenamer(){};
00231
00252 enum ERenamingMode
00253 {
00254 eNONE,
00255 eMAYA_TO_FBX5,
00256 eMAYA_TO_FBX_MB75,
00257 eMAYA_TO_FBX_MB70,
00258 eFBXMB75_TO_FBXMB70,
00259 eFBX_TO_FBX,
00260 eMAYA_TO_FBX,
00261 eFBX_TO_MAYA,
00262 eLW_TO_FBX,
00263 eFBX_TO_LW,
00264 eXSI_TO_FBX,
00265 eFBX_TO_XSI,
00266 eMAX_TO_FBX,
00267 eFBX_TO_MAX,
00268 eMB_TO_FBX,
00269 eFBX_TO_MB,
00270 eDAE_TO_FBX,
00271 eFBX_TO_DAE
00272 };
00273
00274 void RenameFor(ERenamingMode pMode);
00275
00288 void ResolveNameClashing( bool pFromFbx, bool pIgnoreNS, bool pIsCaseSensitive,
00289 bool pReplaceNonAlphaNum, bool pFirstNotNum,
00290 KString pInNameSpaceSymbol, KString pOutNameSpaceSymbol,
00291 bool pNoUnparentNS, bool pRemoveNameSpaceClash);
00292 private:
00293
00294 KRenamingStrategy* mNodeRenamingStrategy;
00295 KFbxScene* mScene;
00296 };
00297
00298
00299 #include <fbxfilesdk_nsend.h>
00300
00301 #endif // #define _FBXSDK_RENAMING_STRATEGY_H_
00302