00001
00004 #ifndef _FBXSDK_PATCH_H_
00005 #define _FBXSDK_PATCH_H_
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
00042 #include <kaydaradef.h>
00043 #ifndef KFBX_DLL
00044 #define KFBX_DLL K_DLLIMPORT
00045 #endif
00046
00047 #include <kaydara.h>
00048
00049 #include <kfbxplugins/kfbxgeometry.h>
00050
00051 #include <fbxfilesdk_nsbegin.h>
00052
00053 class KFbxSdkManager;
00054
00058 class KFBX_DLL KFbxPatch : public KFbxGeometry
00059 {
00060 KFBXOBJECT_DECLARE(KFbxPatch,KFbxGeometry);
00061 public:
00063 virtual EAttributeType GetAttributeType() const;
00064
00066 void Reset();
00067
00072
00076 void SetSurfaceMode(KFbxGeometry::ESurfaceMode pMode);
00077
00081 inline KFbxGeometry::ESurfaceMode GetSurfaceMode() const {return mSurfaceMode;}
00082
00090 typedef enum
00091 {
00092 eBEZIER = 0,
00093 eBEZIER_QUADRIC = 1,
00094 eCARDINAL = 2,
00095 eBSPLINE = 3,
00096 eLINEAR = 4
00097 } EPatchType;
00098
00105 void InitControlPoints(int pUCount, EPatchType pUType, int pVCount, EPatchType pVType);
00106
00110 inline int GetUCount() const {return mUCount;}
00111
00115 inline int GetVCount() const {return mVCount;}
00116
00120 inline EPatchType GetPatchUType() const {return mUType;}
00121
00125 inline EPatchType GetPatchVType () const {return mVType;}
00126
00132 void SetStep(int pUStep, int pVStep);
00133
00137 inline int GetUStep() const {return mUStep;}
00138
00142 inline int GetVStep() const {return mVStep;}
00143
00148 void SetClosed(bool pU, bool pV);
00149
00153 inline bool GetUClosed() const {return mUClosed;}
00154
00158 inline bool GetVClosed() const {return mVClosed;}
00159
00166 void SetUCapped(bool pUBottom, bool pUTop);
00167
00171 inline bool GetUCappedBottom() const {return mUCappedBottom;}
00172
00176 inline bool GetUCappedTop() const {return mUCappedTop;}
00177
00184 void SetVCapped(bool pVBottom, bool pVTop);
00185
00189 inline bool GetVCappedBottom() const {return mVCappedBottom;}
00190
00194 inline bool GetVCappedTop() const {return mVCappedTop;}
00195
00197
00202 virtual bool ContentWriteTo(KFbxStream& pStream) const;
00203 virtual bool ContentReadFrom(const KFbxStream& pStream);
00205
00206 #ifdef _DEBUG
00207 virtual int MemoryUsage() const;
00208 #endif
00209
00211
00212
00213
00214
00215
00216
00218
00219 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00220
00221 public:
00222
00223
00224 virtual KFbxObject* Clone(KFbxObject* pContainer, KFbxObject::ECloneType pCloneType) const;
00225
00226 protected:
00227
00228 KFbxPatch(KFbxSdkManager& pManager, char const* pName);
00229 virtual ~KFbxPatch();
00230
00231 virtual void Destruct(bool pRecursive, bool pDependents);
00232
00234 KFbxPatch& operator=(KFbxPatch const& pPatch);
00235
00236 virtual KString GetTypeName() const;
00237 virtual KStringList GetTypeFlags() const;
00238
00239 EPatchType mUType, mVType;
00240 int mUCount, mVCount;
00241 int mUStep, mVStep;
00242 bool mUClosed, mVClosed;
00243 bool mUCappedBottom, mUCappedTop;
00244 bool mVCappedBottom, mVCappedTop;
00245
00246 KFbxGeometry::ESurfaceMode mSurfaceMode;
00247
00248 friend class KFbxReaderFbx;
00249 friend class KFbxReaderFbx6;
00250 friend struct KFbxReaderFbx7Impl;
00251 friend class KFbxWriterFbx;
00252 friend class KFbxWriterFbx6;
00253 friend struct KFbxWriterFbx7Impl;
00254
00255 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00256
00257 };
00258
00259 typedef KFbxPatch* HKFbxPatch;
00260
00261 #include <fbxfilesdk_nsend.h>
00262
00263 #endif // #ifndef _FBXSDK_PATCH_H_
00264
00265