00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef __GEO_FwdDiff_h__
00026 #define __GEO_FwdDiff_h__
00027
00028 #include "GEO_API.h"
00029 #include <GB/GB_FwdDiff.h>
00030
00031 class UT_Vector4;
00032 class GB_AttributeData;
00033 class GB_FloatOffsets;
00034 class GEO_Detail;
00035 class GEO_Vertex;
00036 class GEO_AttributeHandleList;
00037
00038 class GEO_API GEO_FwdDiff : public GB_FwdDiff {
00039 public:
00040
00041
00042
00043 GEO_FwdDiff(int uOrd=4, float uIncrem=1.f, int vOrd=1, float vIncrem=1.f)
00044 : GB_FwdDiff(uOrd, uIncrem, vOrd, vIncrem) {}
00045
00046
00047 virtual ~GEO_FwdDiff() { }
00048
00049
00050
00051
00052 void walk(unsigned uCount, unsigned vCount,
00053 unsigned crtUCount, unsigned crtVCount, unsigned nCols,
00054 UT_Vector4 df[][GB_MAXORDER], UT_Vector4 *val);
00055 void walk(unsigned uCount, unsigned crtUCount,
00056 UT_Vector4 df[GB_MAXORDER], UT_Vector4 *val);
00057
00058 void walkWAttrib(unsigned uCount, unsigned vCount,
00059 unsigned crtUCount, unsigned crtVCount,
00060 unsigned nCols, UT_Vector4 df[][GB_MAXORDER],
00061 UT_Vector4 *val,
00062 GB_AttributeData adf[][GB_MAXORDER],
00063 GB_AttributeData *ad,
00064 const GB_FloatOffsets &foffsets, int asize);
00065 void walkWAttrib(unsigned uCount, unsigned crtUCount,
00066 UT_Vector4 df[GB_MAXORDER], UT_Vector4 *val,
00067 GB_AttributeData adf[GB_MAXORDER],
00068 GB_AttributeData *ad,
00069 const GB_FloatOffsets &foffsets, int asize);
00070
00071 void walk(GEO_Detail *gdp, GEO_AttributeHandleList &hlist,
00072 uint uCount, uint vCount,
00073 uint crtUCount, uint crtVCount, uint nCols,
00074 GEO_Vertex *dfr[][GB_MAXORDER], GEO_Vertex **results);
00075 void walk(GEO_Detail *gdp, GEO_AttributeHandleList &hlist,
00076 uint uCount, uint crtUCount,
00077 GEO_Vertex *dfr[GB_MAXORDER], GEO_Vertex **results);
00078
00079 protected:
00080 private:
00081
00082 };
00083
00084 #endif