%  Undo the flipping and rotations performed by xform_nii; spit back only
%  the raw img data block. Initial cut will only deal with 3D volumes
%  strongly assume we have called xform_nii to write down the steps used
%  in xform_nii.
%
%  Usage:  a = load_nii('original_name');
%          manipulate a.img to make array b;
%
%          if you use unxform_nii to un-tranform the image (img) data
%          block, then nii.original.hdr is the corresponding header.
%
%          nii.original.img = unxform_nii(a, b);
%          save_nii(nii.original,'newname');
%
%  Where, 'newname' is created with data in the same space as the
%         original_name data
%
%  - Jeff Gunter, 26-JUN-06
%
function outblock = unxform_nii(nii, inblock)

   if isempty(nii.hdr.hist.rot_orient)
      outblock=inblock;
   else
      [dummy unrotate_orient] = sort(nii.hdr.hist.rot_orient);
      outblock = permute(inblock, unrotate_orient);
   end

   if ~isempty(nii.hdr.hist.flip_orient)
      flip_orient = nii.hdr.hist.flip_orient(unrotate_orient);

      for i = 1:3
         if flip_orient(i)
            outblock = flipdim(outblock, i);
         end
      end
   end;

   return;

