kfbxdatatypes.h

Go to the documentation of this file.
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