Update of /cvsroot/teem/NrrdIO In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16718 Modified Files: 000-README.txt 754.c GNUmakefile NrrdIO.h NrrdIO_Srcs.txt accessors.c array.c arraysNrrd.c axis.c biffbiff.c comment.c defaultsNrrd.c dio.c encoding.c encodingAscii.c encodingBzip2.c encodingGzip.c encodingHex.c encodingRaw.c endianAir.c endianNrrd.c enum.c enumsNrrd.c format.c formatEPS.c formatNRRD.c formatPNG.c formatPNM.c formatText.c formatVTK.c gzio.c keyvalue.c methodsNrrd.c miscAir.c mop.c parseAir.c parseNrrd.c pre-GNUmakefile preamble.c privateNrrd.h read.c reorder.c sampleIO.c sane.c simple.c string.c teem32bit.h teemBigbitfield.h teemDio.h teemEndian.h teemPng.h teemQnanhibit.h write.c Log Message: bringing this up-to-date with teem 1.7 (or 1.7.1?) Index: teemBigbitfield.h =================================================================== RCS file: /cvsroot/teem/NrrdIO/teemBigbitfield.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** teemBigbitfield.h 21 Dec 2003 06:40:52 -0000 1.1.1.1 --- teemBigbitfield.h 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, Index: sane.c =================================================================== RCS file: /cvsroot/teem/NrrdIO/sane.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** sane.c 14 Feb 2004 20:26:33 -0000 1.2 --- sane.c 26 May 2004 12:52:21 -0000 1.3 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, Index: sampleIO.c =================================================================== RCS file: /cvsroot/teem/NrrdIO/sampleIO.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** sampleIO.c 21 Dec 2003 06:40:52 -0000 1.1.1.1 --- sampleIO.c 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, Index: teemPng.h =================================================================== RCS file: /cvsroot/teem/NrrdIO/teemPng.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** teemPng.h 21 Dec 2003 06:40:52 -0000 1.1.1.1 --- teemPng.h 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, Index: format.c =================================================================== RCS file: /cvsroot/teem/NrrdIO/format.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** format.c 21 Dec 2003 06:40:52 -0000 1.1.1.1 --- format.c 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, Index: axis.c =================================================================== RCS file: /cvsroot/teem/NrrdIO/axis.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** axis.c 21 Dec 2003 06:40:52 -0000 1.1.1.1 --- axis.c 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, *************** *** 35,39 **** void ! _nrrdAxisInfoInit(NrrdAxis *axis) { if (axis) { --- 35,39 ---- void ! _nrrdAxisInfoInit(NrrdAxisInfo *axis) { if (axis) { *************** *** 41,47 **** axis->spacing = AIR_NAN; axis->min = axis->max = AIR_NAN; ! AIR_FREE(axis->label); ! AIR_FREE(axis->unit); axis->center = nrrdCenterUnknown; } } --- 41,48 ---- axis->spacing = AIR_NAN; axis->min = axis->max = AIR_NAN; ! axis->label = airFree(axis->label); ! axis->unit = airFree(axis->unit); axis->center = nrrdCenterUnknown; + axis->kind = nrrdKindUnknown; } } *************** *** 51,55 **** nrrdAxisInfo *axis; ! axis = calloc(1, sizeof(NrrdAxis)); axis->label = NULL; axis->unit = NULL; --- 52,56 ---- nrrdAxisInfo *axis; ! axis = calloc(1, sizeof(NrrdAxisInfo)); axis->label = NULL; axis->unit = NULL; *************** *** 60,70 **** } ! NrrdAxis * ! nrrdAxisInfoNix(NrrdAxis *axis) { if (axis) { ! AIR_FREE(axis->label); ! AIR_FREE(axis->unit); ! AIR_FREE(axis); } return NULL; --- 61,71 ---- } ! NrrdAxisInfo * ! nrrdAxisInfoNix(NrrdAxisInfo *axis) { if (axis) { ! axis->label = airFree(axis->label); ! axis->unit = airFree(axis->unit); ! axis = airFree(axis); } return NULL; *************** *** 74,79 **** /* ------------------------------------------------------------ */ void ! _nrrdAxisInfoCopy(NrrdAxis *dest, const NrrdAxis *src, int bitflag) { if (!(NRRD_AXIS_INFO_SIZE_BIT & bitflag)) { --- 75,168 ---- /* ------------------------------------------------------------ */ + + /* + ******** nrrdKindSize + ** + ** returns suggested size (length) of an axis with the given kind, or, + ** 0 if there is no suggested size, or the kind was invalid + */ + int + nrrdKindSize(int kind) { + char me[]="nrrdKindSize"; + int ret; + + if (!( AIR_IN_OP(nrrdKindUnknown, kind, nrrdKindLast) )) { + /* they gave us invalid or unknown kind */ + return 0; + } + + switch (kind) { + case nrrdKindDomain: + case nrrdKindList: + ret = 0; + break; + case nrrdKindStub: + case nrrdKindScalar: + ret = 1; + break; + case nrrdKindComplex: + case nrrdKind2Vector: + ret = 2; + break; + case nrrdKind3Color: + case nrrdKind3Vector: + case nrrdKind3Normal: + ret = 3; + break; + case nrrdKind4Color: + case nrrdKind4Vector: + ret = 4; + break; + case nrrdKind2DSymTensor: + ret = 3; + break; + case nrrdKind2DMaskedSymTensor: + ret = 4; + break; + case nrrdKind2DTensor: + ret = 4; + break; + case nrrdKind2DMaskedTensor: + ret = 5; + break; + case nrrdKind3DSymTensor: + ret = 6; + break; + case nrrdKind3DMaskedSymTensor: + ret = 7; + break; + case nrrdKind3DTensor: + ret = 9; + break; + case nrrdKind3DMaskedTensor: + ret = 10; + break; + default: + fprintf(stderr, "%s: PANIC: nrrdKind %d not implemented!\n", me, kind); + exit(1); + } + + return ret; + } + + int + _nrrdKindAltered(int kindIn) { + int kindOut; + + if (nrrdStateKindNoop) { + kindOut = nrrdKindUnknown; + } else { + if (nrrdKindDomain == kindIn + || nrrdKindList == kindIn) { + kindOut = kindIn; + } else { + kindOut = nrrdKindUnknown; + } + } + return kindOut; + } + void ! _nrrdAxisInfoCopy(NrrdAxisInfo *dest, const NrrdAxisInfo *src, int bitflag) { if (!(NRRD_AXIS_INFO_SIZE_BIT & bitflag)) { *************** *** 92,98 **** dest->center = src->center; } if (!(NRRD_AXIS_INFO_LABEL_BIT & bitflag)) { if (dest->label != src->label) { ! AIR_FREE(dest->label); dest->label = airStrdup(src->label); } --- 181,190 ---- dest->center = src->center; } + if (!(NRRD_AXIS_INFO_KIND_BIT & bitflag)) { + dest->kind = src->kind; + } if (!(NRRD_AXIS_INFO_LABEL_BIT & bitflag)) { if (dest->label != src->label) { ! dest->label = airFree(dest->label); dest->label = airStrdup(src->label); } *************** *** 100,104 **** if (!(NRRD_AXIS_INFO_UNIT_BIT & bitflag)) { if (dest->unit != src->unit) { ! AIR_FREE(dest->unit); dest->unit = airStrdup(src->unit); } --- 192,196 ---- if (!(NRRD_AXIS_INFO_UNIT_BIT & bitflag)) { if (dest->unit != src->unit) { ! dest->unit = airFree(dest->unit); dest->unit = airStrdup(src->unit); } *************** *** 195,204 **** nrrd->axis[d].center = info.I[d]; break; case nrrdAxisInfoLabel: ! AIR_FREE(nrrd->axis[d].label); nrrd->axis[d].label = airStrdup(info.CP[d]); break; case nrrdAxisInfoUnit: ! AIR_FREE(nrrd->axis[d].unit); nrrd->axis[d].unit = airStrdup(info.CP[d]); break; --- 287,299 ---- nrrd->axis[d].center = info.I[d]; break; + case nrrdAxisInfoKind: + nrrd->axis[d].kind = info.I[d]; + break; case nrrdAxisInfoLabel: ! nrrd->axis[d].label = airFree(nrrd->axis[d].label); nrrd->axis[d].label = airStrdup(info.CP[d]); break; case nrrdAxisInfoUnit: ! nrrd->axis[d].unit = airFree(nrrd->axis[d].unit); nrrd->axis[d].unit = airStrdup(info.CP[d]); break; *************** *** 237,240 **** --- 332,336 ---- break; case nrrdAxisInfoCenter: + case nrrdAxisInfoKind: info.I[d] = va_arg(ap, int); /* *************** *** 315,318 **** --- 411,417 ---- info.I[d] = nrrd->axis[d].center; break; + case nrrdAxisInfoKind: + info.I[d] = nrrd->axis[d].kind; + break; case nrrdAxisInfoLabel: /* note airStrdup()! */ *************** *** 362,365 **** --- 461,465 ---- break; case nrrdAxisInfoCenter: + case nrrdAxisInfoKind: *((int*)ptr) = info.I[d]; /* printf("!%s: got int[%d] = %d\n", *************** *** 416,420 **** /* ! ******** nrrdAxisPos() ** ** given a nrrd, an axis, and a (floating point) index space position, --- 516,520 ---- /* ! ******** nrrdAxisInfoPos() ** ** given a nrrd, an axis, and a (floating point) index space position, *************** *** 425,429 **** */ double ! nrrdAxisPos(const Nrrd *nrrd, int ax, double idx) { int center, size; double min, max; --- 525,529 ---- */ double ! nrrdAxisInfoPos(const Nrrd *nrrd, int ax, double idx) { int center, size; double min, max; *************** *** 441,445 **** /* ! ******** nrrdAxisIdx() ** ** given a nrrd, an axis, and a (floating point) world space position, --- 541,545 ---- /* ! ******** nrrdAxisInfoIdx() ** ** given a nrrd, an axis, and a (floating point) world space position, *************** *** 450,454 **** */ double ! nrrdAxisIdx(const Nrrd *nrrd, int ax, double pos) { int center, size; double min, max; --- 550,554 ---- */ double ! nrrdAxisInfoIdx(const Nrrd *nrrd, int ax, double pos) { int center, size; double min, max; *************** *** 466,470 **** /* ! ******** nrrdAxisPosRange() ** ** given a nrrd, an axis, and two (floating point) index space positions, --- 566,570 ---- /* ! ******** nrrdAxisInfoPosRange() ** ** given a nrrd, an axis, and two (floating point) index space positions, *************** *** 473,479 **** */ void ! nrrdAxisPosRange(double *loP, double *hiP, ! const Nrrd *nrrd, int ax, ! double loIdx, double hiIdx) { int center, size, flip = 0; double min, max, tmp; --- 573,579 ---- */ void ! nrrdAxisInfoPosRange(double *loP, double *hiP, ! const Nrrd *nrrd, int ax, ! double loIdx, double hiIdx) { int center, size, flip = 0; double min, max, tmp; *************** *** 507,511 **** /* ! ******** nrrdAxisIdxRange() ** ** given a nrrd, an axis, and two (floating point) world space positions, --- 607,611 ---- /* ! ******** nrrdAxisInfoIdxRange() ** ** given a nrrd, an axis, and two (floating point) world space positions, *************** *** 524,530 **** */ void ! nrrdAxisIdxRange(double *loP, double *hiP, ! const Nrrd *nrrd, int ax, ! double loPos, double hiPos) { int center, size, flip = 0; double min, max, tmp; --- 624,630 ---- */ void ! nrrdAxisInfoIdxRange(double *loP, double *hiP, ! const Nrrd *nrrd, int ax, ! double loPos, double hiPos) { int center, size, flip = 0; double min, max, tmp; *************** *** 563,567 **** void ! nrrdAxisSpacingSet(Nrrd *nrrd, int ax) { int sign; double min, max, tmp; --- 663,667 ---- void ! nrrdAxisInfoSpacingSet(Nrrd *nrrd, int ax) { int sign; double min, max, tmp; *************** *** 595,599 **** void ! nrrdAxisMinMaxSet(Nrrd *nrrd, int ax, int defCenter) { int center; double spacing; --- 695,699 ---- void ! nrrdAxisInfoMinMaxSet(Nrrd *nrrd, int ax, int defCenter) { int center; double spacing; Index: NrrdIO_Srcs.txt =================================================================== RCS file: /cvsroot/teem/NrrdIO/NrrdIO_Srcs.txt,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** NrrdIO_Srcs.txt 21 Dec 2003 06:40:52 -0000 1.1.1.1 --- NrrdIO_Srcs.txt 26 May 2004 12:52:21 -0000 1.2 *************** *** 1 **** ! 754.c mop.c array.c parseAir.c dio.c sane.c endianAir.c string.c enum.c miscAir.c biffbiff.c privateNrrd.h accessors.c defaultsNrrd.c enumsNrrd.c arraysNrrd.c methodsNrrd.c reorder.c axis.c simple.c comment.c keyvalue.c endianNrrd.c parseNrrd.c gzio.c read.c write.c format.c formatNRRD.c encoding.c encodingRaw.c encodingAscii.c encodingHex.c encodingGzip.c encodingBzip2.c formatEPS.c formatPNG.c formatPNM.c formatText.c formatVTK.c --- 1 ---- ! 754.c mop.c array.c parseAir.c dio.c sane.c endianAir.c string.c enum.c miscAir.c biffbiff.c accessors.c defaultsNrrd.c enumsNrrd.c arraysNrrd.c methodsNrrd.c reorder.c axis.c simple.c comment.c keyvalue.c endianNrrd.c parseNrrd.c gzio.c read.c write.c format.c formatNRRD.c encoding.c encodingRaw.c encodingAscii.c encodingHex.c encodingGzip.c encodingBzip2.c formatEPS.c formatPNG.c formatPNM.c formatText.c formatVTK.c Index: privateNrrd.h =================================================================== RCS file: /cvsroot/teem/NrrdIO/privateNrrd.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** privateNrrd.h 21 Dec 2003 06:40:52 -0000 1.1.1.1 --- privateNrrd.h 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,34 **** - /* - NrrdIO: stand-alone code for basic nrrd functionality - Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah - - These source files have been copied and/or modified from teem, - Gordon Kindlmann's research software; <http://teem.sourceforge.net>. - Teem is licensed under the GNU Lesser Public License. The - non-copyleft licensing defined here applies to only the source files - in the NrrdIO distribution (not the rest of teem), and only to the - files originating with NrrdIO (not analogous files in teem). - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any - damages arising from the use of this software. - - Permission is granted to anyone to use this software for any - purpose, including commercial applications, and to alter it and - redistribute it freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must - not claim that you wrote the original software. If you use this - software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - - 2. Altered source versions must be plainly marked as such, and must - not be misrepresented as being the original software. - - 3. This notice may not be removed or altered from any source distribution. - */ - #ifndef NRRD_PRIVATE_HAS_BEEN_INCLUDED - #define NRRD_PRIVATE_HAS_BEEN_INCLUDED #ifdef _WIN32 --- 1,3 ---- *************** *** 118,124 **** /* axis.c */ ! extern void _nrrdAxisInfoCopy(NrrdAxis *dest, const NrrdAxis *src, int bitflag); ! extern void _nrrdAxisInfoInit(NrrdAxis *axis); extern int _nrrdCenter(int center); extern int _nrrdCenter2(int center, int def); --- 87,94 ---- /* axis.c */ ! extern int _nrrdKindAltered(int kindIn); ! extern void _nrrdAxisInfoCopy(NrrdAxisInfo *dest, const NrrdAxisInfo *src, int bitflag); ! extern void _nrrdAxisInfoInit(NrrdAxisInfo *axis); extern int _nrrdCenter(int center); extern int _nrrdCenter2(int center, int def); *************** *** 155,158 **** --- 125,129 ---- extern int _nrrdSizeCheck(int dim, const int *size, int useBiff); extern void _nrrdTraverse(Nrrd *nrrd); + extern int _nrrdCopyShallow (Nrrd *nout, const Nrrd *nin); #if TEEM_ZLIB *************** *** 176,178 **** #endif - #endif /* NRRD_PRIVATE_HAS_BEEN_INCLUDED */ --- 147,148 ---- Index: mop.c =================================================================== RCS file: /cvsroot/teem/NrrdIO/mop.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** mop.c 21 Dec 2003 06:40:52 -0000 1.1.1.1 --- mop.c 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, Index: formatEPS.c =================================================================== RCS file: /cvsroot/teem/NrrdIO/formatEPS.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** formatEPS.c 21 Dec 2003 06:40:52 -0000 1.1.1.1 --- formatEPS.c 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, Index: preamble.c =================================================================== RCS file: /cvsroot/teem/NrrdIO/preamble.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** preamble.c 21 Dec 2003 06:40:52 -0000 1.1.1.1 --- preamble.c 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, Index: encodingBzip2.c =================================================================== RCS file: /cvsroot/teem/NrrdIO/encodingBzip2.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** encodingBzip2.c 21 Dec 2003 06:40:52 -0000 1.1.1.1 --- encodingBzip2.c 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, Index: gzio.c =================================================================== RCS file: /cvsroot/teem/NrrdIO/gzio.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** gzio.c 21 Dec 2003 06:40:51 -0000 1.1.1.1 --- gzio.c 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, *************** *** 567,571 **** return 1; } ! AIR_FREE(s->msg); if (s->stream.state != NULL) { if (s->mode == 'w') { --- 567,571 ---- return 1; } ! s->msg = airFree(s->msg); if (s->stream.state != NULL) { if (s->mode == 'w') { *************** *** 584,590 **** biffAdd(NRRD, err); } ! AIR_FREE(s->inbuf); ! AIR_FREE(s->outbuf); ! AIR_FREE(s); return error != Z_OK; } --- 584,590 ---- biffAdd(NRRD, err); } ! s->inbuf = airFree(s->inbuf); ! s->outbuf = airFree(s->outbuf); ! s = airFree(s); return error != Z_OK; } Index: methodsNrrd.c =================================================================== RCS file: /cvsroot/teem/NrrdIO/methodsNrrd.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** methodsNrrd.c 21 Dec 2003 06:40:52 -0000 1.1.1.1 --- methodsNrrd.c 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, *************** *** 39,46 **** if (nio) { ! AIR_FREE(nio->path); ! AIR_FREE(nio->base); ! AIR_FREE(nio->dataFN); ! AIR_FREE(nio->line); nio->lineLen = 0; nio->pos = 0; --- 39,46 ---- if (nio) { ! nio->path = airFree(nio->path); ! nio->base = airFree(nio->base); ! nio->dataFN = airFree(nio->dataFN); ! nio->line = airFree(nio->line); nio->lineLen = 0; nio->pos = 0; *************** *** 88,97 **** NrrdIoState * nrrdIoStateNix (NrrdIoState *nio) { ! ! AIR_FREE(nio->path); ! AIR_FREE(nio->base); ! AIR_FREE(nio->dataFN); ! AIR_FREE(nio->line); ! AIR_FREE(nio); /* the NrrdIoState never owned nio->oldData; we don't free it */ return NULL; --- 88,97 ---- NrrdIoState * nrrdIoStateNix (NrrdIoState *nio) { ! ! nio->path = airFree(nio->path); ! nio->base = airFree(nio->base); ! nio->dataFN = airFree(nio->dataFN); ! nio->line = airFree(nio->line); ! nio = airFree(nio); /* the NrrdIoState never owned nio->oldData; we don't free it */ return NULL; *************** *** 117,121 **** if (nrrd) { ! AIR_FREE(nrrd->data); nrrd->type = nrrdTypeUnknown; nrrd->dim = 0; --- 117,121 ---- if (nrrd) { ! nrrd->data = airFree(nrrd->data); nrrd->type = nrrdTypeUnknown; nrrd->dim = 0; *************** *** 125,129 **** } ! AIR_FREE(nrrd->content); nrrd->blockSize = 0; nrrd->oldMin = nrrd->oldMax = AIR_NAN; --- 125,129 ---- } ! nrrd->content = airFree(nrrd->content); nrrd->blockSize = 0; nrrd->oldMin = nrrd->oldMax = AIR_NAN; *************** *** 201,208 **** if (nrrd) { ! AIR_FREE(nrrd->content); /* HEY: this is a symptom of some stupidity, no? */ for (i=0; i<NRRD_DIM_MAX; i++) { ! AIR_FREE(nrrd->axis[i].label); } nrrdCommentClear(nrrd); --- 201,208 ---- if (nrrd) { ! nrrd->content = airFree(nrrd->content); /* HEY: this is a symptom of some stupidity, no? */ for (i=0; i<NRRD_DIM_MAX; i++) { ! nrrd->axis[i].label = airFree(nrrd->axis[i].label); } nrrdCommentClear(nrrd); *************** *** 210,214 **** nrrdKeyValueClear(nrrd); nrrd->kvpArr = airArrayNix(nrrd->kvpArr); ! AIR_FREE(nrrd); } return NULL; --- 210,214 ---- nrrdKeyValueClear(nrrd); nrrd->kvpArr = airArrayNix(nrrd->kvpArr); ! nrrd = airFree(nrrd); } return NULL; *************** *** 226,230 **** if (nrrd) { ! AIR_FREE(nrrd->data); nrrdInit(nrrd); } --- 226,230 ---- if (nrrd) { ! nrrd->data = airFree(nrrd->data); nrrdInit(nrrd); } *************** *** 357,360 **** --- 357,415 ---- /* + ** _nrrdCopyShallow + ** + ** Similar to nrrdCopy, but the data itself is not copied. nout->data + ** and nout->data will share a pointer to the data. This should be + ** used with extreem caution, because there is no pointer magic to + ** make sure the data is not freed twice. + */ + int + _nrrdCopyShallow (Nrrd *nout, const Nrrd *nin) { + char me[]="_nrrdCopyShallow", err[AIR_STRLEN_MED]; + Nrrd *ntmp; + airArray *mop; + + if (!(nin && nout)) { + sprintf(err, "%s: got NULL pointer", me); + biffAdd(NRRD, err); return 1; + } + + /* We're not using nrrdNew() because it allocates new airArray's for + comments (cmtArr) and key/value pairs (kvpArr), which we do not + need here, and which we don't want to have to explicitly delete */ + ntmp = (Nrrd*)(calloc(1, sizeof(Nrrd))); + if (!ntmp) { + sprintf(err, "%s: error allocating temporary nrrd.", me); + biffAdd(NRRD, err); return 1; + } + /* Since we should never have copied the data, or allocated new meta-data, + we want to make sure that we don't delete it here. */ + mop = airMopNew(); + airMopAdd(mop, ntmp, airFree, airMopAlways); + + /* Shallow copy the contents of the nrrd. It's OK if this is not a + deep copy (i.e. all the axis info), because nrrdCopy will do this + for us. This is only to facilitate setting the data pointer to + NULL which will cause nrrdCopy to not copy the data. */ + memcpy(ntmp, nin, sizeof(Nrrd)); + + /* Setting this to NULL will cause nrrdCopy to not copy the data */ + ntmp->data = NULL; + + if (nrrdCopy(nout, ntmp)) { + sprintf(err, "%s: couldn't copy to output", me); + biffAdd(NRRD, err); + airMopError(mop); + return 1; + } + + /* Share the data pointer */ + nout->data = nin->data; + + airMopOkay(mop); + return 0; + } + + /* ******** nrrdCopy ** *************** *** 395,403 **** /* someone is trying to copy structs without data, fine fine fine */ nout->data = NULL; } nrrdAxisInfoCopy(nout, nin, NULL, NRRD_AXIS_INFO_NONE); /* HEY: shouldn't this be handled with nrrdPeripheralCopy() */ ! AIR_FREE(nout->content); nout->content = airStrdup(nin->content); if (nin->content && !nout->content) { --- 450,465 ---- /* someone is trying to copy structs without data, fine fine fine */ nout->data = NULL; + /* We need to make sure to copy important stuff like type, dim, + and sizes, as this information is not copied elsewhere. If we + did have non-NULL data, this information would be set in + nrrdAlloc_nva() called by nrrdMaybeAlloc_nva() above. */ + nout->type = nin->type; + nout->dim = nin->dim; + nrrdAxisInfoSet_nva(nout, nrrdAxisInfoSize, size); } nrrdAxisInfoCopy(nout, nin, NULL, NRRD_AXIS_INFO_NONE); /* HEY: shouldn't this be handled with nrrdPeripheralCopy() */ ! nout->content = airFree(nout->content); nout->content = airStrdup(nin->content); if (nin->content && !nout->content) { *************** *** 470,474 **** nrrd->type = type; ! AIR_FREE(nrrd->data); nrrd->dim = dim; if (_nrrdSizeCheck(dim, size, AIR_TRUE)) { --- 532,536 ---- nrrd->type = type; ! nrrd->data = airFree(nrrd->data); nrrd->dim = dim; if (_nrrdSizeCheck(dim, size, AIR_TRUE)) { Index: pre-GNUmakefile =================================================================== RCS file: /cvsroot/teem/NrrdIO/pre-GNUmakefile,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** pre-GNUmakefile 13 Feb 2004 02:47:49 -0000 1.2 --- pre-GNUmakefile 26 May 2004 12:52:21 -0000 1.3 *************** *** 1,5 **** # # NrrdIO: stand-alone code for basic nrrd functionality ! # Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah # # These source files have been copied and/or modified from teem, --- 1,5 ---- # # NrrdIO: stand-alone code for basic nrrd functionality ! # Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah # # These source files have been copied and/or modified from teem, *************** *** 38,59 **** ### This file is the single place where the required teem source files ### are listed. Once the NrrdIO source distribution is created, this ! ### GNU makefile is completely moot. TEEM_ROOT must be set in order ! ### to locate the teem source. ! ! $(if $(TEEM_ROOT),,\ ! $(warning *)\ ! $(warning * Environment variable TEEM_ROOT not set.)\ ! $(warning *)\ ! $(error Make quitting)) ! $(if $(wildcard $(TEEM_ROOT)/src/air/*.c),,\ $(warning *)\ ! $(warning * Environment variable TEEM_ROOT=$(TEEM_ROOT) not correctly set:)\ ! $(warning * Must directory containing "src", "include", etc. of teem)\ $(warning *)\ $(error Make quitting)) ### The following sources are pretty much stubs, to create the symbols, ! ### but not the functionality, of different formats and the bzip2 encoding. ### As such, they are NOT copied from teem but are made for NrrdIO. ### --- 38,55 ---- ### This file is the single place where the required teem source files ### are listed. Once the NrrdIO source distribution is created, this ! ### GNU makefile is completely moot. TEEM_SRC_ROOT must be set in order ! ### to locate the teem source. We use this instead of TEEM_ROOT to avoid ! ### conflict with teem's own make system ! $(if $(TEEM_SRC_ROOT),,\ $(warning *)\ ! $(warning * Environment variable TEEM_SRC_ROOT not set. This needs to be *)\ ! $(warning * set to the directory containing the src and include directories *)\ ! $(warning * of the Teem source distribution.)\ $(warning *)\ $(error Make quitting)) ### The following sources are pretty much stubs, to create the symbols, ! ### but not the functionality of different formats and the bzip2 encoding. ### As such, they are NOT copied from teem but are made for NrrdIO. ### *************** *** 75,79 **** NEED_BIFF = biff/biffbiff.c NEED_NRRD = $(addprefix nrrd/, \ - privateNrrd.h \ accessors.c defaultsNrrd.c enumsNrrd.c arraysNrrd.c methodsNrrd.c \ reorder.c axis.c simple.c comment.c keyvalue.c endianNrrd.c \ --- 71,74 ---- *************** *** 81,86 **** encoding.c encodingRaw.c encodingAscii.c encodingHex.c encodingGzip.c) NEED_SRCS = $(NEED_AIR) $(NEED_BIFF) $(NEED_NRRD) ! NEED_HDRS = air/air.h biff/biff.h \ $(addprefix nrrd/, nrrdDefines.h nrrdEnums.h nrrdMacros.h nrrd.h) ### Building NrrdIO requires the teem*.h headers, and the processed sources --- 76,82 ---- encoding.c encodingRaw.c encodingAscii.c encodingHex.c encodingGzip.c) NEED_SRCS = $(NEED_AIR) $(NEED_BIFF) $(NEED_NRRD) ! NEED_PUB_HDRS = air/air.h biff/biff.h \ $(addprefix nrrd/, nrrdDefines.h nrrdEnums.h nrrdMacros.h nrrd.h) + NEED_PRIV_HDRS = air/privateAir.h nrrd/privateNrrd.h ### Building NrrdIO requires the teem*.h headers, and the processed sources *************** *** 88,101 **** ### .PHONY: all ! all: $(TEEM_HDRS) $(NEED_SRCS) NrrdIO.h NrrdIO_Srcs.txt ### NrrdIO.h is basically the result of cat'ing together all the ! ### teem headers in $(NEED_HDRS), but we do need to unteem. ### ! $(NEED_HDRS): ! tail +19 $(TEEM_ROOT)/src/$@ | perl unteem.pl > $(notdir $@) ! NrrdIO.h: $(NEED_HDRS) ! cat preamble.c $(notdir $(NEED_HDRS)) > NrrdIO.h ! rm -f $(notdir $(NEED_HDRS)) ### NrrdIO_Srcs.txt is a list of all the source files that must be --- 84,99 ---- ### .PHONY: all ! all: $(TEEM_HDRS) $(NEED_SRCS) $(NEED_PRIV_HDRS) NrrdIO.h NrrdIO_Srcs.txt ### NrrdIO.h is basically the result of cat'ing together all the ! ### teem headers in $(NEED_HDRS), but we do need to "unteem" them. ### ! $(NEED_PUB_HDRS) $(NEED_PRIV_HDRS): ! tail +19 $(TEEM_SRC_ROOT)/src/$@ \ ! | perl unteem.pl \ ! | grep -v HAS_BEEN_INCLUDED > $(notdir $@) ! NrrdIO.h: $(NEED_PUB_HDRS) ! cat preamble.c $(notdir $(NEED_PUB_HDRS)) > NrrdIO.h ! rm -f $(notdir $(NEED_PUB_HDRS)) ### NrrdIO_Srcs.txt is a list of all the source files that must be *************** *** 108,112 **** ### teem/%.h: ! tail +19 $(TEEM_ROOT)/include/$(notdir $@) \ | cat preamble.c - > $(notdir $@) --- 106,110 ---- ### teem/%.h: ! tail +19 $(TEEM_SRC_ROOT)/include/$(notdir $@) \ | cat preamble.c - > $(notdir $@) *************** *** 116,127 **** ### %.h %.c: ! tail +19 $(TEEM_ROOT)/src/$@ \ | cat preamble.c - \ ! | perl unteem.pl > $(notdir $@) ### To start from scratch ### clean: ! rm -f $(notdir $(TEEM_HDRS) $(NEED_SRCS)) NrrdIO.h NrrdIO_srcs.txt ! ! --- 114,127 ---- ### %.h %.c: ! tail +19 $(TEEM_SRC_ROOT)/src/$@ \ | cat preamble.c - \ ! | perl unteem.pl \ ! | grep -v HAS_BEEN_INCLUDED > $(notdir $@) ### To start from scratch ### clean: ! rm -f $(notdir $(TEEM_HDRS) $(NEED_SRCS) \ ! $(NEED_PUB_HDRS) $(NEED_PRIV_HDRS)) \ ! NrrdIO.h NrrdIO_srcs.txt \ ! *.o libNrrdIO.a sampleIO Index: formatPNM.c =================================================================== RCS file: /cvsroot/teem/NrrdIO/formatPNM.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** formatPNM.c 21 Dec 2003 06:40:52 -0000 1.1.1.1 --- formatPNM.c 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, Index: GNUmakefile =================================================================== RCS file: /cvsroot/teem/NrrdIO/GNUmakefile,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** GNUmakefile 21 Dec 2003 06:40:52 -0000 1.1.1.1 --- GNUmakefile 26 May 2004 12:52:21 -0000 1.2 *************** *** 25,31 **** PLATFORM_DEFS = \ -DTEEM_DIO=0 \ ! -DTEEM_32BIT=0 \ -DTEEM_ENDIAN=4321 \ ! -DTEEM_QNANHIBIT=0 \ -DTEEM_BIGBITFIELD=1 --- 25,31 ---- PLATFORM_DEFS = \ -DTEEM_DIO=0 \ ! -DTEEM_32BIT=1 \ -DTEEM_ENDIAN=4321 \ ! -DTEEM_QNANHIBIT=1 \ -DTEEM_BIGBITFIELD=1 *************** *** 46,60 **** ### libNrrdIO.a : $(patsubst %.c,%.o,$(shell cat NrrdIO_Srcs.txt)) ! ar ru -o $@ $^ ### Compiling the source files will also have some platform-specific stuff ### %.o : %.c ! cc -O2 -64 $(PLATFORM_DEFS) -DTEEM_ZLIB=1 $(ZLIB_IPATH) -c $^ -o $@ ### this creates the sampleIO program ### sampleIO : sampleIO.c ! cc -O2 -64 $(PLATFORM_DEFS) -DTEEM_ZLIB=1 $(ZLIB_IPATH) \ $^ -o $@ -L. -lNrrdIO $(ZLIB_LPATH) -lz -lm --- 46,61 ---- ### libNrrdIO.a : $(patsubst %.c,%.o,$(shell cat NrrdIO_Srcs.txt)) ! ar ru $@ $^ ! ranlib $@ ### Compiling the source files will also have some platform-specific stuff ### %.o : %.c ! cc -O2 $(PLATFORM_DEFS) -DTEEM_ZLIB=1 $(ZLIB_IPATH) -c $^ -o $@ ### this creates the sampleIO program ### sampleIO : sampleIO.c ! cc -O2 $(PLATFORM_DEFS) -DTEEM_ZLIB=1 $(ZLIB_IPATH) \ $^ -o $@ -L. -lNrrdIO $(ZLIB_LPATH) -lz -lm Index: enum.c =================================================================== RCS file: /cvsroot/teem/NrrdIO/enum.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** enum.c 14 Feb 2004 20:26:33 -0000 1.2 --- enum.c 26 May 2004 12:52:21 -0000 1.3 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, Index: teemEndian.h =================================================================== RCS file: /cvsroot/teem/NrrdIO/teemEndian.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** teemEndian.h 21 Dec 2003 06:40:52 -0000 1.1.1.1 --- teemEndian.h 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, Index: defaultsNrrd.c =================================================================== RCS file: /cvsroot/teem/NrrdIO/defaultsNrrd.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** defaultsNrrd.c 21 Dec 2003 06:40:52 -0000 1.1.1.1 --- defaultsNrrd.c 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, *************** *** 64,67 **** --- 64,68 ---- /* there is no sane reason to change this default initialization */ int nrrdStateKeyValueReturnInternalPointers = AIR_FALSE; + int nrrdStateKindNoop = AIR_TRUE; /* should the acceptance (or not) of malformed NRRD header fields Index: encodingGzip.c =================================================================== RCS file: /cvsroot/teem/NrrdIO/encodingGzip.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** encodingGzip.c 21 Dec 2003 06:40:52 -0000 1.1.1.1 --- encodingGzip.c 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, Index: encodingAscii.c =================================================================== RCS file: /cvsroot/teem/NrrdIO/encodingAscii.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** encodingAscii.c 21 Dec 2003 06:40:51 -0000 1.1.1.1 --- encodingAscii.c 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, Index: accessors.c =================================================================== RCS file: /cvsroot/teem/NrrdIO/accessors.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** accessors.c 21 Dec 2003 06:40:52 -0000 1.1.1.1 --- accessors.c 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, Index: formatVTK.c =================================================================== RCS file: /cvsroot/teem/NrrdIO/formatVTK.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** formatVTK.c 21 Dec 2003 06:40:52 -0000 1.1.1.1 --- formatVTK.c 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, Index: encodingRaw.c =================================================================== RCS file: /cvsroot/teem/NrrdIO/encodingRaw.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** encodingRaw.c 21 Dec 2003 06:40:52 -0000 1.1.1.1 --- encodingRaw.c 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, Index: array.c =================================================================== RCS file: /cvsroot/teem/NrrdIO/array.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** array.c 21 Dec 2003 06:40:51 -0000 1.1.1.1 --- array.c 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, Index: 754.c =================================================================== RCS file: /cvsroot/teem/NrrdIO/754.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** 754.c 21 Dec 2003 06:40:51 -0000 1.1.1.1 --- 754.c 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, *************** *** 31,34 **** --- 31,35 ---- #include "NrrdIO.h" + #include "privateAir.h" #include "teemEndian.h" #include "teemQnanhibit.h" *************** *** 49,118 **** #endif - /* - ** _airFloat, _airDouble - ** - ** these unions facilitate converting amonst - ** i: unsigned integral type - ** c: (sign,exp,frac) triples of unsigned integral components - ** v: the floating point numbers these bit-patterns represent - */ - typedef union { - unsigned int i; - struct { - #if TEEM_ENDIAN == 1234 - unsigned int frac : 23; - unsigned int exp : 8; - unsigned int sign : 1; - #else - unsigned int sign : 1; - unsigned int exp : 8; - unsigned int frac : 23; - #endif - } c; - float v; - } _airFloat; - - typedef union { - airULLong i; - #if TEEM_BIGBITFIELD == 1 - /* #ifndef __sparc */ - struct { - # if TEEM_ENDIAN == 1234 - airULLong frac : 52; - unsigned int exp : 11; - unsigned int sign : 1; - # else - unsigned int sign : 1; - unsigned int exp : 11; - airULLong frac : 52; - # endif - } c; - #endif - /* these next two members are used for printing in airFPFprintf_d */ - struct { /* access to whole double as two unsigned ints */ - #if TEEM_ENDIAN == 1234 - unsigned int half0 : 32; - unsigned int half1 : 32; - #else - unsigned int half1 : 32; - unsigned int half0 : 32; - #endif - } h; - struct { /* access to fraction with two unsigned ints */ - #if TEEM_ENDIAN == 1234 - unsigned int frac0 : 32; - unsigned int frac1 : 20; - unsigned int exp : 11; - unsigned int sign : 1; - #else - unsigned int sign : 1; - unsigned int exp : 11; - unsigned int frac1 : 20; - unsigned int frac0 : 32; - #endif - } c2; - double v; - } _airDouble; - /* ** The hex numbers in braces are examples of C's "initial member of a union" --- 50,53 ---- Index: endianAir.c =================================================================== RCS file: /cvsroot/teem/NrrdIO/endianAir.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** endianAir.c 21 Dec 2003 06:40:51 -0000 1.1.1.1 --- endianAir.c 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, Index: biffbiff.c =================================================================== RCS file: /cvsroot/teem/NrrdIO/biffbiff.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** biffbiff.c 21 Dec 2003 06:40:51 -0000 1.1.1.1 --- biffbiff.c 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, Index: teemDio.h =================================================================== RCS file: /cvsroot/teem/NrrdIO/teemDio.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** teemDio.h 21 Dec 2003 06:40:52 -0000 1.1.1.1 --- teemDio.h 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, Index: formatText.c =================================================================== RCS file: /cvsroot/teem/NrrdIO/formatText.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** formatText.c 21 Dec 2003 06:40:52 -0000 1.1.1.1 --- formatText.c 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, Index: dio.c =================================================================== RCS file: /cvsroot/teem/NrrdIO/dio.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** dio.c 21 Dec 2003 06:40:52 -0000 1.1.1.1 --- dio.c 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, Index: endianNrrd.c =================================================================== RCS file: /cvsroot/teem/NrrdIO/endianNrrd.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** endianNrrd.c 21 Dec 2003 06:40:52 -0000 1.1.1.1 --- endianNrrd.c 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, Index: teem32bit.h =================================================================== RCS file: /cvsroot/teem/NrrdIO/teem32bit.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** teem32bit.h 21 Dec 2003 06:40:52 -0000 1.1.1.1 --- teem32bit.h 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, Index: 000-README.txt =================================================================== RCS file: /cvsroot/teem/NrrdIO/000-README.txt,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** 000-README.txt 21 Dec 2003 06:40:52 -0000 1.1.1.1 --- 000-README.txt 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003 University of Utah These source files have been copied and/or modified from teem, Index: enumsNrrd.c =================================================================== RCS file: /cvsroot/teem/NrrdIO/enumsNrrd.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** enumsNrrd.c 21 Dec 2003 06:40:51 -0000 1.1.1.1 --- enumsNrrd.c 26 May 2004 12:52:21 -0000 1.2 *************** *** 1,5 **** /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, --- 1,5 ---- /* NrrdIO: stand-alone code for basic nrrd functionality ! Copyright (C) 2004, 2003, 2002, 2001, 2000, 1999, 1998 University of Utah These source files have been copied and/or modified from teem, *************** *** 281,322 **** nrrdCenter = &_nrrdCenter_enum; ! /* ------------------------ nrrdAxisInfo ------------------------- */ char ! _nrrdAxisInfoStr[NRRD_AXIS_INFO_MAX+1][AIR_STRLEN_SMALL] = { ! "(unknown_axis_info)", ! "size", ! "spacing", ! "min", ! "max", ! "center", ! "label", ! "unit" }; char ! _nrrdAxisInfoDesc[NRRD_AXIS_INFO_MAX+1][AIR_STRLEN_MED] = { ! "unknown axis info", ! "number of samples along axis", ! "spacing between samples", ! "minimum position in \"world\" space associated with axis", ! "maximum position in \"world\" space associated with axis", ! "centering style for samples along this axis", ! "short description of space or value spanned by axis", ! "units in which sample spacing is measured" }; airEnum ! _nrrdAxisInfo = { ! "axis_info", ! NRRD_AXIS_INFO_MAX, ! _nrrdAxisInfoStr, NULL, ! _nrrdAxisInfoDesc, ! NULL, NULL, ! AIR_TRUE }; airEnum * ! nrrdAxisInfo = &_nrrdAxisInfo; ! /* ------------------------ nrrdField ------------------------- */ --- 281,416 ---- nrrdCenter = &_nrrdCenter_enum; ! /* ------------------------ nrrdKind ------------------------- */ ! ! /* ! nrrdKindDomain, 1: "Yes, you can resample me" ! nrrdKindList, 2: "No, it is goofy to resample me" ! nrrdKindStub, 3: axis with one sample (a placeholder) ! nrrdKindScalar, 4: effectively, same as a stub ! nrrdKindComplex, 5: real and imaginary components ! nrrdKind2Vector, 6: 2 component vector ! nrrdKind3Color, 7: ANY 3-component color value ! nrrdKind4Color, 8: ANY 4-component color value ! nrrdKind3Vector, 9: 3 component vector ! nrrdKind3Normal, 10: 3 component vector, assumed normalized ! nrrdKind4Vector, 11: 4 component vector ! nrrdKind2DSymTensor, 12: Txx Txy Tyy ! nrrdKind2DMaskedSymTensor, 13: mask Txx Txy Tyy ! nrrdKind2DTensor, 14: Txx Txy Tyx Tyy ! nrrdKind2DMaskedTensor, 15: mask Txx Txy Tyx Tyy ! nrrdKind3DSymTensor, 16: Txx Txy Txz Tyy Tyz Tzz ! nrrdKind3DMaskedSymTensor, 17: mask Txx Txy Txz Tyy Tyz Tzz ! nrrdKind3DTensor, 18: Txx Txy Txz Tyx Tyy Tyz Tzx Tzy Tzz ! nrrdKind3DMaskedTensor, 19: mask Txx Txy Txz Tyx Tyy Tyz Tzx Tzy Tzz ! */ char ! _nrrdKindStr[NRRD_KIND_MAX+1][AIR_STRLEN_SMALL] = { ! "(unknown_kind)", ! "domain", ! "list", ! "stub", ! "scalar", ! "complex", ! "2-vector", ! "3-color", ! "4-color", ! "3-vector", ! "3-normal", ! "4-vector", ! "2D-symmetric-tensor", ! "2D-masked-symmetric-tensor", ! "2D-tensor", ! "2D-masked-tensor", ! "3D-symmetric-tensor", ! "3D-masked-symmetric-tensor", ! "3D-tensor", ! "3D-masked-tensor" }; char ! _nrrdKindDesc[NRRD_KIND_MAX+1][AIR_STRLEN_MED] = { ! "unknown kind", ! "a domain variable of the function which the nrrd samples", ! "some list of attributes; it makes no sense to resample along these", ! "a place-holder axis with a single sample", ! "axis used to indicate that the nrrd contains a scalar value", ! "real and imaginary parts of a value", ! "a 2-component vector", ! "any 3-component color value", ! "any 4-component color value", ! "a 3-element vector", ! "a 3-element vector which is assumed normalized", ! "a 4-element vector", ! "3 elements of 2D symmetric tensor: Txx Txy Tyy", ! "mask plus 3 elements of 2D symmetric tensor: mask Txx Txy Tyy", ! "4 elements of general 2D tensor: Txx Txy Tyx Tyy", ! "mask plus 4 elements of general 2D tensor: mask Txx Txy Tyx Tyy", ! "6 elements of 3D symmetric tensor: Txx Txy Txz Tyy Tyz Tzz", ! "mask plus 6 elements of 3D symmetric tensor: mask Txx Txy Txz Tyy Tyz Tzz", ! "9 elements of general 3D tensor: Txx Txy Txz Tyx Tyy Tyz Tzx Tzy Tzz", ! "mask plus 9 elements of general 3D tensor: mask Txx Txy Txz Tyx Tyy Tyz Tzx Tzy Tzz" ! }; ! ! char ! _nrrdKindStr_Eqv[][AIR_STRLEN_SMALL] = { ! "domain", ! "list", ! "stub", ! "scalar", ! "complex", ! "2-vector", "2vector", ! "3-color", "3color", ! "4-color", "4color", ! "3-vector", "3vector", ! "3-normal", "3normal", ! "4-vector", "4vector", ! "2D-sym-tensor", "2Dsymtensor", ! "2D-mask-sym-tensor", "2Dmasksymtensor", ! "2D-tensor", "2Dtensor", ! "2D-mask-tensor", "2Dmasktensor", ! "3D-sym-tensor", "3Dsymtensor", "6-tensor", ! "3D-mask-sym-tensor", "3Dmasksymtensor", "7-tensor", ! "3D-tensor", "3Dtensor", "9-tensor", ! "3D-mask-tensor", "3Dmasktensor", ! "" ! }; ! ! int ! _nrrdKindVal_Eqv[] = { ! nrrdKindDomain, ! nrrdKindList, ! nrrdKindStub, ! nrrdKindScalar, ! nrrdKindComplex, ! nrrdKind2Vector, ! nrrdKind3Color, nrrdKind3Color, ! nrrdKind4Color, nrrdKind4Color, ! nrrdKind3Vector, nrrdKind3Vector, ! nrrdKind3Normal, nrrdKind3Normal, ! nrrdKind4Vector, nrrdKind4Vector, ! nrrdKind2DSymTensor, nrrdKind2DSymTensor, ! nrrdKind2DMaskedSymTensor, nrrdKind2DMaskedSymTensor, ! nrrdKind2DTensor, nrrdKind2DTensor, ! nrrdKind2DMaskedTensor, nrrdKind2DMaskedTensor, ! nrrdKind3DSymTensor, nrrdKind3DSymTensor, nrrdKind3DSymTensor, ! nrrdKind3DMaskedSymTensor, nrrdKind3DMaskedSymTensor, ! nrrdKind3DMaskedSymTensor, ! nrrdKind3DTensor, nrrdKind3DTensor, nrrdKind3DTensor, ! nrrdKind3DMaskedTensor, nrrdKind3DMaskedTensor }; airEnum ! _nrrdKind_enum = { ! "kind", ! NRRD_KIND_MAX, ! _nrrdKindStr, NULL, ! _nrrdKindDesc, ! _nrrdKindStr_Eqv, _nrrdKindVal_Eqv, ! AIR_FALSE }; airEnum * ! nrrdKind = &_nrrdKind_enum; ! /* ------------------------ nrrdField ------------------------- */ *************** *** 335,338 **** --- 429,433 ---- "axis maxs", "centers", + "kinds", "labels", "units", *************** *** 363,366 **** --- 458,462 ---- "list of maximum positions associated with each axis", "list of sample centerings for each axis", + "list of kinds for each axis", "list of short descriptions for each axis", "list of units in which each axes' spacing is measured", *******... [truncated message content] |