Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates > by-pkgid > 515e79bfec5ff5a8329551762e6f811b > files > 50

nifticlib-docs-2.0.0-2.fc14.x86_64.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>nifti1_io: /builddir/build/BUILD/nifticlib-2.0.0/niftilib/nifti1_io.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- Generated by Doxygen 1.7.4 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">nifti1_io</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li id="searchli">
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#define-members">Defines</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">/builddir/build/BUILD/nifticlib-2.0.0/niftilib/nifti1_io.c File Reference</div>  </div>
</div>
<div class="contents">

<p>main collection of nifti1 i/o routines  
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;<a class="el" href="nifti1__io_8h_source.html">nifti1_io.h</a>&quot;</code><br/>
<code>#include &lt;sys/types.h&gt;</code><br/>
<code>#include &lt;sys/stat.h&gt;</code><br/>
</div><table class="memberdecls">
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a148bab4a37578f745cc4101f14e8aae8"></a><!-- doxytag: member="nifti1_io.c::_NIFTI1_IO_C_" ref="a148bab4a37578f745cc4101f14e8aae8" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>_NIFTI1_IO_C_</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaeaa9824c28fc85a0be4845d9ddfaa10"></a><!-- doxytag: member="nifti1_io.c::USE_STAT" ref="aaeaa9824c28fc85a0be4845d9ddfaa10" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>USE_STAT</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>ERREX</b>(msg)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>ERREX</b>(msg)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>ERREX</b>(msg)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a876ce77f3c672c7162658151e648389e"></a><!-- doxytag: member="nifti1_io.c::CR" ref="a876ce77f3c672c7162658151e648389e" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CR</b>&#160;&#160;&#160;0x0D</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a350c9d6cb81908d59427ee96844d1a9c"></a><!-- doxytag: member="nifti1_io.c::LF" ref="a350c9d6cb81908d59427ee96844d1a9c" args="" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>LF</b>&#160;&#160;&#160;0x0A</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6845c373b96ecf443011866936371867"></a><!-- doxytag: member="nifti1_io.c::QQNUM" ref="a6845c373b96ecf443011866936371867" args="(n1, n2)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>QQNUM</b>(n1, n2)&#160;&#160;&#160;if( strcmp(lhs,#n1)==0 ) nim-&gt;n2=strtod(rhs,NULL)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abbcee41b78b18c2fc70c7785aaec9643"></a><!-- doxytag: member="nifti1_io.c::QNUM" ref="abbcee41b78b18c2fc70c7785aaec9643" args="(nam)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>QNUM</b>(nam)&#160;&#160;&#160;QQNUM(nam,nam)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>QSTR</b>(nam, ml)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab45c7582be67e3173e4aafdff68d7506"></a><!-- doxytag: member="nifti1_io.c::ISEND" ref="ab45c7582be67e3173e4aafdff68d7506" args="(c)" -->
#define&#160;</td><td class="memItemRight" valign="bottom"><b>ISEND</b>(c)&#160;&#160;&#160;( (c)==']' || (c)=='}' || (c)=='\0' )</td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#ab8596d26f949ed9371fb73abd1f1ccee">nifti_disp_lib_hist</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#aa4648105a0f3099213eaf094b10cc8b0">nifti_disp_lib_version</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a6a60e69105dc0a2c7767beb376808143">nifti_image_read_bricks</a> (const char *hname, int nbricks, const int *blist, <a class="el" href="structnifti__brick__list.html">nifti_brick_list</a> *NBL)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#af6c9efd3e09141592c41803377c689a9">nifti_update_dims_from_array</a> (<a class="el" href="structnifti__image.html">nifti_image</a> *nim)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a7634eeeda561a1a22064b20bca2e877a">nifti_image_load_bricks</a> (<a class="el" href="structnifti__image.html">nifti_image</a> *nim, int nbricks, const int *blist, <a class="el" href="structnifti__brick__list.html">nifti_brick_list</a> *NBL)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#ab1b499958b62d1c0f3bbc929ca2431f2">nifti_free_NBL</a> (<a class="el" href="structnifti__brick__list.html">nifti_brick_list</a> *NBL)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a4062dff607da27712e1abbcdedd3c82e">valid_nifti_brick_list</a> (<a class="el" href="structnifti__image.html">nifti_image</a> *nim, int nbricks, const int *blist, int disp_error)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a3152dd3d1140f401aea7754bf37fd3c2">nifti_disp_matrix_orient</a> (const char *mesg, <a class="el" href="structmat44.html">mat44</a> mat)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a98f42fe4268d9fff8a5b8c984f8731f1">nifti_strdup</a> (const char *str)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#adfa192edb2b6c605c831a781b6d0dd1b">nifti_datatype_string</a> (int dt)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a2d77002f1a31d0651eaa2462d6273169">nifti_is_inttype</a> (int dt)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a90a17b3e9891b6f16d7b454b5442646d">nifti_units_string</a> (int uu)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a7472700981faa470501958c621c9ee61">nifti_xform_string</a> (int xx)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a3354f25465b96de45211544ff6570e74">nifti_intent_string</a> (int ii)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a2e4ce3c3c610064c01eeeac244101159">nifti_slice_string</a> (int ss)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a50ab65b744fa58802a77988df9eab9eb">nifti_orientation_string</a> (int ii)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#aeeccf4be6839946794c2cc1fdef26d4f">nifti_datatype_sizes</a> (int datatype, int *nbyper, int *swapsize)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structmat44.html">mat44</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a4b183639b2e242ac32210fe3437f60d2">nifti_quatern_to_mat44</a> (float qb, float qc, float qd, float qx, float qy, float qz, float dx, float dy, float dz, float qfac)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a84b68d5634ec94b5132e0067733e9f28">nifti_mat44_to_quatern</a> (<a class="el" href="structmat44.html">mat44</a> R, float *qb, float *qc, float *qd, float *qx, float *qy, float *qz, float *dx, float *dy, float *dz, float *qfac)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structmat44.html">mat44</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#abf7254db0ad36f998a92ac6f42f9c5c9">nifti_mat44_inverse</a> (<a class="el" href="structmat44.html">mat44</a> R)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structmat44.html">mat44</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a8c07c7b62ab67f0d0e901fdf4b755707">nifti_make_orthog_mat44</a> (float r11, float r12, float r13, float r21, float r22, float r23, float r31, float r32, float r33)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structmat33.html">mat33</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#ac4d58f4a9ed98b1b4ea642c95886d346">nifti_mat33_inverse</a> (<a class="el" href="structmat33.html">mat33</a> R)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a9d50d3f27b0f6a7710d10c00d5041b63">nifti_mat33_determ</a> (<a class="el" href="structmat33.html">mat33</a> R)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a9a52da66c78e82f5d63a388b813466a3">nifti_mat33_rownorm</a> (<a class="el" href="structmat33.html">mat33</a> A)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a4ccc9daef977faa38f1b05647f835e8d">nifti_mat33_colnorm</a> (<a class="el" href="structmat33.html">mat33</a> A)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structmat33.html">mat33</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a44785e6bf9b19f120a9158cc1af312f6">nifti_mat33_mul</a> (<a class="el" href="structmat33.html">mat33</a> A, <a class="el" href="structmat33.html">mat33</a> B)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structmat33.html">mat33</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a32d3a6d10f5e97ddc243001727c129a1">nifti_mat33_polar</a> (<a class="el" href="structmat33.html">mat33</a> A)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#ad8ba2d4a127c3ee26af9909ce2aa59e8">nifti_mat44_to_orientation</a> (<a class="el" href="structmat44.html">mat44</a> R, int *icod, int *jcod, int *kcod)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a9c64a35264c605640a30af4eec6d99bc">nifti_swap_2bytes</a> (size_t n, void *ar)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a53b22afe7c9c2520e831da6044823c39">nifti_swap_4bytes</a> (size_t n, void *ar)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a61af0e2662990502b18c2e6ecf1b0fee">nifti_swap_8bytes</a> (size_t n, void *ar)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a5cf6e5dd1d6eb0b43a8df38e6c833fb5">nifti_swap_16bytes</a> (size_t n, void *ar)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#aa7d743976d0ffdf6e320a71a8a32d006">nifti_swap_Nbytes</a> (size_t n, int siz, void *ar)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a50dc91b6264f53456387f95907bc86ee">swap_nifti_header</a> (struct <a class="el" href="structnifti__1__header.html">nifti_1_header</a> *h, int is_nifti)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a08ff63c999a17b9a7343a5918d73d414">nifti_swap_as_analyze</a> (<a class="el" href="structnifti__analyze75.html">nifti_analyze75</a> *h)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a6b59987a39c86d4e247c953570784917">old_swap_nifti_header</a> (struct <a class="el" href="structnifti__1__header.html">nifti_1_header</a> *h, int is_nifti)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#ad87cfcf2fe9635136a11811b6f345eab">nifti_get_filesize</a> (const char *pathname)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a0816cfcf9fa0b51a66dd1fa434510e8d">nifti_get_volsize</a> (const <a class="el" href="structnifti__image.html">nifti_image</a> *nim)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#aebd0c1d644fdafa59727dd8f57ae6686">nifti_fileexists</a> (const char *fname)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#ad1eede55fd34a457e1738aa9d0f75036">nifti_is_complete_filename</a> (const char *fname)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a836b54d494e9d2718e5541978ae3fc29">nifti_validfilename</a> (const char *fname)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a338a5f9b74c37ee28ca8683324434a05">nifti_find_file_extension</a> (const char *name)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a6c17ed984533a4dede09b3bb6fa1fa17">nifti_is_gzfile</a> (const char *fname)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a64c9a0bd020345de7e07606f07dcb960">nifti_compiled_with_zlib</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a19cb2bca24ab79a5f0a0ec9b770d7454">nifti_makebasename</a> (const char *fname)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#ad76d66da1e384dc54a092e033bd8e195">nifti_set_debug_level</a> (int level)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a10072c5930f7f0c69c91821edbf44b97">nifti_set_skip_blank_ext</a> (int skip)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a85d02757a3ef2462045bb89d634b8036">nifti_set_allow_upper_fext</a> (int allow)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#acde0b000cd0b4c5edbe33454ebc0c86f">nifti_findhdrname</a> (const char *fname)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a166171eee037df0d1f28a824e35faea5">nifti_findimgname</a> (const char *fname, int nifti_type)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a03d86f65680b215db89c24723ad73a8c">nifti_makehdrname</a> (const char *prefix, int nifti_type, int check, int comp)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a80ba47331f082db092ef29d11c64fa31">nifti_makeimgname</a> (const char *prefix, int nifti_type, int check, int comp)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a296fad01763163289b0e1030d3a0ebaa">nifti_set_filenames</a> (<a class="el" href="structnifti__image.html">nifti_image</a> *nim, const char *prefix, int check, int set_byte_order)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a46c9636636122200ee108fb179dc23de">nifti_type_and_names_match</a> (<a class="el" href="structnifti__image.html">nifti_image</a> *nim, int show_warn)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a5c42d2b1cf63b30950078ec5562e1f58">is_valid_nifti_type</a> (int nifti_type)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#ab03e74e929ca87ec226bd2e59899fc95">nifti_is_valid_datatype</a> (int dtype)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a5cb621a9f499db8c3f9de3c73628cc76">nifti_set_type_from_names</a> (<a class="el" href="structnifti__image.html">nifti_image</a> *nim)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a247e5a0c2b32a30837187b56d1de553a">is_nifti_file</a> (const char *hname)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#af9d6192cbeeb85cde0a3c41acf9c2208">disp_nifti_1_header</a> (const char *info, const <a class="el" href="structnifti__1__header.html">nifti_1_header</a> *hp)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#aa7bd8fbb331c8d278506afb6f37fdbc2">nifti_convert_nhdr2nim</a> (struct <a class="el" href="structnifti__1__header.html">nifti_1_header</a> nhdr, const char *fname)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structznzptr.html">znzFile</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#aa3ba2c9ea10502fd5e619e55eb5ec662">nifti_image_open</a> (const char *hname, char *opts, <a class="el" href="structnifti__image.html">nifti_image</a> **nim)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Read in NIFTI-1 or ANALYZE-7.5 file (pair) header information into a <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> struct.  <a href="#aa3ba2c9ea10502fd5e619e55eb5ec662"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structnifti__1__header.html">nifti_1_header</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a5708391aec2c027b721fa0d40851d288">nifti_read_header</a> (const char *hname, int *swapped, int check)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a963647a644c757bf79652cf79d69ae18">nifti_hdr_looks_good</a> (const <a class="el" href="structnifti__1__header.html">nifti_1_header</a> *hdr)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a9da495aabf70c7111f574dc3985e6467">nifti_image_read</a> (const char *hname, int read_data)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Read a nifti header and optionally the data, creating a <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a>.  <a href="#a9da495aabf70c7111f574dc3985e6467"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#ab1e7cfdc675f67b4dca809bae81e6e15">nifti_read_ascii_image</a> (<a class="el" href="structznzptr.html">znzFile</a> fp, char *fname, int flen, int read_data)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#af302324afc85693788cd7483b054fc86">nifti_add_extension</a> (<a class="el" href="structnifti__image.html">nifti_image</a> *nim, const char *data, int len, int ecode)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#ae4827bde194fb79b17406da16216f81f">valid_nifti_extensions</a> (const <a class="el" href="structnifti__image.html">nifti_image</a> *nim)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#affc673e2c2768319574e46169462f115">nifti_is_valid_ecode</a> (int ecode)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a2e75db3fcfbe1c2f7343611ab9cfcb8d">nifti_image_load</a> (<a class="el" href="structnifti__image.html">nifti_image</a> *nim)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Load the image blob into a previously initialized <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a>.  <a href="#a2e75db3fcfbe1c2f7343611ab9cfcb8d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#afb6dff710966b4a8611726a9f846c683">nifti_read_buffer</a> (<a class="el" href="structznzptr.html">znzFile</a> fp, void *dataptr, size_t ntot, <a class="el" href="structnifti__image.html">nifti_image</a> *nim)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a963b6ef9c3532b8dc0e7a243c42d1436">nifti_image_unload</a> (<a class="el" href="structnifti__image.html">nifti_image</a> *nim)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a2fe83552d8121a492fe07b5f42397c9d">nifti_image_free</a> (<a class="el" href="structnifti__image.html">nifti_image</a> *nim)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#afd96262c6dd96e05ceaa08b3fbdff2c9">nifti_free_extensions</a> (<a class="el" href="structnifti__image.html">nifti_image</a> *nim)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#aa8098d5521db8f070543122d7ef2ee7e">nifti_image_infodump</a> (const <a class="el" href="structnifti__image.html">nifti_image</a> *nim)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a201ad43a22bd93e945acbb41b4bd5dca"></a><!-- doxytag: member="nifti1_io.c::nifti_write_buffer" ref="a201ad43a22bd93e945acbb41b4bd5dca" args="(znzFile fp, const void *buffer, size_t numbytes)" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>nifti_write_buffer</b> (<a class="el" href="structznzptr.html">znzFile</a> fp, const void *buffer, size_t numbytes)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#ab8f4f74b33a153219e5c47e6f8046bf3">nifti_write_all_data</a> (<a class="el" href="structznzptr.html">znzFile</a> fp, <a class="el" href="structnifti__image.html">nifti_image</a> *nim, const <a class="el" href="structnifti__brick__list.html">nifti_brick_list</a> *NBL)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a2fa149a7af0a94b2718035809c3bf930">nifti_simple_init_nim</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structnifti__1__header.html">nifti_1_header</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a2fde930d314f2fea6ce083c4db0412ee">nifti_make_new_header</a> (const int arg_dims[], int arg_dtype)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#ab18d6d70c046482f92fb802b74aafb11">nifti_make_new_nim</a> (const int dims[], int datatype, int data_fill)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="structnifti__1__header.html">nifti_1_header</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#ad1d2054b280d453c7bf680fc21b587a3">nifti_convert_nim2nhdr</a> (const <a class="el" href="structnifti__image.html">nifti_image</a> *nim)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a09f349a4065872bb274e95fe2a13b727"></a><!-- doxytag: member="nifti1_io.c::nifti_copy_extensions" ref="a09f349a4065872bb274e95fe2a13b727" args="(nifti_image *nim_dest, const nifti_image *nim_src)" -->
int&#160;</td><td class="memItemRight" valign="bottom"><b>nifti_copy_extensions</b> (<a class="el" href="structnifti__image.html">nifti_image</a> *nim_dest, const <a class="el" href="structnifti__image.html">nifti_image</a> *nim_src)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#acd2f650ca248b801fb9b412c9cda0ae8">nifti_extension_size</a> (<a class="el" href="structnifti__image.html">nifti_image</a> *nim)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#af37b47d8dcd832f0a2ea9758001ac622">nifti_set_iname_offset</a> (<a class="el" href="structnifti__image.html">nifti_image</a> *nim)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structznzptr.html">znzFile</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a05ad147bd1f78fe6790ef1dc93278712">nifti_image_write_hdr_img</a> (<a class="el" href="structnifti__image.html">nifti_image</a> *nim, int write_data, const char *opts)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structznzptr.html">znzFile</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a23ba2ececf435189365329d11d138a24">nifti_image_write_hdr_img2</a> (<a class="el" href="structnifti__image.html">nifti_image</a> *nim, int write_opts, const char *opts, <a class="el" href="structznzptr.html">znzFile</a> imgfile, const <a class="el" href="structnifti__brick__list.html">nifti_brick_list</a> *NBL)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structznzptr.html">znzFile</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#ad66767a91af38b906c955fb45b9e225b">nifti_write_ascii_image</a> (<a class="el" href="structnifti__image.html">nifti_image</a> *nim, const <a class="el" href="structnifti__brick__list.html">nifti_brick_list</a> *NBL, const char *opts, int write_data, int leave_open)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#aae590e6d7a9f46f6f8f454c00b6698bf">nifti_image_write</a> (<a class="el" href="structnifti__image.html">nifti_image</a> *nim)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a8864ea68cc4a23ce82f3bb4b545243ca">nifti_image_write_bricks</a> (<a class="el" href="structnifti__image.html">nifti_image</a> *nim, const <a class="el" href="structnifti__brick__list.html">nifti_brick_list</a> *NBL)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a795557a96c6144716d0636879cf02bd5">nifti_copy_nim_info</a> (const <a class="el" href="structnifti__image.html">nifti_image</a> *src)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a1edffc55474a393f60573a1fc6ef5544">nifti_image_to_ascii</a> (const <a class="el" href="structnifti__image.html">nifti_image</a> *nim)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#adf2a70eac549a80a246d380240a8d822">nifti_short_order</a> (void)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a645c453f65af3a1ff1be3081ed34b49e">nifti_image_from_ascii</a> (const char *str, int *bytes_read)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a8cb200f44ed38709f534827ecf0aebed">nifti_nim_is_valid</a> (<a class="el" href="structnifti__image.html">nifti_image</a> *nim, int complain)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#ad9d44ba79bad0716b08d2888c5874012">nifti_nim_has_valid_dims</a> (<a class="el" href="structnifti__image.html">nifti_image</a> *nim, int complain)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a0a688115ca53321cf7429db173ce24aa">nifti_read_collapsed_image</a> (<a class="el" href="structnifti__image.html">nifti_image</a> *nim, const int dims[8], void **data)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a29be9ec9401b961191b3641055867387">nifti_read_subregion_image</a> (<a class="el" href="structnifti__image.html">nifti_image</a> *nim, int *start_index, int *region_size, void **data)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#af07be076f40f7b4bd284488221c6d26f">nifti_get_intlist</a> (int nvals, const char *str)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#ad43861b84225c2e9ad861ddada7a6041">nifti_datatype_from_string</a> (const char *name)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a9d6ade79714c193d2ab7bfa6301619c4">nifti_datatype_to_string</a> (int dtype)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#a56b62ecbde8ff299d1911abe1f5961f3">nifti_datatype_is_valid</a> (int dtype, int for_nifti)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#af31bef0754f87cbc281f3db357314e0c">nifti_test_datatype_sizes</a> (int verb)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nifti1__io_8c.html#aaa80306264031fb13a769618e5fdb278">nifti_disp_type_list</a> (int which)</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>main collection of nifti1 i/o routines </p>
<ul>
<li>written by Bob Cox, SSCC NIMH</li>
<li>revised by Mark Jenkinson, FMRIB</li>
<li>revised by Rick Reynolds, SSCC, NIMH</li>
<li>revised by Kate Fissell, University of Pittsburgh</li>
</ul>
<p>The library history can be viewed via "nifti_tool -nifti_hist". <br/>
The library version can be viewed via "nifti_tool -nifti_ver". </p>
</div><hr/><h2>Define Documentation</h2>
<a class="anchor" id="adb36b06f4bb37bb8679f2802a8379cc2"></a><!-- doxytag: member="nifti1_io.c::ERREX" ref="adb36b06f4bb37bb8679f2802a8379cc2" args="(msg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ERREX</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">msg</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span>{ fprintf(stderr,<span class="stringliteral">&quot;** ERROR: nifti_image_open(%s): %s\n&quot;</span>,  \
             (hname != NULL) ? hname : <span class="stringliteral">&quot;(null)&quot;</span> , (msg) ) ;  \
     <span class="keywordflow">return</span> fptr ; } <span class="keywordflow">while</span>(0)
</pre></div>
</div>
</div>
<a class="anchor" id="adb36b06f4bb37bb8679f2802a8379cc2"></a><!-- doxytag: member="nifti1_io.c::ERREX" ref="adb36b06f4bb37bb8679f2802a8379cc2" args="(msg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ERREX</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">msg</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span>{ fprintf(stderr,<span class="stringliteral">&quot;** ERROR: nifti_image_write_hdr_img: %s\n&quot;</span>,(msg)) ;  \
     <span class="keywordflow">return</span> fp ; } <span class="keywordflow">while</span>(0)
</pre></div>
</div>
</div>
<a class="anchor" id="adb36b06f4bb37bb8679f2802a8379cc2"></a><!-- doxytag: member="nifti1_io.c::ERREX" ref="adb36b06f4bb37bb8679f2802a8379cc2" args="(msg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define ERREX</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">msg</td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">do</span>{ fprintf(stderr,<span class="stringliteral">&quot;** ERROR: nifti_convert_nhdr2nim: %s\n&quot;</span>, (msg) ) ;  \
     <span class="keywordflow">return</span> NULL ; } <span class="keywordflow">while</span>(0)
</pre></div>
</div>
</div>
<a class="anchor" id="a16c52f11f247cdfa73aa1d651cf4354b"></a><!-- doxytag: member="nifti1_io.c::QSTR" ref="a16c52f11f247cdfa73aa1d651cf4354b" args="(nam, ml)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define QSTR</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">nam, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">ml&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keywordflow">if</span>( strcmp(lhs,#nam) == 0 )                           \
                       strncpy(nim-&gt;nam,rhs,ml), nim-&gt;nam[ml]=<span class="charliteral">&#39;\0&#39;</span>
</pre></div>
</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="af9d6192cbeeb85cde0a3c41acf9c2208"></a><!-- doxytag: member="nifti1_io.c::disp_nifti_1_header" ref="af9d6192cbeeb85cde0a3c41acf9c2208" args="(const char *info, const nifti_1_header *hp)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int disp_nifti_1_header </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>info</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structnifti__1__header.html">nifti_1_header</a> *&#160;</td>
          <td class="paramname"><em>hp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>display the contents of the <a class="el" href="structnifti__1__header.html" title="Data structure defining the fields in the nifti1 header. This binary header should be found at the be...">nifti_1_header</a> (send to stdout)</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">info</td><td>if non-NULL, print this character string </td></tr>
    <tr><td class="paramname">hp</td><td>pointer to <a class="el" href="structnifti__1__header.html" title="Data structure defining the fields in the nifti1 header. This binary header should be found at the be...">nifti_1_header</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a247e5a0c2b32a30837187b56d1de553a"></a><!-- doxytag: member="nifti1_io.c::is_nifti_file" ref="a247e5a0c2b32a30837187b56d1de553a" args="(const char *hname)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int is_nifti_file </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>hname</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Determine if this is a NIFTI-formatted file.</p>
<pre>
   <dl class="return"><dt><b>Returns:</b></dt><dd>  0 if file looks like ANALYZE 7.5 [checks sizeof_hdr field == 348]
            1 if file marked as NIFTI (header+data in 1 file)
            2 if file marked as NIFTI (header+data in 2 files)
           -1 if it can't tell, file doesn't exist, etc.
   
</dd></dl>
</pre>
</div>
</div>
<a class="anchor" id="a5c42d2b1cf63b30950078ec5562e1f58"></a><!-- doxytag: member="nifti1_io.c::is_valid_nifti_type" ref="a5c42d2b1cf63b30950078ec5562e1f58" args="(int nifti_type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int is_valid_nifti_type </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>nifti_type</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>check whether the given type is on the "approved" list</p>
<p>The code is valid if it is non-negative, and does not exceed NIFTI_MAX_FTYPE.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>1 if nifti_type is valid, 0 otherwise </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd>NIFTI_FTYPE_* codes in <a class="el" href="nifti1__io_8h.html" title="Data structures for using nifti1_io API.">nifti1_io.h</a> </dd></dl>

</div>
</div>
<a class="anchor" id="af302324afc85693788cd7483b054fc86"></a><!-- doxytag: member="nifti1_io.c::nifti_add_extension" ref="af302324afc85693788cd7483b054fc86" args="(nifti_image *nim, const char *data, int len, int ecode)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_add_extension </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>ecode</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>nifti_add_extension - add an extension, with a copy of the data</p>
<p>Add an extension to the nim-&gt;ext_list array. Fill this extension with a copy of the data, noting the length and extension code.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">nim</td><td>- <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> to add extension to </td></tr>
    <tr><td class="paramname">data</td><td>- raw extension data </td></tr>
    <tr><td class="paramname">length</td><td>- length of raw extension data </td></tr>
    <tr><td class="paramname">ecode</td><td>- extension code</td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd>extension codes NIFTI_ECODE_* in <a class="el" href="nifti1__io_8h.html" title="Data structures for using nifti1_io API.">nifti1_io.h</a> </dd>
<dd>
<a class="el" href="nifti1__io_8h.html#afd96262c6dd96e05ceaa08b3fbdff2c9">nifti_free_extensions</a>, <a class="el" href="nifti1__io_8h.html#ae4827bde194fb79b17406da16216f81f">valid_nifti_extensions</a>, nifti_copy_extensions</dd></dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on error (and free the entire list) </dd></dl>

</div>
</div>
<a class="anchor" id="a64c9a0bd020345de7e07606f07dcb960"></a><!-- doxytag: member="nifti1_io.c::nifti_compiled_with_zlib" ref="a64c9a0bd020345de7e07606f07dcb960" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_compiled_with_zlib </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>return whether the given library was compiled with HAVE_ZLIB set </p>

</div>
</div>
<a class="anchor" id="aa7bd8fbb331c8d278506afb6f37fdbc2"></a><!-- doxytag: member="nifti1_io.c::nifti_convert_nhdr2nim" ref="aa7bd8fbb331c8d278506afb6f37fdbc2" args="(struct nifti_1_header nhdr, const char *fname)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structnifti__image.html">nifti_image</a>* nifti_convert_nhdr2nim </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structnifti__1__header.html">nifti_1_header</a>&#160;</td>
          <td class="paramname"><em>nhdr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>fname</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>convert a <a class="el" href="structnifti__1__header.html" title="Data structure defining the fields in the nifti1 header. This binary header should be found at the be...">nifti_1_header</a> into a nift1_image</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>an allocated <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a>, or NULL on failure </dd></dl>

<p><ul>
<li>check if we must swap bytes</li>
</ul>
<ul>
<li>determine if this is a NIFTI-1 compliant header</li>
</ul>
<ul>
<li>in analyze75, the orient code is at the same address as qform_code, but it's just one byte the qform_code will be zero, at which point you can check analyze75_orient if you care to.</li>
</ul>
<ul>
<li>set bad grid spacings to 1.0</li>
</ul>
<ul>
<li>set dimensions of data array</li>
</ul>
<ul>
<li>set the type of data in voxels and how many bytes per voxel</li>
</ul>
<ul>
<li>set the grid spacings</li>
</ul>
<ul>
<li>compute qto_xyz transformation from pixel indexes (i,j,k) to (x,y,z)</li>
</ul>
<ul>
<li>if not nifti or qform_code &lt;= 0, use grid spacing for qto_xyz</li>
</ul>
<ul>
<li>else NIFTI: use the quaternion-specified transformation</li>
</ul>
<ul>
<li>load inverse transformation (x,y,z) -&gt; (i,j,k)</li>
</ul>
<ul>
<li>load sto_xyz affine transformation, if present</li>
</ul>
<ul>
<li>if not nifti or sform_code &lt;= 0, then no sto transformation</li>
</ul>
<ul>
<li>else set the sto transformation from srow_*[]</li>
</ul>
<ul>
<li>set miscellaneous NIFTI stuff</li>
</ul>
<ul>
<li>set Miscellaneous ANALYZE stuff</li>
</ul>
<ul>
<li>set ioff from vox_offset (but at least sizeof(header))</li>
</ul>
<ul>
<li>deal with file names if set </li>
</ul>
</p>

</div>
</div>
<a class="anchor" id="ad1d2054b280d453c7bf680fc21b587a3"></a><!-- doxytag: member="nifti1_io.c::nifti_convert_nim2nhdr" ref="ad1d2054b280d453c7bf680fc21b587a3" args="(const nifti_image *nim)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structnifti__1__header.html">nifti_1_header</a> nifti_convert_nim2nhdr </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em></td><td>)</td>
          <td><code> [read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>convert a <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> structure to a <a class="el" href="structnifti__1__header.html" title="Data structure defining the fields in the nifti1 header. This binary header should be found at the be...">nifti_1_header</a> struct</p>
<p>No allocation is done, this should be used via structure copy. As in: </p>
<pre>
    <a class="el" href="structnifti__1__header.html" title="Data structure defining the fields in the nifti1 header. This binary header should be found at the be...">nifti_1_header</a> my_header;
    my_header = nifti_convert_nim2nhdr(my_nim_pointer);
    </pre> 
<p><ul>
<li>load the ANALYZE-7.5 generic parts of the header struct</li>
</ul>
<ul>
<li>Load NIFTI specific stuff into the header </li>
</ul>
</p>

</div>
</div>
<a class="anchor" id="a795557a96c6144716d0636879cf02bd5"></a><!-- doxytag: member="nifti1_io.c::nifti_copy_nim_info" ref="a795557a96c6144716d0636879cf02bd5" args="(const nifti_image *src)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structnifti__image.html">nifti_image</a>* nifti_copy_nim_info </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>src</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>copy the <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> structure, without data</p>
<p>Duplicate the structure, including fname, iname and extensions. Leave the data pointer as NULL. </p>

</div>
</div>
<a class="anchor" id="ad43861b84225c2e9ad861ddada7a6041"></a><!-- doxytag: member="nifti1_io.c::nifti_datatype_from_string" ref="ad43861b84225c2e9ad861ddada7a6041" args="(const char *name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_datatype_from_string </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Given a NIFTI_TYPE string, such as "NIFTI_TYPE_INT16", return the corresponding integral type code. The type code is the macro value defined in <a class="el" href="nifti1_8h.html" title="Official definition of the nifti1 header. Written by Bob Cox, SSCC, NIMH.">nifti1.h</a>. </p>

</div>
</div>
<a class="anchor" id="a56b62ecbde8ff299d1911abe1f5961f3"></a><!-- doxytag: member="nifti1_io.c::nifti_datatype_is_valid" ref="a56b62ecbde8ff299d1911abe1f5961f3" args="(int dtype, int for_nifti)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_datatype_is_valid </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>dtype</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>for_nifti</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Determine whether dtype is a valid NIFTI_TYPE.</p>
<p>DT_UNKNOWN is considered invalid</p>
<p>The only difference 'for_nifti' makes is that DT_BINARY should be invalid for a NIfTI dataset. </p>

</div>
</div>
<a class="anchor" id="aeeccf4be6839946794c2cc1fdef26d4f"></a><!-- doxytag: member="nifti1_io.c::nifti_datatype_sizes" ref="aeeccf4be6839946794c2cc1fdef26d4f" args="(int datatype, int *nbyper, int *swapsize)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void nifti_datatype_sizes </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>datatype</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>nbyper</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>swapsize</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Given a datatype code, set number of bytes per voxel and the swapsize.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">datatype</td><td>nifti1 datatype code </td></tr>
    <tr><td class="paramname">nbyper</td><td>pointer to return value: number of bytes per voxel </td></tr>
    <tr><td class="paramname">swapsize</td><td>pointer to return value: size of swap blocks</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>appropriate values at nbyper and swapsize</dd></dl>
<p>The swapsize is set to 0 if this datatype doesn't ever need swapping.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__NIFTI1__DATATYPES.html" title="nifti1 datatype codes">NIFTI1_DATATYPES</a> in <a class="el" href="nifti1_8h.html" title="Official definition of the nifti1 header. Written by Bob Cox, SSCC, NIMH.">nifti1.h</a> </dd></dl>

</div>
</div>
<a class="anchor" id="adfa192edb2b6c605c831a781b6d0dd1b"></a><!-- doxytag: member="nifti1_io.c::nifti_datatype_string" ref="adfa192edb2b6c605c831a781b6d0dd1b" args="(int dt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* nifti_datatype_string </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>dt</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Return a pointer to a string holding the name of a NIFTI datatype.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">dt</td><td>NIfTI-1 datatype</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>pointer to static string holding the datatype name</dd></dl>
<dl class="warning"><dt><b>Warning:</b></dt><dd>Do not free() or modify this string! It points to static storage.</dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__NIFTI1__DATATYPES.html" title="nifti1 datatype codes">NIFTI1_DATATYPES</a> group in <a class="el" href="nifti1_8h.html" title="Official definition of the nifti1 header. Written by Bob Cox, SSCC, NIMH.">nifti1.h</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a9d6ade79714c193d2ab7bfa6301619c4"></a><!-- doxytag: member="nifti1_io.c::nifti_datatype_to_string" ref="a9d6ade79714c193d2ab7bfa6301619c4" args="(int dtype)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* nifti_datatype_to_string </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>dtype</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Given a NIFTI_TYPE value, such as NIFTI_TYPE_INT16, return the corresponding macro label as a string. The dtype code is the macro value defined in <a class="el" href="nifti1_8h.html" title="Official definition of the nifti1 header. Written by Bob Cox, SSCC, NIMH.">nifti1.h</a>. </p>

</div>
</div>
<a class="anchor" id="ab8596d26f949ed9371fb73abd1f1ccee"></a><!-- doxytag: member="nifti1_io.c::nifti_disp_lib_hist" ref="ab8596d26f949ed9371fb73abd1f1ccee" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void nifti_disp_lib_hist </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>display the nifti library module history (via stdout) </p>

</div>
</div>
<a class="anchor" id="aa4648105a0f3099213eaf094b10cc8b0"></a><!-- doxytag: member="nifti1_io.c::nifti_disp_lib_version" ref="aa4648105a0f3099213eaf094b10cc8b0" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void nifti_disp_lib_version </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>display the nifti library version (via stdout) </p>

</div>
</div>
<a class="anchor" id="a3152dd3d1140f401aea7754bf37fd3c2"></a><!-- doxytag: member="nifti1_io.c::nifti_disp_matrix_orient" ref="a3152dd3d1140f401aea7754bf37fd3c2" args="(const char *mesg, mat44 mat)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_disp_matrix_orient </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>mesg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structmat44.html">mat44</a>&#160;</td>
          <td class="paramname"><em>mat</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>display the orientation from the quaternian fields</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">mesg</td><td>if non-NULL, display this message first </td></tr>
    <tr><td class="paramname">mat</td><td>the matrix to convert to "nearest" orientation</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>-1 if results cannot be determined, 0 if okay </dd></dl>

</div>
</div>
<a class="anchor" id="aaa80306264031fb13a769618e5fdb278"></a><!-- doxytag: member="nifti1_io.c::nifti_disp_type_list" ref="aaa80306264031fb13a769618e5fdb278" args="(int which)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_disp_type_list </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>which</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Display the nifti_type_list table.</p>
<p>if which == 1 : display DT_* if which == 2 : display NIFTI_TYPE* else : display all </p>

</div>
</div>
<a class="anchor" id="acd2f650ca248b801fb9b412c9cda0ae8"></a><!-- doxytag: member="nifti1_io.c::nifti_extension_size" ref="acd2f650ca248b801fb9b412c9cda0ae8" args="(nifti_image *nim)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_extension_size </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>compute the total size of all extensions</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>the total of all esize fields</dd></dl>
<p>Note that each esize includes 4 bytes for ecode, 4 bytes for esize, and the bytes used for the data. Each esize also needs to be a multiple of 16, so it may be greater than the sum of its 3 parts. </p>

</div>
</div>
<a class="anchor" id="aebd0c1d644fdafa59727dd8f57ae6686"></a><!-- doxytag: member="nifti1_io.c::nifti_fileexists" ref="aebd0c1d644fdafa59727dd8f57ae6686" args="(const char *fname)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_fileexists </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>fname</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>simple check for file existence</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>1 on existence, 0 otherwise </dd></dl>

</div>
</div>
<a class="anchor" id="a338a5f9b74c37ee28ca8683324434a05"></a><!-- doxytag: member="nifti1_io.c::nifti_find_file_extension" ref="a338a5f9b74c37ee28ca8683324434a05" args="(const char *name)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* nifti_find_file_extension </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>check the end of the filename for a valid nifti extension</p>
<p>Valid extensions are currently .nii, .hdr, .img, .nia, or any of them followed by .gz. Note that '.' is part of the extension.</p>
<p>Uppercase extensions are also valid, but not mixed case.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>a pointer to the extension (within the filename), or NULL </dd></dl>

</div>
</div>
<a class="anchor" id="acde0b000cd0b4c5edbe33454ebc0c86f"></a><!-- doxytag: member="nifti1_io.c::nifti_findhdrname" ref="acde0b000cd0b4c5edbe33454ebc0c86f" args="(const char *fname)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* nifti_findhdrname </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>fname</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>check current directory for existing header file</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>filename of header on success and NULL if no appropriate file could be found</dd></dl>
<p>If fname has an uppercase extension, check for uppercase files.</p>
<p>NB: it allocates memory for hdrname which should be freed when no longer required </p>

<p><ul>
<li>check input file(s) for sanity</li>
</ul>
<ul>
<li>return filename if it has a valid extension and exists (except if it is an .img file (and maybe .gz))</li>
</ul>
<ul>
<li>if .img, look for .hdr, .hdr.gz, .nii, .nii.gz, in that order</li>
</ul>
<ul>
<li>else, look for .nii, .nii.gz, .hdr, .hdr.gz, in that order</li>
</ul>
<ul>
<li>if nothing has been found, return NULL </li>
</ul>
</p>

</div>
</div>
<a class="anchor" id="a166171eee037df0d1f28a824e35faea5"></a><!-- doxytag: member="nifti1_io.c::nifti_findimgname" ref="a166171eee037df0d1f28a824e35faea5" args="(const char *fname, int nifti_type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* nifti_findimgname </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>fname</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>nifti_type</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>check current directory for existing image file</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">fname</td><td>filename to check for  nifti_type for dataset - this determines whether to first check for ".nii" or ".img" (since both may exist)</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>filename of data/img file on success and NULL if no appropriate file could be found</dd></dl>
<p>If fname has a valid, uppercase extension, apply all extensions as uppercase.</p>
<p>NB: it allocates memory for the image filename, which should be freed when no longer required </p>

<p><ul>
<li>test for .nii and .img (don't assume input type from image type)</li>
</ul>
<ul>
<li>if nifti_type = 1, check for .nii first, else .img first</li>
</ul>
<ul>
<li>if nothing has been found, return NULL </li>
</ul>
</p>

</div>
</div>
<a class="anchor" id="afd96262c6dd96e05ceaa08b3fbdff2c9"></a><!-- doxytag: member="nifti1_io.c::nifti_free_extensions" ref="afd96262c6dd96e05ceaa08b3fbdff2c9" args="(nifti_image *nim)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_free_extensions </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>free the nifti extensions</p>
<ul>
<li>If any edata pointer is set in the extension list, free() it.</li>
<li>Free ext_list, if it is set.</li>
<li>Clear num_ext and ext_list from nim.</li>
</ul>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on error</dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="nifti1__io_8h.html#af302324afc85693788cd7483b054fc86">nifti_add_extension</a>, nifti_copy_extensions </dd></dl>

</div>
</div>
<a class="anchor" id="ab1b499958b62d1c0f3bbc929ca2431f2"></a><!-- doxytag: member="nifti1_io.c::nifti_free_NBL" ref="ab1b499958b62d1c0f3bbc929ca2431f2" args="(nifti_brick_list *NBL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void nifti_free_NBL </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnifti__brick__list.html">nifti_brick_list</a> *&#160;</td>
          <td class="paramname"><em>NBL</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>nifti_free_NBL - free all pointers and clear structure</p>
<p>note: this does not presume to free the structure pointer </p>

</div>
</div>
<a class="anchor" id="ad87cfcf2fe9635136a11811b6f345eab"></a><!-- doxytag: member="nifti1_io.c::nifti_get_filesize" ref="ad87cfcf2fe9635136a11811b6f345eab" args="(const char *pathname)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_get_filesize </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>pathname</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>return the size of a file, in bytes</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>size of file on success, -1 on error or no file</dd></dl>
<p>changed to return int, -1 means no file or error 20 Dec 2004 [rickr] </p>

</div>
</div>
<a class="anchor" id="af07be076f40f7b4bd284488221c6d26f"></a><!-- doxytag: member="nifti1_io.c::nifti_get_intlist" ref="af07be076f40f7b4bd284488221c6d26f" args="(int nvals, const char *str)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int* nifti_get_intlist </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>nvals</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>str</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Get an integer list in the range 0..(nvals-1), from the character string str. If we call the output pointer fred, then fred[0] = number of integers in the list (&gt; 0), and fred[i] = i-th integer in the list for i=1..fred[0]. If on return, fred == NULL or fred[0] == 0, then something is wrong, and the caller must deal with that.</p>
<p>Syntax of input string:</p>
<ul>
<li>initial '{' or '[' is skipped, if present</li>
<li>ends when '}' or ']' or end of string is found</li>
<li>contains entries separated by commas</li>
<li>entries have one of these forms:<ul>
<li>a single number</li>
<li>a dollar sign '$', which means nvals-1</li>
<li>a sequence of consecutive numbers in the form "a..b" or "a-b", where "a" and "b" are single numbers (or '$')</li>
<li>a sequence of evenly spaced numbers in the form "a..b(c)" or "a-b(c)", where "c" encodes the step</li>
</ul>
</li>
<li>Example: "[2,7..4,3..9(2)]" decodes to the list 2 7 6 5 4 3 5 7 9</li>
<li>entries should be in the range 0..nvals-1</li>
</ul>
<p>(borrowed, with permission, from thd_intlist.c) </p>

<p><ul>
<li>for each sub-selector until end of input...</li>
</ul>
<ul>
<li>get starting value</li>
</ul>
<ul>
<li>if that's it for this sub-selector, add one value to list</li>
</ul>
<ul>
<li>otherwise, must have '..' or '-' as next inputs</li>
</ul>
<ul>
<li>get ending value for loop now</li>
</ul>
<ul>
<li>set default loop step</li>
</ul>
<ul>
<li>check if we have a non-default loop step</li>
</ul>
<ul>
<li>add values to output</li>
</ul>
<ul>
<li>check if we have a comma to skip over </li>
</ul>
</p>

</div>
</div>
<a class="anchor" id="a0816cfcf9fa0b51a66dd1fa434510e8d"></a><!-- doxytag: member="nifti1_io.c::nifti_get_volsize" ref="a0816cfcf9fa0b51a66dd1fa434510e8d" args="(const nifti_image *nim)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t nifti_get_volsize </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>return the total volume size, in bytes</p>
<p>This is computed as nvox * nbyper. </p>

</div>
</div>
<a class="anchor" id="a963647a644c757bf79652cf79d69ae18"></a><!-- doxytag: member="nifti1_io.c::nifti_hdr_looks_good" ref="a963647a644c757bf79652cf79d69ae18" args="(const nifti_1_header *hdr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_hdr_looks_good </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structnifti__1__header.html">nifti_1_header</a> *&#160;</td>
          <td class="paramname"><em>hdr</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>decide if this <a class="el" href="structnifti__1__header.html" title="Data structure defining the fields in the nifti1 header. This binary header should be found at the be...">nifti_1_header</a> structure looks reasonable</p>
<p>Check dim[0], dim[1], sizeof_hdr, and datatype. Check magic string for "n+1". Maybe more tests will follow.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>1 if the header seems valid, 0 otherwise</dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="nifti1__io_8h.html#a8cb200f44ed38709f534827ecf0aebed">nifti_nim_is_valid</a>, <a class="el" href="nifti1__io_8h.html#ae4827bde194fb79b17406da16216f81f">valid_nifti_extensions</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a2fe83552d8121a492fe07b5f42397c9d"></a><!-- doxytag: member="nifti1_io.c::nifti_image_free" ref="a2fe83552d8121a492fe07b5f42397c9d" args="(nifti_image *nim)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void nifti_image_free </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>free 'everything' about a <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> struct (including the passed struct)</p>
<p>free (only fields which are not NULL):</p>
<ul>
<li>fname and iname</li>
<li>data</li>
<li>any ext_list[i].edata</li>
<li>ext_list</li>
<li>nim </li>
</ul>

</div>
</div>
<a class="anchor" id="a645c453f65af3a1ff1be3081ed34b49e"></a><!-- doxytag: member="nifti1_io.c::nifti_image_from_ascii" ref="a645c453f65af3a1ff1be3081ed34b49e" args="(const char *str, int *bytes_read)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structnifti__image.html">nifti_image</a>* nifti_image_from_ascii </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>str</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>bytes_read</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Take an XML-ish ASCII string and create a NIFTI image header to match.</p>
<p>NULL is returned if enough information isn't present in the input string.</p>
<ul>
<li>The image data can later be loaded with <a class="el" href="nifti1__io_8c.html#a2e75db3fcfbe1c2f7343611ab9cfcb8d" title="Load the image blob into a previously initialized nifti_image.">nifti_image_load()</a>.</li>
<li>The struct returned here can be liberated with <a class="el" href="nifti1__io_8c.html#a2fe83552d8121a492fe07b5f42397c9d">nifti_image_free()</a>.</li>
<li>Not a lot of error checking is done here to make sure that the input values are reasonable! </li>
</ul>

</div>
</div>
<a class="anchor" id="aa8098d5521db8f070543122d7ef2ee7e"></a><!-- doxytag: member="nifti1_io.c::nifti_image_infodump" ref="aa8098d5521db8f070543122d7ef2ee7e" args="(const nifti_image *nim)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void nifti_image_infodump </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Print to stdout some info about a <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> struct. </p>

</div>
</div>
<a class="anchor" id="a2e75db3fcfbe1c2f7343611ab9cfcb8d"></a><!-- doxytag: member="nifti1_io.c::nifti_image_load" ref="a2e75db3fcfbe1c2f7343611ab9cfcb8d" args="(nifti_image *nim)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_image_load </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Load the image blob into a previously initialized <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a>. </p>
<ul>
<li>If not yet set, the data buffer is allocated with calloc().</li>
<li>The data buffer will be byteswapped if necessary.</li>
<li>The data buffer will not be scaled.</li>
</ul>
<p>This function is used to read the image from disk. It should be used after a function such as <a class="el" href="nifti1__io_8c.html#a9da495aabf70c7111f574dc3985e6467" title="Read a nifti header and optionally the data, creating a nifti_image.">nifti_image_read()</a>, so that the <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> structure is already initialized.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">nim</td><td>pointer to a <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> (previously initialized) </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on failure </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="nifti1__io_8h.html#a9da495aabf70c7111f574dc3985e6467" title="Read a nifti header and optionally the data, creating a nifti_image.">nifti_image_read</a>, <a class="el" href="nifti1__io_8h.html#a2fe83552d8121a492fe07b5f42397c9d">nifti_image_free</a>, <a class="el" href="nifti1__io_8h.html#a963b6ef9c3532b8dc0e7a243c42d1436">nifti_image_unload</a> </dd></dl>

<p><ul>
<li>open the file and position the FILE pointer</li>
</ul>
<ul>
<li>if the data pointer is not yet set, get memory space for the image</li>
</ul>
<ul>
<li>now that everything is set up, do the reading</li>
</ul>
<ul>
<li>close the file </li>
</ul>
</p>

</div>
</div>
<a class="anchor" id="a7634eeeda561a1a22064b20bca2e877a"></a><!-- doxytag: member="nifti1_io.c::nifti_image_load_bricks" ref="a7634eeeda561a1a22064b20bca2e877a" args="(nifti_image *nim, int nbricks, const int *blist, nifti_brick_list *NBL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_image_load_bricks </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>nbricks</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int *&#160;</td>
          <td class="paramname"><em>blist</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structnifti__brick__list.html">nifti_brick_list</a> *&#160;</td>
          <td class="paramname"><em>NBL</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Load the image data from disk into an already-prepared image struct.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">nim</td><td>- initialized <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a>, without data </td></tr>
    <tr><td class="paramname">nbricks</td><td>- the length of blist (must be 0 if blist is NULL) </td></tr>
    <tr><td class="paramname">blist</td><td>- an array of xyz volume indices to read (can be NULL) </td></tr>
    <tr><td class="paramname">NBL</td><td>- pointer to struct where resulting data will be stored</td></tr>
  </table>
  </dd>
</dl>
<p>If blist is NULL, read all sub-bricks.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>the number of loaded bricks (NBL-&gt;nbricks), 0 on failure, &lt; 0 on error</dd></dl>
<p>NOTE: it is likely that another function will copy the data pointers out of NBL, in which case the only pointer the calling function will want to free is NBL-&gt;bricks (not each NBL-&gt;bricks[i]). </p>

</div>
</div>
<a class="anchor" id="aa3ba2c9ea10502fd5e619e55eb5ec662"></a><!-- doxytag: member="nifti1_io.c::nifti_image_open" ref="aa3ba2c9ea10502fd5e619e55eb5ec662" args="(const char *hname, char *opts, nifti_image **nim)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structznzptr.html">znzFile</a> nifti_image_open </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>hname</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>opts</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structnifti__image.html">nifti_image</a> **&#160;</td>
          <td class="paramname"><em>nim</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Read in NIFTI-1 or ANALYZE-7.5 file (pair) header information into a <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> struct. </p>
<p>znzFile nifti_image_open( char *hname, char *opts , nifti_image **nim)</p>
<ul>
<li>The image data is not read from disk (it may be read later using <a class="el" href="nifti1__io_8c.html#a2e75db3fcfbe1c2f7343611ab9cfcb8d" title="Load the image blob into a previously initialized nifti_image.">nifti_image_load()</a>, for example).</li>
<li>The image data will be stored in whatever data format the input data is; no scaling will be applied.</li>
<li>DT_BINARY data is not supported.</li>
<li><a class="el" href="nifti1__io_8c.html#a2fe83552d8121a492fe07b5f42397c9d">nifti_image_free()</a> can be used to delete the returned struct, when you are done with it.</li>
</ul>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">hname</td><td>filename of dataset .hdr or .nii file </td></tr>
    <tr><td class="paramname">opts</td><td>options string for opening the header file </td></tr>
    <tr><td class="paramname">nim</td><td>pointer to pointer to <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> struct (this routine allocates the <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> struct) </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>file pointer (gzippable) to the file with the image data, ready for reading. <br/>
NULL if something fails badly. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="nifti1__io_8h.html#a2e75db3fcfbe1c2f7343611ab9cfcb8d" title="Load the image blob into a previously initialized nifti_image.">nifti_image_load</a>, <a class="el" href="nifti1__io_8h.html#a2fe83552d8121a492fe07b5f42397c9d">nifti_image_free</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a9da495aabf70c7111f574dc3985e6467"></a><!-- doxytag: member="nifti1_io.c::nifti_image_read" ref="a9da495aabf70c7111f574dc3985e6467" args="(const char *hname, int read_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structnifti__image.html">nifti_image</a>* nifti_image_read </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>hname</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>read_data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Read a nifti header and optionally the data, creating a <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a>. </p>
<ul>
<li>The data buffer will be byteswapped if necessary.</li>
<li>The data buffer will not be scaled.</li>
<li>The data buffer is allocated with calloc().</li>
</ul>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">hname</td><td>filename of the nifti dataset </td></tr>
    <tr><td class="paramname">read_data</td><td>Flag, true=read data blob, false=don't read blob. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>A pointer to the <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> data structure.</dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="nifti1__io_8h.html#a2fe83552d8121a492fe07b5f42397c9d">nifti_image_free</a>, <a class="el" href="nifti1__io_8h.html#afd96262c6dd96e05ceaa08b3fbdff2c9">nifti_free_extensions</a>, <a class="el" href="nifti1__io_8h.html#a6a60e69105dc0a2c7767beb376808143">nifti_image_read_bricks</a> </dd></dl>

<p><ul>
<li>determine filename to use for header</li>
</ul>
<ul>
<li>read binary header</li>
</ul>
<ul>
<li>convert all nhdr fields to <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> fields</li>
</ul>
<ul>
<li>check for extensions (any errors here means no extensions)</li>
</ul>
<ul>
<li>read the data if desired, then bug out </li>
</ul>
</p>

</div>
</div>
<a class="anchor" id="a6a60e69105dc0a2c7767beb376808143"></a><!-- doxytag: member="nifti1_io.c::nifti_image_read_bricks" ref="a6a60e69105dc0a2c7767beb376808143" args="(const char *hname, int nbricks, const int *blist, nifti_brick_list *NBL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structnifti__image.html">nifti_image</a>* nifti_image_read_bricks </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>hname</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>nbricks</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int *&#160;</td>
          <td class="paramname"><em>blist</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structnifti__brick__list.html">nifti_brick_list</a> *&#160;</td>
          <td class="paramname"><em>NBL</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>nifti_image_read_bricks - read nifti data as array of bricks</p>
<p>13 Dec 2004 [rickr]</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">hname</td><td>- filename of dataset to read (must be valid) </td></tr>
    <tr><td class="paramname">nbricks</td><td>- number of sub-bricks to read (if blist is valid, nbricks must be &gt; 0) </td></tr>
    <tr><td class="paramname">blist</td><td>- list of sub-bricks to read (can be NULL; if NULL, read complete dataset) </td></tr>
    <tr><td class="paramname">NBL</td><td>- pointer to empty <a class="el" href="structnifti__brick__list.html">nifti_brick_list</a> struct (must be a valid pointer)</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><br/>
 nim - same as nifti_image_read, but nim-&gt;nt = NBL-&gt;nbricks (or nt*nu*nv*nw) nim-&gt;nu,nv,nw = 1 nim-&gt;data = NULL <br/>
 NBL - filled with data volumes</dd></dl>
<p>By default, this function will read the nifti dataset and break the data into a list of nt*nu*nv*nw sub-bricks, each having size nx*ny*nz elements. That is to say, instead of reading the entire dataset as a single array, break it up into sub-bricks (volumes), each of size nx*ny*nz elements.</p>
<p>Note: in the returned <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a>, nu, nv and nw will always be 1. The intention of this function is to collapse the dataset into a single array of volumes (of length nbricks or nt*nu*nv*nw).</p>
<p>If 'blist' is valid, it is taken to be a list of sub-bricks, of length 'nbricks'. The data will still be separated into sub-bricks of size nx*ny*nz elements, but now 'nbricks' sub-bricks will be returned, of the caller's choosing via 'blist'.</p>
<p>E.g. consider a dataset with 12 sub-bricks (numbered 0..11), and the following code:</p>
<pre>
 { <a class="el" href="structnifti__brick__list.html">nifti_brick_list</a>   NB_orig, NB_select;
   <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a>      * nim_orig, * nim_select;
   int                blist[5] = { 7, 0, 5, 5, 9 };</pre><pre>   nim_orig   = nifti_image_read_bricks("myfile.nii", 0, NULL,  &amp;NB_orig);
   nim_select = nifti_image_read_bricks("myfile.nii", 5, blist, &amp;NB_select);
 }
 </pre><p>Here, nim_orig gets the entire dataset, where NB_orig.nbricks = 12. But nim_select has NB_select.nbricks = 5.</p>
<p>Note that the first case is not quite the same as just calling the nifti_image_read function, as here the data is separated into sub-bricks.</p>
<p>Note that valid blist elements are in [0..nt*nu*nv*nw-1], or written [ 0 .. (dim[4]*dim[5]*dim[6]*dim[7] - 1) ].</p>
<p>Note that, as is the case with all of the reading functions, the data will be allocated, read in, and properly byte-swapped, if necessary.</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="nifti1__io_8h.html#a7634eeeda561a1a22064b20bca2e877a">nifti_image_load_bricks</a>, <a class="el" href="nifti1__io_8h.html#ab1b499958b62d1c0f3bbc929ca2431f2">nifti_free_NBL</a>, <a class="el" href="nifti1__io_8h.html#a4062dff607da27712e1abbcdedd3c82e">valid_nifti_brick_list</a>, <a class="el" href="nifti1__io_8h.html#a9da495aabf70c7111f574dc3985e6467" title="Read a nifti header and optionally the data, creating a nifti_image.">nifti_image_read</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a1edffc55474a393f60573a1fc6ef5544"></a><!-- doxytag: member="nifti1_io.c::nifti_image_to_ascii" ref="a1edffc55474a393f60573a1fc6ef5544" args="(const nifti_image *nim)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* nifti_image_to_ascii </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Dump the information in a NIFTI image header to an XML-ish ASCII string that can later be converted back into a NIFTI header in <a class="el" href="nifti1__io_8c.html#a645c453f65af3a1ff1be3081ed34b49e">nifti_image_from_ascii()</a>.</p>
<p>The resulting string can be free()-ed when you are done with it. </p>

<p><p>Strings that we don't control (filenames, etc.) that might contain "weird" characters (like quotes) are "escaped":</p>
<ul>
<li>A few special characters are replaced by XML-style escapes, using the function escapize_string().</li>
<li>On input, function unescape_string() reverses this process.</li>
<li>The result is that the NIFTI ASCII-format header is XML-compliant. </li>
</ul>
</p>

</div>
</div>
<a class="anchor" id="a963b6ef9c3532b8dc0e7a243c42d1436"></a><!-- doxytag: member="nifti1_io.c::nifti_image_unload" ref="a963b6ef9c3532b8dc0e7a243c42d1436" args="(nifti_image *nim)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void nifti_image_unload </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Unload the data in a <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> struct, but keep the metadata. </p>

</div>
</div>
<a class="anchor" id="aae590e6d7a9f46f6f8f454c00b6698bf"></a><!-- doxytag: member="nifti1_io.c::nifti_image_write" ref="aae590e6d7a9f46f6f8f454c00b6698bf" args="(nifti_image *nim)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void nifti_image_write </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Write a <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> to disk.</p>
<p>Since data is properly byte-swapped upon reading, it is assumed to be in the byte-order of the current CPU at write time. Thus, nim-&gt;byte_order should match that of the current CPU. Note that the <a class="el" href="nifti1__io_8c.html#a296fad01763163289b0e1030d3a0ebaa">nifti_set_filenames()</a> function takes the flag, set_byte_order.</p>
<p>The following fields of nim affect how the output appears:</p>
<ul>
<li>nifti_type = 0 ==&gt; ANALYZE-7.5 format file pair will be written</li>
<li>nifti_type = 1 ==&gt; NIFTI-1 format single file will be written (data offset will be 352+extensions)</li>
<li>nifti_type = 2 ==&gt; NIFTI_1 format file pair will be written</li>
<li>nifti_type = 3 ==&gt; NIFTI_1 ASCII single file will be written</li>
<li>fname is the name of the output file (header or header+data)</li>
<li>if a file pair is being written, iname is the name of the data file</li>
<li>existing files WILL be overwritten with extreme prejudice</li>
<li>if qform_code &gt; 0, the quatern_*, qoffset_*, and qfac fields determine the qform output, NOT the qto_xyz matrix; if you want to compute these fields from the qto_xyz matrix, you can use the utility function <a class="el" href="nifti1__io_8c.html#a84b68d5634ec94b5132e0067733e9f28">nifti_mat44_to_quatern()</a></li>
</ul>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="nifti1__io_8h.html#a8864ea68cc4a23ce82f3bb4b545243ca">nifti_image_write_bricks</a>, <a class="el" href="nifti1__io_8h.html#a2fe83552d8121a492fe07b5f42397c9d">nifti_image_free</a>, <a class="el" href="nifti1__io_8h.html#a296fad01763163289b0e1030d3a0ebaa">nifti_set_filenames</a>, <a class="el" href="nifti1__io_8h.html#a05ad147bd1f78fe6790ef1dc93278712">nifti_image_write_hdr_img</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a8864ea68cc4a23ce82f3bb4b545243ca"></a><!-- doxytag: member="nifti1_io.c::nifti_image_write_bricks" ref="a8864ea68cc4a23ce82f3bb4b545243ca" args="(nifti_image *nim, const nifti_brick_list *NBL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void nifti_image_write_bricks </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structnifti__brick__list.html">nifti_brick_list</a> *&#160;</td>
          <td class="paramname"><em>NBL</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>similar to nifti_image_write, but data is in NBL struct, not nim-&gt;data</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="nifti1__io_8h.html#aae590e6d7a9f46f6f8f454c00b6698bf">nifti_image_write</a>, <a class="el" href="nifti1__io_8h.html#a2fe83552d8121a492fe07b5f42397c9d">nifti_image_free</a>, <a class="el" href="nifti1__io_8h.html#a296fad01763163289b0e1030d3a0ebaa">nifti_set_filenames</a>, <a class="el" href="nifti1__io_8h.html#ab1b499958b62d1c0f3bbc929ca2431f2">nifti_free_NBL</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a05ad147bd1f78fe6790ef1dc93278712"></a><!-- doxytag: member="nifti1_io.c::nifti_image_write_hdr_img" ref="a05ad147bd1f78fe6790ef1dc93278712" args="(nifti_image *nim, int write_data, const char *opts)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structznzptr.html">znzFile</a> nifti_image_write_hdr_img </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>write_data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>opts</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>write the <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> dataset to disk, optionally including data</p>
<p>This is just a front-end for nifti_image_write_hdr_img2.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">nim</td><td><a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> to write to disk </td></tr>
    <tr><td class="paramname">write_data</td><td>write options (see nifti_image_write_hdr_img2) </td></tr>
    <tr><td class="paramname">opts</td><td>file open options ("wb" from nifti_image_write)</td></tr>
  </table>
  </dd>
</dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="nifti1__io_8h.html#aae590e6d7a9f46f6f8f454c00b6698bf">nifti_image_write</a>, <a class="el" href="nifti1__io_8h.html#a23ba2ececf435189365329d11d138a24">nifti_image_write_hdr_img2</a>, <a class="el" href="nifti1__io_8h.html#a2fe83552d8121a492fe07b5f42397c9d">nifti_image_free</a>, <a class="el" href="nifti1__io_8h.html#a296fad01763163289b0e1030d3a0ebaa">nifti_set_filenames</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a23ba2ececf435189365329d11d138a24"></a><!-- doxytag: member="nifti1_io.c::nifti_image_write_hdr_img2" ref="a23ba2ececf435189365329d11d138a24" args="(nifti_image *nim, int write_opts, const char *opts, znzFile imgfile, const nifti_brick_list *NBL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structznzptr.html">znzFile</a> nifti_image_write_hdr_img2 </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>write_opts</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>opts</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structznzptr.html">znzFile</a>&#160;</td>
          <td class="paramname"><em>imgfile</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structnifti__brick__list.html">nifti_brick_list</a> *&#160;</td>
          <td class="paramname"><em>NBL</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>This writes the header (and optionally the image data) to file</p>
<p>If the image data file is left open it returns a valid znzFile handle. It also uses imgfile as the open image file is not null, and modifies it inside.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">nim</td><td><a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> to write to disk </td></tr>
    <tr><td class="paramname">write_opts</td><td>flags whether to write data and/or close file (see below) </td></tr>
    <tr><td class="paramname">opts</td><td>file-open options, probably "wb" from <a class="el" href="nifti1__io_8c.html#aae590e6d7a9f46f6f8f454c00b6698bf">nifti_image_write()</a> </td></tr>
    <tr><td class="paramname">imgfile</td><td>optional open znzFile struct, for writing image data (may be NULL) </td></tr>
    <tr><td class="paramname">NBL</td><td>optional <a class="el" href="structnifti__brick__list.html">nifti_brick_list</a>, containing the image data (may be NULL)</td></tr>
  </table>
  </dd>
</dl>
<p>Values for write_opts mode are based on two binary flags ( 0/1 for no-write/write data, and 0/2 for close/leave-open files ) :</p>
<ul>
<li>0 = do not write data and close (do not open data file)</li>
<li>1 = write data and close</li>
<li>2 = do not write data and leave data file open</li>
<li>3 = write data and leave data file open</li>
</ul>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="nifti1__io_8h.html#aae590e6d7a9f46f6f8f454c00b6698bf">nifti_image_write</a>, <a class="el" href="nifti1__io_8h.html#a05ad147bd1f78fe6790ef1dc93278712">nifti_image_write_hdr_img</a>, <a class="el" href="nifti1__io_8h.html#a2fe83552d8121a492fe07b5f42397c9d">nifti_image_free</a>, <a class="el" href="nifti1__io_8h.html#a296fad01763163289b0e1030d3a0ebaa">nifti_set_filenames</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a3354f25465b96de45211544ff6570e74"></a><!-- doxytag: member="nifti1_io.c::nifti_intent_string" ref="a3354f25465b96de45211544ff6570e74" args="(int ii)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* nifti_intent_string </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>ii</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Return a pointer to a string holding the name of a NIFTI intent type.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ii</td><td>NIfTI-1 intent code</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>pointer to static string describing code</dd></dl>
<dl class="warning"><dt><b>Warning:</b></dt><dd>Do not free() or modify this string! It points to static storage.</dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__NIFTI1__INTENT__CODES.html" title="nifti1 intent codes, to describe intended meaning of dataset contents">NIFTI1_INTENT_CODES</a> group in <a class="el" href="nifti1_8h.html" title="Official definition of the nifti1 header. Written by Bob Cox, SSCC, NIMH.">nifti1.h</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ad1eede55fd34a457e1738aa9d0f75036"></a><!-- doxytag: member="nifti1_io.c::nifti_is_complete_filename" ref="ad1eede55fd34a457e1738aa9d0f75036" args="(const char *fname)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_is_complete_filename </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>fname</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>return whether the filename is valid</p>
<p>Note: uppercase extensions are now valid. 27 Apr 2009 [rickr]</p>
<p>The name is considered valid if the file basename has length greater than zero, AND one of the valid nifti extensions is provided. fname input | return | =============================== "myimage" | 0 | "myimage.tif" | 0 | "myimage.tif.gz" | 0 | "myimage.nii" | 1 | ".nii" | 0 | ".myhiddenimage" | 0 | ".myhiddenimage.nii" | 1 | </p>

</div>
</div>
<a class="anchor" id="a6c17ed984533a4dede09b3bb6fa1fa17"></a><!-- doxytag: member="nifti1_io.c::nifti_is_gzfile" ref="a6c17ed984533a4dede09b3bb6fa1fa17" args="(const char *fname)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_is_gzfile </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>fname</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>return whether the filename ends in ".gz" </p>

</div>
</div>
<a class="anchor" id="a2d77002f1a31d0651eaa2462d6273169"></a><!-- doxytag: member="nifti1_io.c::nifti_is_inttype" ref="a2d77002f1a31d0651eaa2462d6273169" args="(int dt)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_is_inttype </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>dt</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Determine if the datatype code dt is an integer type (1=YES, 0=NO).</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>whether the given NIfTI-1 datatype code is valid</dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__NIFTI1__DATATYPES.html" title="nifti1 datatype codes">NIFTI1_DATATYPES</a> group in <a class="el" href="nifti1_8h.html" title="Official definition of the nifti1 header. Written by Bob Cox, SSCC, NIMH.">nifti1.h</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ab03e74e929ca87ec226bd2e59899fc95"></a><!-- doxytag: member="nifti1_io.c::nifti_is_valid_datatype" ref="ab03e74e929ca87ec226bd2e59899fc95" args="(int dtype)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_is_valid_datatype </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>dtype</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>check whether the given type is on the "approved" list</p>
<p>The type is explicitly checked against the NIFTI_TYPE_* list in <a class="el" href="nifti1_8h.html" title="Official definition of the nifti1 header. Written by Bob Cox, SSCC, NIMH.">nifti1.h</a>.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>1 if dtype is valid, 0 otherwise </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd>NIFTI_TYPE_* codes in <a class="el" href="nifti1_8h.html" title="Official definition of the nifti1 header. Written by Bob Cox, SSCC, NIMH.">nifti1.h</a> </dd></dl>

</div>
</div>
<a class="anchor" id="affc673e2c2768319574e46169462f115"></a><!-- doxytag: member="nifti1_io.c::nifti_is_valid_ecode" ref="affc673e2c2768319574e46169462f115" args="(int ecode)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_is_valid_ecode </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>ecode</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>check whether the extension code is valid</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>1 if valid, 0 otherwise </dd></dl>

</div>
</div>
<a class="anchor" id="a2fde930d314f2fea6ce083c4db0412ee"></a><!-- doxytag: member="nifti1_io.c::nifti_make_new_header" ref="a2fde930d314f2fea6ce083c4db0412ee" args="(const int arg_dims[], int arg_dtype)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structnifti__1__header.html">nifti_1_header</a>* nifti_make_new_header </td>
          <td>(</td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>arg_dims</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>arg_dtype</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>basic initialization of a <a class="el" href="structnifti__1__header.html" title="Data structure defining the fields in the nifti1 header. This binary header should be found at the be...">nifti_1_header</a> struct (with given dimensions)</p>
<p>Return an allocated <a class="el" href="structnifti__1__header.html" title="Data structure defining the fields in the nifti1 header. This binary header should be found at the be...">nifti_1_header</a> struct, based on the given dimensions and datatype.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">arg_dims</td><td>: optional dim[8] array (default {3,1,1,1,0,0,0,0}) </td></tr>
    <tr><td class="paramname">arg_dtype</td><td>: optional datatype (default DT_FLOAT32)</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>pointer to allocated <a class="el" href="structnifti__1__header.html" title="Data structure defining the fields in the nifti1 header. This binary header should be found at the be...">nifti_1_header</a> struct </dd></dl>

</div>
</div>
<a class="anchor" id="ab18d6d70c046482f92fb802b74aafb11"></a><!-- doxytag: member="nifti1_io.c::nifti_make_new_nim" ref="ab18d6d70c046482f92fb802b74aafb11" args="(const int dims[], int datatype, int data_fill)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structnifti__image.html">nifti_image</a>* nifti_make_new_nim </td>
          <td>(</td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>dims</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>datatype</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>data_fill</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>basic creation of a <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> struct</p>
<p>Create a <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> from the given dimensions and data type. Optinally, allocate zero-filled data.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">dims</td><td>: optional dim[8] (default {3,1,1,1,0,0,0,0}) </td></tr>
    <tr><td class="paramname">datatype</td><td>: optional datatype (default DT_FLOAT32) </td></tr>
    <tr><td class="paramname">data_fill</td><td>: if flag is set, allocate zero-filled data for image</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>pointer to allocated <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> struct </dd></dl>

</div>
</div>
<a class="anchor" id="a8c07c7b62ab67f0d0e901fdf4b755707"></a><!-- doxytag: member="nifti1_io.c::nifti_make_orthog_mat44" ref="a8c07c7b62ab67f0d0e901fdf4b755707" args="(float r11, float r12, float r13, float r21, float r22, float r23, float r31, float r32, float r33)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structmat44.html">mat44</a> nifti_make_orthog_mat44 </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>r11</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>r12</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>r13</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>r21</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>r22</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>r23</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>r31</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>r32</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>r33</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Input 9 floats and make an orthgonal <a class="el" href="structmat44.html">mat44</a> out of them.</p>
<p>Each row is normalized, then <a class="el" href="nifti1__io_8c.html#a32d3a6d10f5e97ddc243001727c129a1">nifti_mat33_polar()</a> is used to orthogonalize them. If row #3 (r31,r32,r33) is input as zero, then it will be taken to be the cross product of rows #1 and #2.</p>
<p>This function can be used to create a rotation matrix for transforming an oblique volume to anatomical coordinates. For this application:</p>
<ul>
<li>row #1 (r11,r12,r13) is the direction vector along the image i-axis</li>
<li>row #2 (r21,r22,r23) is the direction vector along the image j-axis</li>
<li>row #3 (r31,r32,r33) is the direction vector along the slice direction (if available; otherwise enter it as 0's)</li>
</ul>
<p>The first 2 rows can be taken from the DICOM attribute (0020,0037) "Image Orientation (Patient)".</p>
<p>After forming the rotation matrix, the complete affine transformation from (i,j,k) grid indexes to (x,y,z) spatial coordinates can be computed by multiplying each column by the appropriate grid spacing:</p>
<ul>
<li>column #1 (R.m[0][0],R.m[1][0],R.m[2][0]) by delta-x</li>
<li>column #2 (R.m[0][1],R.m[1][1],R.m[2][1]) by delta-y</li>
<li>column #3 (R.m[0][2],R.m[1][2],R.m[2][2]) by delta-z</li>
</ul>
<p>and by then placing the center (x,y,z) coordinates of voxel (0,0,0) into the column #4 (R.m[0][3],R.m[1][3],R.m[2][3]).</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="nifti1__io_8h.html#a4b183639b2e242ac32210fe3437f60d2">nifti_quatern_to_mat44</a>, <a class="el" href="nifti1__io_8h.html#a84b68d5634ec94b5132e0067733e9f28">nifti_mat44_to_quatern</a>, <a class="el" href="nifti1__io_8h.html#ad8ba2d4a127c3ee26af9909ce2aa59e8">nifti_mat44_to_orientation</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a19cb2bca24ab79a5f0a0ec9b770d7454"></a><!-- doxytag: member="nifti1_io.c::nifti_makebasename" ref="a19cb2bca24ab79a5f0a0ec9b770d7454" args="(const char *fname)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* nifti_makebasename </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>fname</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>duplicate the filename, while clearing any extension</p>
<p>This allocates memory for basename which should eventually be freed. </p>

</div>
</div>
<a class="anchor" id="a03d86f65680b215db89c24723ad73a8c"></a><!-- doxytag: member="nifti1_io.c::nifti_makehdrname" ref="a03d86f65680b215db89c24723ad73a8c" args="(const char *prefix, int nifti_type, int check, int comp)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* nifti_makehdrname </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>prefix</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>nifti_type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>check</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>comp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>creates a filename for storing the header, based on nifti_type</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">prefix</td><td>- this will be copied before the suffix is added </td></tr>
    <tr><td class="paramname">nifti_type</td><td>- determines the extension, unless one is in prefix </td></tr>
    <tr><td class="paramname">check</td><td>- check for existence (fail condition) </td></tr>
    <tr><td class="paramname">comp</td><td>- add .gz for compressed name</td></tr>
  </table>
  </dd>
</dl>
<p>Note that if prefix provides a file suffix, nifti_type is not used.</p>
<p>NB: this allocates memory which should be freed</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="nifti1__io_8h.html#a296fad01763163289b0e1030d3a0ebaa">nifti_set_filenames</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a80ba47331f082db092ef29d11c64fa31"></a><!-- doxytag: member="nifti1_io.c::nifti_makeimgname" ref="a80ba47331f082db092ef29d11c64fa31" args="(const char *prefix, int nifti_type, int check, int comp)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* nifti_makeimgname </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>prefix</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>nifti_type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>check</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>comp</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>creates a filename for storing the image, based on nifti_type</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">prefix</td><td>- this will be copied before the suffix is added </td></tr>
    <tr><td class="paramname">nifti_type</td><td>- determines the extension, unless provided by prefix </td></tr>
    <tr><td class="paramname">check</td><td>- check for existence (fail condition) </td></tr>
    <tr><td class="paramname">comp</td><td>- add .gz for compressed name</td></tr>
  </table>
  </dd>
</dl>
<p>Note that if prefix provides a file suffix, nifti_type is not used.</p>
<p>NB: it allocates memory which should be freed</p>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="nifti1__io_8h.html#a296fad01763163289b0e1030d3a0ebaa">nifti_set_filenames</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a4ccc9daef977faa38f1b05647f835e8d"></a><!-- doxytag: member="nifti1_io.c::nifti_mat33_colnorm" ref="a4ccc9daef977faa38f1b05647f835e8d" args="(mat33 A)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">float nifti_mat33_colnorm </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmat33.html">mat33</a>&#160;</td>
          <td class="paramname"><em>A</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>compute the max column norm of a 3x3 matrix </p>

</div>
</div>
<a class="anchor" id="a9d50d3f27b0f6a7710d10c00d5041b63"></a><!-- doxytag: member="nifti1_io.c::nifti_mat33_determ" ref="a9d50d3f27b0f6a7710d10c00d5041b63" args="(mat33 R)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">float nifti_mat33_determ </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmat33.html">mat33</a>&#160;</td>
          <td class="paramname"><em>R</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>compute the determinant of a 3x3 matrix </p>

</div>
</div>
<a class="anchor" id="ac4d58f4a9ed98b1b4ea642c95886d346"></a><!-- doxytag: member="nifti1_io.c::nifti_mat33_inverse" ref="ac4d58f4a9ed98b1b4ea642c95886d346" args="(mat33 R)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structmat33.html">mat33</a> nifti_mat33_inverse </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmat33.html">mat33</a>&#160;</td>
          <td class="paramname"><em>R</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>compute the inverse of a 3x3 matrix </p>

</div>
</div>
<a class="anchor" id="a44785e6bf9b19f120a9158cc1af312f6"></a><!-- doxytag: member="nifti1_io.c::nifti_mat33_mul" ref="a44785e6bf9b19f120a9158cc1af312f6" args="(mat33 A, mat33 B)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structmat33.html">mat33</a> nifti_mat33_mul </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmat33.html">mat33</a>&#160;</td>
          <td class="paramname"><em>A</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structmat33.html">mat33</a>&#160;</td>
          <td class="paramname"><em>B</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>multiply 2 3x3 matrices </p>

</div>
</div>
<a class="anchor" id="a32d3a6d10f5e97ddc243001727c129a1"></a><!-- doxytag: member="nifti1_io.c::nifti_mat33_polar" ref="a32d3a6d10f5e97ddc243001727c129a1" args="(mat33 A)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structmat33.html">mat33</a> nifti_mat33_polar </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmat33.html">mat33</a>&#160;</td>
          <td class="paramname"><em>A</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>polar decomposition of a 3x3 matrix</p>
<p>This finds the closest orthogonal matrix to input A (in both the Frobenius and L2 norms).</p>
<p>Algorithm is that from NJ Higham, SIAM J Sci Stat Comput, 7:1160-1174. </p>

</div>
</div>
<a class="anchor" id="a9a52da66c78e82f5d63a388b813466a3"></a><!-- doxytag: member="nifti1_io.c::nifti_mat33_rownorm" ref="a9a52da66c78e82f5d63a388b813466a3" args="(mat33 A)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">float nifti_mat33_rownorm </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmat33.html">mat33</a>&#160;</td>
          <td class="paramname"><em>A</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>compute the max row norm of a 3x3 matrix </p>

</div>
</div>
<a class="anchor" id="abf7254db0ad36f998a92ac6f42f9c5c9"></a><!-- doxytag: member="nifti1_io.c::nifti_mat44_inverse" ref="abf7254db0ad36f998a92ac6f42f9c5c9" args="(mat44 R)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structmat44.html">mat44</a> nifti_mat44_inverse </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmat44.html">mat44</a>&#160;</td>
          <td class="paramname"><em>R</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Compute the inverse of a bordered 4x4 matrix.</p>
<pre><ul>
<li>Some numerical code fragments were generated by Maple 8.</li>
<li>If a singular matrix is input, the output matrix will be all zero.</li>
<li>You can check for this by examining the [3][3] element, which will
     be 1.0 for the normal case and 0.0 for the bad case.</li>
</ul>
</pre><pre>     The input matrix should have the form:
        [ r11 r12 r13 v1 ]
        [ r21 r22 r23 v2 ]
        [ r31 r32 r33 v3 ]
        [  0   0   0   1 ]
     </pre> 
</div>
</div>
<a class="anchor" id="ad8ba2d4a127c3ee26af9909ce2aa59e8"></a><!-- doxytag: member="nifti1_io.c::nifti_mat44_to_orientation" ref="ad8ba2d4a127c3ee26af9909ce2aa59e8" args="(mat44 R, int *icod, int *jcod, int *kcod)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void nifti_mat44_to_orientation </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmat44.html">mat44</a>&#160;</td>
          <td class="paramname"><em>R</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>icod</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>jcod</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>kcod</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>compute the (closest) orientation from a 4x4 ijk-&gt;xyz tranformation matrix</p>
<pre>
   Input:  4x4 matrix that transforms (i,j,k) indexes to (x,y,z) coordinates,
           where +x=Right, +y=Anterior, +z=Superior.
           (Only the upper-left 3x3 corner of R is used herein.)
   Output: 3 orientation codes that correspond to the closest "standard"
           anatomical orientation of the (i,j,k) axes.
   Method: Find which permutation of (x,y,z) has the smallest angle to the
           (i,j,k) axes directions, which are the columns of the R matrix.
   Errors: The codes returned will be zero.</pre><pre>   For example, an axial volume might get return values of
icod = NIFTI_R2L   (i axis is mostly Right to Left)
jcod = NIFTI_P2A   (j axis is mostly Posterior to Anterior)
kcod = NIFTI_I2S   (k axis is mostly Inferior to Superior)
   </pre><dl class="see"><dt><b>See also:</b></dt><dd>"QUATERNION REPRESENTATION OF ROTATION MATRIX" in <a class="el" href="nifti1_8h.html" title="Official definition of the nifti1 header. Written by Bob Cox, SSCC, NIMH.">nifti1.h</a></dd>
<dd>
<a class="el" href="nifti1__io_8h.html#a4b183639b2e242ac32210fe3437f60d2">nifti_quatern_to_mat44</a>, <a class="el" href="nifti1__io_8h.html#a84b68d5634ec94b5132e0067733e9f28">nifti_mat44_to_quatern</a>, <a class="el" href="nifti1__io_8h.html#a8c07c7b62ab67f0d0e901fdf4b755707">nifti_make_orthog_mat44</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a84b68d5634ec94b5132e0067733e9f28"></a><!-- doxytag: member="nifti1_io.c::nifti_mat44_to_quatern" ref="a84b68d5634ec94b5132e0067733e9f28" args="(mat44 R, float *qb, float *qc, float *qd, float *qx, float *qy, float *qz, float *dx, float *dy, float *dz, float *qfac)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void nifti_mat44_to_quatern </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structmat44.html">mat44</a>&#160;</td>
          <td class="paramname"><em>R</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float *&#160;</td>
          <td class="paramname"><em>qb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float *&#160;</td>
          <td class="paramname"><em>qc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float *&#160;</td>
          <td class="paramname"><em>qd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float *&#160;</td>
          <td class="paramname"><em>qx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float *&#160;</td>
          <td class="paramname"><em>qy</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float *&#160;</td>
          <td class="paramname"><em>qz</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float *&#160;</td>
          <td class="paramname"><em>dx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float *&#160;</td>
          <td class="paramname"><em>dy</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float *&#160;</td>
          <td class="paramname"><em>dz</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float *&#160;</td>
          <td class="paramname"><em>qfac</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Given the 3x4 upper corner of the matrix R, compute the quaternion parameters that fit it.</p>
<ul>
<li>Any NULL pointer on input won't get assigned (e.g., if you don't want dx,dy,dz, just pass NULL in for those pointers).</li>
<li>If the 3 input matrix columns are NOT orthogonal, they will be orthogonalized prior to calculating the parameters, using the polar decomposition to find the orthogonal matrix closest to the column-normalized input matrix.</li>
<li>However, if the 3 input matrix columns are NOT orthogonal, then the matrix produced by nifti_quatern_to_mat44 WILL have orthogonal columns, so it won't be the same as the matrix input here. This "feature" is because the NIFTI 'qform' transform is deliberately not fully general -- it is intended to model a volume with perpendicular axes.</li>
<li>If the 3 input matrix columns are not even linearly independent, you'll just have to take your luck, won't you?</li>
</ul>
<dl class="see"><dt><b>See also:</b></dt><dd>"QUATERNION REPRESENTATION OF ROTATION MATRIX" in <a class="el" href="nifti1_8h.html" title="Official definition of the nifti1 header. Written by Bob Cox, SSCC, NIMH.">nifti1.h</a></dd>
<dd>
<a class="el" href="nifti1__io_8h.html#a4b183639b2e242ac32210fe3437f60d2">nifti_quatern_to_mat44</a>, <a class="el" href="nifti1__io_8h.html#a8c07c7b62ab67f0d0e901fdf4b755707">nifti_make_orthog_mat44</a>, <a class="el" href="nifti1__io_8h.html#ad8ba2d4a127c3ee26af9909ce2aa59e8">nifti_mat44_to_orientation</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ad9d44ba79bad0716b08d2888c5874012"></a><!-- doxytag: member="nifti1_io.c::nifti_nim_has_valid_dims" ref="ad9d44ba79bad0716b08d2888c5874012" args="(nifti_image *nim, int complain)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_nim_has_valid_dims </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>complain</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>validate nifti dimensions</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>1 if valid, 0 if not</dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="nifti1__io_8h.html#a8cb200f44ed38709f534827ecf0aebed">nifti_nim_is_valid</a>, <a class="el" href="nifti1__io_8h.html#a963647a644c757bf79652cf79d69ae18">nifti_hdr_looks_good</a></dd></dl>
<p>rely on dim[] as the master </p>

<p><ul>
<li>start with dim[0]: failure here is considered terminal</li>
</ul>
<ul>
<li>check whether ndim equals dim[0]</li>
</ul>
<ul>
<li>compare each dim[i] to the proper nx, ny, ...</li>
</ul>
<ul>
<li>check the dimensions, and that their product matches nvox</li>
</ul>
<ul>
<li>if debug, warn about any remaining dim that is neither 0, nor 1</li>
</ul>
<ul>
<li>return invalid or valid </li>
</ul>
</p>

</div>
</div>
<a class="anchor" id="a8cb200f44ed38709f534827ecf0aebed"></a><!-- doxytag: member="nifti1_io.c::nifti_nim_is_valid" ref="a8cb200f44ed38709f534827ecf0aebed" args="(nifti_image *nim, int complain)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_nim_is_valid </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>complain</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>validate the <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a></p>
<dl class="return"><dt><b>Returns:</b></dt><dd>1 if the structure seems valid, otherwise 0</dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="nifti1__io_8h.html#ad9d44ba79bad0716b08d2888c5874012">nifti_nim_has_valid_dims</a>, <a class="el" href="nifti1__io_8h.html#a963647a644c757bf79652cf79d69ae18">nifti_hdr_looks_good</a> </dd></dl>

<p><ul>
<li>check that dim[] matches the individual values ndim, nx, ny, ...</li>
</ul>
<ul>
<li>be explicit in return of 0 or 1 </li>
</ul>
</p>

</div>
</div>
<a class="anchor" id="a50ab65b744fa58802a77988df9eab9eb"></a><!-- doxytag: member="nifti1_io.c::nifti_orientation_string" ref="a50ab65b744fa58802a77988df9eab9eb" args="(int ii)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* nifti_orientation_string </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>ii</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Return a pointer to a string holding the name of a NIFTI orientation.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ii</td><td>orientation code</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>pointer to static string holding the orientation information</dd></dl>
<dl class="warning"><dt><b>Warning:</b></dt><dd>Do not free() or modify the return string! It points to static storage.</dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd>NIFTI_L2R in <a class="el" href="nifti1__io_8h.html" title="Data structures for using nifti1_io API.">nifti1_io.h</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a4b183639b2e242ac32210fe3437f60d2"></a><!-- doxytag: member="nifti1_io.c::nifti_quatern_to_mat44" ref="a4b183639b2e242ac32210fe3437f60d2" args="(float qb, float qc, float qd, float qx, float qy, float qz, float dx, float dy, float dz, float qfac)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structmat44.html">mat44</a> nifti_quatern_to_mat44 </td>
          <td>(</td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>qb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>qc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>qd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>qx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>qy</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>qz</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>dx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>dy</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>dz</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&#160;</td>
          <td class="paramname"><em>qfac</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Given the quaternion parameters (etc.), compute a transformation matrix.</p>
<p>See comments in <a class="el" href="nifti1_8h.html" title="Official definition of the nifti1 header. Written by Bob Cox, SSCC, NIMH.">nifti1.h</a> for details.</p>
<ul>
<li>qb,qc,qd = quaternion parameters</li>
<li>qx,qy,qz = offset parameters</li>
<li>dx,dy,dz = grid stepsizes (non-negative inputs are set to 1.0)</li>
<li>qfac = sign of dz step (&lt; 0 is negative; &gt;= 0 is positive)</li>
</ul>
<pre>
   If qx=qy=qz=0, dx=dy=dz=1, then the output is a rotation matrix.
   For qfac &gt;= 0, the rotation is proper.
   For qfac &lt;  0, the rotation is improper.
   </pre><dl class="see"><dt><b>See also:</b></dt><dd>"QUATERNION REPRESENTATION OF ROTATION MATRIX" in <a class="el" href="nifti1_8h.html" title="Official definition of the nifti1 header. Written by Bob Cox, SSCC, NIMH.">nifti1.h</a> </dd>
<dd>
<a class="el" href="nifti1__io_8h.html#a84b68d5634ec94b5132e0067733e9f28">nifti_mat44_to_quatern</a>, <a class="el" href="nifti1__io_8h.html#a8c07c7b62ab67f0d0e901fdf4b755707">nifti_make_orthog_mat44</a>, <a class="el" href="nifti1__io_8h.html#ad8ba2d4a127c3ee26af9909ce2aa59e8">nifti_mat44_to_orientation</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ab1e7cfdc675f67b4dca809bae81e6e15"></a><!-- doxytag: member="nifti1_io.c::nifti_read_ascii_image" ref="ab1e7cfdc675f67b4dca809bae81e6e15" args="(znzFile fp, char *fname, int flen, int read_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structnifti__image.html">nifti_image</a>* nifti_read_ascii_image </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structznzptr.html">znzFile</a>&#160;</td>
          <td class="paramname"><em>fp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>fname</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>flen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>read_data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>nifti_read_ascii_image - process as a type-3 .nia image file</p>
<p>return NULL on failure</p>
<p>NOTE: this is NOT part of the NIFTI-1 standard </p>

</div>
</div>
<a class="anchor" id="afb6dff710966b4a8611726a9f846c683"></a><!-- doxytag: member="nifti1_io.c::nifti_read_buffer" ref="afb6dff710966b4a8611726a9f846c683" args="(znzFile fp, void *dataptr, size_t ntot, nifti_image *nim)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t nifti_read_buffer </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structznzptr.html">znzFile</a>&#160;</td>
          <td class="paramname"><em>fp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>dataptr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>ntot</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>read ntot bytes of data from an open file and byte swaps if necessary</p>
<p>note that <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> is required for information on datatype, bsize (for any needed byte swapping), etc.</p>
<p>This function does not allocate memory, so dataptr must be valid. </p>

</div>
</div>
<a class="anchor" id="a0a688115ca53321cf7429db173ce24aa"></a><!-- doxytag: member="nifti1_io.c::nifti_read_collapsed_image" ref="a0a688115ca53321cf7429db173ce24aa" args="(nifti_image *nim, const int dims[8], void **data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_read_collapsed_image </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int&#160;</td>
          <td class="paramname"><em>dims</em>[8], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void **&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>read a nifti image, collapsed across dimensions according to dims[8] </p>
<pre></pre><pre>    This function may be used to read parts of a nifti dataset, such as
    the time series for a single voxel, or perhaps a slice.  It is similar
    to <a class="el" href="nifti1__io_8c.html#a2e75db3fcfbe1c2f7343611ab9cfcb8d" title="Load the image blob into a previously initialized nifti_image.">nifti_image_load()</a>, though the passed 'data' parameter is used for
    returning the image, not nim-&gt;data.</pre><pre>    <dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">nim</td><td>given <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> struct, corresponding to the data file
    </td></tr>
    <tr><td class="paramname">dims</td><td>given list of dimensions (see below)
    </td></tr>
    <tr><td class="paramname">data</td><td>pointer to data pointer (if *data is NULL, data will be
                allocated, otherwise not)</td></tr>
  </table>
  </dd>
</dl>
<p>Here, dims is an array of 8 ints, similar to nim-&gt;dim[8].  While dims[0]
    is unused at this point, the other indices specify which dimensions to
    collapse (and at which index), and which not to collapse.  If dims[i] is
    set to -1, then that entire dimension will be read in, from index 0 to
    index (nim-&gt;dim[i] - 1).  If dims[i] &gt;= 0, then only that index will be
    read in (so dims[i] must also be &lt; nim-&gt;dim[i]).</pre><pre>    Example: given  nim-&gt;dim[8] = { 4, 64, 64, 21, 80, 1, 1, 1 } (4-D dataset)</pre><pre>      if dims[8] = { 0,  5,  4, 17, -1, -1, -1, -1 }
         -&gt; read time series for voxel i,j,k = 5,4,17</pre><pre>      if dims[8] = { 0, -1, -1, -1, 17, -1, -1, -1 }
         -&gt; read single volume at time point 17</pre><pre>    Example: given  nim-&gt;dim[8] = { 6, 64, 64, 21, 80, 4, 3, 1 } (6-D dataset)</pre><pre>      if dims[8] = { 0, 5, 4, 17, -1, 2, 1, 0 }
         -&gt; read time series for the voxel i,j,k = 5,4,17, and dim 5,6 = 2,1</pre><pre>      if dims[8] = { 0, 5, 4, -1, -1, 0, 0, 0 }
         -&gt; read time series for slice at i,j = 5,4, and dim 5,6,7 = 0,0,0
            (note that dims[7] is not relevant, but must be 0 or -1)</pre><pre>    If *data is NULL, then *data will be set as a pointer to new memory,
    allocated here for the resulting collapsed image data.</pre><pre>      e.g. { int    dims[8] = { 0,  5,  4, 17, -1, -1, -1, -1 };
             void * data    = NULL;
             ret_val = nifti_read_collapsed_image(nim, dims, &amp;data);
             if( ret_val &gt; 0 ){
                process_time_series(data);
                if( data != NULL ) free(data);
             }
           }</pre><pre>    NOTE: If *data is not NULL, then it will be assumed that it points to
          valid memory, sufficient to hold the results.  This is done for
          speed and possibly repeated calls to this function.</pre><pre>      e.g. { int    dims[8] = { 0,  -1, -1, -1, -1, -1, -1, -1 };
             void * data    = NULL;
             for( zslice = 0; zslice &lt; nzslices; zslice++ ){
                dims[3] = zslice;
                ret_val = nifti_read_collapsed_image(nim, dims, &amp;data);
                if( ret_val &gt; 0 ) process_slice(zslice, data);
             }
             if( data != NULL ) free(data);
           }</pre><pre>    <dl class="return"><dt><b>Returns:</b></dt><dd><ul>
<li>the total number of bytes read, or &lt; 0 on failure</li>
<li>the read and byte-swapped data, in 'data'            </li>
</ul>
</dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="nifti1__io_8h.html#a9da495aabf70c7111f574dc3985e6467" title="Read a nifti header and optionally the data, creating a nifti_image.">nifti_image_read</a>, <a class="el" href="nifti1__io_8h.html#a2fe83552d8121a492fe07b5f42397c9d">nifti_image_free</a>, <a class="el" href="nifti1__io_8h.html#a6a60e69105dc0a2c7767beb376808143">nifti_image_read_bricks</a>
        <a class="el" href="nifti1__io_8h.html#a2e75db3fcfbe1c2f7343611ab9cfcb8d" title="Load the image blob into a previously initialized nifti_image.">nifti_image_load</a>
</dd></dl>
</pre>
<p><ul>
<li>check pointers for sanity</li>
</ul>
<ul>
<li>verify that dim[] makes sense</li>
</ul>
<ul>
<li>verify that dims[] makes sense for this dataset</li>
</ul>
<ul>
<li>prepare pivot list - pivots are fixed indices</li>
</ul>
<ul>
<li>open the image file for reading at the appropriate offset</li>
</ul>
<ul>
<li>call the recursive reading function, passing nim, the pivot info, location to store memory, and file pointer and position </li>
</ul>
</p>

</div>
</div>
<a class="anchor" id="a5708391aec2c027b721fa0d40851d288"></a><!-- doxytag: member="nifti1_io.c::nifti_read_header" ref="a5708391aec2c027b721fa0d40851d288" args="(const char *hname, int *swapped, int check)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structnifti__1__header.html">nifti_1_header</a>* nifti_read_header </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>hname</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>swapped</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>check</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>return an allocated and filled <a class="el" href="structnifti__1__header.html" title="Data structure defining the fields in the nifti1 header. This binary header should be found at the be...">nifti_1_header</a> struct</p>
<p>Read the binary header from disk, and swap bytes if necessary.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>an allocated <a class="el" href="structnifti__1__header.html" title="Data structure defining the fields in the nifti1 header. This binary header should be found at the be...">nifti_1_header</a> struct, or NULL on failure</dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">hname</td><td>name of file containing header </td></tr>
    <tr><td class="paramname">swapped</td><td>if not NULL, return whether header bytes were swapped </td></tr>
    <tr><td class="paramname">check</td><td>flag to check for invalid <a class="el" href="structnifti__1__header.html" title="Data structure defining the fields in the nifti1 header. This binary header should be found at the be...">nifti_1_header</a></td></tr>
  </table>
  </dd>
</dl>
<dl class="warning"><dt><b>Warning:</b></dt><dd>ASCII header type is not supported</dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="nifti1__io_8h.html#a9da495aabf70c7111f574dc3985e6467" title="Read a nifti header and optionally the data, creating a nifti_image.">nifti_image_read</a>, <a class="el" href="nifti1__io_8h.html#a2fe83552d8121a492fe07b5f42397c9d">nifti_image_free</a>, <a class="el" href="nifti1__io_8h.html#a6a60e69105dc0a2c7767beb376808143">nifti_image_read_bricks</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a29be9ec9401b961191b3641055867387"></a><!-- doxytag: member="nifti1_io.c::nifti_read_subregion_image" ref="a29be9ec9401b961191b3641055867387" args="(nifti_image *nim, int *start_index, int *region_size, void **data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_read_subregion_image </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>start_index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>region_size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void **&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>read an arbitrary subregion from a nifti image</p>
<p>This function may be used to read a single arbitary subregion of any rectangular size from a nifti dataset, such as a small 5x5x5 subregion around the center of a 3D image.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">nim</td><td>given <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> struct, corresponding to the data file </td></tr>
    <tr><td class="paramname">start_index</td><td>the index location of the first voxel that will be returned </td></tr>
    <tr><td class="paramname">region_size</td><td>the size of the subregion to be returned </td></tr>
    <tr><td class="paramname">data</td><td>pointer to data pointer (if *data is NULL, data will be allocated, otherwise not)</td></tr>
  </table>
  </dd>
</dl>
<p>Example: given nim-&gt;dim[8] = {3, 64, 64, 64, 1, 1, 1, 1 } (3-D dataset)</p>
<p>if start_index[7] = { 29, 29, 29, 0, 0, 0, 0 } and region_size[7] = { 5, 5, 5, 1, 1, 1, 1 } -&gt; read 5x5x5 region starting with the first voxel location at (29,29,29)</p>
<p>NOTE: If *data is not NULL, then it will be assumed that it points to valid memory, sufficient to hold the results. This is done for speed and possibly repeated calls to this function. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd><ul>
<li>the total number of bytes read, or &lt; 0 on failure</li>
<li>the read and byte-swapped data, in 'data' </li>
</ul>
</dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="nifti1__io_8h.html#a9da495aabf70c7111f574dc3985e6467" title="Read a nifti header and optionally the data, creating a nifti_image.">nifti_image_read</a>, <a class="el" href="nifti1__io_8h.html#a2fe83552d8121a492fe07b5f42397c9d">nifti_image_free</a>, <a class="el" href="nifti1__io_8h.html#a6a60e69105dc0a2c7767beb376808143">nifti_image_read_bricks</a> <a class="el" href="nifti1__io_8h.html#a2e75db3fcfbe1c2f7343611ab9cfcb8d" title="Load the image blob into a previously initialized nifti_image.">nifti_image_load</a>, <a class="el" href="nifti1__io_8h.html#a0a688115ca53321cf7429db173ce24aa">nifti_read_collapsed_image</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a85d02757a3ef2462045bb89d634b8036"></a><!-- doxytag: member="nifti1_io.c::nifti_set_allow_upper_fext" ref="a85d02757a3ef2462045bb89d634b8036" args="(int allow)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void nifti_set_allow_upper_fext </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>allow</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>set nifti's global allow_upper_fext flag 28 Apr 2009 [rickr]</p>
<p>explicitly set to 0 or 1 </p>

</div>
</div>
<a class="anchor" id="ad76d66da1e384dc54a092e033bd8e195"></a><!-- doxytag: member="nifti1_io.c::nifti_set_debug_level" ref="ad76d66da1e384dc54a092e033bd8e195" args="(int level)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void nifti_set_debug_level </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>level</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>set nifti's global debug level, for status reporting</p>
<ul>
<li>0 : quiet, nothing is printed to the terminal, but errors</li>
<li>1 : normal execution (the default)</li>
<li>2, 3 : more details </li>
</ul>

</div>
</div>
<a class="anchor" id="a296fad01763163289b0e1030d3a0ebaa"></a><!-- doxytag: member="nifti1_io.c::nifti_set_filenames" ref="a296fad01763163289b0e1030d3a0ebaa" args="(nifti_image *nim, const char *prefix, int check, int set_byte_order)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_set_filenames </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>prefix</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>check</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>set_byte_order</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>create and set new filenames, based on prefix and image type</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">nim</td><td>pointer to <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> in which to set filenames </td></tr>
    <tr><td class="paramname">prefix</td><td>(required) prefix for output filenames </td></tr>
    <tr><td class="paramname">check</td><td>check for previous existence of filename (existence is an error condition) </td></tr>
    <tr><td class="paramname">set_byte_order</td><td>flag to set nim-&gt;byteorder here (this is probably a logical place to do so)</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on successful update</dd></dl>
<dl class="warning"><dt><b>Warning:</b></dt><dd>this will free() any existing names and create new ones</dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="nifti1__io_8h.html#a80ba47331f082db092ef29d11c64fa31">nifti_makeimgname</a>, <a class="el" href="nifti1__io_8h.html#a03d86f65680b215db89c24723ad73a8c">nifti_makehdrname</a>, <a class="el" href="nifti1__io_8h.html#a46c9636636122200ee108fb179dc23de">nifti_type_and_names_match</a> </dd></dl>

</div>
</div>
<a class="anchor" id="af37b47d8dcd832f0a2ea9758001ac622"></a><!-- doxytag: member="nifti1_io.c::nifti_set_iname_offset" ref="af37b47d8dcd832f0a2ea9758001ac622" args="(nifti_image *nim)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void nifti_set_iname_offset </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>set the <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> iname_offset field, based on nifti_type</p>
<ul>
<li>if writing to 2 files, set offset to 0</li>
<li>if writing to a single NIFTI-1 file, set the offset to 352 + total extension size, then align to 16-byte boundary</li>
<li>if writing an ASCII header, set offset to -1 </li>
</ul>

</div>
</div>
<a class="anchor" id="a10072c5930f7f0c69c91821edbf44b97"></a><!-- doxytag: member="nifti1_io.c::nifti_set_skip_blank_ext" ref="a10072c5930f7f0c69c91821edbf44b97" args="(int skip)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void nifti_set_skip_blank_ext </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>skip</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>set nifti's global skip_blank_ext flag 5 Sep 2006 [rickr]</p>
<p>explicitly set to 0 or 1 </p>

</div>
</div>
<a class="anchor" id="a5cb621a9f499db8c3f9de3c73628cc76"></a><!-- doxytag: member="nifti1_io.c::nifti_set_type_from_names" ref="a5cb621a9f499db8c3f9de3c73628cc76" args="(nifti_image *nim)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_set_type_from_names </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>set the nifti_type field based on fname and iname</p>
<p>Note that nifti_type is changed only when it does not match the filenames.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on error</dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="nifti1__io_8h.html#a5c42d2b1cf63b30950078ec5562e1f58">is_valid_nifti_type</a>, <a class="el" href="nifti1__io_8h.html#a46c9636636122200ee108fb179dc23de">nifti_type_and_names_match</a> </dd></dl>

</div>
</div>
<a class="anchor" id="adf2a70eac549a80a246d380240a8d822"></a><!-- doxytag: member="nifti1_io.c::nifti_short_order" ref="adf2a70eac549a80a246d380240a8d822" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_short_order </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>get the byte order for this CPU</p>
<ul>
<li>LSB_FIRST means least significant byte, first (little endian)</li>
<li>MSB_FIRST means most significant byte, first (big endian) </li>
</ul>

</div>
</div>
<a class="anchor" id="a2fa149a7af0a94b2718035809c3bf930"></a><!-- doxytag: member="nifti1_io.c::nifti_simple_init_nim" ref="a2fa149a7af0a94b2718035809c3bf930" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structnifti__image.html">nifti_image</a>* nifti_simple_init_nim </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>basic initialization of a <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> struct (to a 1x1x1 image) </p>

</div>
</div>
<a class="anchor" id="a2e4ce3c3c610064c01eeeac244101159"></a><!-- doxytag: member="nifti1_io.c::nifti_slice_string" ref="a2e4ce3c3c610064c01eeeac244101159" args="(int ss)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* nifti_slice_string </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>ss</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Return a pointer to a string holding the name of a NIFTI slice_code.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ss</td><td>NIfTI-1 slice order code</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>pointer to static string describing code</dd></dl>
<dl class="warning"><dt><b>Warning:</b></dt><dd>Do not free() or modify this string! It points to static storage.</dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__NIFTI1__SLICE__ORDER.html" title="nifti1 slice order codes, describing the acquisition order of the slices">NIFTI1_SLICE_ORDER</a> group in <a class="el" href="nifti1_8h.html" title="Official definition of the nifti1 header. Written by Bob Cox, SSCC, NIMH.">nifti1.h</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a98f42fe4268d9fff8a5b8c984f8731f1"></a><!-- doxytag: member="nifti1_io.c::nifti_strdup" ref="a98f42fe4268d9fff8a5b8c984f8731f1" args="(const char *str)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* nifti_strdup </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>str</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>duplicate the given string (alloc length+1)</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>allocated pointer (or NULL on failure) </dd></dl>

</div>
</div>
<a class="anchor" id="a5cf6e5dd1d6eb0b43a8df38e6c833fb5"></a><!-- doxytag: member="nifti1_io.c::nifti_swap_16bytes" ref="a5cf6e5dd1d6eb0b43a8df38e6c833fb5" args="(size_t n, void *ar)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void nifti_swap_16bytes </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>n</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>ar</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>swap 16 bytes at a time from the given list of n sets of 16 bytes </p>

</div>
</div>
<a class="anchor" id="a9c64a35264c605640a30af4eec6d99bc"></a><!-- doxytag: member="nifti1_io.c::nifti_swap_2bytes" ref="a9c64a35264c605640a30af4eec6d99bc" args="(size_t n, void *ar)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void nifti_swap_2bytes </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>n</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>ar</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>swap each byte pair from the given list of n pairs</p>
<p>Due to alignment of structures at some architectures (e.g. on ARM), stick to char varaibles. Fixes <a href="http://bugs.debian.org/446893">http://bugs.debian.org/446893</a> Yaroslav &lt;<a href="mailto:debian@onerussian.com">debian@onerussian.com</a>&gt; </p>

</div>
</div>
<a class="anchor" id="a53b22afe7c9c2520e831da6044823c39"></a><!-- doxytag: member="nifti1_io.c::nifti_swap_4bytes" ref="a53b22afe7c9c2520e831da6044823c39" args="(size_t n, void *ar)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void nifti_swap_4bytes </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>n</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>ar</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>swap 4 bytes at a time from the given list of n sets of 4 bytes </p>

</div>
</div>
<a class="anchor" id="a61af0e2662990502b18c2e6ecf1b0fee"></a><!-- doxytag: member="nifti1_io.c::nifti_swap_8bytes" ref="a61af0e2662990502b18c2e6ecf1b0fee" args="(size_t n, void *ar)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void nifti_swap_8bytes </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>n</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>ar</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>swap 8 bytes at a time from the given list of n sets of 8 bytes</p>
<p>perhaps use this style for the general Nbytes, as Yaroslav suggests </p>

</div>
</div>
<a class="anchor" id="a08ff63c999a17b9a7343a5918d73d414"></a><!-- doxytag: member="nifti1_io.c::nifti_swap_as_analyze" ref="a08ff63c999a17b9a7343a5918d73d414" args="(nifti_analyze75 *h)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_swap_as_analyze </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnifti__analyze75.html">nifti_analyze75</a> *&#160;</td>
          <td class="paramname"><em>h</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Byte swap as an ANALYZE 7.5 header</p>
<p>return non-zero on failure </p>

</div>
</div>
<a class="anchor" id="aa7d743976d0ffdf6e320a71a8a32d006"></a><!-- doxytag: member="nifti1_io.c::nifti_swap_Nbytes" ref="aa7d743976d0ffdf6e320a71a8a32d006" args="(size_t n, int siz, void *ar)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void nifti_swap_Nbytes </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>n</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>siz</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>ar</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>based on siz, call the appropriate <a class="el" href="nifti1__io_8c.html#aa7d743976d0ffdf6e320a71a8a32d006">nifti_swap_Nbytes()</a> function </p>

</div>
</div>
<a class="anchor" id="af31bef0754f87cbc281f3db357314e0c"></a><!-- doxytag: member="nifti1_io.c::nifti_test_datatype_sizes" ref="af31bef0754f87cbc281f3db357314e0c" args="(int verb)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_test_datatype_sizes </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>verb</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Only as a test, verify that the new nifti_type_list table matches the the usage of nifti_datatype_sizes (which could be changed to use the table, if there were interest).</p>
<p>return the number of errors (so 0 is success, as usual) </p>

</div>
</div>
<a class="anchor" id="a46c9636636122200ee108fb179dc23de"></a><!-- doxytag: member="nifti1_io.c::nifti_type_and_names_match" ref="a46c9636636122200ee108fb179dc23de" args="(nifti_image *nim, int show_warn)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_type_and_names_match </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>show_warn</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>check whether nifti_type matches fname and iname for the <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a></p>
<ul>
<li>if type 0 or 2, expect .hdr/.img pair</li>
<li>if type 1, expect .nii (and names must match)</li>
</ul>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">nim</td><td>given <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> </td></tr>
    <tr><td class="paramname">show_warn</td><td>if set, print a warning message for any mis-match</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd><ul>
<li>1 if the values seem to match</li>
<li>0 if there is a mis-match</li>
<li>-1 if there is not sufficient information to create file(s)</li>
</ul>
</dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd>NIFTI_FTYPE_* codes in <a class="el" href="nifti1__io_8h.html" title="Data structures for using nifti1_io API.">nifti1_io.h</a> </dd>
<dd>
<a class="el" href="nifti1__io_8h.html#a5cb621a9f499db8c3f9de3c73628cc76">nifti_set_type_from_names</a>, <a class="el" href="nifti1__io_8h.html#a5c42d2b1cf63b30950078ec5562e1f58">is_valid_nifti_type</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a90a17b3e9891b6f16d7b454b5442646d"></a><!-- doxytag: member="nifti1_io.c::nifti_units_string" ref="a90a17b3e9891b6f16d7b454b5442646d" args="(int uu)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* nifti_units_string </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>uu</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Return a pointer to a string holding the name of a NIFTI units type.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">uu</td><td>NIfTI-1 unit code</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>pointer to static string for the given unit type</dd></dl>
<dl class="warning"><dt><b>Warning:</b></dt><dd>Do not free() or modify this string! It points to static storage.</dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__NIFTI1__UNITS.html" title="nifti1 units codes to describe the unit of measurement for each dimension of the dataset">NIFTI1_UNITS</a> group in <a class="el" href="nifti1_8h.html" title="Official definition of the nifti1 header. Written by Bob Cox, SSCC, NIMH.">nifti1.h</a> </dd></dl>

</div>
</div>
<a class="anchor" id="af6c9efd3e09141592c41803377c689a9"></a><!-- doxytag: member="nifti1_io.c::nifti_update_dims_from_array" ref="af6c9efd3e09141592c41803377c689a9" args="(nifti_image *nim)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_update_dims_from_array </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>nifti_update_dims_from_array - update nx, ny, ... from nim-&gt;dim[]</p>
<p>Fix all the dimension information, based on a new nim-&gt;dim[].</p>
<p>Note: we assume that dim[0] will not increase.</p>
<p>Check for updates to pixdim[], dx,..., nx,..., nvox, ndim, dim[0]. </p>

</div>
</div>
<a class="anchor" id="a836b54d494e9d2718e5541978ae3fc29"></a><!-- doxytag: member="nifti1_io.c::nifti_validfilename" ref="a836b54d494e9d2718e5541978ae3fc29" args="(const char *fname)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_validfilename </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>fname</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>return whether the filename is valid</p>
<p>Allow uppercase extensions as valid. 27 Apr 2009 [rickr] Any .gz extension case must match the base extension case.</p>
<p>The name is considered valid if its length is positive, excluding any nifti filename extension. fname input | return | result of nifti_makebasename ==================================================================== "myimage" | 1 | "myimage" "myimage.tif" | 1 | "myimage.tif" "myimage.tif.gz" | 1 | "myimage.tif" "myimage.nii" | 1 | "myimage" ".nii" | 0 | &lt;ERROR - basename has zero length&gt; ".myhiddenimage" | 1 | ".myhiddenimage" ".myhiddenimage.nii |  1      | ".myhiddenimage" </p>

</div>
</div>
<a class="anchor" id="ab8f4f74b33a153219e5c47e6f8046bf3"></a><!-- doxytag: member="nifti1_io.c::nifti_write_all_data" ref="ab8f4f74b33a153219e5c47e6f8046bf3" args="(znzFile fp, nifti_image *nim, const nifti_brick_list *NBL)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int nifti_write_all_data </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structznzptr.html">znzFile</a>&#160;</td>
          <td class="paramname"><em>fp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structnifti__brick__list.html">nifti_brick_list</a> *&#160;</td>
          <td class="paramname"><em>NBL</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>write the <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> data to file (from nim-&gt;data or from NBL)</p>
<p>If NBL is not NULL, write the data from that structure. Otherwise, write it out from nim-&gt;data. No swapping is done here.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">fp</td><td>: File pointer </td></tr>
    <tr><td class="paramname">nim</td><td>: <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> corresponding to the data </td></tr>
    <tr><td class="paramname">NBL</td><td>: optional source of write data (if NULL use nim-&gt;data)</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, -1 on failure</dd></dl>
<p>Note: the <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> byte_order is set as that of the current CPU. This is because such a conversion was made to the data upon reading, while byte_order was not set (so the programs would know what format the data was on disk). Effectively, since byte_order should match what is on disk, it should bet set to that of the current CPU whenever new filenames are assigned. </p>

</div>
</div>
<a class="anchor" id="ad66767a91af38b906c955fb45b9e225b"></a><!-- doxytag: member="nifti1_io.c::nifti_write_ascii_image" ref="ad66767a91af38b906c955fb45b9e225b" args="(nifti_image *nim, const nifti_brick_list *NBL, const char *opts, int write_data, int leave_open)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="structznzptr.html">znzFile</a> nifti_write_ascii_image </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structnifti__brick__list.html">nifti_brick_list</a> *&#160;</td>
          <td class="paramname"><em>NBL</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>opts</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>write_data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>leave_open</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>write a <a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> to disk in ASCII format </p>

</div>
</div>
<a class="anchor" id="a7472700981faa470501958c621c9ee61"></a><!-- doxytag: member="nifti1_io.c::nifti_xform_string" ref="a7472700981faa470501958c621c9ee61" args="(int xx)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* nifti_xform_string </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>xx</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Return a pointer to a string holding the name of a NIFTI transform type.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">xx</td><td>NIfTI-1 xform code</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>pointer to static string describing xform code</dd></dl>
<dl class="warning"><dt><b>Warning:</b></dt><dd>Do not free() or modify this string! It points to static storage.</dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group__NIFTI1__XFORM__CODES.html" title="nifti1 xform codes to describe the &quot;standard&quot; coordinate system">NIFTI1_XFORM_CODES</a> group in <a class="el" href="nifti1_8h.html" title="Official definition of the nifti1 header. Written by Bob Cox, SSCC, NIMH.">nifti1.h</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a6b59987a39c86d4e247c953570784917"></a><!-- doxytag: member="nifti1_io.c::old_swap_nifti_header" ref="a6b59987a39c86d4e247c953570784917" args="(struct nifti_1_header *h, int is_nifti)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void old_swap_nifti_header </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structnifti__1__header.html">nifti_1_header</a> *&#160;</td>
          <td class="paramname"><em>h</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>is_nifti</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>OLD VERSION of swap_nifti_header (left for undo/compare operations)</p>
<p>Byte swap NIFTI-1 file header in various places and ways.</p>
<p>If is_nifti is nonzero, will also swap the NIFTI-specific components of the header; otherwise, only the components common to NIFTI and ANALYZE will be swapped. </p>

</div>
</div>
<a class="anchor" id="a50dc91b6264f53456387f95907bc86ee"></a><!-- doxytag: member="nifti1_io.c::swap_nifti_header" ref="a50dc91b6264f53456387f95907bc86ee" args="(struct nifti_1_header *h, int is_nifti)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void swap_nifti_header </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structnifti__1__header.html">nifti_1_header</a> *&#160;</td>
          <td class="paramname"><em>h</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>is_nifti</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Byte swap NIFTI-1 file header in various places and ways.</p>
<p>If is_nifti, swap all (even UNUSED) fields of NIfTI header. Else, swap as a <a class="el" href="structnifti__analyze75.html">nifti_analyze75</a> struct. </p>

</div>
</div>
<a class="anchor" id="a4062dff607da27712e1abbcdedd3c82e"></a><!-- doxytag: member="nifti1_io.c::valid_nifti_brick_list" ref="a4062dff607da27712e1abbcdedd3c82e" args="(nifti_image *nim, int nbricks, const int *blist, int disp_error)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int valid_nifti_brick_list </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>nbricks</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const int *&#160;</td>
          <td class="paramname"><em>blist</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>disp_error</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>valid_nifti_brick_list - check sub-brick list for image</p>
<p>This function verifies that nbricks and blist are appropriate for use with this nim, based on the dimensions.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">nim</td><td><a class="el" href="structnifti__image.html" title="High level data structure for open nifti datasets in the nifti1_io API. Note that this structure is n...">nifti_image</a> to check against </td></tr>
    <tr><td class="paramname">nbricks</td><td>number of brick indices in blist </td></tr>
    <tr><td class="paramname">blist</td><td>list of brick indices to check in nim </td></tr>
    <tr><td class="paramname">disp_error</td><td>if this flag is set, report errors to user</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>1 if valid, 0 if not </dd></dl>

</div>
</div>
<a class="anchor" id="ae4827bde194fb79b17406da16216f81f"></a><!-- doxytag: member="nifti1_io.c::valid_nifti_extensions" ref="ae4827bde194fb79b17406da16216f81f" args="(const nifti_image *nim)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int valid_nifti_extensions </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structnifti__image.html">nifti_image</a> *&#160;</td>
          <td class="paramname"><em>nim</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>for each extension, check code, size and data pointer </p>

</div>
</div>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Defines</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<hr class="footer"/><address class="footer"><small>Generated on Tue Jul 26 2011 for nifti1_io by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>