00001 /**************************************************************************************** 00002 00003 Copyright (C) 2010 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 00014 #ifndef FBXFILESDK_KFBXPLUGINS_KFBXDATATYPES_H 00015 #define FBXFILESDK_KFBXPLUGINS_KFBXDATATYPES_H 00016 00017 #include <fbxfilesdk/fbxfilesdk_def.h> 00018 00019 #include <fbxfilesdk/components/kbaselib/klib/kdebug.h> 00020 #include <fbxfilesdk/components/kbaselib/klib/kstring.h> 00021 00022 #include <fbxfilesdk/kfbxplugins/kfbxtypes.h> 00023 #include <fbxfilesdk/kfbxplugins/kfbxcolor.h> 00024 #include <fbxfilesdk/kfbxmath/kfbxvector4.h> 00025 00026 #include <fbxfilesdk/fbxcore/kfbxpropertyhandle.h> 00027 00028 #include <fbxfilesdk/fbxfilesdk_nsbegin.h> 00029 00030 class KFbxSdkManager; 00031 class KFbxTypeInfo_internal; 00032 00036 class KFBX_DLL KFbxDataType { 00037 00038 public: 00039 static KFbxDataType Create(const char *pName,EFbxType pType); 00040 static KFbxDataType Create(const char *pName,KFbxDataType const &pDataType); 00045 00046 KFbxDataType(); 00047 00051 KFbxDataType( KFbxDataType const &pDataType ); 00052 00054 void Destroy(); 00055 00059 KFbxDataType( KFbxTypeInfoHandle const &pTypeInfoHandle ); 00060 00062 ~KFbxDataType(); 00064 00065 00066 public: 00071 inline KFbxDataType& operator=(const KFbxDataType &pDataType) { mTypeInfoHandle=pDataType.mTypeInfoHandle; return *this; } 00072 00077 00082 inline bool operator==(const KFbxDataType& pDataType) const { return mTypeInfoHandle==pDataType.mTypeInfoHandle; } 00083 00088 inline bool operator!=(const KFbxDataType& pDataType) const { return mTypeInfoHandle!=pDataType.mTypeInfoHandle; } 00090 public: 00091 00095 inline bool Valid() const { return mTypeInfoHandle.Valid(); } 00096 00101 inline bool Is(const KFbxDataType& pDataType) const { return mTypeInfoHandle.Is(pDataType.mTypeInfoHandle); } 00102 00106 EFbxType GetType() const; 00107 00111 const char* GetName() const; 00112 00113 private: 00114 KFbxTypeInfoHandle mTypeInfoHandle; 00115 public: 00119 inline KFbxTypeInfoHandle const &GetTypeInfoHandle() const { return mTypeInfoHandle; } 00120 00121 friend class KFbxSdkManager; 00122 }; 00123 00124 // Default Basic Types 00125 extern KFBX_DLL KFbxDataType DTByte; 00126 extern KFBX_DLL KFbxDataType DTUByte; 00127 extern KFBX_DLL KFbxDataType DTShort; 00128 extern KFBX_DLL KFbxDataType DTUShort; 00129 extern KFBX_DLL KFbxDataType DTUInteger; 00130 extern KFBX_DLL KFbxDataType DTLongLong; 00131 extern KFBX_DLL KFbxDataType DTULongLong; 00132 extern KFBX_DLL KFbxDataType DTHalfFloat; 00133 00134 extern KFBX_DLL KFbxDataType DTNone; 00135 extern KFBX_DLL KFbxDataType DTBool; 00136 extern KFBX_DLL KFbxDataType DTInteger; 00137 extern KFBX_DLL KFbxDataType DTFloat; 00138 extern KFBX_DLL KFbxDataType DTDouble; 00139 extern KFBX_DLL KFbxDataType DTDouble2; 00140 extern KFBX_DLL KFbxDataType DTDouble3; 00141 extern KFBX_DLL KFbxDataType DTDouble4; 00142 extern KFBX_DLL KFbxDataType DTDouble44; 00143 extern KFBX_DLL KFbxDataType DTEnum; 00144 extern KFBX_DLL KFbxDataType DTStringList; // ? 00145 extern KFBX_DLL KFbxDataType DTString; 00146 extern KFBX_DLL KFbxDataType DTCharPtr; // ? 00147 extern KFBX_DLL KFbxDataType DTTime; 00148 extern KFBX_DLL KFbxDataType DTTimeCode; 00149 extern KFBX_DLL KFbxDataType DTReference; 00150 extern KFBX_DLL KFbxDataType DTCompound; 00151 extern KFBX_DLL KFbxDataType DTBlob; 00152 extern KFBX_DLL KFbxDataType DTDistance; 00153 extern KFBX_DLL KFbxDataType DTDateTime; 00154 00155 // MB Specific datatypes 00156 extern KFBX_DLL KFbxDataType DTAction; 00157 extern KFBX_DLL KFbxDataType DTEvent; 00158 00159 // Specialised reference Properties 00160 extern KFBX_DLL KFbxDataType DTReferenceObject; 00161 extern KFBX_DLL KFbxDataType DTReferenceProperty; 00162 00163 // Extended sub types 00164 extern KFBX_DLL KFbxDataType DTColor3; 00165 extern KFBX_DLL KFbxDataType DTColor4; 00166 00167 // Support for older datatypes 00168 extern KFBX_DLL KFbxDataType DTReal; 00169 extern KFBX_DLL KFbxDataType DTVector3D; 00170 extern KFBX_DLL KFbxDataType DTVector4D; 00171 00172 // Tranforms Types 00173 extern KFBX_DLL KFbxDataType DTTranslation; 00174 extern KFBX_DLL KFbxDataType DTRotation; 00175 extern KFBX_DLL KFbxDataType DTScaling; 00176 extern KFBX_DLL KFbxDataType DTQuaternion; 00177 00178 extern KFBX_DLL KFbxDataType DTLocalTranslation; 00179 extern KFBX_DLL KFbxDataType DTLocalRotation; 00180 extern KFBX_DLL KFbxDataType DTLocalScaling; 00181 extern KFBX_DLL KFbxDataType DTLocalQuaternion; 00182 00183 extern KFBX_DLL KFbxDataType DTTransformMatrix; 00184 extern KFBX_DLL KFbxDataType DTTranslationMatrix; 00185 extern KFBX_DLL KFbxDataType DTRotationMatrix; 00186 extern KFBX_DLL KFbxDataType DTScalingMatrix; 00187 00188 // Material-related types (also used as DataType for Texture layer elements) 00189 extern KFBX_DLL KFbxDataType DTMaterialEmissive; 00190 extern KFBX_DLL KFbxDataType DTMaterialEmissiveFactor; 00191 extern KFBX_DLL KFbxDataType DTMaterialAmbient; 00192 extern KFBX_DLL KFbxDataType DTMaterialAmbientFactor; 00193 extern KFBX_DLL KFbxDataType DTMaterialDiffuse; 00194 extern KFBX_DLL KFbxDataType DTMaterialDiffuseFactor; 00195 extern KFBX_DLL KFbxDataType DTMaterialBump; 00196 extern KFBX_DLL KFbxDataType DTMaterialNormalMap; 00197 extern KFBX_DLL KFbxDataType DTMaterialTransparentColor; 00198 extern KFBX_DLL KFbxDataType DTMaterialTransparencyFactor; 00199 extern KFBX_DLL KFbxDataType DTMaterialSpecular; 00200 extern KFBX_DLL KFbxDataType DTMaterialSpecularFactor; 00201 extern KFBX_DLL KFbxDataType DTMaterialShininess; 00202 extern KFBX_DLL KFbxDataType DTMaterialReflection; 00203 extern KFBX_DLL KFbxDataType DTMaterialReflectionFactor; 00204 extern KFBX_DLL KFbxDataType DTMaterialDisplacement; 00205 extern KFBX_DLL KFbxDataType DTMaterialVectorDisplacement; 00206 extern KFBX_DLL KFbxDataType DTMaterialCommonFactor; 00207 extern KFBX_DLL KFbxDataType DTMaterialCommonTexture; 00208 00209 // LayerElement 00210 extern KFBX_DLL KFbxDataType DTLayerElementUndefined; 00211 extern KFBX_DLL KFbxDataType DTLayerElementNormal; 00212 extern KFBX_DLL KFbxDataType DTLayerElementBinormal; 00213 extern KFBX_DLL KFbxDataType DTLayerElementTangent; 00214 extern KFBX_DLL KFbxDataType DTLayerElementMaterial; 00215 extern KFBX_DLL KFbxDataType DTLayerElementTexture; 00216 extern KFBX_DLL KFbxDataType DTLayerElementPolygonGroup; 00217 extern KFBX_DLL KFbxDataType DTLayerElementUV; 00218 extern KFBX_DLL KFbxDataType DTLayerElementVertexColor; 00219 extern KFBX_DLL KFbxDataType DTLayerElementSmoothing; 00220 extern KFBX_DLL KFbxDataType DTLayerElementCrease; 00221 extern KFBX_DLL KFbxDataType DTLayerElementHole; 00222 extern KFBX_DLL KFbxDataType DTLayerElementUserData; 00223 extern KFBX_DLL KFbxDataType DTLayerElementVisibility; 00224 00225 // File references / External file references 00226 extern KFBX_DLL KFbxDataType DTUrl; 00227 extern KFBX_DLL KFbxDataType DTXRefUrl; 00228 00229 // IO Specialised Types 00230 extern KFBX_DLL KFbxDataType DTPresets; 00231 extern KFBX_DLL KFbxDataType DTStatistics; 00232 extern KFBX_DLL KFbxDataType DTUnits; 00233 extern KFBX_DLL KFbxDataType DTWarning; 00234 extern KFBX_DLL KFbxDataType DTWeb; 00235 extern KFBX_DLL KFbxDataType DTTextLine; 00236 extern KFBX_DLL KFbxDataType DTAlias; 00237 00238 00239 // Motion Builder Specialised Types 00240 extern KFBX_DLL KFbxDataType DTIntensity; 00241 extern KFBX_DLL KFbxDataType DTConeAngle; 00242 extern KFBX_DLL KFbxDataType DTFog; 00243 extern KFBX_DLL KFbxDataType DTShape; 00244 extern KFBX_DLL KFbxDataType DTFieldOfView; 00245 extern KFBX_DLL KFbxDataType DTFieldOfViewX; 00246 extern KFBX_DLL KFbxDataType DTFieldOfViewY; 00247 extern KFBX_DLL KFbxDataType DTOpticalCenterX; 00248 extern KFBX_DLL KFbxDataType DTOpticalCenterY; 00249 00250 extern KFBX_DLL KFbxDataType DTRoll; 00251 extern KFBX_DLL KFbxDataType DTCameraIndex; 00252 extern KFBX_DLL KFbxDataType DTTimeWarp; 00253 extern KFBX_DLL KFbxDataType DTVisibility; 00254 extern KFBX_DLL KFbxDataType DTVisibilityInheritance; 00255 00256 extern KFBX_DLL KFbxDataType DTTranslationUV; 00257 extern KFBX_DLL KFbxDataType DTScalingUV; 00258 extern KFBX_DLL KFbxDataType DTTextureRotation;//MB DT 00259 extern KFBX_DLL KFbxDataType DTHSB; 00260 00261 extern KFBX_DLL KFbxDataType DTOrientation; 00262 extern KFBX_DLL KFbxDataType DTLookAt; 00263 00264 extern KFBX_DLL KFbxDataType DTOcclusion; 00265 extern KFBX_DLL KFbxDataType DTWeight; 00266 00267 extern KFBX_DLL KFbxDataType DTIKReachTranslation; 00268 extern KFBX_DLL KFbxDataType DTIKReachRotation; 00269 00270 KFBX_DLL KFbxDataType const & GetFbxDataType(EFbxType pType); 00271 00272 // Internal use 00273 KFBX_DLL bool KFbxTypesInit (KFbxSdkManager *pManager); 00274 KFBX_DLL void KFbxTypesRelease(KFbxSdkManager *pManager); 00275 00276 KFBX_DLL char* FbxDataTypeToFormatPropertyType( KFbxDataType const &pDataType ); 00277 KFBX_DLL KFbxDataType const &FormatPropertyTypeToFbxDataType( const char *pDataTypeName ); 00278 00279 00280 00281 #include <fbxfilesdk/fbxfilesdk_nsend.h> 00282 00283 #endif // FBXFILESDK_KFBXPLUGINS_KFBXDATATYPES_H 00284