fbxsdk/core/fbxpropertyhandle.h Source File
 
 
 
fbxsdk/core/fbxpropertyhandle.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_CORE_PROPERTY_HANDLE_H_
00014 #define _FBXSDK_CORE_PROPERTY_HANDLE_H_
00015 
00016 #include <fbxsdk/fbxsdk_def.h>
00017 
00018 #include <fbxsdk/core/fbxconnectionpoint.h>
00019 #include <fbxsdk/core/fbxpropertytypes.h>
00020 #include <fbxsdk/core/fbxpropertydef.h>
00021 
00022 #include <fbxsdk/fbxsdk_nsbegin.h>
00023 
00024 class FbxPropertyPage;
00025 class FbxPropertyHandle;
00026 class FbxConnectionPointFilter;
00027 
00031 class FBXSDK_DLL FbxPropertyHandle
00032 {
00033 public:
00038 
00039         static FbxPropertyHandle                Create();
00040 
00044         static FbxPropertyHandle                Create(const FbxPropertyHandle& pInstanceOf);
00045 
00050         static FbxPropertyHandle        Create(const char* pName, EFbxType pType=eFbxUndefined);
00051 
00056         static FbxPropertyHandle        Create(const char* pName, FbxPropertyHandle pTypeInfo);
00057 
00061         bool                                            Destroy();
00062 
00064         FbxPropertyHandle();
00068         FbxPropertyHandle(const FbxPropertyHandle& pAddress);
00069 
00071         ~FbxPropertyHandle();
00072 
00073 
00078         FbxPropertyHandle(FbxPropertyPage* pPage, FbxInt pId=FBXSDK_PROPERTY_ID_ROOT);
00079 
00080 
00082 
00087 
00088         // Assignment
00092         FbxPropertyHandle& operator=(const FbxPropertyHandle& pHandle);
00093 
00098         bool    operator==(const FbxPropertyHandle& pHandle) const;
00099 
00104         bool    operator!=(const FbxPropertyHandle& pHandle) const;
00105 
00110         bool    Is(const FbxPropertyHandle& pHandle) const;
00111 
00113         bool    Valid() const;
00114 
00116         const char*     GetName() const;
00118         const char*     GetLabel() const;
00123         bool    SetLabel(const char* pLabel);
00124 
00126         EFbxType                        GetType() const;
00128         FbxPropertyHandle       GetTypeInfo() const;
00129 
00130         // Flag management
00132         FbxPropertyAttr::EFlags GetFlags() const;
00133         
00139         FbxPropertyAttr::EInheritType   GetFlagsInheritType( FbxPropertyAttr::EFlags pFlags, bool pCheckReferences ) const;
00140 
00146         bool    ModifyFlags(FbxPropertyAttr::EFlags pFlags, bool pValue);
00147 
00153         bool    SetFlagsInheritType( FbxPropertyAttr::EFlags pFlags, FbxPropertyAttr::EInheritType pType );
00154 
00156         void*   GetUserData() const;
00157 
00162         bool    SetUserData(const void* pUserData);
00163 
00165         int             GetUserTag() const;
00166 
00171         bool    SetUserTag(int pUserData);
00173 
00178 
00183         int             AddEnumValue(const char* pStringValue);
00184 
00189         void    InsertEnumValue(int pIndex, const char* pStringValue);
00190 
00194         int             GetEnumCount();
00195 
00200         void    SetEnumValue(int pIndex, const char* pStringValue);
00201 
00205         void    RemoveEnumValue(int pIndex);
00206 
00211         char*   GetEnumValue(int pIndex);
00213 
00214 
00219 
00220         
00221 
00223         void    BeginCreateOrFindProperty();
00225         void    EndCreateOrFindProperty();
00226 
00230         inline bool     IsRoot() const { return (mPage && (mId==0)) ? true : false; }
00231 
00236         bool    IsChildOf(const FbxPropertyHandle& pParent) const;
00237 
00242         bool    IsDescendentOf(const FbxPropertyHandle& pParent) const;
00243 
00248         bool    SetParent(const FbxPropertyHandle& pOther );
00249 
00255         FbxPropertyHandle       Add(const char* pName, const FbxPropertyHandle& pTypeInfo);
00256 
00260         FbxPropertyHandle       GetParent() const;
00261 
00262         
00263 
00267         FbxPropertyHandle       GetChild()  const;
00268 
00272         FbxPropertyHandle       GetSibling() const;
00273 
00277         FbxPropertyHandle       GetFirstDescendent()  const;
00278 
00284         FbxPropertyHandle       GetNextDescendent(const FbxPropertyHandle& pHandle) const;
00285 
00291         FbxPropertyHandle       Find(const char* pName, bool pCaseSensitive) const;
00292 
00299         FbxPropertyHandle       Find(const char* pName, const FbxPropertyHandle& pTypeInfo, bool pCaseSensitive) const;
00300 
00309         FbxPropertyHandle       Find(const char* pName, const char* pChildrenSeparator, bool pCaseSensitive) const;
00310 
00320         FbxPropertyHandle       Find(const char* pName, const char* pChildrenSeparator, const FbxPropertyHandle& pTypeInfo, bool pCaseSensitive) const;
00322 
00327 
00333         bool    ConnectSrc(const FbxPropertyHandle& pSrc, const FbxConnection::EType pType=FbxConnection::eDefault); 
00334 
00340         int             GetSrcCount(FbxConnectionPointFilter* pFilter=0) const; 
00341 
00348         FbxPropertyHandle       GetSrc(FbxConnectionPointFilter* pFilter=0, int pIndex=0) const; 
00349 
00354         bool    DisconnectSrc(const FbxPropertyHandle& pSrc);
00355 
00360         bool    IsConnectedSrc(const FbxPropertyHandle& pSrc);
00361 
00367         bool    ConnectDst(const FbxPropertyHandle& pDst, const FbxConnection::EType pType=FbxConnection::eDefault); 
00368 
00374         int             GetDstCount(FbxConnectionPointFilter* pFilter=0) const; 
00375 
00382         FbxPropertyHandle       GetDst(FbxConnectionPointFilter* pFilter=0, int pIndex=0) const; 
00383 
00388         bool    DisconnectDst(const FbxPropertyHandle& pDst);
00389 
00394         bool    IsConnectedDst(const FbxPropertyHandle& pDst);
00395 
00397         void    ClearConnectCache();
00398 
00400         void    WipeAllConnections();
00402 
00416 
00420         bool    HasMin() const;
00421 
00427         bool    GetMin(void* pValue, EFbxType pValueType) const;
00428 
00434         bool    SetMin(const void* pValue, EFbxType pValueType);
00435 
00440         template <class T> inline bool  SetMin( const T& pValue )                       { return SetMin( &pValue,FbxTypeOf(pValue) ); }
00441 
00447         template <class T> inline T             GetMin( const T* pFBX_TYPE) const       { T lValue; GetMin( &lValue,FbxTypeOf(lValue) ); return lValue; }
00448 
00452         bool    HasSoftMin() const;
00453 
00459         bool    GetSoftMin(void* pValue, EFbxType pValueType) const;
00460 
00466         bool    SetSoftMin(const void* pValue, EFbxType pValueType);
00467 
00472         template <class T> inline bool  SetSoftMin( const T& pValue )                   { return SetSoftMin( &pValue,FbxTypeOf(pValue) ); }
00473 
00479         template <class T> inline T             GetSoftMin( const T* pFBX_TYPE) const   { T lValue; GetSoftMin( &lValue,FbxTypeOf(lValue) ); return lValue; }
00480 
00484         bool    HasMax() const;
00485 
00491         bool    GetMax(void* pValue, EFbxType pValueType) const;
00492 
00498         bool    SetMax(const void* pValue, EFbxType pValueType);
00499 
00504         template <class T> inline bool  SetMax( const T& pValue )                       { return SetMax( &pValue,FbxTypeOf(pValue) ); }
00505 
00511         template <class T> inline T             GetMax( const T* pFBX_TYPE) const       { T lValue; GetMax( &lValue,FbxTypeOf(lValue) ); return lValue; }
00512 
00516         bool    HasSoftMax() const;
00517 
00523         bool    GetSoftMax(void* pValue, EFbxType pValueType) const;
00524 
00530         bool    SetSoftMax      (const void* pValue, EFbxType pValueType);
00531 
00536         template <class T> inline bool  SetSoftMax( const T& pValue )                   { return SetSoftMax( &pValue,FbxTypeOf(pValue) ); }
00537 
00543         template <class T> inline T             GetSoftMax( const T* pFBX_TYPE) const   { T lValue; GetSoftMax( &lValue,FbxTypeOf(lValue) ); return lValue; }
00544 
00545 
00550 
00555         FbxPropertyAttr::EInheritType   GetValueInheritType(bool pCheckReferences) const;
00556 
00561         bool    SetValueInheritType(FbxPropertyAttr::EInheritType pType);
00562 
00568         bool    GetDefaultValue(void* pValue, EFbxType pValueType) const;
00569 
00575         bool    Get(void* pValue, EFbxType pValueType) const;
00576 
00584         bool    Set(const void* pValue, EFbxType pValueType, bool pCheckValueEquality);
00585 
00590         template <class T> inline bool  Set( const T& pValue )                  { return Set( &pValue,FbxTypeOf(pValue) ); }
00591 
00596         template <class T> inline T             Get( const T* pFBX_TYPE) const  { T lValue; Get( &lValue,FbxTypeOf(lValue) ); return lValue; }
00598 
00603 public:
00604 
00608         void    SetPageDataPtr(void* pData);
00609 
00613         void*   GetPageDataPtr() const;
00614 
00616 
00621 
00625         bool    PushPropertiesToParentInstance();
00626 
00627 
00629 
00634 
00638         bool    IsAReferenceTo(void) const;
00639 
00643         void*   GetReferenceTo(void) const;
00644 
00648         bool    IsReferencedBy(void) const;
00649 
00653         int             GetReferencedByCount(void) const;
00654 
00659         void*   GetReferencedBy(int pIndex) const; 
00661 
00662 
00663 private:
00664         FbxPropertyPage*        mPage;
00665         FbxInt                          mId;
00666 
00667 };
00668 
00669 #include <fbxsdk/fbxsdk_nsend.h>
00670 
00671 #endif /* _FBXSDK_CORE_PROPERTY_HANDLE_H_ */