|
From: <kin...@us...> - 2004-02-27 19:19:27
|
Update of /cvsroot/teem/teem/src/nrrd In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19845 Modified Files: apply1D.c Log Message: added airMop usage, renamed some variables for good measure, TEAT approved Index: apply1D.c =================================================================== RCS file: /cvsroot/teem/teem/src/nrrd/apply1D.c,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** apply1D.c 27 Feb 2004 18:09:57 -0000 1.23 --- apply1D.c 27 Feb 2004 19:10:31 -0000 1.24 *************** *** 873,900 **** */ int ! nrrdApply1DSubstitution(Nrrd *nout, const Nrrd *nin, const Nrrd *nsubst) { char me[]="nrrdApply1DSubstitution", err[AIR_STRLEN_MED]; double (*lup)(const void *, size_t); double (*ins)(void *, size_t, double); ! Nrrd *dsubst; ! double val, sval, *d; size_t ii, num; int jj, asize0, asize1, changed; ! if (!(nout && nsubst && nin)) { sprintf(err, "%s: got NULL pointer", me); biffAdd(NRRD, err); return 1; } ! if (nrrdTypeBlock == nin->type || nrrdTypeBlock == nsubst->type) { sprintf(err, "%s: input or substitution type is %s, need scalar", me, airEnumStr(nrrdType, nrrdTypeBlock)); biffAdd(NRRD, err); return 1; } ! if (2 != nsubst->dim) { sprintf(err, "%s: substitution table has to be 2-D, not %d-D", ! me, nsubst->dim); biffAdd(NRRD, err); return 1; } ! nrrdAxisInfoGet(nsubst, nrrdAxisInfoSize, &asize0, &asize1); if (2 != asize0) { sprintf(err, "%s: substitution table has to be 2xN, not %dxN", --- 873,901 ---- */ int ! nrrdApply1DSubstitution(Nrrd *nout, const Nrrd *nin, const Nrrd *_nsubst) { char me[]="nrrdApply1DSubstitution", err[AIR_STRLEN_MED]; double (*lup)(const void *, size_t); double (*ins)(void *, size_t, double); ! Nrrd *nsubst; ! double val, *subst; size_t ii, num; int jj, asize0, asize1, changed; + airArray *mop; ! if (!(nout && _nsubst && nin)) { sprintf(err, "%s: got NULL pointer", me); biffAdd(NRRD, err); return 1; } ! if (nrrdTypeBlock == nin->type || nrrdTypeBlock == _nsubst->type) { sprintf(err, "%s: input or substitution type is %s, need scalar", me, airEnumStr(nrrdType, nrrdTypeBlock)); biffAdd(NRRD, err); return 1; } ! if (2 != _nsubst->dim) { sprintf(err, "%s: substitution table has to be 2-D, not %d-D", ! me, _nsubst->dim); biffAdd(NRRD, err); return 1; } ! nrrdAxisInfoGet(_nsubst, nrrdAxisInfoSize, &asize0, &asize1); if (2 != asize0) { sprintf(err, "%s: substitution table has to be 2xN, not %dxN", *************** *** 908,926 **** } } ! if (nrrdConvert(dsubst = nrrdNew(), nsubst, nrrdTypeDouble)) { sprintf(err, "%s: couldn't create double copy of substitution table", me); ! biffAdd(NRRD, err); dsubst = nrrdNuke(dsubst); return 1; } lup = nrrdDLookup[nout->type]; ins = nrrdDInsert[nout->type]; num = nrrdElementNumber(nout); - d = (double *)dsubst->data; for (ii=0; ii<num; ii++) { val = lup(nout->data, ii); changed = AIR_FALSE; for (jj=0; jj<asize1; jj++) { ! sval = d[jj*2+0]; ! if (val == sval) { ! val = d[jj*2+1]; changed = AIR_TRUE; } --- 909,930 ---- } } ! ! mop = airMopNew(); ! nsubst = nrrdNew(); ! airMopAdd(mop, nsubst, (airMopper)nrrdNuke, airMopAlways); ! if (nrrdConvert(nsubst, _nsubst, nrrdTypeDouble)) { sprintf(err, "%s: couldn't create double copy of substitution table", me); ! biffAdd(NRRD, err); airMopError(mop); return 1; } lup = nrrdDLookup[nout->type]; ins = nrrdDInsert[nout->type]; + subst = (double *)nsubst->data; num = nrrdElementNumber(nout); for (ii=0; ii<num; ii++) { val = lup(nout->data, ii); changed = AIR_FALSE; for (jj=0; jj<asize1; jj++) { ! if (val == subst[jj*2+0]) { ! val = subst[jj*2+1]; changed = AIR_TRUE; } *************** *** 930,934 **** } } ! dsubst = nrrdNuke(dsubst); return 0; } --- 934,939 ---- } } ! ! airMopOkay(mop); return 0; } |