00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef GUNU_LINEARIZE_H
00021 #define GUNU_LINEARIZE_H
00022
00023 namespace gunu {
00024
00025 using gul::Ptr;
00026 using gul::point;
00027 using gul::hpoint;
00028
00029 template< class T, class HP >
00030 struct LinearizeCallbackData
00031 {
00032 int much_info;
00033 TessInfo<T,HP> *Org;
00034
00035 void (*usrfunc)( void *,
00036 point<T> *, point<T> *, point<T> *, point<T> *,
00037 point<T> *, point<T> *, point<T> *, point<T> *,
00038 T *, T *, T *, T * );
00039 void *usrdata;
00040
00041 LinearizeCallbackData(
00042 int a_much_info,
00043 TessInfo<T,HP> *a_Org,
00044 void (*a_usrfunc)( void *,
00045 point<T> *, point<T> *, point<T> *, point<T> *,
00046 point<T> *, point<T> *, point<T> *, point<T> *,
00047 T *, T *, T *, T * ),
00048 void *a_usrdata )
00049 {
00050 much_info = a_much_info;
00051 Org = a_Org;
00052 usrfunc = a_usrfunc;
00053 usrdata = a_usrdata;
00054 }
00055 };
00056
00057
00058
00059
00060
00061 template< class T, class HP, class EP >
00062 GULAPI
00063 void LinearizeSurface(
00064 int max_iter,
00065 const int nu, const int pu, Ptr< T > U,
00066 const int nv, const int pv, Ptr< T > V,
00067 Ptr< Ptr < HP > > Pw,
00068 const T tol,
00069 void (*usrfunc)( void *,
00070 EP *, EP *, EP *, EP *,
00071 EP *, EP *, EP *, EP *,
00072 T *, T *, T *, T * ),
00073 void *usrdata );
00074
00075
00076
00077
00078
00079 template< class T, class HP, class EP >
00080 GULAPI
00081 void LinearizeCurve( int max_iter,
00082 const int n, const int p, Ptr< T > U, Ptr< HP > Pw,
00083 const T tol,
00084 void (*usrfunc)( void *, EP *, EP * ), void *usrdata );
00085
00086
00087
00088
00089 template< class T, class HP, class EP >
00090 GULAPI
00091 void LinearizeCurve( int max_iter,
00092 const int n, const int p, Ptr< T > U, Ptr< HP > Pw,
00093 const T tol,
00094 int *ret_nP, Ptr< EP > *retP );
00095
00096 }
00097
00098 #endif
00099
00100
00101
00102
00103