Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion fsliolib/fslio.h
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ extern "C" {
#define FSL_TYPE_MINC_GZ 104
/* @} */

#define FSL_RADIOLOGICAL -1
#define FSL_RADIOLOGICAL (-1)
#define FSL_NEUROLOGICAL 1


Expand Down
116 changes: 60 additions & 56 deletions nifti2/nifti_tool.h
Original file line number Diff line number Diff line change
Expand Up @@ -124,14 +124,17 @@ typedef struct {
/* call fill_field() for a single type, name and number of elements */
/* nstr is the base struct, and fldp is a field pointer */
#define NT_FILL(nstr,fldp,type,name,num,rv) do{ \
rv=fill_field(fldp,type,offsetof(nstr,name),num,#name); \
fldp++; } while (0)
(rv)=fill_field(fldp,type,offsetof(nstr,name),num,#name); \
(fldp)++; } while (0)

#define NT_MAKE_IM_NAME "MAKE_IM"

/* ================================================================= */
/* data conversionn operations */

/* dtype and stype are type names, so they cannot be parenthesized:
`(dtype) * pd = dptr;` is a cast expression, not a declaration. */
/* NOLINTBEGIN(bugprone-macro-parentheses) */
/* -------------------------------------------- */
/* copy from src to dest, changing type enroute */
/* dtype, dptr : destination type and pointer */
Expand All @@ -157,89 +160,90 @@ typedef struct {
stype * ps = sptr; \
int64_t index; \
/* init bounds with first */ \
failure = 0; \
(failure) = 0; \
for(index=0; index<(nvals); index++) { \
*pd = (dtype)*ps; \
/* fail when we cannot invert */ \
if( !failure && *ps != (stype)*pd ) \
failure = 1; \
if( !(failure) && *ps != (stype)*pd ) \
(failure) = 1; \
pd++; ps++; \
} } while(0)
/* NOLINTEND(bugprone-macro-parentheses) */


/* ================================================================= */
/* matrix operations */
/* (macros allow them to apply to either mat44 or dmat44) */

/* fill MAT44 with MAT33 fields, then pad with 0.0 and a 1.0 at 3,3 */
#define NT_MAT33_TO_MAT44(m33, m44) do { \
m44.m[0][0] = m33.m[0][0]; m44.m[0][1] = m33.m[0][1]; \
m44.m[0][2] = m33.m[0][2]; \
m44.m[1][0] = m33.m[1][0]; m44.m[1][1] = m33.m[1][1]; \
m44.m[1][2] = m33.m[1][2]; \
m44.m[2][0] = m33.m[2][0]; m44.m[2][1] = m33.m[2][1]; \
m44.m[2][2] = m33.m[2][2]; \
/* and fill out the 4x4 mat */ \
m44.m[0][3] = m44.m[1][3] = m44.m[2][3] = 0.0; \
m44.m[3][0] = m44.m[3][1] = m44.m[3][2] = 0.0; \
m44.m[3][3] = 1.0; \
#define NT_MAT33_TO_MAT44(m33, m44) do { \
(m44).m[0][0] = (m33).m[0][0]; (m44).m[0][1] = (m33).m[0][1]; \
(m44).m[0][2] = (m33).m[0][2]; \
(m44).m[1][0] = (m33).m[1][0]; (m44).m[1][1] = (m33).m[1][1]; \
(m44).m[1][2] = (m33).m[1][2]; \
(m44).m[2][0] = (m33).m[2][0]; (m44).m[2][1] = (m33).m[2][1]; \
(m44).m[2][2] = (m33).m[2][2]; \
/* and fill out the 4x4 mat */ \
(m44).m[0][3] = (m44).m[1][3] = (m44).m[2][3] = 0.0; \
(m44).m[3][0] = (m44).m[3][1] = (m44).m[3][2] = 0.0; \
(m44).m[3][3] = 1.0; \
} while(0)

/* fill MAT33 with initial subset of MAT44 fields */
#define NT_MAT44_TO_MAT33(m44, m33) do { \
m33.m[0][0] = m44.m[0][0]; m33.m[0][1] = m44.m[0][1]; \
m33.m[0][2] = m44.m[0][2]; \
m33.m[1][0] = m44.m[1][0]; m33.m[1][1] = m44.m[1][1]; \
m33.m[1][2] = m44.m[1][2]; \
m33.m[2][0] = m44.m[2][0]; m33.m[2][1] = m44.m[2][1]; \
m33.m[2][2] = m44.m[2][2]; \
#define NT_MAT44_TO_MAT33(m44, m33) do { \
(m33).m[0][0] = (m44).m[0][0]; (m33).m[0][1] = (m44).m[0][1]; \
(m33).m[0][2] = (m44).m[0][2]; \
(m33).m[1][0] = (m44).m[1][0]; (m33).m[1][1] = (m44).m[1][1]; \
(m33).m[1][2] = (m44).m[1][2]; \
(m33).m[2][0] = (m44).m[2][0]; (m33).m[2][1] = (m44).m[2][1]; \
(m33).m[2][2] = (m44).m[2][2]; \
} while(0)

/* subtract 2 mat44 matrices */
#define NT_MAT44_SUBTRACT(mout, min0, min1) do { \
mout.m[0][0] = min0.m[0][0] - min1.m[0][0]; \
mout.m[0][1] = min0.m[0][1] - min1.m[0][1]; \
mout.m[0][2] = min0.m[0][2] - min1.m[0][2]; \
mout.m[0][3] = min0.m[0][3] - min1.m[0][3]; \
mout.m[1][0] = min0.m[1][0] - min1.m[1][0]; \
mout.m[1][1] = min0.m[1][1] - min1.m[1][1]; \
mout.m[1][2] = min0.m[1][2] - min1.m[1][2]; \
mout.m[1][3] = min0.m[1][3] - min1.m[1][3]; \
mout.m[2][0] = min0.m[2][0] - min1.m[2][0]; \
mout.m[2][1] = min0.m[2][1] - min1.m[2][1]; \
mout.m[2][2] = min0.m[2][2] - min1.m[2][2]; \
mout.m[2][3] = min0.m[2][3] - min1.m[2][3]; \
mout.m[3][0] = min0.m[3][0] - min1.m[3][0]; \
mout.m[3][1] = min0.m[3][1] - min1.m[3][1]; \
mout.m[3][2] = min0.m[3][2] - min1.m[3][2]; \
mout.m[3][3] = min0.m[3][3] - min1.m[3][3]; \
(mout).m[0][0] = (min0).m[0][0] - (min1).m[0][0]; \
(mout).m[0][1] = (min0).m[0][1] - (min1).m[0][1]; \
(mout).m[0][2] = (min0).m[0][2] - (min1).m[0][2]; \
(mout).m[0][3] = (min0).m[0][3] - (min1).m[0][3]; \
(mout).m[1][0] = (min0).m[1][0] - (min1).m[1][0]; \
(mout).m[1][1] = (min0).m[1][1] - (min1).m[1][1]; \
(mout).m[1][2] = (min0).m[1][2] - (min1).m[1][2]; \
(mout).m[1][3] = (min0).m[1][3] - (min1).m[1][3]; \
(mout).m[2][0] = (min0).m[2][0] - (min1).m[2][0]; \
(mout).m[2][1] = (min0).m[2][1] - (min1).m[2][1]; \
(mout).m[2][2] = (min0).m[2][2] - (min1).m[2][2]; \
(mout).m[2][3] = (min0).m[2][3] - (min1).m[2][3]; \
(mout).m[3][0] = (min0).m[3][0] - (min1).m[3][0]; \
(mout).m[3][1] = (min0).m[3][1] - (min1).m[3][1]; \
(mout).m[3][2] = (min0).m[3][2] - (min1).m[3][2]; \
(mout).m[3][3] = (min0).m[3][3] - (min1).m[3][3]; \
} while(0)

/* subtract 2 mat33 matrices */
#define NT_MAT33_SUBTRACT(mout, min0, min1) do { \
mout.m[0][0] = min0.m[0][0] - min1.m[0][0]; \
mout.m[0][1] = min0.m[0][1] - min1.m[0][1]; \
mout.m[0][2] = min0.m[0][2] - min1.m[0][2]; \
mout.m[1][0] = min0.m[1][0] - min1.m[1][0]; \
mout.m[1][1] = min0.m[1][1] - min1.m[1][1]; \
mout.m[1][2] = min0.m[1][2] - min1.m[1][2]; \
mout.m[2][0] = min0.m[2][0] - min1.m[2][0]; \
mout.m[2][1] = min0.m[2][1] - min1.m[2][1]; \
mout.m[2][2] = min0.m[2][2] - min1.m[2][2]; \
(mout).m[0][0] = (min0).m[0][0] - (min1).m[0][0]; \
(mout).m[0][1] = (min0).m[0][1] - (min1).m[0][1]; \
(mout).m[0][2] = (min0).m[0][2] - (min1).m[0][2]; \
(mout).m[1][0] = (min0).m[1][0] - (min1).m[1][0]; \
(mout).m[1][1] = (min0).m[1][1] - (min1).m[1][1]; \
(mout).m[1][2] = (min0).m[1][2] - (min1).m[1][2]; \
(mout).m[2][0] = (min0).m[2][0] - (min1).m[2][0]; \
(mout).m[2][1] = (min0).m[2][1] - (min1).m[2][1]; \
(mout).m[2][2] = (min0).m[2][2] - (min1).m[2][2]; \
} while(0)

/* fill with identity matrix */
#define NT_MAT44_SET_TO_IDENTITY(M) do { \
M.m[0][0] = 1.0; M.m[0][1] = 0.0; M.m[0][2] = 0.0; M.m[0][3] = 0.0; \
M.m[1][0] = 0.0; M.m[1][1] = 1.0; M.m[1][2] = 0.0; M.m[1][3] = 0.0; \
M.m[2][0] = 0.0; M.m[2][1] = 0.0; M.m[2][2] = 1.0; M.m[2][3] = 0.0; \
M.m[3][0] = 0.0; M.m[3][1] = 0.0; M.m[3][2] = 0.0; M.m[3][3] = 1.0; \
#define NT_MAT44_SET_TO_IDENTITY(M) do { \
(M).m[0][0] = 1.0; (M).m[0][1] = 0.0; (M).m[0][2] = 0.0; (M).m[0][3] = 0.0; \
(M).m[1][0] = 0.0; (M).m[1][1] = 1.0; (M).m[1][2] = 0.0; (M).m[1][3] = 0.0; \
(M).m[2][0] = 0.0; (M).m[2][1] = 0.0; (M).m[2][2] = 1.0; (M).m[2][3] = 0.0; \
(M).m[3][0] = 0.0; (M).m[3][1] = 0.0; (M).m[3][2] = 0.0; (M).m[3][3] = 1.0; \
} while(0)

#define NT_MAT33_SET_TO_IDENTITY(M) do { \
M.m[0][0] = 1.0; M.m[0][1] = 0.0; M.m[0][2] = 0.0; \
M.m[1][0] = 0.0; M.m[1][1] = 1.0; M.m[1][2] = 0.0; \
M.m[2][0] = 0.0; M.m[2][1] = 0.0; M.m[2][2] = 1.0; \
(M).m[0][0] = 1.0; (M).m[0][1] = 0.0; (M).m[0][2] = 0.0; \
(M).m[1][0] = 0.0; (M).m[1][1] = 1.0; (M).m[1][2] = 0.0; \
(M).m[2][0] = 0.0; (M).m[2][1] = 0.0; (M).m[2][2] = 1.0; \
} while(0)


Expand Down
4 changes: 2 additions & 2 deletions niftilib/nifti1_tool.h
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,8 @@ typedef struct {
/* call fill_field() for a single type, name and number of elements */
/* nstr is the base struct, and fldp is a field pointer */
#define NT_FILL(nstr,fldp,type,name,num,rv) do{ \
rv=fill_field(fldp,type,offsetof(nstr,name),num,#name); \
fldp++; } while (0)
(rv)=fill_field(fldp,type,offsetof(nstr,name),num,#name); \
(fldp)++; } while (0)

#define NT_MAKE_IM_NAME "MAKE_IM"

Expand Down
Loading