|
From: <kin...@us...> - 2004-02-19 04:00:08
|
Update of /cvsroot/teem/teem/src/gage In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22888 Modified Files: gage.h pvl.c scl.c sclanswer.c Log Message: change from <lib>_export extern to TEEM_API, also renamed gageSclCurvedness to gageSclTotalCurv, and added GAGE_QUERY_ADD and gageQueryAdd Index: gage.h =================================================================== RCS file: /cvsroot/teem/teem/src/gage/gage.h,v retrieving revision 1.59 retrieving revision 1.60 diff -C2 -d -r1.59 -r1.60 *** gage.h 13 Feb 2004 22:56:15 -0000 1.59 --- gage.h 19 Feb 2004 03:50:02 -0000 1.60 *************** *** 31,40 **** #include <teem/nrrd.h> - #if defined(_WIN32) && !defined(TEEM_STATIC) && !defined(__CYGWIN__) - #define gage_export __declspec(dllimport) - #else - #define gage_export - #endif - #ifdef __cplusplus extern "C" { --- 31,34 ---- *************** *** 261,265 **** gageSclK1, /* 17: "k1", 1st principle curvature: GT[1] */ gageSclK2, /* 18: "k2", 2nd principle curvature (k2 <= k1): GT[1] */ ! gageSclCurvedness, /* 19: "cv", L2 norm(K1,K2) (not Koen.'s "C"): GT[1] */ gageSclShapeTrace, /* 20, "st", (K1+K2)/Curvedness: GT[1] */ gageSclShapeIndex, /* 21: "si", Koen.'s shape index, ("S"): GT[1] */ --- 255,259 ---- gageSclK1, /* 17: "k1", 1st principle curvature: GT[1] */ gageSclK2, /* 18: "k2", 2nd principle curvature (k2 <= k1): GT[1] */ ! gageSclTotalCurv, /* 19: "tc", L2 norm(K1,K2) (not Koen.'s "C"): GT[1] */ gageSclShapeTrace, /* 20, "st", (K1+K2)/Curvedness: GT[1] */ gageSclShapeIndex, /* 21: "si", Koen.'s shape index, ("S"): GT[1] */ *************** *** 449,452 **** --- 443,449 ---- p[0] = q[0]; p[1] = q[1]; p[2] = q[2]; p[3] = q[3]; \ p[4] = q[4]; p[5] = q[5]; p[6] = q[6]; p[7] = q[7] + #define GAGE_QUERY_ADD(p, q) \ + p[0] |= q[0]; p[1] |= q[1]; p[2] |= q[2]; p[3] |= q[3]; \ + p[4] |= q[4]; p[5] |= q[5]; p[6] |= q[6]; p[7] |= q[7] #define GAGE_QUERY_EQUAL(p, q) \ (p[0] == q[0] && p[1] == q[1] && p[2] == q[2] && p[3] == q[3] \ *************** *** 583,600 **** /* defaultsGage.c */ ! extern gage_export const char *gageBiffKey; ! extern gage_export int gageDefVerbose; ! extern gage_export gage_t gageDefGradMagMin; ! extern gage_export gage_t gageDefGradMagCurvMin; ! extern gage_export int gageDefRenormalize; ! extern gage_export int gageDefCheckIntegrals; ! extern gage_export int gageDefNoRepadWhenSmaller; ! extern gage_export int gageDefK3Pack; ! extern gage_export gage_t gageDefDefaultSpacing; ! extern gage_export int gageDefCurvNormalSide; ! extern gage_export double gageDefKernelIntegralNearZero; ! extern gage_export int gageDefRequireAllSpacings; ! extern gage_export int gageDefRequireEqualCenters; ! extern gage_export int gageDefDefaultCenter; /* miscGage.c */ --- 580,597 ---- /* defaultsGage.c */ ! TEEM_API const char *gageBiffKey; ! TEEM_API int gageDefVerbose; ! TEEM_API gage_t gageDefGradMagMin; ! TEEM_API gage_t gageDefGradMagCurvMin; ! TEEM_API int gageDefRenormalize; ! TEEM_API int gageDefCheckIntegrals; ! TEEM_API int gageDefNoRepadWhenSmaller; ! TEEM_API int gageDefK3Pack; ! TEEM_API gage_t gageDefDefaultSpacing; ! TEEM_API int gageDefCurvNormalSide; ! TEEM_API double gageDefKernelIntegralNearZero; ! TEEM_API int gageDefRequireAllSpacings; ! TEEM_API int gageDefRequireEqualCenters; ! TEEM_API int gageDefDefaultCenter; /* miscGage.c */ *************** *** 602,658 **** gageProbe(): using biff is too heavy-weight for this, and the idea is that no ill should occur if the error is repeatedly ignored */ ! extern gage_export char gageErrStr[AIR_STRLEN_LARGE]; ! extern gage_export int gageErrNum; ! extern gage_export gage_t gageZeroNormal[3]; ! extern gage_export airEnum *gageKernel; ! extern void gageParmReset(gageParm *parm); ! extern void gagePointReset(gagePoint *point); ! extern gageItemSpec *gageItemSpecNew(void); ! extern gageItemSpec *gageItemSpecNix(gageItemSpec *isp); /* kind.c */ ! extern int gageKindCheck(gageKind *kind); ! extern int gageKindTotalAnswerLength(gageKind *kind); ! extern int gageKindAnswerOffset(gageKind *kind, int item); /* print.c */ ! extern void gageQueryPrint(FILE *file, gageKind *kind, gageQuery query); /* sclfilter.c */ ! extern void gageScl3PFilter2(gage_t *iv3, gage_t *iv2, gage_t *iv1, ! gage_t *fw00, gage_t *fw11, gage_t *fw22, ! gage_t *val, gage_t *gvec, gage_t *hess, ! int doV, int doD1, int doD2); ! extern void gageScl3PFilter4(gage_t *iv3, gage_t *iv2, gage_t *iv1, ! gage_t *fw00, gage_t *fw11, gage_t *fw22, ! gage_t *val, gage_t *gvec, gage_t *hess, ! int doV, int doD1, int doD2); ! extern void gageScl3PFilterN(int fd, ! gage_t *iv3, gage_t *iv2, gage_t *iv1, ! gage_t *fw00, gage_t *fw11, gage_t *fw22, ! gage_t *val, gage_t *gvec, gage_t *hess, ! int doV, int doD1, int doD2); /* scl.c */ ! extern gage_export airEnum *gageScl; ! extern gage_export gageKind *gageKindScl; /* vecGage.c (together with vecprint.c, these contain everything to implement the "vec" kind, and could be used as examples of what it takes to create a new gageKind) */ ! extern gage_export airEnum *gageVec; ! extern gage_export gageKind *gageKindVec; /* shape.c */ ! extern void gageShapeReset(gageShape *shp); ! extern gageShape *gageShapeNew(); ! extern gageShape *gageShapeNix(gageShape *shape); ! extern int gageShapeSet(gageShape *shp, Nrrd *nin, int baseDim); ! extern void gageShapeUnitWtoI(gageShape *shape, ! double index[3], double world[3]); ! extern void gageShapeUnitItoW(gageShape *shape, ! double world[3], double index[3]); ! extern int gageShapeEqual(gageShape *shp1, char *name1, ! gageShape *shp2, char *name2); /* the organization of the next two files used to be according to --- 599,655 ---- gageProbe(): using biff is too heavy-weight for this, and the idea is that no ill should occur if the error is repeatedly ignored */ ! TEEM_API char gageErrStr[AIR_STRLEN_LARGE]; ! TEEM_API int gageErrNum; ! TEEM_API gage_t gageZeroNormal[3]; ! TEEM_API airEnum *gageKernel; ! TEEM_API void gageParmReset(gageParm *parm); ! TEEM_API void gagePointReset(gagePoint *point); ! TEEM_API gageItemSpec *gageItemSpecNew(void); ! TEEM_API gageItemSpec *gageItemSpecNix(gageItemSpec *isp); /* kind.c */ ! TEEM_API int gageKindCheck(gageKind *kind); ! TEEM_API int gageKindTotalAnswerLength(gageKind *kind); ! TEEM_API int gageKindAnswerOffset(gageKind *kind, int item); /* print.c */ ! TEEM_API void gageQueryPrint(FILE *file, gageKind *kind, gageQuery query); /* sclfilter.c */ ! TEEM_API void gageScl3PFilter2(gage_t *iv3, gage_t *iv2, gage_t *iv1, ! gage_t *fw00, gage_t *fw11, gage_t *fw22, ! gage_t *val, gage_t *gvec, gage_t *hess, ! int doV, int doD1, int doD2); ! TEEM_API void gageScl3PFilter4(gage_t *iv3, gage_t *iv2, gage_t *iv1, ! gage_t *fw00, gage_t *fw11, gage_t *fw22, ! gage_t *val, gage_t *gvec, gage_t *hess, ! int doV, int doD1, int doD2); ! TEEM_API void gageScl3PFilterN(int fd, ! gage_t *iv3, gage_t *iv2, gage_t *iv1, ! gage_t *fw00, gage_t *fw11, gage_t *fw22, ! gage_t *val, gage_t *gvec, gage_t *hess, ! int doV, int doD1, int doD2); /* scl.c */ ! TEEM_API airEnum *gageScl; ! TEEM_API gageKind *gageKindScl; /* vecGage.c (together with vecprint.c, these contain everything to implement the "vec" kind, and could be used as examples of what it takes to create a new gageKind) */ ! TEEM_API airEnum *gageVec; ! TEEM_API gageKind *gageKindVec; /* shape.c */ ! TEEM_API void gageShapeReset(gageShape *shp); ! TEEM_API gageShape *gageShapeNew(); ! TEEM_API gageShape *gageShapeNix(gageShape *shape); ! TEEM_API int gageShapeSet(gageShape *shp, Nrrd *nin, int baseDim); ! TEEM_API void gageShapeUnitWtoI(gageShape *shape, ! double index[3], double world[3]); ! TEEM_API void gageShapeUnitItoW(gageShape *shape, ! double world[3], double index[3]); ! TEEM_API int gageShapeEqual(gageShape *shp1, char *name1, ! gageShape *shp2, char *name2); /* the organization of the next two files used to be according to *************** *** 660,696 **** but that's just a complete mess now */ /* pvl.c */ ! extern int gageVolumeCheck(gageContext *ctx, Nrrd *nin, gageKind *kind); ! extern gagePerVolume *gagePerVolumeNew(gageContext *ctx, ! Nrrd *nin, gageKind *kind); ! extern gagePerVolume *gagePerVolumeNix(gagePerVolume *pvl); ! extern void gagePadderSet(gageContext *ctx, ! gagePerVolume *pvl, gagePadder_t *padder); ! extern void gageNixerSet(gageContext *ctx, ! gagePerVolume *pvl, gageNixer_t *nixer); ! extern gage_t *gageAnswerPointer(gageContext *ctx, ! gagePerVolume *pvl, int item); ! extern int gageQueryReset(gageContext *ctx, gagePerVolume *pvl); ! extern int gageQuerySet(gageContext *ctx, gagePerVolume *pvl, gageQuery query); ! extern int gageQueryItemOn(gageContext *ctx, gagePerVolume *pvl, int item); /* ctx.c */ ! extern gageContext *gageContextNew(); ! extern gageContext *gageContextCopy(gageContext *ctx); ! extern gageContext *gageContextNix(gageContext *ctx); ! extern void gageParmSet(gageContext *ctx, int which, gage_t val); ! extern int gagePerVolumeIsAttached(gageContext *ctx, gagePerVolume *pvl); ! extern int gagePerVolumeAttach(gageContext *ctx, gagePerVolume *pvl); ! extern int gagePerVolumeDetach(gageContext *ctx, gagePerVolume *pvl); ! extern int gageKernelSet(gageContext *ctx, ! int which, const NrrdKernel *k, double *kparm); ! extern void gageKernelReset(gageContext *ctx); ! extern int gageProbe(gageContext *ctx, gage_t x, gage_t y, gage_t z); /* update.c */ ! extern int gageUpdate(gageContext *ctx); /* st.c */ ! extern int gageStructureTensor(Nrrd *nout, Nrrd *nin, ! int dScale, int iScale, int dsmp); #ifdef __cplusplus --- 657,696 ---- but that's just a complete mess now */ /* pvl.c */ ! TEEM_API int gageVolumeCheck(gageContext *ctx, Nrrd *nin, gageKind *kind); ! TEEM_API gagePerVolume *gagePerVolumeNew(gageContext *ctx, ! Nrrd *nin, gageKind *kind); ! TEEM_API gagePerVolume *gagePerVolumeNix(gagePerVolume *pvl); ! TEEM_API void gagePadderSet(gageContext *ctx, ! gagePerVolume *pvl, gagePadder_t *padder); ! TEEM_API void gageNixerSet(gageContext *ctx, ! gagePerVolume *pvl, gageNixer_t *nixer); ! TEEM_API gage_t *gageAnswerPointer(gageContext *ctx, ! gagePerVolume *pvl, int item); ! TEEM_API int gageQueryReset(gageContext *ctx, gagePerVolume *pvl); ! TEEM_API int gageQuerySet(gageContext *ctx, gagePerVolume *pvl, ! gageQuery query); ! TEEM_API int gageQueryAdd(gageContext *ctx, gagePerVolume *pvl, ! gageQuery query); ! TEEM_API int gageQueryItemOn(gageContext *ctx, gagePerVolume *pvl, int item); /* ctx.c */ ! TEEM_API gageContext *gageContextNew(); ! TEEM_API gageContext *gageContextCopy(gageContext *ctx); ! TEEM_API gageContext *gageContextNix(gageContext *ctx); ! TEEM_API void gageParmSet(gageContext *ctx, int which, gage_t val); ! TEEM_API int gagePerVolumeIsAttached(gageContext *ctx, gagePerVolume *pvl); ! TEEM_API int gagePerVolumeAttach(gageContext *ctx, gagePerVolume *pvl); ! TEEM_API int gagePerVolumeDetach(gageContext *ctx, gagePerVolume *pvl); ! TEEM_API int gageKernelSet(gageContext *ctx, ! int which, const NrrdKernel *k, double *kparm); ! TEEM_API void gageKernelReset(gageContext *ctx); ! TEEM_API int gageProbe(gageContext *ctx, gage_t x, gage_t y, gage_t z); /* update.c */ ! TEEM_API int gageUpdate(gageContext *ctx); /* st.c */ ! TEEM_API int gageStructureTensor(Nrrd *nout, Nrrd *nin, ! int dScale, int iScale, int dsmp); #ifdef __cplusplus Index: pvl.c =================================================================== RCS file: /cvsroot/teem/teem/src/gage/pvl.c,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** pvl.c 13 Feb 2004 22:56:15 -0000 1.10 --- pvl.c 19 Feb 2004 03:50:02 -0000 1.11 *************** *** 284,287 **** --- 284,309 ---- int + gageQueryAdd(gageContext *ctx, gagePerVolume *pvl, gageQuery query) { + char me[]="gageQueryAdd", err[AIR_STRLEN_MED]; + + if (!( pvl )) { + sprintf(err, "%s: got NULL pointer", me); + biffAdd(GAGE, err); return 1; + } + if (pvl->thisIsACopy) { + sprintf(err, "%s: can't operate on a pervolume copy", me); + biffAdd(GAGE, err); return 1; + } + + GAGE_QUERY_ADD(pvl->query, query); + if (gageQuerySet(ctx, pvl, pvl->query)) { + sprintf(err, "%s: trouble", me); + biffAdd(GAGE, err); return 1; + } + + return 0; + } + + int gageQueryItemOn(gageContext *ctx, gagePerVolume *pvl, int item) { char me[]="gageQueryItemOn", err[AIR_STRLEN_MED]; Index: scl.c =================================================================== RCS file: /cvsroot/teem/teem/src/gage/scl.c,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** scl.c 13 Feb 2004 22:56:15 -0000 1.30 --- scl.c 19 Feb 2004 03:50:02 -0000 1.31 *************** *** 52,58 **** {gageScl2ndDD, 1, 2, {gageSclHessian, gageSclNormal, -1, -1, -1}, -1, -1}, {gageSclGeomTens, 1, 2, {gageSclHessian, gageSclNPerp, gageSclGradMag, -1, -1}, -1, -1}, ! {gageSclK1, 1, 2, {gageSclCurvedness, gageSclShapeTrace, -1, -1, -1}, -1, -1}, ! {gageSclK2, 1, 2, {gageSclCurvedness, gageSclShapeTrace, -1, -1, -1}, -1, -1}, ! {gageSclCurvedness, 1, 2, {gageSclGeomTens, -1, -1, -1, -1}, -1, -1}, {gageSclShapeTrace, 1, 2, {gageSclGeomTens, -1, -1, -1, -1}, -1, -1}, {gageSclShapeIndex, 1, 2, {gageSclK1, gageSclK2, -1, -1, -1}, -1, -1}, --- 52,58 ---- {gageScl2ndDD, 1, 2, {gageSclHessian, gageSclNormal, -1, -1, -1}, -1, -1}, {gageSclGeomTens, 1, 2, {gageSclHessian, gageSclNPerp, gageSclGradMag, -1, -1}, -1, -1}, ! {gageSclK1, 1, 2, {gageSclTotalCurv, gageSclShapeTrace, -1, -1, -1}, -1, -1}, ! {gageSclK2, 1, 2, {gageSclTotalCurv, gageSclShapeTrace, -1, -1, -1}, -1, -1}, ! {gageSclTotalCurv, 1, 2, {gageSclGeomTens, -1, -1, -1, -1}, -1, -1}, {gageSclShapeTrace, 1, 2, {gageSclGeomTens, -1, -1, -1, -1}, -1, -1}, {gageSclShapeIndex, 1, 2, {gageSclK1, gageSclK2, -1, -1, -1}, -1, -1}, *************** *** 86,90 **** "kappa1", "kappa2", ! "curvedness", "shape trace", "shape index", --- 86,90 ---- "kappa1", "kappa2", ! "total curvature", "shape trace", "shape index", *************** *** 118,123 **** "1st principal curvature (K1)", "2nd principal curvature (K2)", ! "curvedness (L2 norm of K1, K2)", ! "shape trace = (K1+K2)/curvedness", "Koenderink's shape index", "mean curvature = (K1+K2)/2", --- 118,123 ---- "1st principal curvature (K1)", "2nd principal curvature (K2)", ! "total curvature (L2 norm of K1, K2)", ! "shape trace = (K1+K2)/(total curvature)", "Koenderink's shape index", "mean curvature = (K1+K2)/2", *************** *** 150,154 **** gageSclK1, gageSclK2, ! gageSclCurvedness, gageSclShapeTrace, gageSclShapeIndex, --- 150,154 ---- gageSclK1, gageSclK2, ! gageSclTotalCurv, gageSclShapeTrace, gageSclShapeIndex, *************** *** 179,183 **** #define GS_K1 gageSclK1 #define GS_K2 gageSclK2 ! #define GS_CV gageSclCurvedness #define GS_ST gageSclShapeTrace #define GS_SI gageSclShapeIndex --- 179,183 ---- #define GS_K1 gageSclK1 #define GS_K2 gageSclK2 ! #define GS_TC gageSclTotalCurv #define GS_ST gageSclShapeTrace #define GS_SI gageSclShapeIndex *************** *** 210,214 **** "k1", "kap1", "kappa1", "k2", "kap2", "kappa2", ! "cv", "curvedness", "st", "shape trace", "si", "shape index", --- 210,214 ---- "k1", "kap1", "kappa1", "k2", "kap2", "kappa2", ! "total curv", "totalcurv", "total curvature", "tc", "cv", "curvedness", "st", "shape trace", "si", "shape index", *************** *** 242,246 **** GS_K1, GS_K1, GS_K1, GS_K2, GS_K2, GS_K2, ! GS_CV, GS_CV, GS_ST, GS_ST, GS_SI, GS_SI, --- 242,246 ---- GS_K1, GS_K1, GS_K1, GS_K2, GS_K2, GS_K2, ! GS_TC, GS_TC, GS_TC, GS_TC, GS_TC, GS_TC, GS_ST, GS_ST, GS_SI, GS_SI, Index: sclanswer.c =================================================================== RCS file: /cvsroot/teem/teem/src/gage/sclanswer.c,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** sclanswer.c 13 Feb 2004 23:12:52 -0000 1.16 --- sclanswer.c 19 Feb 2004 03:50:02 -0000 1.17 *************** *** 140,145 **** } } ! if (GAGE_QUERY_ITEM_TEST(pvl->query, gageSclCurvedness)) { ! curv = pvl->directAnswer[gageSclCurvedness][0] = ELL_3M_FROB(gten); } if (GAGE_QUERY_ITEM_TEST(pvl->query, gageSclShapeTrace)) { --- 140,145 ---- } } ! if (GAGE_QUERY_ITEM_TEST(pvl->query, gageSclTotalCurv)) { ! curv = pvl->directAnswer[gageSclTotalCurv][0] = ELL_3M_FROB(gten); } if (GAGE_QUERY_ITEM_TEST(pvl->query, gageSclShapeTrace)) { |