[med-svn] [mricron] 01/17: Imported Upstream version 0.20120707.1~dfsg.1

Michael Hanke mih at alioth.debian.org
Sun Sep 22 10:49:53 UTC 2013


This is an automated email from the git hooks/post-receive script.

mih pushed a commit to branch master
in repository mricron.

commit 2f6e98013706495ccc596e277e6b1907e76ef2d9
Author: Michael Hanke <michael.hanke at gmail.com>
Date:   Fri Jul 27 10:19:58 2012 +0200

    Imported Upstream version 0.20120707.1~dfsg.1
---
 _delphi.bat                                |   16 +-
 _delphizip.bat                             |   19 +--
 common/define_types.pas                    |    6 +-
 dcm2nii/convert.pas                        |    7 +-
 dcm2nii/csaread.pas                        |  247 ++++++++++++++++++++++++++++
 dcm2nii/dcm2nii.app/Contents/Info.plist    |   43 +++++
 dcm2nii/dcm2nii.app/Contents/MacOS/dcm2nii |    1 +
 dcm2nii/dcm2nii.app/Contents/PkgInfo       |    1 +
 dcm2nii/dcm2nii.lpi                        |  213 +++++++++++++-----------
 dcm2nii/dcm2niigui.ini                     |    7 +-
 dcm2nii/dcm2niigui.lpi                     |  229 ++++++++++++++------------
 dcm2nii/dcm2niigui.lpr                     |   13 +-
 dcm2nii/dcm2niigui.res                     |  Bin 17744 -> 18568 bytes
 dcm2nii/dicomcompat.pas                    |   26 ++-
 dcm2nii/dicomtypes.pas                     |   34 +---
 dcm2nii/gui.lfm                            |   16 +-
 dcm2nii/gui.lrs                            |   86 +++++-----
 dcm2nii/gui.pas                            |   21 ++-
 dcm2nii/userdir.pas                        |  220 +++++++++++++++++++++++++
 mricron.ini                                |    9 +-
 mricron.lpi                                |  143 ++++++++--------
 mricron.res                                |  Bin 30728 -> 30726 bytes
 nifti_img_view.lfm                         |   52 +++---
 nifti_img_view.lrs                         |  140 ++++++++--------
 nifti_img_view.pas                         |    8 +-
 25 files changed, 1054 insertions(+), 503 deletions(-)

diff --git a/_delphi.bat b/_delphi.bat
index e4e81e6..c241a30 100644
--- a/_delphi.bat
+++ b/_delphi.bat
@@ -1,27 +1,27 @@
 del   c:\mricron\*.ini
 
 call _clean.bat
-copy .\common\notgui.inc .\common\isgui.inc
+copy /Y .\common\notgui.inc .\common\isgui.inc
 
 cd .\dcm2nii
-C:\PROGRA~2\BORLAND\DELPHI7\BIN\dcc32 -U..\..\d4\RX\Units -U..\delphionly  -CC -B dcm2nii.dpr
+C:\PROGRA~2\BORLAND\DELPHI7\BIN\dcc32   -CC -B dcm2nii.dpr
 c:\strip dcm2nii.exe
-copy dcm2nii.exe c:\mricron
+copy /Y dcm2nii.exe c:\mricron
 cd ..
 
 call _clean.bat
-copy .\common\gui.inc .\common\isgui.inc
+copy  /Y .\common\gui.inc .\common\isgui.inc
 
 cd .\npm
 C:\PROGRA~2\BORLAND\DELPHI7\BIN\dcc32 -U..\delphionly -B npm.dpr
 c:\strip npm.exe
-copy npm.exe c:\mricron
+copy /Y npm.exe c:\mricron
 cd ..
 
 cd .\dcm2nii
 C:\PROGRA~2\BORLAND\DELPHI7\BIN\dcc32 -U..\delphionly;C:\pas\d7\rx275d7\Units -B dcm2niigui.dpr
 c:\strip dcm2niigui.exe
-copy dcm2niigui.exe c:\mricron
+copy /Y dcm2niigui.exe c:\mricron
 cd ..
 
 call _clean.bat
@@ -29,6 +29,6 @@ call _clean.bat
 cd c:\pas\delphi\niftiview7
 C:\PROGRA~2\BORLAND\DELPHI7\BIN\dcc32 -UC:\pas\d7\rx275d7\Units;C:\PROGRA~2\PngComponents\Source -B mricron.dpr
 c:\strip c:\pas\delphi\niftiview7\mricron.exe
-copy c:\pas\delphi\niftiview7\mricron.exe c:\mricron\
+copy /Y c:\pas\delphi\niftiview7\mricron.exe c:\mricron\
+
 
-"C:\Program Files\NSIS2\makensis" "C:\Program Files\NSIS2\mricron.nsi"
diff --git a/_delphizip.bat b/_delphizip.bat
index 2bb7f6e..a95ffa3 100644
--- a/_delphizip.bat
+++ b/_delphizip.bat
@@ -1,11 +1,10 @@
-del c:\mricrond.zip
-del c:\mricron\*.ini
-c:\Progra~1\7-Zip\7z a -tzip c:\mricrond.zip c:\mricron
-del Z:\html\temp\mricron\mricrond.zip
-copy c:\mricrond.zip Z:\html\temp\mricron\mricrond.zip
+REM COMPILE MRIcron
+call _delphi.bat
 
-call _clean.bat
-del Z:\html\temp\mricron\mricron.zip
-del mricron.zip
-c:\Progra~1\7-Zip\7z a -tzip c:\mricron.zip c:\pas\mricron 
-copy c:\mricron.zip Z:\html\temp\mricron\mricron.zip
\ No newline at end of file
+REM compress MRIcron
+c:\Progra~1\7-Zip\7z a -tzip c:\pas\wincron.zip c:\mricron
+copy /Y c:\pas\wincron.zip \\cocaswwebsrv1.ds.sc.edu\dept\mcbi\MCBI\CRNL\sw\mricron\win.zip
+
+REM compress Source
+c:\Progra~1\7-Zip\7z a -tzip c:\pas\srccron.zip c:\pas\mricron 
+copy c:\pas\srccron.zip \\cocaswwebsrv1.ds.sc.edu\dept\mcbi\MCBI\CRNL\sw\mricron\source.zip
\ No newline at end of file
diff --git a/common/define_types.pas b/common/define_types.pas
index 8321fb8..badd340 100644
--- a/common/define_types.pas
+++ b/common/define_types.pas
@@ -18,7 +18,7 @@ interface
         SysUtils,classes,IniFiles,
         {$IFDEF GUI} forms,userdir, dialogs;{$ELSE} dialogsx;{$ENDIF}
 const
-     kMRIcronVers = '5 May 2012';
+     kMRIcronVers = '7 July 2012';
      NaN : double = 1/0;
      kMagicDouble : double = -111666222;
      kTxtFilter = 'Text (*.txt)|*.txt;*.csv|Comma Separated (*.csv)|*.csv';
@@ -27,6 +27,8 @@ const
      kAnaHdrFilter = 'Analyze Header (*.hdr)|*.hdr';
      kImgPlusVOIFilter = 'NIfTI/Analyze/VOI|*.hdr;*.nii;*.nii.gz;*.voi|NIfTI/Analyze Header (*.hdr;*.nii)|*.hdr;*.nii;*.nii.gz|Volume of interest (*.voi)|*.voi';
      kImgFilter = 'NIfTI/Analyze Header (*.hdr;*.nii)|*.hdr;*.nii;*.nii.gz|Volume of interest (*.voi)|*.voi';
+     kImgFilterPlusAny = 'NIfTI/Analyze Header (*.hdr;*.nii)|*.hdr;*.nii;*.nii.gz|Volume of interest (*.voi)|*.voi|Any file (*.*)|*.*';
+
      kHistoBins = 256;//numbers of bins for histogram/image balance
      PixelCountMax = 32768;
      kTab = chr(9);
@@ -1334,4 +1336,4 @@ BEGIN
       RESULT := false;
 END;
 
-end.
\ No newline at end of file
+end.
diff --git a/dcm2nii/convert.pas b/dcm2nii/convert.pas
index ce40287..65c68ec 100644
--- a/dcm2nii/convert.pas
+++ b/dcm2nii/convert.pas
@@ -11,7 +11,7 @@ gzio2,
 
 {$ENDIF}
 filename,define_types,classes,SysUtils,dicom,dicomtypes,
-niftiutil,GraphicsMathLibrary,  userdir,
+niftiutil,GraphicsMathLibrary,  userdir,csaread,
 nii_4dto3d,nii_orient,nii_crop,prefs,lsjpeg;
 function Dicom2NII(var lDICOMra: TDICOMrap; lFirstDICOM, lLastDICOM: integer; var lOutDirOrig: string; var lPrefs: TPrefs; lVols: integer): boolean;
 implementation
@@ -583,6 +583,9 @@ var
    lSlice,l4DBytes,lSliceBytes,lZo,lTo,lZmax,lTmax:integer;
    lTempBuffer: ByteP;
 begin
+
+     if lDicomData.XYZdim[4] < 2 then
+        exit;
      if MultiOrder(lDICOMdata) <> 0 then begin
          SwapTimeMultiOrder (lDICOMdata,lBuffer);
          exit;
@@ -1571,4 +1574,4 @@ begin
         ExitCode := 0;
 end;
 
-end.
\ No newline at end of file
+end.
diff --git a/dcm2nii/csaread.pas b/dcm2nii/csaread.pas
new file mode 100644
index 0000000..03b23fe
--- /dev/null
+++ b/dcm2nii/csaread.pas
@@ -0,0 +1,247 @@
+unit csaread;
+interface
+// Extract vital details from the Siemens CSA header that is contained within a DICOM file.
+//   This is DICOM group:element (0029:1010) [CSA Image Header Info]
+//   These values are crucial converting 2D mosaics to 3D images and computing DTI vectors
+//see http://nipy.sourceforge.net/nibabel/dicom/siemens_csa.html
+//    This is a port of John Ashburners' spm_dicom_headers.m Matlab code
+uses SysUtils, dialogsx, define_types;
+
+type
+  TBytearray =  array of byte;
+  TCSA = record
+     Slices,MosaicX,MosaicY: longword;
+     Bvalue,DTIv1,DTIv2,DTIv3, SliceNormV1, SliceNormV2,SliceNormV3: double;
+   end;
+
+function DecodeCSA2 (lFilename: string; lCSAImageHeaderInfoPos, lCSAImageHeaderInfoSz: integer; var lCSA: TCSA): boolean;
+
+function GetCSAImageHeaderInfoDTI (lFilename: string; lStart,lLength: integer; var lBval: integer; var ldti1,ldti2,ldti3: double): boolean;
+function GetCSAImageHeaderInfo (lFilename: string; lStart,lLength: integer; var lMosaicSlices,lMosaicX,lMosaicY: integer; var lv1,lv2,lv3: double): boolean;
+
+
+implementation
+
+function GetCSAImageHeaderInfoDTI (lFilename: string; lStart,lLength: integer; var lBval: integer; var ldti1,ldti2,ldti3: double): boolean;
+var
+   lCSA: TCSA;
+begin
+     //lBval := -1;//imposibble - read error
+     result := DecodeCSA2 (lFilename, lStart,lLength, lCSA);
+     if not result then exit;
+     lBval := round(lCSA.bvalue);
+     ldti1 := lCSA.DTIv1;
+     ldti2 := lCSA.DTIv2;
+     ldti3 := lCSA.DTIv3;
+end;
+
+function GetCSAImageHeaderInfo (lFilename: string; lStart,lLength: integer; var lMosaicSlices,lMosaicX,lMosaicY: integer; var lv1,lv2,lv3: double): boolean;
+var
+   lCSA: TCSA;
+begin
+     //lMosaicSlices := -1;//imposibble - read error
+     result := DecodeCSA2 (lFilename, lStart,lLength, lCSA);
+     if not result then exit;
+     lMosaicSlices := lCSA.Slices;
+     lMosaicX := lCSA.MosaicX;
+     lMosaicY := lCSA.MosaicY;
+     lv1 := lCSA.SliceNormV1;
+     lv2 := lCSA.SliceNormV2;
+     lv3 := lCSA.SliceNormV2;
+end;
+
+function DecodeCSA2 (lFilename: string; lCSAImageHeaderInfoPos, lCSAImageHeaderInfoSz: integer; var lCSA: TCSA): boolean;
+//provided with DICOM file as well as location and size of CSA header, this code returns the Siemens CSA header information
+
+const
+  kMaxItem = 4; // if you only need first 3 values, set to 4 so if an item has 6 values the final ones will overwrite 4th item
+type
+  TCSAtag = record
+     name : string[64];
+     vm: longint;
+     vr123: string[3];
+     vr4: string[1];
+     syngodt ,nitems,xx : longint;
+   end;
+  TCSAitem = record
+     xx1, xx2_Len, xx3_77, xx4: longint; // [ x L 77 x] L is length
+     value: string;
+   end;
+var
+    lFile    : File;
+    lVers: string;
+    lData : array of byte;
+    lnTag,lPos,lI,lT,lIbound: integer;
+    lTag :  TCSAtag;
+    lItem : array [1..kMaxItem] of TCSAitem;
+function SafeStr2Num (lStr: string): boolean; //for some reason, many fMRI images have bvalue = 'X1_01_001
+var
+  lP,lL: integer;
+begin
+  result := false;
+  lL := length(lStr);
+  if lL < 1 then exit;
+  for lP := 1 to lL do
+    if not(lStr[lP] in ['+','-','0'..'9','.','e','E']) then
+      exit;
+  result := true;
+end;//nested func SafeStr2Num
+function RightStr2Num (lStr: string): integer; //e.g. Siemens AcquisitionMatrixText "104p*96" -> "96"
+var
+  lL: integer;
+  lS: string;
+  lDone: boolean;
+begin
+  result := -1;
+  lS := '';
+  lL := length(lStr);
+  if lL < 1 then exit;
+  lDone := false;
+  while (lL >= 1) and (not lDone) do begin
+    if (lStr[lL] in ['+','-','0'..'9','.','e','E']) then
+      lS := lStr[lL]+lS
+    else if lS <> '' then
+      lDone := true;
+    dec(lL);
+  end;
+  if lS = '' then exit;
+  result := strtoint(lS);
+end; //nested func RightStr2Num
+function LeftStr2Num (lStr: string): integer; //e.g. Siemens AcquisitionMatrixText "104p*96" -> "104"
+var
+  lP,lL: integer;
+  lS: string;
+  lDone: boolean;
+begin
+  result := -1;
+  lS := '';
+  lL := length(lStr);
+  if lL < 1 then exit;
+  lP := 1;
+  lDone := false;
+  while (lP <= lL) and (not lDone) do begin
+    if (lStr[lP] in ['+','-','0'..'9','.','e','E']) then
+      lS := lS + lStr[lP]
+    else if lS <> '' then
+      lDone := true;
+    inc(lP);
+  end;
+  if lS = '' then exit;
+  result := strtoint(lS);
+end; //nested func LeftStr2Num
+function freadStr(len: integer): string;
+var
+  i: integer;
+begin
+  if (len+lPos) >= lCSAImageHeaderInfoSz then
+    Raise Exception.CreateFmt('csaread: corrupt file ', [lFilename]);
+  result := '';
+  i := 0;
+  while (i < len) and (lData[i+lPos] <> 0) and (lData[i+lPos] <> $20)  do begin
+      result := result + chr(lData[i+lPos]);
+      inc(i);
+  end;
+  lPos := lPos + len;
+end; //nested func freadStr
+function freaduint32: longword; overload; //uint32
+begin
+  if (4+lPos) >= lCSAImageHeaderInfoSz then
+    Raise Exception.CreateFmt('csaread: corrupt file ', [lFilename]);
+  result := (lData[lPos+3] shl 24)+(lData[lPos+2] shl 16)+(lData[lPos+1] shl 8)+lData[lPos];
+  lPos := lPos + 4;
+end;//nested func freaduint32
+function freadint32: longint; overload; //uint32
+begin
+  if (4+lPos) >= lCSAImageHeaderInfoSz then
+    Raise Exception.CreateFmt('csaread: corrupt file ', [lFilename]);
+  result := (lData[lPos+3] shl 24)+(lData[lPos+2] shl 16)+(lData[lPos+1] shl 8)+lData[lPos];
+  lPos := lPos + 4;
+end;//nested func freadint32
+function freadTag: TCSAtag;
+begin
+    result.name := freadStr(64);
+    result.vm:= freadint32;
+    result.vr123:= freadStr(3);
+    result.vr4:= freadStr(1);
+    result.syngodt := freadint32;
+    result.nitems := freadint32;
+    result.xx := freadint32;
+end;//nested func freadTag
+function freadItem: TCSAitem;
+begin
+  result.xx1:= freadint32;
+  result.xx2_Len:= freadint32;
+  result.xx3_77:= freadint32;
+  result.xx4:= freadint32;
+  result.value := freadStr(result.xx2_len);
+  lPos := lPos + ((4-(result.xx2_len) mod 4  )mod 4) ;
+end;//nested func freadItem
+begin  //main function DecodeCSA2
+   result := false;
+   lCSA.Bvalue := -1;
+   if (lCSAImageHeaderInfoSz < 1) then
+    exit;
+   if FSize(lFilename) <= (lCSAImageHeaderInfoPos+lCSAImageHeaderInfoSz) then
+        exit;
+   if lCSAImageHeaderInfoSz < 118 then
+    exit; //Too short to be a CSA header - Perhaps Philips or GE is using this tag
+   setlength(lData, lCSAImageHeaderInfoSz);
+   lPos := 0;
+   FileMode := fmOpenRead;
+   AssignFile(lFile, lFilename);
+   Reset(lFile, 1);   // Now we define one record as 1 byte
+   Seek(lFile, lCSAImageHeaderInfoPos);    // Records start from 0
+   BlockRead(lFile, lData[0], lCSAImageHeaderInfoSz);
+   CloseFile(lFile);
+   lVers := freadStr(4);
+   if lVers = 'SV10' then begin
+      //read header
+      lPos := lPos + 4; //skip 8 bytes of data, spm_dicom_headers refers to these as unused1 and unused2
+      lnTag := freaduint32;
+      if (lnTag < 1) or (lnTag > 1024) then begin
+        showmsg('Error reading CSA header');
+        exit;
+      end;
+      if (lData[lPos] <> 77) then showmsg('warning: strange CSA2 header');
+      lPos := lPos + 4; // skip the four bytes 77 00 00 00
+      //read tags
+      for lT := 1 to lnTag do begin
+        lTag := freadTag;
+        if lTag.nitems > 0 then begin
+          for lI := 1 to lTag.nitems do begin //read items
+            if lI > kMaxItem then
+              lIbound := kMaxItem //out of range
+            else
+              lIbound := lI;
+            lItem[lIbound] := freadItem;
+          end; //for each item
+          if (lTag.name = 'NumberOfImagesInMosaic') then
+            lCSA.Slices := round(strtofloat(lItem[1].value)) ;
+          if (lTag.name = 'AcquisitionMatrixText') then begin  //'96p*96 -> X= 96 and Y= 96
+            lCSA.MosaicX := LeftStr2Num(lItem[1].value);
+            lCSA.MosaicY := RightStr2Num(lItem[1].value);
+          end;
+          if (lTag.name = 'B_value') and (SafeStr2Num(lItem[1].value)) then
+            lCSA.Bvalue := strtofloat(lItem[1].value);
+          if (lTag.name = 'DiffusionGradientDirection') and (SafeStr2Num(lItem[1].value)) and (SafeStr2Num(lItem[2].value)) and (SafeStr2Num(lItem[3].value))  then begin
+            lCSA.DTIv1 := strtofloat(lItem[1].value);
+            lCSA.DTIv2 := strtofloat(lItem[2].value);
+            lCSA.DTIv3 := strtofloat(lItem[3].value);
+          end;
+          if (lTag.name = 'SliceNormalVector') and (SafeStr2Num(lItem[1].value)) and (SafeStr2Num(lItem[2].value)) and (SafeStr2Num(lItem[3].value))  then begin
+            lCSA.SliceNormV1 := strtofloat(lItem[1].value);
+            lCSA.SliceNormV2 := strtofloat(lItem[2].value);
+            lCSA.SliceNormV3 := strtofloat(lItem[3].value);
+          end;
+        end;//at least one item
+      end; //for each tag
+      result := true;
+      //showmsg('Success DecodeCSA2');
+   end else begin
+      showmsg('CSAread Warning: only CSA2 format is supported: image is either corruprted, very old or new. See if a new version of this software is available.');
+   end;
+  lData := nil;
+end;// func DecodeCSA2
+
+end.
+ 
diff --git a/dcm2nii/dcm2nii.app/Contents/Info.plist b/dcm2nii/dcm2nii.app/Contents/Info.plist
new file mode 100644
index 0000000..f964ff6
--- /dev/null
+++ b/dcm2nii/dcm2nii.app/Contents/Info.plist
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+  <key>CFBundleDevelopmentRegion</key>
+  <string>English</string>
+  <key>CFBundleExecutable</key>
+  <string>dcm2nii</string>
+  <key>CFBundleName</key>
+  <string>dcm2nii</string>
+  <key>CFBundleIdentifier</key>
+  <string>com.company.dcm2nii</string>
+  <key>CFBundleInfoDictionaryVersion</key>
+  <string>6.0</string>
+  <key>CFBundlePackageType</key>
+  <string>APPL</string>
+  <key>CFBundleSignature</key>
+  <string>dcm2</string>
+  <key>CFBundleShortVersionString</key>
+  <string>0.1</string>
+  <key>CFBundleVersion</key>
+  <string>1</string>
+  <key>CSResourcesFileMapped</key>
+  <true/>
+  <key>CFBundleDocumentTypes</key>
+  <array>
+    <dict>
+      <key>CFBundleTypeRole</key>
+      <string>Viewer</string>
+      <key>CFBundleTypeExtensions</key>
+      <array>
+        <string>*</string>
+      </array>
+      <key>CFBundleTypeOSTypes</key>
+      <array>
+        <string>fold</string>
+        <string>disk</string>
+        <string>****</string>
+      </array>
+    </dict>
+  </array>
+</dict>
+</plist>
diff --git a/dcm2nii/dcm2nii.app/Contents/MacOS/dcm2nii b/dcm2nii/dcm2nii.app/Contents/MacOS/dcm2nii
new file mode 100644
index 0000000..bdcd35a
--- /dev/null
+++ b/dcm2nii/dcm2nii.app/Contents/MacOS/dcm2nii
@@ -0,0 +1 @@
+../../../dcm2nii
\ No newline at end of file
diff --git a/dcm2nii/dcm2nii.app/Contents/PkgInfo b/dcm2nii/dcm2nii.app/Contents/PkgInfo
new file mode 100644
index 0000000..6f749b0
--- /dev/null
+++ b/dcm2nii/dcm2nii.app/Contents/PkgInfo
@@ -0,0 +1 @@
+APPL????
diff --git a/dcm2nii/dcm2nii.lpi b/dcm2nii/dcm2nii.lpi
index e0fdc14..87cedcc 100644
--- a/dcm2nii/dcm2nii.lpi
+++ b/dcm2nii/dcm2nii.lpi
@@ -1,16 +1,18 @@
 <?xml version="1.0"?>
 <CONFIG>
   <ProjectOptions>
+    <Version Value="9"/>
     <PathDelim Value="\"/>
-    <Version Value="7"/>
     <General>
       <Flags>
         <LRSInOutputDirectory Value="False"/>
       </Flags>
       <MainUnit Value="0"/>
-      <TargetFileExt Value=".exe"/>
-      <ActiveEditorIndexAtStart Value="0"/>
+      <ActiveWindowIndexAtStart Value="0"/>
     </General>
+    <BuildModes Count="1">
+      <Item1 Name="default" Default="True"/>
+    </BuildModes>
     <PublishOptions>
       <Version Value="2"/>
       <IgnoreBinaries Value="False"/>
@@ -28,81 +30,85 @@
         <Filename Value="dcm2nii.lpr"/>
         <IsPartOfProject Value="True"/>
         <UnitName Value="dcm2nii"/>
-        <CursorPos X="3" Y="32"/>
-        <TopLine Value="19"/>
         <EditorIndex Value="0"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="19"/>
+        <CursorPos X="3" Y="32"/>
         <UsageCount Value="118"/>
         <Loaded Value="True"/>
+        <LoadedDesigner Value="True"/>
       </Unit0>
       <Unit1>
         <Filename Value="convert.pas"/>
         <UnitName Value="convert"/>
-        <CursorPos X="1" Y="10"/>
-        <TopLine Value="1"/>
         <EditorIndex Value="6"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="10"/>
         <UsageCount Value="57"/>
         <Loaded Value="True"/>
       </Unit1>
       <Unit2>
         <Filename Value="define_types.pas"/>
         <UnitName Value="define_types"/>
-        <CursorPos X="1" Y="330"/>
         <TopLine Value="317"/>
+        <CursorPos X="1" Y="330"/>
         <UsageCount Value="57"/>
       </Unit2>
       <Unit3>
         <Filename Value="gzio2.pas"/>
         <UnitName Value="gzio2"/>
-        <CursorPos X="7" Y="1784"/>
         <TopLine Value="1765"/>
+        <CursorPos X="7" Y="1784"/>
         <UsageCount Value="57"/>
       </Unit3>
       <Unit4>
         <Filename Value="dicom.pas"/>
         <UnitName Value="dicom"/>
-        <CursorPos X="1" Y="1"/>
+        <WindowIndex Value="0"/>
         <TopLine Value="1"/>
-        <EditorIndex Value="10"/>
+        <CursorPos X="1" Y="1"/>
         <UsageCount Value="57"/>
-        <Loaded Value="True"/>
       </Unit4>
       <Unit5>
         <Filename Value="nodialogs.pas"/>
         <UnitName Value="nodialogs"/>
-        <CursorPos X="10" Y="5"/>
         <TopLine Value="1"/>
+        <CursorPos X="10" Y="5"/>
         <UsageCount Value="54"/>
       </Unit5>
       <Unit6>
         <Filename Value="lsjpeg.pas"/>
         <UnitName Value="lsjpeg"/>
-        <CursorPos X="30" Y="741"/>
-        <TopLine Value="711"/>
         <EditorIndex Value="8"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="711"/>
+        <CursorPos X="30" Y="741"/>
         <UsageCount Value="56"/>
         <Loaded Value="True"/>
       </Unit6>
       <Unit7>
         <Filename Value="GraphicsMathLibrary.pas"/>
         <UnitName Value="GraphicsMathLibrary"/>
-        <CursorPos X="1" Y="66"/>
         <TopLine Value="61"/>
+        <CursorPos X="1" Y="66"/>
         <UsageCount Value="54"/>
       </Unit7>
       <Unit8>
         <Filename Value="sortdicom.pas"/>
         <UnitName Value="sortdicom"/>
-        <CursorPos X="24" Y="188"/>
         <TopLine Value="172"/>
+        <CursorPos X="24" Y="188"/>
         <UsageCount Value="57"/>
       </Unit8>
       <Unit9>
         <Filename Value="filename.pas"/>
         <IsPartOfProject Value="True"/>
         <UnitName Value="filename"/>
-        <CursorPos X="22" Y="11"/>
-        <TopLine Value="1"/>
         <EditorIndex Value="1"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="49" Y="5"/>
         <UsageCount Value="118"/>
         <Loaded Value="True"/>
       </Unit9>
@@ -110,15 +116,15 @@
         <Filename Value="dicomtypes.pas"/>
         <IsPartOfProject Value="True"/>
         <UnitName Value="dicomtypes"/>
-        <CursorPos X="42" Y="320"/>
         <TopLine Value="307"/>
+        <CursorPos X="42" Y="320"/>
         <UsageCount Value="118"/>
       </Unit10>
       <Unit11>
         <Filename Value="parconvert.pas"/>
         <UnitName Value="parconvert"/>
-        <CursorPos X="44" Y="1199"/>
         <TopLine Value="1188"/>
+        <CursorPos X="44" Y="1199"/>
         <UsageCount Value="57"/>
       </Unit11>
       <Unit12>
@@ -126,139 +132,145 @@
         <ComponentName Value="Form1"/>
         <HasResources Value="True"/>
         <UnitName Value="Unit1"/>
-        <CursorPos X="36" Y="7"/>
         <TopLine Value="1"/>
+        <CursorPos X="36" Y="7"/>
         <UsageCount Value="3"/>
       </Unit12>
       <Unit13>
         <Filename Value="nii4Dto3D.pas"/>
         <UnitName Value="nii4dto3d"/>
-        <CursorPos X="53" Y="125"/>
         <TopLine Value="114"/>
+        <CursorPos X="53" Y="125"/>
         <UsageCount Value="11"/>
       </Unit13>
       <Unit14>
         <Filename Value="dicomfast.pas"/>
         <UnitName Value="dicomfast"/>
-        <CursorPos X="6" Y="14"/>
+        <WindowIndex Value="0"/>
         <TopLine Value="4"/>
-        <EditorIndex Value="9"/>
+        <CursorPos X="6" Y="14"/>
         <UsageCount Value="11"/>
-        <Loaded Value="True"/>
       </Unit14>
       <Unit15>
         <Filename Value="dicomcompat.pas"/>
         <UnitName Value="dicomcompat"/>
-        <CursorPos X="31" Y="5918"/>
         <TopLine Value="5888"/>
+        <CursorPos X="31" Y="5918"/>
         <UsageCount Value="11"/>
       </Unit15>
       <Unit16>
         <Filename Value="dialogsx.pas"/>
         <UnitName Value="dialogsx"/>
-        <CursorPos X="10" Y="2"/>
         <TopLine Value="1"/>
+        <CursorPos X="10" Y="2"/>
         <UsageCount Value="11"/>
       </Unit16>
       <Unit17>
         <Filename Value="nii_4dto3d.pas"/>
         <UnitName Value="nii_4dto3d"/>
-        <CursorPos X="53" Y="124"/>
         <TopLine Value="113"/>
+        <CursorPos X="53" Y="124"/>
         <UsageCount Value="11"/>
       </Unit17>
       <Unit18>
         <Filename Value="nii_orient.pas"/>
         <UnitName Value="nii_orient"/>
-        <CursorPos X="65" Y="4"/>
-        <TopLine Value="1"/>
         <EditorIndex Value="2"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="65" Y="4"/>
         <UsageCount Value="11"/>
         <Loaded Value="True"/>
       </Unit18>
       <Unit19>
         <Filename Value="nii_crop.pas"/>
         <UnitName Value="nii_crop"/>
-        <CursorPos X="6" Y="2"/>
         <TopLine Value="1"/>
+        <CursorPos X="6" Y="2"/>
         <UsageCount Value="11"/>
       </Unit19>
       <Unit20>
         <Filename Value="paramstrs.pas"/>
         <UnitName Value="paramstrs"/>
-        <CursorPos X="28" Y="18"/>
-        <TopLine Value="1"/>
+        <IsVisibleTab Value="True"/>
         <EditorIndex Value="7"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="169"/>
+        <CursorPos X="29" Y="17"/>
         <UsageCount Value="11"/>
         <Loaded Value="True"/>
       </Unit20>
       <Unit21>
         <Filename Value="readint.pas"/>
         <UnitName Value="readint"/>
-        <CursorPos X="13" Y="6"/>
         <TopLine Value="1"/>
+        <CursorPos X="13" Y="6"/>
         <UsageCount Value="10"/>
       </Unit21>
       <Unit22>
         <Filename Value="userdir.pas"/>
         <UnitName Value="userdir"/>
-        <CursorPos X="31" Y="13"/>
         <TopLine Value="1"/>
+        <CursorPos X="31" Y="13"/>
         <UsageCount Value="10"/>
       </Unit22>
       <Unit23>
         <Filename Value="..\common\isgui.inc"/>
-        <CursorPos X="12" Y="1"/>
+        <EditorIndex Value="9"/>
+        <WindowIndex Value="0"/>
         <TopLine Value="1"/>
-        <EditorIndex Value="11"/>
+        <CursorPos X="13" Y="1"/>
         <UsageCount Value="10"/>
         <Loaded Value="True"/>
       </Unit23>
       <Unit24>
         <Filename Value="..\common\define_types.pas"/>
         <UnitName Value="define_types"/>
-        <CursorPos X="45" Y="9"/>
-        <TopLine Value="1"/>
         <EditorIndex Value="5"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="2"/>
+        <CursorPos X="7" Y="11"/>
         <UsageCount Value="10"/>
         <Loaded Value="True"/>
       </Unit24>
       <Unit25>
         <Filename Value="..\common\gzio2.pas"/>
         <UnitName Value="gzio2"/>
-        <CursorPos X="35" Y="1849"/>
         <TopLine Value="1809"/>
+        <CursorPos X="35" Y="1849"/>
         <UsageCount Value="10"/>
       </Unit25>
       <Unit26>
         <Filename Value="..\common\GraphicsMathLibrary.pas"/>
         <UnitName Value="GraphicsMathLibrary"/>
-        <CursorPos X="35" Y="552"/>
         <TopLine Value="547"/>
+        <CursorPos X="35" Y="552"/>
         <UsageCount Value="10"/>
       </Unit26>
       <Unit27>
         <Filename Value="..\common\dialogsx.pas"/>
         <UnitName Value="dialogsx"/>
-        <CursorPos X="1" Y="1"/>
         <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
         <UsageCount Value="10"/>
       </Unit27>
       <Unit28>
         <Filename Value="prefs.pas"/>
         <UnitName Value="prefs"/>
-        <CursorPos X="55" Y="8"/>
-        <TopLine Value="1"/>
         <EditorIndex Value="3"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="24" Y="3"/>
         <UsageCount Value="10"/>
         <Loaded Value="True"/>
       </Unit28>
       <Unit29>
         <Filename Value="..\common\userdir.pas"/>
         <UnitName Value="userdir"/>
-        <CursorPos X="1" Y="1"/>
-        <TopLine Value="1"/>
         <EditorIndex Value="4"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="1" Y="1"/>
         <UsageCount Value="10"/>
         <Loaded Value="True"/>
       </Unit29>
@@ -266,132 +278,137 @@
     <JumpHistory Count="30" HistoryIndex="29">
       <Position1>
         <Filename Value="lsjpeg.pas"/>
-        <Caret Line="209" Column="34" TopLine="195"/>
+        <Caret Line="228" Column="25" TopLine="203"/>
       </Position1>
       <Position2>
         <Filename Value="lsjpeg.pas"/>
-        <Caret Line="211" Column="21" TopLine="197"/>
+        <Caret Line="231" Column="20" TopLine="217"/>
       </Position2>
       <Position3>
         <Filename Value="lsjpeg.pas"/>
-        <Caret Line="217" Column="35" TopLine="203"/>
+        <Caret Line="253" Column="32" TopLine="239"/>
       </Position3>
       <Position4>
         <Filename Value="lsjpeg.pas"/>
-        <Caret Line="222" Column="21" TopLine="203"/>
+        <Caret Line="259" Column="21" TopLine="239"/>
       </Position4>
       <Position5>
         <Filename Value="lsjpeg.pas"/>
-        <Caret Line="228" Column="25" TopLine="203"/>
+        <Caret Line="266" Column="33" TopLine="239"/>
       </Position5>
       <Position6>
         <Filename Value="lsjpeg.pas"/>
-        <Caret Line="231" Column="20" TopLine="217"/>
+        <Caret Line="280" Column="20" TopLine="266"/>
       </Position6>
       <Position7>
         <Filename Value="lsjpeg.pas"/>
-        <Caret Line="253" Column="32" TopLine="239"/>
+        <Caret Line="9" Column="118" TopLine="1"/>
       </Position7>
       <Position8>
-        <Filename Value="lsjpeg.pas"/>
-        <Caret Line="259" Column="21" TopLine="239"/>
+        <Filename Value="prefs.pas"/>
+        <Caret Line="1" Column="1" TopLine="1"/>
       </Position8>
       <Position9>
-        <Filename Value="lsjpeg.pas"/>
-        <Caret Line="266" Column="33" TopLine="239"/>
+        <Filename Value="prefs.pas"/>
+        <Caret Line="6" Column="5" TopLine="1"/>
       </Position9>
       <Position10>
-        <Filename Value="lsjpeg.pas"/>
-        <Caret Line="280" Column="20" TopLine="266"/>
+        <Filename Value="prefs.pas"/>
+        <Caret Line="7" Column="26" TopLine="1"/>
       </Position10>
       <Position11>
-        <Filename Value="lsjpeg.pas"/>
-        <Caret Line="9" Column="118" TopLine="1"/>
+        <Filename Value="..\common\userdir.pas"/>
+        <Caret Line="1" Column="1" TopLine="1"/>
       </Position11>
       <Position12>
-        <Filename Value="dicomfast.pas"/>
-        <Caret Line="2" Column="6" TopLine="1"/>
+        <Filename Value="filename.pas"/>
+        <Caret Line="202" Column="54" TopLine="163"/>
       </Position12>
       <Position13>
-        <Filename Value="prefs.pas"/>
+        <Filename Value="filename.pas"/>
         <Caret Line="1" Column="1" TopLine="1"/>
       </Position13>
       <Position14>
         <Filename Value="prefs.pas"/>
-        <Caret Line="6" Column="5" TopLine="1"/>
+        <Caret Line="3" Column="2" TopLine="1"/>
       </Position14>
       <Position15>
-        <Filename Value="prefs.pas"/>
-        <Caret Line="7" Column="26" TopLine="1"/>
+        <Filename Value="..\common\userdir.pas"/>
+        <Caret Line="10" Column="39" TopLine="1"/>
       </Position15>
       <Position16>
         <Filename Value="..\common\userdir.pas"/>
-        <Caret Line="1" Column="1" TopLine="1"/>
+        <Caret Line="35" Column="58" TopLine="1"/>
       </Position16>
       <Position17>
-        <Filename Value="filename.pas"/>
-        <Caret Line="202" Column="54" TopLine="163"/>
+        <Filename Value="..\common\define_types.pas"/>
+        <Caret Line="11" Column="21" TopLine="1"/>
       </Position17>
       <Position18>
-        <Filename Value="dicom.pas"/>
-        <Caret Line="10" Column="46" TopLine="1"/>
+        <Filename Value="..\common\define_types.pas"/>
+        <Caret Line="20" Column="45" TopLine="1"/>
       </Position18>
       <Position19>
-        <Filename Value="filename.pas"/>
-        <Caret Line="1" Column="1" TopLine="1"/>
+        <Filename Value="..\common\define_types.pas"/>
+        <Caret Line="2" Column="25" TopLine="1"/>
       </Position19>
       <Position20>
-        <Filename Value="prefs.pas"/>
-        <Caret Line="3" Column="2" TopLine="1"/>
+        <Filename Value="..\common\define_types.pas"/>
+        <Caret Line="10" Column="29" TopLine="1"/>
       </Position20>
       <Position21>
-        <Filename Value="..\common\userdir.pas"/>
-        <Caret Line="10" Column="39" TopLine="1"/>
+        <Filename Value="..\common\define_types.pas"/>
+        <Caret Line="1" Column="1" TopLine="1"/>
       </Position21>
       <Position22>
-        <Filename Value="..\common\userdir.pas"/>
-        <Caret Line="35" Column="58" TopLine="1"/>
+        <Filename Value="dcm2nii.lpr"/>
+        <Caret Line="16" Column="31" TopLine="1"/>
       </Position22>
       <Position23>
-        <Filename Value="..\common\define_types.pas"/>
-        <Caret Line="11" Column="21" TopLine="1"/>
+        <Filename Value="paramstrs.pas"/>
+        <Caret Line="13" Column="1" TopLine="4"/>
       </Position23>
       <Position24>
-        <Filename Value="..\common\define_types.pas"/>
-        <Caret Line="20" Column="45" TopLine="1"/>
+        <Filename Value="dcm2nii.lpr"/>
+        <Caret Line="66" Column="1" TopLine="40"/>
       </Position24>
       <Position25>
         <Filename Value="..\common\define_types.pas"/>
-        <Caret Line="2" Column="25" TopLine="1"/>
+        <Caret Line="9" Column="45" TopLine="1"/>
       </Position25>
       <Position26>
-        <Filename Value="..\common\define_types.pas"/>
-        <Caret Line="10" Column="29" TopLine="1"/>
+        <Filename Value="filename.pas"/>
+        <Caret Line="11" Column="22" TopLine="1"/>
       </Position26>
       <Position27>
-        <Filename Value="..\common\define_types.pas"/>
+        <Filename Value="filename.pas"/>
         <Caret Line="1" Column="1" TopLine="1"/>
       </Position27>
       <Position28>
-        <Filename Value="dcm2nii.lpr"/>
-        <Caret Line="16" Column="31" TopLine="1"/>
+        <Filename Value="prefs.pas"/>
+        <Caret Line="3" Column="24" TopLine="1"/>
       </Position28>
       <Position29>
-        <Filename Value="paramstrs.pas"/>
-        <Caret Line="13" Column="1" TopLine="4"/>
+        <Filename Value="filename.pas"/>
+        <Caret Line="1" Column="1" TopLine="1"/>
       </Position29>
       <Position30>
-        <Filename Value="dcm2nii.lpr"/>
-        <Caret Line="66" Column="1" TopLine="40"/>
+        <Filename Value="paramstrs.pas"/>
+        <Caret Line="18" Column="28" TopLine="1"/>
       </Position30>
     </JumpHistory>
   </ProjectOptions>
   <CompilerOptions>
-    <Version Value="8"/>
+    <Version Value="9"/>
     <PathDelim Value="\"/>
     <SearchPaths>
-      <OtherUnitFiles Value="..\common\"/>
+      <OtherUnitFiles Value="..\common"/>
     </SearchPaths>
+    <Parsing>
+      <SyntaxOptions>
+        <UseAnsiStrings Value="False"/>
+      </SyntaxOptions>
+    </Parsing>
     <CodeGeneration>
       <Optimizations>
         <OptimizationLevel Value="2"/>
@@ -411,4 +428,4 @@
       <CompilerPath Value="$(CompPath)"/>
     </Other>
   </CompilerOptions>
-</CONFIG>
+</CONFIG>
\ No newline at end of file
diff --git a/dcm2nii/dcm2niigui.ini b/dcm2nii/dcm2niigui.ini
index 9fa6ebc..cf8f638 100644
--- a/dcm2nii/dcm2niigui.ini
+++ b/dcm2nii/dcm2niigui.ini
@@ -1,6 +1,7 @@
 [BOOL]
 DebugMode=0
 UntestedFeatures=0
+UINT16toFLOAT32=1
 Verbose=0
 Anonymize=1
 AnonymizeSourceDICOM=0
@@ -10,7 +11,7 @@ AppendFilename=0
 AppendPatientName=0
 AppendProtocolName=1
 AutoCrop=0
-CollapseFolders=0
+CollapseFolders=1
 createoutputfolder=0
 CustomRename=0
 enablereorient=1
@@ -26,11 +27,10 @@ SPM2=0
 Stack3DImagesWithSameAcqNum=0
 Swizzle4D=1
 UseGE_0021_104F=0
-UINT16toFLOAT32=1
 
 [INT]
 MaxReorientMatrix=1023
-MinReorientMatrix=2147483647
+MinReorientMatrix=200
 RecursiveFolderDepth=5
 OutDirMode=0
 SiemensDTIUse0019If00181020atleast=15
@@ -39,4 +39,3 @@ SiemensDTIStackIf00181020atleast=15
 
 [STR]
 OutDir=C:\Users\neuropsych\Documents
-
diff --git a/dcm2nii/dcm2niigui.lpi b/dcm2nii/dcm2niigui.lpi
index a0ea3c5..8f3b0a2 100644
--- a/dcm2nii/dcm2niigui.lpi
+++ b/dcm2nii/dcm2niigui.lpi
@@ -8,7 +8,8 @@
         <LRSInOutputDirectory Value="False"/>
       </Flags>
       <MainUnit Value="0"/>
-      <Title Value="dcm2niigui"/>
+      <Title Value="dcm2niigui.exe"/>
+      <UseXPManifest Value="True"/>
       <Icon Value="0"/>
       <ActiveWindowIndexAtStart Value="0"/>
     </General>
@@ -35,17 +36,15 @@
         <PackageName Value="LCL"/>
       </Item1>
     </RequiredPackages>
-    <Units Count="41">
+    <Units Count="44">
       <Unit0>
         <Filename Value="dcm2niigui.lpr"/>
         <IsPartOfProject Value="True"/>
         <UnitName Value="dcm2niigui"/>
-        <EditorIndex Value="5"/>
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="2" Y="1"/>
-        <UsageCount Value="57"/>
-        <Loaded Value="True"/>
+        <UsageCount Value="58"/>
       </Unit0>
       <Unit1>
         <Filename Value="gui.pas"/>
@@ -55,9 +54,9 @@
         <UnitName Value="gui"/>
         <EditorIndex Value="0"/>
         <WindowIndex Value="0"/>
-        <TopLine Value="768"/>
-        <CursorPos X="1" Y="770"/>
-        <UsageCount Value="57"/>
+        <TopLine Value="1115"/>
+        <CursorPos X="7" Y="1122"/>
+        <UsageCount Value="58"/>
         <Loaded Value="True"/>
         <LoadedDesigner Value="True"/>
       </Unit1>
@@ -75,7 +74,7 @@
         <UnitName Value="nifti_form"/>
         <TopLine Value="1"/>
         <CursorPos X="102" Y="2"/>
-        <UsageCount Value="57"/>
+        <UsageCount Value="58"/>
       </Unit3>
       <Unit4>
         <Filename Value="pref_form.pas"/>
@@ -83,13 +82,10 @@
         <ComponentName Value="PrefsForm"/>
         <ResourceBaseClass Value="Form"/>
         <UnitName Value="pref_form"/>
-        <EditorIndex Value="1"/>
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="101" Y="146"/>
-        <UsageCount Value="57"/>
-        <Loaded Value="True"/>
-        <LoadedDesigner Value="True"/>
+        <UsageCount Value="58"/>
       </Unit4>
       <Unit5>
         <Filename Value="parconvert.pas"/>
@@ -148,66 +144,62 @@
       <Unit13>
         <Filename Value="paramstrs.pas"/>
         <UnitName Value="paramstrs"/>
-        <EditorIndex Value="4"/>
         <WindowIndex Value="0"/>
         <TopLine Value="75"/>
         <CursorPos X="99" Y="92"/>
-        <UsageCount Value="19"/>
-        <Loaded Value="True"/>
+        <UsageCount Value="20"/>
       </Unit13>
       <Unit14>
         <Filename Value="niftiutil.pas"/>
         <UnitName Value="niftiutil"/>
-        <EditorIndex Value="9"/>
         <WindowIndex Value="0"/>
         <TopLine Value="162"/>
         <CursorPos X="1" Y="155"/>
-        <UsageCount Value="18"/>
-        <Loaded Value="True"/>
+        <UsageCount Value="19"/>
       </Unit14>
       <Unit15>
         <Filename Value="prefs.pas"/>
         <UnitName Value="prefs"/>
-        <EditorIndex Value="3"/>
         <WindowIndex Value="0"/>
         <TopLine Value="184"/>
         <CursorPos X="66" Y="210"/>
-        <UsageCount Value="19"/>
-        <Loaded Value="True"/>
+        <UsageCount Value="20"/>
       </Unit15>
       <Unit16>
         <Filename Value="dicom.pas"/>
         <UnitName Value="dicom"/>
+        <WindowIndex Value="0"/>
         <TopLine Value="1"/>
-        <CursorPos X="1" Y="1"/>
-        <UsageCount Value="8"/>
+        <CursorPos X="1" Y="13"/>
+        <UsageCount Value="11"/>
       </Unit16>
       <Unit17>
         <Filename Value="dicomtypes.pas"/>
         <UnitName Value="dicomtypes"/>
         <EditorIndex Value="8"/>
         <WindowIndex Value="0"/>
-        <TopLine Value="636"/>
-        <CursorPos X="51" Y="673"/>
-        <UsageCount Value="12"/>
+        <TopLine Value="623"/>
+        <CursorPos X="26" Y="653"/>
+        <UsageCount Value="13"/>
         <Loaded Value="True"/>
       </Unit17>
       <Unit18>
         <Filename Value="filename.pas"/>
         <UnitName Value="filename"/>
-        <EditorIndex Value="2"/>
         <WindowIndex Value="0"/>
         <TopLine Value="118"/>
         <CursorPos X="55" Y="131"/>
-        <UsageCount Value="13"/>
-        <Loaded Value="True"/>
+        <UsageCount Value="14"/>
       </Unit18>
       <Unit19>
         <Filename Value="userdir.pas"/>
         <UnitName Value="userdir"/>
-        <TopLine Value="32"/>
-        <CursorPos X="64" Y="45"/>
-        <UsageCount Value="8"/>
+        <EditorIndex Value="6"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="21" Y="11"/>
+        <UsageCount Value="10"/>
+        <Loaded Value="True"/>
       </Unit19>
       <Unit20>
         <Filename Value="gzio2.pas"/>
@@ -233,11 +225,11 @@
       <Unit23>
         <Filename Value="..\common\define_types.pas"/>
         <UnitName Value="define_types"/>
-        <EditorIndex Value="10"/>
+        <EditorIndex Value="7"/>
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
-        <CursorPos X="62" Y="9"/>
-        <UsageCount Value="17"/>
+        <CursorPos X="23" Y="21"/>
+        <UsageCount Value="18"/>
         <Loaded Value="True"/>
       </Unit23>
       <Unit24>
@@ -250,23 +242,20 @@
       <Unit25>
         <Filename Value="convert.pas"/>
         <UnitName Value="convert"/>
-        <IsVisibleTab Value="True"/>
-        <EditorIndex Value="6"/>
+        <EditorIndex Value="4"/>
         <WindowIndex Value="0"/>
-        <TopLine Value="91"/>
-        <CursorPos X="88" Y="110"/>
-        <UsageCount Value="16"/>
+        <TopLine Value="1"/>
+        <CursorPos X="49" Y="14"/>
+        <UsageCount Value="17"/>
         <Loaded Value="True"/>
       </Unit25>
       <Unit26>
         <Filename Value="..\common\gzio2.pas"/>
         <UnitName Value="gzio2"/>
-        <EditorIndex Value="7"/>
         <WindowIndex Value="0"/>
         <TopLine Value="647"/>
         <CursorPos X="8" Y="667"/>
-        <UsageCount Value="10"/>
-        <Loaded Value="True"/>
+        <UsageCount Value="11"/>
       </Unit26>
       <Unit27>
         <Filename Value="nii_asl.pas"/>
@@ -313,11 +302,11 @@
       <Unit33>
         <Filename Value="dicomcompat.pas"/>
         <UnitName Value="dicomcompat"/>
-        <EditorIndex Value="11"/>
+        <EditorIndex Value="3"/>
         <WindowIndex Value="0"/>
-        <TopLine Value="4484"/>
-        <CursorPos X="88" Y="4494"/>
-        <UsageCount Value="18"/>
+        <TopLine Value="1"/>
+        <CursorPos X="95" Y="11"/>
+        <UsageCount Value="19"/>
         <Loaded Value="True"/>
       </Unit33>
       <Unit34>
@@ -368,128 +357,154 @@
         <CursorPos X="1" Y="35"/>
         <UsageCount Value="20"/>
       </Unit40>
+      <Unit41>
+        <Filename Value="..\common\nifti_hdr.pas"/>
+        <UnitName Value="nifti_hdr"/>
+        <EditorIndex Value="1"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="299"/>
+        <CursorPos X="25" Y="310"/>
+        <UsageCount Value="10"/>
+        <Loaded Value="True"/>
+      </Unit41>
+      <Unit42>
+        <Filename Value="..\common\isgui.inc"/>
+        <EditorIndex Value="2"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="1"/>
+        <CursorPos X="10" Y="1"/>
+        <UsageCount Value="10"/>
+        <Loaded Value="True"/>
+      </Unit42>
+      <Unit43>
+        <Filename Value="csaread.pas"/>
+        <UnitName Value="csaread"/>
+        <IsVisibleTab Value="True"/>
+        <EditorIndex Value="5"/>
+        <WindowIndex Value="0"/>
+        <TopLine Value="211"/>
+        <CursorPos X="32" Y="236"/>
+        <UsageCount Value="10"/>
+        <Loaded Value="True"/>
+      </Unit43>
     </Units>
-    <JumpHistory Count="30" HistoryIndex="29">
+    <JumpHistory Count="29" HistoryIndex="28">
       <Position1>
         <Filename Value="gui.pas"/>
-        <Caret Line="336" Column="16" TopLine="306"/>
+        <Caret Line="433" Column="3" TopLine="412"/>
       </Position1>
       <Position2>
         <Filename Value="gui.pas"/>
-        <Caret Line="395" Column="16" TopLine="365"/>
+        <Caret Line="779" Column="25" TopLine="767"/>
       </Position2>
       <Position3>
-        <Filename Value="pref_form.pas"/>
-        <Caret Line="108" Column="163" TopLine="99"/>
+        <Filename Value="gui.pas"/>
+        <Caret Line="784" Column="22" TopLine="775"/>
       </Position3>
       <Position4>
-        <Filename Value="gui.pas"/>
-        <Caret Line="647" Column="47" TopLine="643"/>
+        <Filename Value="..\common\nifti_hdr.pas"/>
+        <Caret Line="1" Column="1" TopLine="1"/>
       </Position4>
       <Position5>
-        <Filename Value="gui.pas"/>
-        <Caret Line="844" Column="15" TopLine="814"/>
+        <Filename Value="dicomcompat.pas"/>
+        <Caret Line="203" Column="75" TopLine="193"/>
       </Position5>
       <Position6>
-        <Filename Value="gui.pas"/>
-        <Caret Line="863" Column="13" TopLine="833"/>
+        <Filename Value="dicomcompat.pas"/>
+        <Caret Line="1510" Column="22" TopLine="1493"/>
       </Position6>
       <Position7>
-        <Filename Value="pref_form.pas"/>
-        <Caret Line="122" Column="43" TopLine="98"/>
+        <Filename Value="dicomcompat.pas"/>
+        <Caret Line="1543" Column="89" TopLine="1535"/>
       </Position7>
       <Position8>
-        <Filename Value="pref_form.pas"/>
-        <Caret Line="130" Column="1" TopLine="106"/>
+        <Filename Value="dicomcompat.pas"/>
+        <Caret Line="1548" Column="95" TopLine="1535"/>
       </Position8>
       <Position9>
-        <Filename Value="gui.pas"/>
-        <Caret Line="46" Column="25" TopLine="20"/>
+        <Filename Value="dicomcompat.pas"/>
+        <Caret Line="1637" Column="59" TopLine="1621"/>
       </Position9>
       <Position10>
-        <Filename Value="gui.pas"/>
-        <Caret Line="817" Column="12" TopLine="795"/>
+        <Filename Value="dicomcompat.pas"/>
+        <Caret Line="3181" Column="39" TopLine="3174"/>
       </Position10>
       <Position11>
-        <Filename Value="gui.pas"/>
-        <Caret Line="5" Column="131" TopLine="1"/>
+        <Filename Value="dicomcompat.pas"/>
+        <Caret Line="3191" Column="42" TopLine="3180"/>
       </Position11>
       <Position12>
-        <Filename Value="pref_form.pas"/>
-        <Caret Line="56" Column="17" TopLine="47"/>
+        <Filename Value="dicomcompat.pas"/>
+        <Caret Line="3870" Column="11" TopLine="3853"/>
       </Position12>
       <Position13>
-        <Filename Value="pref_form.pas"/>
-        <Caret Line="128" Column="15" TopLine="96"/>
+        <Filename Value="dicomcompat.pas"/>
+        <Caret Line="3871" Column="25" TopLine="3853"/>
       </Position13>
       <Position14>
-        <Filename Value="niftiutil.pas"/>
-        <Caret Line="1" Column="172" TopLine="1"/>
+        <Filename Value="dicomcompat.pas"/>
+        <Caret Line="4769" Column="40" TopLine="4745"/>
       </Position14>
       <Position15>
-        <Filename Value="prefs.pas"/>
-        <Caret Line="26" Column="93" TopLine="8"/>
+        <Filename Value="dicomcompat.pas"/>
+        <Caret Line="4773" Column="40" TopLine="4745"/>
       </Position15>
       <Position16>
-        <Filename Value="prefs.pas"/>
-        <Caret Line="143" Column="27" TopLine="117"/>
+        <Filename Value="dicomcompat.pas"/>
+        <Caret Line="4774" Column="55" TopLine="4746"/>
       </Position16>
       <Position17>
-        <Filename Value="niftiutil.pas"/>
-        <Caret Line="174" Column="28" TopLine="154"/>
+        <Filename Value="dicomcompat.pas"/>
+        <Caret Line="5272" Column="41" TopLine="5244"/>
       </Position17>
       <Position18>
-        <Filename Value="niftiutil.pas"/>
-        <Caret Line="169" Column="19" TopLine="151"/>
+        <Filename Value="gui.pas"/>
+        <Caret Line="4" Column="33" TopLine="1"/>
       </Position18>
       <Position19>
         <Filename Value="gui.pas"/>
-        <Caret Line="12" Column="23" TopLine="1"/>
+        <Caret Line="12" Column="34" TopLine="1"/>
       </Position19>
       <Position20>
         <Filename Value="gui.pas"/>
-        <Caret Line="785" Column="23" TopLine="755"/>
+        <Caret Line="809" Column="70" TopLine="776"/>
       </Position20>
       <Position21>
         <Filename Value="gui.pas"/>
-        <Caret Line="771" Column="4" TopLine="753"/>
+        <Caret Line="840" Column="46" TopLine="810"/>
       </Position21>
       <Position22>
         <Filename Value="gui.pas"/>
-        <Caret Line="775" Column="31" TopLine="757"/>
+        <Caret Line="841" Column="38" TopLine="811"/>
       </Position22>
       <Position23>
-        <Filename Value="convert.pas"/>
-        <Caret Line="6" Column="32" TopLine="2"/>
+        <Filename Value="userdir.pas"/>
+        <Caret Line="45" Column="64" TopLine="32"/>
       </Position23>
       <Position24>
-        <Filename Value="..\common\gzio2.pas"/>
-        <Caret Line="9" Column="19" TopLine="1"/>
+        <Filename Value="dicomtypes.pas"/>
+        <Caret Line="618" Column="9" TopLine="605"/>
       </Position24>
       <Position25>
-        <Filename Value="..\common\gzio2.pas"/>
-        <Caret Line="98" Column="79" TopLine="85"/>
+        <Filename Value="dicomtypes.pas"/>
+        <Caret Line="626" Column="26" TopLine="605"/>
       </Position25>
       <Position26>
-        <Filename Value="dicomcompat.pas"/>
-        <Caret Line="82" Column="17" TopLine="51"/>
+        <Filename Value="dicomtypes.pas"/>
+        <Caret Line="627" Column="26" TopLine="605"/>
       </Position26>
       <Position27>
         <Filename Value="dicomcompat.pas"/>
-        <Caret Line="3155" Column="10" TopLine="3126"/>
+        <Caret Line="5277" Column="26" TopLine="5266"/>
       </Position27>
       <Position28>
         <Filename Value="dicomcompat.pas"/>
-        <Caret Line="4511" Column="88" TopLine="4484"/>
+        <Caret Line="6293" Column="30" TopLine="6275"/>
       </Position28>
       <Position29>
-        <Filename Value="dicomcompat.pas"/>
-        <Caret Line="4520" Column="72" TopLine="4484"/>
+        <Filename Value="csaread.pas"/>
+        <Caret Line="16" Column="19" TopLine="1"/>
       </Position29>
-      <Position30>
-        <Filename Value="dicomcompat.pas"/>
-        <Caret Line="4538" Column="45" TopLine="4484"/>
-      </Position30>
     </JumpHistory>
   </ProjectOptions>
   <CompilerOptions>
@@ -500,7 +515,7 @@
     </Target>
     <SearchPaths>
       <OtherUnitFiles Value="..\common"/>
-      <SrcPath Value="C:\lazarus\ideintf"/>
+      <SrcPath Value="C:\lazarus\ideintf\"/>
     </SearchPaths>
     <Parsing>
       <SyntaxOptions>
@@ -512,6 +527,12 @@
         <UseLineInfoUnit Value="False"/>
         <StripSymbols Value="True"/>
       </Debugging>
+      <LinkSmart Value="True"/>
+      <Options>
+        <Win32>
+          <GraphicApplication Value="True"/>
+        </Win32>
+      </Options>
     </Linking>
     <Other>
       <WriteFPCLogo Value="False"/>
diff --git a/dcm2nii/dcm2niigui.lpr b/dcm2nii/dcm2niigui.lpr
index 0c3a3ad..5c96ba0 100644
--- a/dcm2nii/dcm2niigui.lpr
+++ b/dcm2nii/dcm2niigui.lpr
@@ -7,20 +7,15 @@ uses
   cthreads,
   {$ENDIF}{$ENDIF}
   Interfaces, // this includes the LCL widgetset
-  Forms
-  { add your units here }, gui, nifti_form, pref_form;
-{$IFNDEF UNIX}
-{$IFDEF FPC}
-{$R manifest.res}
-{$ELSE}
-{$R *.res}
-{$ENDIF}
-{$ENDIF}
+  Forms, gui, nifti_form, pref_form;
+  
+  
 
 
 //{$R dcm2niigui.res}
 
 begin
+  Application.Title:='dcm2niigui.exe';
   Application.Initialize;
   Application.CreateForm(TMainForm, MainForm);
   Application.CreateForm(TNIfTIForm, NIfTIForm);
diff --git a/dcm2nii/dcm2niigui.res b/dcm2nii/dcm2niigui.res
index b51e2c5..def481f 100644
Binary files a/dcm2nii/dcm2niigui.res and b/dcm2nii/dcm2niigui.res differ
diff --git a/dcm2nii/dicomcompat.pas b/dcm2nii/dicomcompat.pas
index 5120642..2f3a5f6 100644
--- a/dcm2nii/dicomcompat.pas
+++ b/dcm2nii/dicomcompat.pas
@@ -8,7 +8,7 @@ gzio2,
 gziod,
 {$ENDIF}
 
-  SysUtils,Classes,define_types,filename,dicomtypes,dicomfastread,prefs,convertsimple;
+  SysUtils,Classes,define_types,filename,dicomtypes,dicomfastread,prefs,convertsimple, csaread;
 {$H+}
 var
 kUseDateTimeForID: boolean = false;
@@ -3407,7 +3407,7 @@ var
    lX,lY,lZ,lDx: double;
 begin
              readfloats3 (fp, remaining, lDummyStr, lX, lY,lZ, lROK);
-
+             //     fx(   lX, lY,lZ,6789);
              e_len := 0;
              remaining := 0;
              //compute Distance between current slice and 1st slice...
@@ -3850,11 +3850,12 @@ begin
               FreeMem( buff);
               dseek(fp, lStartPos);
 end;
-
+var lPrev0020: boolean;
 begin
   //Init
   //for lnVol := 1 to kMaxOrderVal do
   //    lDICOMdata.OrderSlope[lDICOMdata.nOrder] := 0; //show this was not set
+  lPrev0020 := false;
   lSwitchToImplicitAfterGroup0002 := false;
   lGELX := false;
   lByteSwap := false;
@@ -4584,6 +4585,7 @@ end;
     remaining := e_len;
     info := '?';
     tmpstr := '';
+
 	case group of
         $0001 : // group for normal reading elscint DICOM
         case element of
@@ -5278,8 +5280,10 @@ $0020 :
           $32 :  begin
               info := 'Image Position Patient';
           //June 2009 - for Philips new 4D format we want value from the first slice...
-          if not lImagePositionPatientRead then begin
+          if lPrev0020 then begin   //5/2012: Philips R3.2.2 can save two instances of 0020:0032 for each slice: one from voxel center, one from voxel edge.
+              if not lImagePositionPatientRead then begin
              readfloats3 (fp, remaining, lDummyStr, lDicomData.PatientPosX, lDicomData.PatientPosY,lDicomData.PatientPosZ, lROK);
+             //fx(   lDicomData.PatientPosX, lDicomData.PatientPosY,lDicomData.PatientPosZ,56789);
              if not lrOK then goto 666;
              e_len := 0;
              remaining := 0;
@@ -5290,6 +5294,7 @@ $0020 :
           end else begin
               CheckIntersliceDistance(l4DDistanceBetweenSliceCenters);
           end;
+        end;
 
 			  end;
 		  $35 :  info := 'Image Orientation';
@@ -5901,7 +5906,9 @@ end; //$0028
 		  //2001,1004)
 
 	  $2005 : begin
-                            //if lDicomData.ManufacturerID = kPhilipsID then Msg(inttohex(element,4));
+
+
+              //if lDicomData.ManufacturerID = kPhilipsID then Msg(inttohex(element,4));
               if lDicomData.ManufacturerID = kPhilipsID then begin
 		case element of
 			 $100E: begin
@@ -5988,7 +5995,7 @@ end; //$0028
                     end  //element 9230
                 end; //case element
          end; //group 5200
-         $DDFF : begin
+     $DDFF : begin
                case element of
                     $00E0: begin
 		           //For papyrus multislice format: if (lPapyrusSlice >=  lPapyrusnSlices) then
@@ -6131,6 +6138,11 @@ lProprietaryImageThumbnail := false; //1496
 	end;
 lStr := '';
 
+      if group = $0020 then
+         lPrev0020 := true
+      else
+          lPrev0020 := false;
+
 
 if (Time_TO_Quit) and (not lImageFormatOK) then begin
    lHdrOK := true;
@@ -6335,4 +6347,4 @@ if lVerboseRead then begin
 end;
 
 
-end.
\ No newline at end of file
+end.
diff --git a/dcm2nii/dicomtypes.pas b/dcm2nii/dicomtypes.pas
index 8b985d0..7b2199c 100644
--- a/dcm2nii/dicomtypes.pas
+++ b/dcm2nii/dicomtypes.pas
@@ -21,26 +21,8 @@ TDTI = record
 end;
   TDTIRA = array [1..kMaxDTIDir] of TDTI;//TDICOM;//unsigned 8-bit int
   TOrder= array [1..kMaxOrderVal] of byte;
- // TOrderScaling= array [1..kMaxOrderVal] of single;
-  //TDTIRAp = ^TDTIRA;
-
-  //TDTIRA = array [1..1] of TDTI;//TDICOM;//unsigned 8-bit int
-  //TDTIRAp = ^TDTIRA;
-
-   	(*DICOMdata = record
-   XYZdim: array [1..4] of integer;   //4=volume, eg time: some EC*T7 images
-   XYZori: array [1..3] of integer;
-   XYZmm: array [1..3] of double;
-   Orient: array [1..6] of double;
-   Rotate180deg,Float,RunLengthEncoding,GenesisCpt,JPEGlosslessCpt,
-   JPEGlossyCpt,ElscintCompress,MinIntensitySet: boolean;
-   PatientPosX,PatientPosY,PatientPosZ,IntenScale,IntenIntercept,kV,mA,TR,TE,spacing,thickness,location: single;
-   SlicesPer3DVol,SiemensInterleaved {0=no,1=yes,2=not defined},SiemensSlices,SiemensMosaicX,SiemensMosaicY,CompressSz,CompressOffset,AcquNum,ImageNum,SeriesNum,Monochrome,SamplesPerPixel,PlanarConfig,ImageStart,little_endian,
-   Allocbits_per_pixel,Storedbits_per_pixel,ImageSz,accession,
-   PatientIDint,VolumeNumber,WindowWidth,WindowCenter,GenesisPackHdr, NamePos,StudyDatePos,MinIntensity,MaxIntensity,
-   RLEredOffset,RLEgreenOffset,RLEblueOffset,RLEredSz,RLEgreenSz,RLEblueSz: integer; {must be 32-bit integer aka longint}
-   ProtocolName,AcqTime,ImgTime,PatientName,PatientID,StudyDate,StudyTime,modality,serietag: String;
-    end;//DICOMdata record *)
+
+
     kDICOMStr = String[32];
    DICOMdata = record
              XYZdim: array [1..4] of integer;
@@ -63,10 +45,6 @@ end;
    //OrderSlope,OrderIntercept: TOrderScaling; //4D datasets
    end;//DICOMdata record
 
-    (*TDICOM = record
-         Xdim,Ydim,Zdim,PatientID,Series,Acquisition,Image: integer;
-         Location: single;
-  end;*)
   TDICOMRA = array [1..1] of DicomData;//TDICOM;//unsigned 8-bit int
   TDICOMRAp = ^TDICOMRA;
   TNIFTIhdr  = packed record //Next: analyze Format Header structure
@@ -216,8 +194,8 @@ procedure clear_dicom_data (var lDicomdata:Dicomdata);
 function DICOMinterslicedistance(var lDicomdata1,lDicomdata2:Dicomdata): single;//1392
 function StudyDateTime (lInStudyDate, lInStudyTime: kDICOMStr): TDateTime;
 function StudyDateTime2Str (lDateTime: TDateTime):string;
-function GetCSAImageHeaderInfoDTI (lFilename: string; lStart,lLength: integer; var lBval: integer; var ldti1,ldti2,ldti3: double): boolean;
-function GetCSAImageHeaderInfo (lFilename: string; lStart,lLength: integer; var lMosaicSlices,lMosaicX,lMosaicY: integer; var lv1,lv2,lv3: double): boolean;
+//function GetCSAImageHeaderInfoDTI (lFilename: string; lStart,lLength: integer; var lBval: integer; var ldti1,ldti2,ldti3: double): boolean;
+//function GetCSAImageHeaderInfo (lFilename: string; lStart,lLength: integer; var lMosaicSlices,lMosaicX,lMosaicY: integer; var lv1,lv2,lv3: double): boolean;
 procedure AplhaNumericStrDICOM (var lStr: kDICOMStr);
 procedure PartialAcquisitionError;
 function DICOMstr (i: integer; var lDICOMra: TDICOMrap;lOutname:string): string; overload;
@@ -410,7 +388,7 @@ begin
 			lOutStr := lOutStr+ lStr[S];
 	lStr := lOutStr;
 end;
-
+(*
 function GetCSAImageHeaderInfoRaw (lIsDTI: boolean; lFilename: string; lStart,lLength: integer; var li1,li2,li3: integer; var lf1,lf2,lf3: double): boolean;
 //returns true if mosaic
 //will return false for non-mosaics - even if the have DTI information!
@@ -637,7 +615,7 @@ end;
 function GetCSAImageHeaderInfo (lFilename: string; lStart,lLength: integer; var lMosaicSlices,lMosaicX,lMosaicY: integer; var lv1,lv2,lv3: double): boolean;
 begin
      result := GetCSAImageHeaderInfoRaw (FALSE,lFilename, lStart,lLength, lMosaicSlices,lMosaicX,lMosaicY, lv1,lv2,lv3);
-end;
+end;  *)
 
 
 procedure clear_dicom_data (var lDicomdata:Dicomdata);
diff --git a/dcm2nii/gui.lfm b/dcm2nii/gui.lfm
index c66b81c..716b790 100644
--- a/dcm2nii/gui.lfm
+++ b/dcm2nii/gui.lfm
@@ -1,22 +1,22 @@
 object MainForm: TMainForm
-  Left = 343
+  Left = 685
   Height = 363
-  Top = 123
+  Top = 174
   Width = 598
   ActiveControl = Panel1
   AllowDropFiles = True
   Caption = 'dcm2nii'
-  ClientHeight = 363
+  ClientHeight = 344
   ClientWidth = 598
   Menu = MainMenu1
   OnClose = FormClose
   OnCreate = FormCreate
   OnDropFiles = FormDropFiles
   OnShow = FormShow
-  LCLVersion = '0.9.30'
+  LCLVersion = '0.9.30.4'
   object Memo1: TMemo
     Left = 4
-    Height = 325
+    Height = 306
     Top = 34
     Width = 590
     Align = alClient
@@ -50,16 +50,16 @@ object MainForm: TMainForm
     end
     object TypeCombo: TComboBox
       Left = 160
-      Height = 20
+      Height = 21
       Top = 3
       Width = 264
-      ItemHeight = 0
+      ItemHeight = 13
       Items.Strings = (
         'SPM2 (3D Anlyze hdr/img)'
         'SPM5 (3D NIfTI hdr/img)'
         'SPM8 (3D NIfTI nii)'
         '4D NIfTI hdr/img'
-        'FSL (4D NIfTI nii)'
+        'FSL/SPM8 (4D NIfTI nii)'
         'Compressed FSL (4D NIfTI nii)'
       )
       Style = csDropDownList
diff --git a/dcm2nii/gui.lrs b/dcm2nii/gui.lrs
index aebbd4d..be15b19 100644
--- a/dcm2nii/gui.lrs
+++ b/dcm2nii/gui.lrs
@@ -1,47 +1,47 @@
 { This is an automatically generated lazarus resource file }
 
 LazarusResources.Add('TMainForm','FORMDATA',[
-  'TPF0'#9'TMainForm'#8'MainForm'#4'Left'#3'W'#1#6'Height'#3'k'#1#3'Top'#2'{'#5
-  +'Width'#3'V'#2#13'ActiveControl'#7#6'Panel1'#14'AllowDropFiles'#9#7'Caption'
-  +#6#7'dcm2nii'#12'ClientHeight'#3'k'#1#11'ClientWidth'#3'V'#2#4'Menu'#7#9'Mai'
-  +'nMenu1'#7'OnClose'#7#9'FormClose'#8'OnCreate'#7#10'FormCreate'#11'OnDropFil'
-  +'es'#7#13'FormDropFiles'#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6#6'0.9.30'#0
-  +#5'TMemo'#5'Memo1'#4'Left'#2#4#6'Height'#3'E'#1#3'Top'#2'"'#5'Width'#3'N'#2#5
-  +'Align'#7#8'alClient'#18'BorderSpacing.Left'#2#4#19'BorderSpacing.Right'#2#4
-  +#20'BorderSpacing.Bottom'#2#4#10'ScrollBars'#7#14'ssAutoVertical'#8'TabOrder'
-  +#2#0#0#0#6'TPanel'#6'Panel1'#4'Left'#2#0#6'Height'#2'"'#3'Top'#2#0#5'Width'#3
-  +'V'#2#5'Align'#7#5'alTop'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2'"'#11
-  +'ClientWidth'#3'V'#2#8'TabOrder'#2#1#0#6'TLabel'#6'Label1'#4'Left'#2#1#6'Hei'
-  +'ght'#2#26#3'Top'#2#5#5'Width'#3#140#0#9'Alignment'#7#14'taRightJustify'#7'A'
-  +'nchors'#11#6'akLeft'#0#8'AutoSize'#8#7'Caption'#6#16'Output Format:  '#6'La'
-  +'yout'#7#8'tlCenter'#11'ParentColor'#8#0#0#9'TComboBox'#9'TypeCombo'#4'Left'
-  +#3#160#0#6'Height'#2#20#3'Top'#2#3#5'Width'#3#8#1#10'ItemHeight'#2#0#13'Item'
-  +'s.Strings'#1#6#24'SPM2 (3D Anlyze hdr/img)'#6#23'SPM5 (3D NIfTI hdr/img)'#6
-  +#19'SPM8 (3D NIfTI nii)'#6#16'4D NIfTI hdr/img'#6#18'FSL (4D NIfTI nii)'#6#29
-  +'Compressed FSL (4D NIfTI nii)'#0#5'Style'#7#14'csDropDownList'#8'TabOrder'#2
-  +#0#0#0#0#11'TOpenDialog'#10'OpenHdrDlg'#11'FilterIndex'#2#0#4'left'#2#24#3't'
-  +'op'#2'0'#0#0#9'TMainMenu'#9'MainMenu1'#4'left'#2'X'#3'top'#2'0'#0#9'TMenuIt'
-  +'em'#5'File1'#7'Caption'#6#4'File'#0#9'TMenuItem'#13'DICOMtoNIfTI1'#7'Captio'
-  +'n'#6#14'DICOM to NIfTI'#8'ShortCut'#3'D@'#7'OnClick'#7#15'dcm2niiBtnClick'#0
-  +#0#9'TMenuItem'#12'ModifyNIfTI1'#7'Caption'#6#12'Modify NIfTI'#7'OnClick'#7
-  +#17'ModifyNIfTI1Click'#0#0#9'TMenuItem'#10'NIfTI3D4D1'#7'Caption'#6#14'NIfTI'
-  +' 3D -> 4D'#7'OnClick'#7#15'NIfTI3D4D1Click'#0#0#9'TMenuItem'#15'AnonymizeDI'
-  +'COM1'#7'Caption'#6#15'Anonymize DICOM'#7'OnClick'#7#20'AnonymizeDICOM1Click'
-  +#0#0#9'TMenuItem'#5'Exit1'#7'Caption'#6#4'Exit'#7'OnClick'#7#10'Exit1Click'#0
-  +#0#0#9'TMenuItem'#5'Edit1'#7'Caption'#6#4'Edit'#0#9'TMenuItem'#5'Copy1'#7'Ca'
-  +'ption'#6#4'Copy'#7'OnClick'#7#10'Copy1Click'#0#0#0#9'TMenuItem'#12'Untested'
-  +'Menu'#7'Caption'#6#8'Untested'#0#9'TMenuItem'#17'MirrorXdimension1'#7'Capti'
-  +'on'#6#18'Mirror X-dimension'#7'OnClick'#7#22'MirrorXdimension1Click'#0#0#9
-  +'TMenuItem'#7'SumTPM1'#7'Caption'#6#7'Sum TPM'#7'OnClick'#7#12'SumTPM1Click'
-  +#0#0#9'TMenuItem'#17'ExtractDICOMdims1'#7'Caption'#6#18'Extract DICOM dims'#7
-  +'OnClick'#7#22'ExtractDICOMdims1Click'#0#0#9'TMenuItem'#16'ExtractDICOMhdr1'
-  +#7'Caption'#6#20'Extract DICOM header'#7'OnClick'#7#21'ExtractDICOMhdr1Click'
-  +#0#0#9'TMenuItem'#17'ExtractNIfTIhdrs1'#7'Caption'#6#20'Extract NIfTI header'
-  +#7'OnClick'#7#22'ExtractNIfTIhdrs1Click'#0#0#9'TMenuItem'#10'HalveMenu1'#7'C'
-  +'aption'#6#25'Halve dimensions in-plane'#7'OnClick'#7#15'HalveMenu1Click'#0#0
-  +#0#9'TMenuItem'#5'Help1'#7'Caption'#6#4'Help'#0#9'TMenuItem'#12'Preferences1'
-  +#7'Caption'#6#11'Preferences'#7'OnClick'#7#17'Preferences1Click'#0#0#9'TMenu'
-  +'Item'#6'About1'#7'Caption'#6#4'Help'#7'OnClick'#7#11'About1Click'#0#0#0#0#22
-  +'TSelectDirectoryDialog'#22'SelectDirectoryDialog1'#4'left'#3#159#0#3'top'#2
-  +'6'#0#0#0
+  'TPF0'#9'TMainForm'#8'MainForm'#4'Left'#3#173#2#6'Height'#3'k'#1#3'Top'#3#174
+  +#0#5'Width'#3'V'#2#13'ActiveControl'#7#6'Panel1'#14'AllowDropFiles'#9#7'Capt'
+  +'ion'#6#7'dcm2nii'#12'ClientHeight'#3'X'#1#11'ClientWidth'#3'V'#2#4'Menu'#7#9
+  +'MainMenu1'#7'OnClose'#7#9'FormClose'#8'OnCreate'#7#10'FormCreate'#11'OnDrop'
+  +'Files'#7#13'FormDropFiles'#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6#8'0.9.3'
+  +'0.4'#0#5'TMemo'#5'Memo1'#4'Left'#2#4#6'Height'#3'2'#1#3'Top'#2'"'#5'Width'#3
+  +'N'#2#5'Align'#7#8'alClient'#18'BorderSpacing.Left'#2#4#19'BorderSpacing.Rig'
+  +'ht'#2#4#20'BorderSpacing.Bottom'#2#4#10'ScrollBars'#7#14'ssAutoVertical'#8
+  +'TabOrder'#2#0#0#0#6'TPanel'#6'Panel1'#4'Left'#2#0#6'Height'#2'"'#3'Top'#2#0
+  +#5'Width'#3'V'#2#5'Align'#7#5'alTop'#10'BevelOuter'#7#6'bvNone'#12'ClientHei'
+  +'ght'#2'"'#11'ClientWidth'#3'V'#2#8'TabOrder'#2#1#0#6'TLabel'#6'Label1'#4'Le'
+  +'ft'#2#1#6'Height'#2#26#3'Top'#2#5#5'Width'#3#140#0#9'Alignment'#7#14'taRigh'
+  +'tJustify'#7'Anchors'#11#6'akLeft'#0#8'AutoSize'#8#7'Caption'#6#16'Output Fo'
+  +'rmat:  '#6'Layout'#7#8'tlCenter'#11'ParentColor'#8#0#0#9'TComboBox'#9'TypeC'
+  +'ombo'#4'Left'#3#160#0#6'Height'#2#21#3'Top'#2#3#5'Width'#3#8#1#10'ItemHeigh'
+  +'t'#2#13#13'Items.Strings'#1#6#24'SPM2 (3D Anlyze hdr/img)'#6#23'SPM5 (3D NI'
+  +'fTI hdr/img)'#6#19'SPM8 (3D NIfTI nii)'#6#16'4D NIfTI hdr/img'#6#23'FSL/SPM'
+  +'8 (4D NIfTI nii)'#6#29'Compressed FSL (4D NIfTI nii)'#0#5'Style'#7#14'csDro'
+  +'pDownList'#8'TabOrder'#2#0#0#0#0#11'TOpenDialog'#10'OpenHdrDlg'#11'FilterIn'
+  +'dex'#2#0#4'left'#2#24#3'top'#2'0'#0#0#9'TMainMenu'#9'MainMenu1'#4'left'#2'X'
+  +#3'top'#2'0'#0#9'TMenuItem'#5'File1'#7'Caption'#6#4'File'#0#9'TMenuItem'#13
+  +'DICOMtoNIfTI1'#7'Caption'#6#14'DICOM to NIfTI'#8'ShortCut'#3'D@'#7'OnClick'
+  +#7#15'dcm2niiBtnClick'#0#0#9'TMenuItem'#12'ModifyNIfTI1'#7'Caption'#6#12'Mod'
+  +'ify NIfTI'#7'OnClick'#7#17'ModifyNIfTI1Click'#0#0#9'TMenuItem'#10'NIfTI3D4D'
+  +'1'#7'Caption'#6#14'NIfTI 3D -> 4D'#7'OnClick'#7#15'NIfTI3D4D1Click'#0#0#9'T'
+  +'MenuItem'#15'AnonymizeDICOM1'#7'Caption'#6#15'Anonymize DICOM'#7'OnClick'#7
+  +#20'AnonymizeDICOM1Click'#0#0#9'TMenuItem'#5'Exit1'#7'Caption'#6#4'Exit'#7'O'
+  +'nClick'#7#10'Exit1Click'#0#0#0#9'TMenuItem'#5'Edit1'#7'Caption'#6#4'Edit'#0
+  +#9'TMenuItem'#5'Copy1'#7'Caption'#6#4'Copy'#7'OnClick'#7#10'Copy1Click'#0#0#0
+  +#9'TMenuItem'#12'UntestedMenu'#7'Caption'#6#8'Untested'#0#9'TMenuItem'#17'Mi'
+  +'rrorXdimension1'#7'Caption'#6#18'Mirror X-dimension'#7'OnClick'#7#22'Mirror'
+  +'Xdimension1Click'#0#0#9'TMenuItem'#7'SumTPM1'#7'Caption'#6#7'Sum TPM'#7'OnC'
+  +'lick'#7#12'SumTPM1Click'#0#0#9'TMenuItem'#17'ExtractDICOMdims1'#7'Caption'#6
+  +#18'Extract DICOM dims'#7'OnClick'#7#22'ExtractDICOMdims1Click'#0#0#9'TMenuI'
+  +'tem'#16'ExtractDICOMhdr1'#7'Caption'#6#20'Extract DICOM header'#7'OnClick'#7
+  +#21'ExtractDICOMhdr1Click'#0#0#9'TMenuItem'#17'ExtractNIfTIhdrs1'#7'Caption'
+  +#6#20'Extract NIfTI header'#7'OnClick'#7#22'ExtractNIfTIhdrs1Click'#0#0#9'TM'
+  +'enuItem'#10'HalveMenu1'#7'Caption'#6#25'Halve dimensions in-plane'#7'OnClic'
+  +'k'#7#15'HalveMenu1Click'#0#0#0#9'TMenuItem'#5'Help1'#7'Caption'#6#4'Help'#0
+  +#9'TMenuItem'#12'Preferences1'#7'Caption'#6#11'Preferences'#7'OnClick'#7#17
+  +'Preferences1Click'#0#0#9'TMenuItem'#6'About1'#7'Caption'#6#4'Help'#7'OnClic'
+  +'k'#7#11'About1Click'#0#0#0#0#22'TSelectDirectoryDialog'#22'SelectDirectoryD'
+  +'ialog1'#4'left'#3#159#0#3'top'#2'6'#0#0#0
 ]);
diff --git a/dcm2nii/gui.pas b/dcm2nii/gui.pas
index 3df5d6f..f548fda 100644
--- a/dcm2nii/gui.pas
+++ b/dcm2nii/gui.pas
@@ -769,11 +769,29 @@ begin
 end;      *)
 
 
+(*procedure BenchMarkDicom;
+var
+    lC: Integer;
+    lS: TDateTime;
+    var lDICOMdata: DICOMdata;
+         lHdrOK, lImageFormatOK: boolean;
+         lDynStr: string;var lFileName: string;
+    var lPrefs: TPrefs ;
+begin
+ SetDefaultPrefs (lPrefs);
+lS := Now;
+lFilename := '/Users/rorden/philips/T1_IM_0007';
+for lC := 1 to 100 do
+    read_dicom_data(true,false,false,false,false,false,false, lDICOMdata, lHdrOK, lImageFormatOK, lDynStr, lFileName, lPrefs);
+Showmessage('Milliseconds elapsed '+  FormatDateTime('z', Now-lS) );
+end; *)
+
 procedure TMainForm.About1Click(Sender: TObject);
 //var value: int64;
 begin
 //fx(VBversion('MR B13 4VB13A')); exit;
 //NII2Mat;exit;
+ //BenchMarkDicom;
 {$IFNDEF FPC}
   if (ssCtrl in KeyDataToShiftState(vk_Shift))  then begin
     Mask;
@@ -818,6 +836,7 @@ var
    lIniName: string;
 begin
     MsgX(kVers);
+
     SetDefaultPrefs(lPrefs);
     lIniName := IniName;//changefileext(paramstr(0),'.ini');
     //showmessage(changefileext(paramstr(0),'.ini'));
@@ -1129,4 +1148,4 @@ finalization
 {$ENDIF}
 end.
 
-
\ No newline at end of file
+
diff --git a/dcm2nii/userdir.pas b/dcm2nii/userdir.pas
new file mode 100644
index 0000000..a76fc83
--- /dev/null
+++ b/dcm2nii/userdir.pas
@@ -0,0 +1,220 @@
+unit userdir;
+//returns directory where user has read/write permissions...
+{$IFDEF FPC} {$mode delphi}{$H+} {$ENDIF}
+interface
+//returns number of cores: a computer with two dual cores will report 4
+function IniName: string;
+function DefaultsDir (lSubFolder: string): string;
+function UserDataFolder: string;  //uses shlobj
+
+implementation
+{$Include ..\common\isgui.inc}
+
+{$IFDEF UNIX}
+uses Process, SysUtils,classes,IniFiles,
+{$IFDEF GUI}dialogs;{$ELSE} dialogsx;{$ENDIF}
+
+function UserDataFolder: string;
+begin
+    result :=expandfilename('~/');
+end;
+
+
+function FileNameNoExt (lFilewExt:String): string;
+//remove final extension
+var
+   lLen,lInc: integer;
+   lName: String;
+begin
+	lName := '';
+     lLen := length(lFilewExt);
+	lInc := lLen+1;
+	 if  lLen > 0 then begin
+	   repeat
+                 dec(lInc);
+           until (lFileWExt[lInc] = '.') or (lInc = 1);
+	 end;
+     if lInc > 1 then
+        for lLen := 1 to (lInc - 1) do
+            lName := lName + lFileWExt[lLen]
+     else
+         lName := lFilewExt; //no extension
+     Result := lName;
+end;
+
+function DefaultsDir (lSubFolder: string): string;
+//for Linux: DefaultsDir is ~/appname/SubFolder/, e.g. /home/username/mricron/subfolder/
+//Note: Final character is pathdelim
+const
+     pathdelim = '/';
+var
+   lBaseDir: string;
+begin
+     lBaseDir := GetEnvironmentVariable ('HOME')+pathdelim+'.'+ FileNameNoExt(ExtractFilename(paramstr(0) ) );
+     if not DirectoryExists(lBaseDir) then begin
+        {$I-}
+        MkDir(lBaseDir);
+        if IOResult <> 0 then begin
+               //Msg('Unable to create new folder '+lBaseDir);
+        end;
+        {$I+}
+     end;
+     lBaseDir := lBaseDir+pathdelim;
+     if lSubFolder <> '' then begin
+         lBaseDir := lBaseDir + lSubFolder;
+         if not DirectoryExists(lBaseDir) then begin
+            {$I-}
+            MkDir(lBaseDir);
+            if IOResult <> 0 then begin
+               //you may want to show an error, e.g. showmessage('Unable to create new folder '+lBaseDir);
+               exit;
+            end;
+            {$I+}
+         end;
+         result := lBaseDir + pathdelim;
+     end else
+         result := lBaseDir;
+end;
+
+function IniName: string;
+begin
+  result := DefaultsDir('')+FileNameNoExt(extractfilename(paramstr(0)))+'.ini';
+end;
+{$ELSE} //If UNIX ELSE NOT Unix
+uses
+    SysUtils, Windows,shlobj;
+
+//for administrators, we can write to folder with executable, otherwise we will save data to the user's AppDataFolder
+function AppDataFolder: string;  //uses shlobj
+{$IFDEF FPC} const CSIDL_APPDATA = 26; {$ENDIF}
+var
+   Path : pchar;
+   idList : PItemIDList;
+begin
+     GetMem(Path, MAX_PATH);
+     SHGetSpecialFolderLocation(0, CSIDL_APPDATA , idList);
+     SHGetPathFromIDList(idList, Path);
+     Result := string(Path);
+     FreeMem(Path);
+end;
+
+function UserDataFolder: string;  //uses shlobj
+var
+    PIDL : PItemIDList;
+    Folder : array[0..MAX_PATH] of Char;
+    const CSIDL_PERSONAL = $0005;
+begin
+SHGetSpecialFolderLocation(0, CSIDL_PERSONAL, PIDL);
+SHGetPathFromIDList(PIDL, Folder);
+result :=Folder;
+end;
+
+(*function UserDataFolder: string;  //uses shlobj
+var
+   Path : pchar;
+   idList : PItemIDList;
+begin
+     GetMem(Path, MAX_PATH);
+     SHGetSpecialFolderLocation(0, csidl_Personal , idList);
+     SHGetPathFromIDList(idList, Path);
+     Result := string(Path);
+     FreeMem(Path);
+end;   *)
+
+function IsAdmin: Boolean;
+const
+  SECURITY_NT_AUTHORITY: TSIDIdentifierAuthority =
+    (Value: (0, 0, 0, 0, 0, 5));
+  SECURITY_BUILTIN_DOMAIN_RID = $00000020;
+  DOMAIN_ALIAS_RID_ADMINS     = $00000220;
+var
+  hAccessToken: THandle;
+  ptgGroups: PTokenGroups;
+  dwInfoBufferSize: DWORD;
+  psidAdministrators: PSID;
+  x: Integer;
+  bSuccess: BOOL;
+  LastError: integer;
+begin
+
+  if Win32Platform <> VER_PLATFORM_WIN32_NT then
+  begin
+    Result := True;
+    exit;
+  end;
+
+  Result := False;
+  bSuccess := OpenThreadToken(GetCurrentThread, TOKEN_QUERY, True,
+    hAccessToken);
+  if not bSuccess then
+  begin
+    if GetLastError = ERROR_NO_TOKEN then
+    bSuccess := OpenProcessToken(GetCurrentProcess, TOKEN_QUERY,
+      hAccessToken);
+  end;
+  if bSuccess then
+  begin
+    GetMem(ptgGroups, 1024);
+    {$IFDEF FPC}
+    bSuccess := GetTokenInformation(hAccessToken, TokenGroups,
+      ptgGroups, 1024, @dwInfoBufferSize);
+    {$ELSE}
+    bSuccess := GetTokenInformation(hAccessToken, TokenGroups,
+      ptgGroups, 1024, dwInfoBufferSize);
+    {$ENDIF}
+    LastError := GetLastError;
+    if not bSuccess then begin
+      //you may want to show an error message..
+      //showmessage(format('GetLastError %d',[LastError]));
+    end;
+    CloseHandle(hAccessToken);
+    if bSuccess then
+    begin
+      AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2,
+        SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
+        0, 0, 0, 0, 0, 0, psidAdministrators);
+      {$R-}
+      for x := 0 to ptgGroups.GroupCount - 1 do
+        if EqualSid(psidAdministrators, ptgGroups.Groups[x].Sid) then
+        begin
+          Result := True;
+          break;
+        end;
+      {$R+}
+      FreeSid(psidAdministrators);
+    end;
+    FreeMem(ptgGroups);
+  end;
+end;
+
+
+function IniName: string;
+//only administrators can write to c:\program files -use AppDataFolder for non-Administrators
+begin
+     if isAdmin then
+        result := changefileext(paramstr(0),'.ini')
+     else
+         result := AppDataFolder+'\'+changefileext(extractfilename(paramstr(0)),'.ini');
+end;
+
+function DefaultsDir (lSubFolder: string): string;
+const
+     pathdelim = '\';
+//for Administrators: DefaultsDir is in the location of the executable, e.g. c:\program files\mricron\subfolder\
+//for non-Administrators, the AppDataFolder is returned
+//Note: Final character is pathdelim
+begin
+    result := extractfilepath(IniName);
+    if length(result) < 1 then exit;
+    if result[length(result)] <> pathdelim then
+       result := result + pathdelim;
+    if lSubFolder = '' then
+       exit;
+    result := result + lSubFolder;
+    if result[length(result)] <> pathdelim then
+       result := result + pathdelim;
+
+end;
+{$ENDIF}
+
+end.
diff --git a/mricron.ini b/mricron.ini
index 7a93e04..1aa9b68 100644
--- a/mricron.ini
+++ b/mricron.ini
@@ -1,7 +1,10 @@
 [MRU]
-file1=C:\Users\neuropsych\Desktop\co20100726_122439WIPT1_TFE12_IsoSENSEs003a001.nii.gz
-file0=C:\Users\neuropsych\Desktop\co20100726_122439WIPT1_TFE12_IsoSENSEs003a001.nii.gz
-file2=C:\pas\mricron\templates\ch2bet.nii.gz
+file1=C:\pas\mricron\templates\ch2bet.nii.gz
+file0=C:\pas\mricron\templates\ch2bet.nii.gz
+file2=
+file3=
+file4=
+file5=
 
 [STR]
 FSLBASE=/usr/local/fsl
diff --git a/mricron.lpi b/mricron.lpi
index 78c755e..00a9ff4 100644
--- a/mricron.lpi
+++ b/mricron.lpi
@@ -36,12 +36,12 @@
         <PackageName Value="LCL"/>
       </Item2>
     </RequiredPackages>
-    <Units Count="140">
+    <Units Count="139">
       <Unit0>
         <Filename Value="mricron.lpr"/>
         <IsPartOfProject Value="True"/>
         <UnitName Value="mricron"/>
-        <EditorIndex Value="8"/>
+        <EditorIndex Value="7"/>
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="16" Y="13"/>
@@ -65,10 +65,10 @@
         <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
         <UnitName Value="nifti_hdr_view"/>
-        <EditorIndex Value="9"/>
+        <EditorIndex Value="8"/>
         <WindowIndex Value="0"/>
         <TopLine Value="486"/>
-        <CursorPos X="9" Y="488"/>
+        <CursorPos X="64" Y="486"/>
         <UsageCount Value="200"/>
         <Loaded Value="True"/>
         <LoadedDesigner Value="True"/>
@@ -97,7 +97,7 @@
         <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
         <UnitName Value="about"/>
-        <EditorIndex Value="6"/>
+        <EditorIndex Value="5"/>
         <WindowIndex Value="0"/>
         <TopLine Value="4"/>
         <CursorPos X="65" Y="40"/>
@@ -179,8 +179,8 @@
         <IsVisibleTab Value="True"/>
         <EditorIndex Value="0"/>
         <WindowIndex Value="0"/>
-        <TopLine Value="1167"/>
-        <CursorPos X="40" Y="1170"/>
+        <TopLine Value="1"/>
+        <CursorPos X="81" Y="5"/>
         <UsageCount Value="200"/>
         <Loaded Value="True"/>
         <LoadedDesigner Value="True"/>
@@ -189,7 +189,7 @@
       <Unit13>
         <Filename Value="nifti_img.pas"/>
         <UnitName Value="nifti_img"/>
-        <EditorIndex Value="13"/>
+        <EditorIndex Value="12"/>
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="128" Y="1"/>
@@ -856,7 +856,7 @@
       <Unit91>
         <Filename Value="clustering.pas"/>
         <UnitName Value="clustering"/>
-        <EditorIndex Value="11"/>
+        <EditorIndex Value="10"/>
         <WindowIndex Value="0"/>
         <TopLine Value="161"/>
         <CursorPos X="6" Y="183"/>
@@ -894,10 +894,10 @@
       <Unit95>
         <Filename Value="common\define_types.pas"/>
         <UnitName Value="define_types"/>
-        <EditorIndex Value="7"/>
+        <EditorIndex Value="6"/>
         <WindowIndex Value="0"/>
-        <TopLine Value="1"/>
-        <CursorPos X="28" Y="21"/>
+        <TopLine Value="28"/>
+        <CursorPos X="26" Y="58"/>
         <UsageCount Value="36"/>
         <Loaded Value="True"/>
         <DefaultSyntaxHighlighter Value="Delphi"/>
@@ -1113,7 +1113,7 @@
       </Unit121>
       <Unit122>
         <Filename Value="common\isgui.inc"/>
-        <EditorIndex Value="12"/>
+        <EditorIndex Value="11"/>
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="57" Y="1"/>
@@ -1143,8 +1143,8 @@
         <UnitName Value="yokesharemem"/>
         <EditorIndex Value="1"/>
         <WindowIndex Value="0"/>
-        <TopLine Value="73"/>
-        <CursorPos X="1" Y="124"/>
+        <TopLine Value="53"/>
+        <CursorPos X="14" Y="58"/>
         <UsageCount Value="14"/>
         <Loaded Value="True"/>
         <DefaultSyntaxHighlighter Value="Delphi"/>
@@ -1226,7 +1226,7 @@
       <Unit135>
         <Filename Value="CarbonOpenDoc.pas"/>
         <UnitName Value="CarbonOpenDoc"/>
-        <EditorIndex Value="3"/>
+        <EditorIndex Value="2"/>
         <WindowIndex Value="0"/>
         <TopLine Value="1"/>
         <CursorPos X="39" Y="6"/>
@@ -1238,7 +1238,7 @@
         <Filename Value="fastsmooth.pas"/>
         <IsPartOfProject Value="True"/>
         <UnitName Value="fastsmooth"/>
-        <EditorIndex Value="4"/>
+        <EditorIndex Value="3"/>
         <WindowIndex Value="0"/>
         <TopLine Value="16"/>
         <CursorPos X="17" Y="28"/>
@@ -1249,7 +1249,7 @@
       <Unit137>
         <Filename Value="common\gzio2.pas"/>
         <UnitName Value="gzio2"/>
-        <EditorIndex Value="10"/>
+        <EditorIndex Value="9"/>
         <WindowIndex Value="0"/>
         <TopLine Value="761"/>
         <CursorPos X="15" Y="791"/>
@@ -1260,7 +1260,7 @@
       <Unit138>
         <Filename Value="otsuml.pas"/>
         <UnitName Value="otsuml"/>
-        <EditorIndex Value="5"/>
+        <EditorIndex Value="4"/>
         <WindowIndex Value="0"/>
         <TopLine Value="275"/>
         <CursorPos X="11" Y="15"/>
@@ -1268,136 +1268,127 @@
         <Loaded Value="True"/>
         <DefaultSyntaxHighlighter Value="Delphi"/>
       </Unit138>
-      <Unit139>
-        <Filename Value="..\..\..\..\..\Developer\lazarus\lcl\interfaces\carbon\carbonobject.inc"/>
-        <EditorIndex Value="2"/>
-        <WindowIndex Value="0"/>
-        <TopLine Value="197"/>
-        <CursorPos X="1" Y="228"/>
-        <UsageCount Value="11"/>
-        <Loaded Value="True"/>
-      </Unit139>
     </Units>
     <JumpHistory Count="30" HistoryIndex="29">
       <Position1>
-        <Filename Value="common\gzio2.pas"/>
-        <Caret Line="2" Column="115" TopLine="1"/>
+        <Filename Value="nifti_img_view.pas"/>
+        <Caret Line="4859" Column="61" TopLine="1"/>
       </Position1>
       <Position2>
-        <Filename Value="common\gzio2.pas"/>
-        <Caret Line="99" Column="29" TopLine="73"/>
+        <Filename Value="nifti_img_view.pas"/>
+        <Caret Line="1" Column="105" TopLine="1"/>
       </Position2>
       <Position3>
         <Filename Value="common\gzio2.pas"/>
-        <Caret Line="738" Column="28" TopLine="712"/>
+        <Caret Line="699" Column="13" TopLine="668"/>
       </Position3>
       <Position4>
-        <Filename Value="common\gzio2.pas"/>
-        <Caret Line="737" Column="24" TopLine="721"/>
+        <Filename Value="nifti_img_view.pas"/>
+        <Caret Line="3192" Column="2" TopLine="3183"/>
       </Position4>
       <Position5>
         <Filename Value="nifti_img_view.pas"/>
-        <Caret Line="4524" Column="1" TopLine="4503"/>
+        <Caret Line="23" Column="52" TopLine="4"/>
       </Position5>
       <Position6>
-        <Filename Value="nifti_img_view.pas"/>
-        <Caret Line="4859" Column="61" TopLine="1"/>
+        <Filename Value="fastsmooth.pas"/>
+        <Caret Line="8" Column="57" TopLine="2"/>
       </Position6>
       <Position7>
-        <Filename Value="nifti_img_view.pas"/>
-        <Caret Line="1" Column="105" TopLine="1"/>
+        <Filename Value="fastsmooth.pas"/>
+        <Caret Line="9" Column="40" TopLine="2"/>
       </Position7>
       <Position8>
-        <Filename Value="common\gzio2.pas"/>
-        <Caret Line="699" Column="13" TopLine="668"/>
+        <Filename Value="fastsmooth.pas"/>
+        <Caret Line="14" Column="67" TopLine="2"/>
       </Position8>
       <Position9>
-        <Filename Value="nifti_img_view.pas"/>
-        <Caret Line="3192" Column="2" TopLine="3183"/>
+        <Filename Value="fastsmooth.pas"/>
+        <Caret Line="28" Column="17" TopLine="16"/>
       </Position9>
       <Position10>
-        <Filename Value="nifti_img_view.pas"/>
-        <Caret Line="23" Column="52" TopLine="4"/>
+        <Filename Value="CarbonOpenDoc.pas"/>
+        <Caret Line="3" Column="1" TopLine="1"/>
       </Position10>
       <Position11>
-        <Filename Value="fastsmooth.pas"/>
-        <Caret Line="8" Column="57" TopLine="2"/>
+        <Filename Value="CarbonOpenDoc.pas"/>
+        <Caret Line="10" Column="64" TopLine="1"/>
       </Position11>
       <Position12>
-        <Filename Value="fastsmooth.pas"/>
-        <Caret Line="9" Column="40" TopLine="2"/>
+        <Filename Value="nifti_img_view.pas"/>
+        <Caret Line="3" Column="28" TopLine="1"/>
       </Position12>
       <Position13>
-        <Filename Value="fastsmooth.pas"/>
-        <Caret Line="14" Column="67" TopLine="2"/>
+        <Filename Value="nifti_img_view.pas"/>
+        <Caret Line="27" Column="55" TopLine="1"/>
       </Position13>
       <Position14>
-        <Filename Value="fastsmooth.pas"/>
-        <Caret Line="28" Column="17" TopLine="16"/>
+        <Filename Value="nifti_img_view.pas"/>
+        <Caret Line="1570" Column="50" TopLine="1511"/>
       </Position14>
       <Position15>
-        <Filename Value="CarbonOpenDoc.pas"/>
-        <Caret Line="3" Column="1" TopLine="1"/>
+        <Filename Value="nifti_img_view.pas"/>
+        <Caret Line="4" Column="82" TopLine="1"/>
       </Position15>
       <Position16>
-        <Filename Value="CarbonOpenDoc.pas"/>
-        <Caret Line="10" Column="64" TopLine="1"/>
+        <Filename Value="nifti_img_view.pas"/>
+        <Caret Line="5" Column="84" TopLine="1"/>
       </Position16>
       <Position17>
         <Filename Value="nifti_img_view.pas"/>
-        <Caret Line="3" Column="28" TopLine="1"/>
+        <Caret Line="225" Column="21" TopLine="171"/>
       </Position17>
       <Position18>
         <Filename Value="nifti_img_view.pas"/>
-        <Caret Line="27" Column="55" TopLine="1"/>
+        <Caret Line="1223" Column="20" TopLine="1169"/>
       </Position18>
       <Position19>
         <Filename Value="nifti_img_view.pas"/>
-        <Caret Line="1570" Column="50" TopLine="1511"/>
+        <Caret Line="1227" Column="29" TopLine="1173"/>
       </Position19>
       <Position20>
         <Filename Value="nifti_img_view.pas"/>
-        <Caret Line="4" Column="82" TopLine="1"/>
+        <Caret Line="1245" Column="7" TopLine="1195"/>
       </Position20>
       <Position21>
         <Filename Value="nifti_img_view.pas"/>
-        <Caret Line="5" Column="84" TopLine="1"/>
+        <Caret Line="1232" Column="17" TopLine="1195"/>
       </Position21>
       <Position22>
         <Filename Value="nifti_img_view.pas"/>
-        <Caret Line="225" Column="21" TopLine="171"/>
+        <Caret Line="1244" Column="23" TopLine="1195"/>
       </Position22>
       <Position23>
         <Filename Value="nifti_img_view.pas"/>
-        <Caret Line="1223" Column="20" TopLine="1169"/>
+        <Caret Line="1246" Column="54" TopLine="1224"/>
       </Position23>
       <Position24>
         <Filename Value="nifti_img_view.pas"/>
-        <Caret Line="1227" Column="29" TopLine="1173"/>
+        <Caret Line="1241" Column="81" TopLine="1213"/>
       </Position24>
       <Position25>
-        <Filename Value="nifti_img_view.pas"/>
-        <Caret Line="1245" Column="7" TopLine="1195"/>
+        <Filename Value="about.pas"/>
+        <Caret Line="40" Column="65" TopLine="4"/>
       </Position25>
       <Position26>
         <Filename Value="nifti_img_view.pas"/>
-        <Caret Line="1232" Column="17" TopLine="1195"/>
+        <Caret Line="1170" Column="40" TopLine="1167"/>
       </Position26>
       <Position27>
         <Filename Value="nifti_img_view.pas"/>
-        <Caret Line="1244" Column="23" TopLine="1195"/>
+        <Caret Line="1467" Column="41" TopLine="1462"/>
       </Position27>
       <Position28>
         <Filename Value="nifti_img_view.pas"/>
-        <Caret Line="1246" Column="54" TopLine="1224"/>
+        <Caret Line="1461" Column="13" TopLine="1456"/>
       </Position28>
       <Position29>
-        <Filename Value="nifti_img_view.pas"/>
-        <Caret Line="1241" Column="81" TopLine="1213"/>
+        <Filename Value="yokesharemem.pas"/>
+        <Caret Line="36" Column="36" TopLine="1"/>
       </Position29>
       <Position30>
-        <Filename Value="about.pas"/>
-        <Caret Line="40" Column="65" TopLine="4"/>
+        <Filename Value="common\define_types.pas"/>
+        <Caret Line="2" Column="101" TopLine="1"/>
       </Position30>
     </JumpHistory>
   </ProjectOptions>
@@ -1452,4 +1443,4 @@
       </Item2>
     </Exceptions>
   </Debugging>
-</CONFIG>
\ No newline at end of file
+</CONFIG>
diff --git a/mricron.res b/mricron.res
index d9c8b12..7f1426e 100644
Binary files a/mricron.res and b/mricron.res differ
diff --git a/nifti_img_view.lfm b/nifti_img_view.lfm
index 96e3f81..c5a1eb3 100644
--- a/nifti_img_view.lfm
+++ b/nifti_img_view.lfm
@@ -6,7 +6,7 @@ object ImgForm: TImgForm
   ActiveControl = ControlPanel
   AllowDropFiles = True
   Caption = 'MRIcroN'
-  ClientHeight = 469
+  ClientHeight = 450
   ClientWidth = 1025
   DockSite = True
   Font.Name = 'MS Sans Serif'
@@ -20,7 +20,7 @@ object ImgForm: TImgForm
   OnResize = FormResize
   OnShow = FormShow
   Position = poScreenCenter
-  LCLVersion = '0.9.30.2'
+  LCLVersion = '0.9.30.4'
   object ControlPanel: TPanel
     Left = 0
     Height = 40
@@ -37,7 +37,7 @@ object ImgForm: TImgForm
     OnDblClick = ControlPanelDblClick
     object LabelX: TLabel
       Left = 6
-      Height = 18
+      Height = 17
       Top = 12
       Width = 9
       Caption = 'X'
@@ -45,17 +45,17 @@ object ImgForm: TImgForm
     end
     object LabelY: TLabel
       Left = 81
-      Height = 18
+      Height = 17
       Top = 12
-      Width = 9
+      Width = 10
       Caption = 'Y'
       ParentColor = False
     end
     object LabelZ: TLabel
       Left = 153
-      Height = 18
+      Height = 17
       Top = 12
-      Width = 8
+      Width = 9
       Caption = 'Z'
       ParentColor = False
     end
@@ -407,10 +407,10 @@ object ImgForm: TImgForm
       end
       object LayerDrop: TComboBox
         Left = 4
-        Height = 20
+        Height = 24
         Top = 4
         Width = 116
-        ItemHeight = 0
+        ItemHeight = 16
         ItemIndex = 0
         Items.Strings = (
           'Background Layer'
@@ -425,7 +425,7 @@ object ImgForm: TImgForm
       end
       object MinWindowEdit: TFloatSpinEdit
         Left = 153
-        Height = 16
+        Height = 24
         Top = 4
         Width = 88
         DecimalPlaces = 4
@@ -438,7 +438,7 @@ object ImgForm: TImgForm
       end
       object MaxWindowEdit: TFloatSpinEdit
         Left = 245
-        Height = 16
+        Height = 24
         Top = 4
         Width = 88
         DecimalPlaces = 4
@@ -451,11 +451,11 @@ object ImgForm: TImgForm
       end
       object LUTdrop: TComboBox
         Left = 340
-        Height = 20
+        Height = 24
         Top = 5
         Width = 100
         DropDownCount = 66
-        ItemHeight = 0
+        ItemHeight = 16
         OnChange = LUTdropChange
         OnSelect = LUTdropSelect
         ParentShowHint = False
@@ -466,11 +466,11 @@ object ImgForm: TImgForm
     end
     object ZoomDrop: TComboBox
       Left = 225
-      Height = 20
+      Height = 24
       Top = 8
       Width = 79
       DropDownCount = 12
-      ItemHeight = 0
+      ItemHeight = 16
       Items.Strings = (
         'To Fit'
         'To Int'
@@ -493,7 +493,7 @@ object ImgForm: TImgForm
     end
     object XViewEdit: TSpinEdit
       Left = 24
-      Height = 16
+      Height = 24
       Top = 12
       Width = 52
       MinValue = 1
@@ -503,7 +503,7 @@ object ImgForm: TImgForm
     end
     object YViewEdit: TSpinEdit
       Left = 97
-      Height = 16
+      Height = 24
       Top = 12
       Width = 52
       MinValue = 1
@@ -513,7 +513,7 @@ object ImgForm: TImgForm
     end
     object ZViewEdit: TSpinEdit
       Left = 169
-      Height = 16
+      Height = 24
       Top = 12
       Width = 52
       MinValue = 1
@@ -923,7 +923,7 @@ object ImgForm: TImgForm
   object MagPanel: TPanel
     Left = 0
     Height = 18
-    Top = 451
+    Top = 432
     Width = 1025
     Align = alBottom
     BevelOuter = bvNone
@@ -932,9 +932,9 @@ object ImgForm: TImgForm
     TabOrder = 1
     object StatusLabel: TLabel
       Left = 2
-      Height = 18
+      Height = 17
       Top = 2
-      Width = 134
+      Width = 129
       Caption = '  No Images Loaded  '
       ParentColor = False
     end
@@ -951,23 +951,23 @@ object ImgForm: TImgForm
   end
   object Panel1: TPanel
     Left = 0
-    Height = 411
+    Height = 392
     Top = 40
     Width = 1025
     Align = alClient
     BevelOuter = bvNone
-    ClientHeight = 411
+    ClientHeight = 392
     ClientWidth = 1025
     TabOrder = 2
     object TriplePanel: TScrollBox
       Tag = 666
       Left = 0
-      Height = 411
+      Height = 392
       Top = 0
       Width = 1025
       Align = alClient
-      ClientHeight = 411
-      ClientWidth = 1025
+      ClientHeight = 388
+      ClientWidth = 1021
       Constraints.MinWidth = 5
       Color = clBlack
       ParentColor = False
diff --git a/nifti_img_view.lrs b/nifti_img_view.lrs
index caf995b..2815d41 100644
--- a/nifti_img_view.lrs
+++ b/nifti_img_view.lrs
@@ -3,22 +3,22 @@
 LazarusResources.Add('TImgForm','FORMDATA',[
   'TPF0'#8'TImgForm'#7'ImgForm'#4'Left'#3'c'#3#6'Height'#3#213#1#3'Top'#3#208#0
   +#5'Width'#3#1#4#13'ActiveControl'#7#12'ControlPanel'#14'AllowDropFiles'#9#7
-  +'Caption'#6#7'MRIcroN'#12'ClientHeight'#3#213#1#11'ClientWidth'#3#1#4#8'Dock'
+  +'Caption'#6#7'MRIcroN'#12'ClientHeight'#3#194#1#11'ClientWidth'#3#1#4#8'Dock'
   +'Site'#9#9'Font.Name'#6#13'MS Sans Serif'#4'Menu'#7#9'MainMenu1'#7'OnClose'#7
   +#9'FormClose'#8'OnCreate'#7#10'FormCreate'#9'OnDestroy'#7#11'FormDestroy'#11
   +'OnDropFiles'#7#13'FormDropFiles'#9'OnKeyDown'#7#11'FormKeyDown'#10'OnKeyPre'
   +'ss'#7#12'FormKeyPress'#8'OnResize'#7#10'FormResize'#6'OnShow'#7#8'FormShow'
-  +#8'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#8'0.9.30.2'#0#6'TPanel'#12
+  +#8'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#8'0.9.30.4'#0#6'TPanel'#12
   +'ControlPanel'#4'Left'#2#0#6'Height'#2'('#3'Top'#2#0#5'Width'#3#1#4#5'Align'
   +#7#5'alTop'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2'('#11'ClientWidth'
   +#3#1#4#11'ParentColor'#8#14'ParentShowHint'#8#8'ShowHint'#9#8'TabOrder'#2#0
   +#10'OnDblClick'#7#20'ControlPanelDblClick'#0#6'TLabel'#6'LabelX'#4'Left'#2#6
-  +#6'Height'#2#18#3'Top'#2#12#5'Width'#2#9#7'Caption'#6#1'X'#11'ParentColor'#8
-  +#0#0#6'TLabel'#6'LabelY'#4'Left'#2'Q'#6'Height'#2#18#3'Top'#2#12#5'Width'#2#9
-  +#7'Caption'#6#1'Y'#11'ParentColor'#8#0#0#6'TLabel'#6'LabelZ'#4'Left'#3#153#0
-  +#6'Height'#2#18#3'Top'#2#12#5'Width'#2#8#7'Caption'#6#1'Z'#11'ParentColor'#8
-  +#0#0#12'TSpeedButton'#10'HideROIBtn'#4'Left'#3'('#3#6'Height'#2#30#4'Hint'#6
-  +#30'Briefly hide VOIs and Overlays'#3'Top'#2#4#5'Width'#2#30#10'Glyph.Data'
+  +#6'Height'#2#17#3'Top'#2#12#5'Width'#2#9#7'Caption'#6#1'X'#11'ParentColor'#8
+  +#0#0#6'TLabel'#6'LabelY'#4'Left'#2'Q'#6'Height'#2#17#3'Top'#2#12#5'Width'#2
+  +#10#7'Caption'#6#1'Y'#11'ParentColor'#8#0#0#6'TLabel'#6'LabelZ'#4'Left'#3#153
+  +#0#6'Height'#2#17#3'Top'#2#12#5'Width'#2#9#7'Caption'#6#1'Z'#11'ParentColor'
+  +#8#0#0#12'TSpeedButton'#10'HideROIBtn'#4'Left'#3'('#3#6'Height'#2#30#4'Hint'
+  +#6#30'Briefly hide VOIs and Overlays'#3'Top'#2#4#5'Width'#2#30#10'Glyph.Data'
   +#10':'#6#0#0'6'#6#0#0'BM6'#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#16#0#0#0#24#0#0#0
   +#1#0' '#0#0#0#0#0#0#6#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255
   +#255#255#0#255#255#255#0#198#28#29'%'#192#0#0#127#140'EE'#188#183#11#11#203
@@ -399,34 +399,34 @@ LazarusResources.Add('TImgForm','FORMDATA',[
   +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
   +#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#9'N'
   +'umGlyphs'#2#0#11'OnMouseDown'#7#20'ColorBarBtnMouseDown'#0#0#9'TComboBox'#9
-  +'LayerDrop'#4'Left'#2#4#6'Height'#2#20#3'Top'#2#4#5'Width'#2't'#10'ItemHeigh'
-  +'t'#2#0#9'ItemIndex'#2#0#13'Items.Strings'#1#6#16'Background Layer'#0#8'OnCh'
-  +'ange'#7#15'LayerDropChange'#8'OnSelect'#7#15'LayerDropSelect'#14'ParentShow'
-  +'Hint'#8#8'ShowHint'#9#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#0#4'Text'
+  +'LayerDrop'#4'Left'#2#4#6'Height'#2#24#3'Top'#2#4#5'Width'#2't'#10'ItemHeigh'
+  +'t'#2#16#9'ItemIndex'#2#0#13'Items.Strings'#1#6#16'Background Layer'#0#8'OnC'
+  +'hange'#7#15'LayerDropChange'#8'OnSelect'#7#15'LayerDropSelect'#14'ParentSho'
+  +'wHint'#8#8'ShowHint'#9#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#0#4'Text'
   +#6#16'Background Layer'#0#0#14'TFloatSpinEdit'#13'MinWindowEdit'#4'Left'#3
-  +#153#0#6'Height'#2#16#3'Top'#2#4#5'Width'#2'X'#13'DecimalPlaces'#2#4#9'Incre'
+  +#153#0#6'Height'#2#24#3'Top'#2#4#5'Width'#2'X'#13'DecimalPlaces'#2#4#9'Incre'
   +'ment'#5#0#0#0#0#0#0#0#128#255'?'#8'MaxValue'#5#0#0#0#0#0#127#150#152#22'@'#8
   +'MinValue'#5#0#0#0#0#0#127#150#152#22#192#8'OnChange'#7#27'MinContrastWindow'
   +'EditChange'#8'TabOrder'#2#1#5'Value'#5#0#0#0#0#0#0#0#128#255'?'#0#0#14'TFlo'
-  +'atSpinEdit'#13'MaxWindowEdit'#4'Left'#3#245#0#6'Height'#2#16#3'Top'#2#4#5'W'
+  +'atSpinEdit'#13'MaxWindowEdit'#4'Left'#3#245#0#6'Height'#2#24#3'Top'#2#4#5'W'
   +'idth'#2'X'#13'DecimalPlaces'#2#4#9'Increment'#5#0#0#0#0#0#0#0#128#255'?'#8
   +'MaxValue'#5#0#0#0#0#0#127#150#152#22'@'#8'MinValue'#5#0#0#0#0#0#127#150#152
   +#22#192#8'OnChange'#7#27'MaxContrastWindowEditChange'#8'TabOrder'#2#2#5'Valu'
   +'e'#5#0#0#0#0#0#0#0#128#255'?'#0#0#9'TComboBox'#7'LUTdrop'#4'Left'#3'T'#1#6
-  +'Height'#2#20#3'Top'#2#5#5'Width'#2'd'#13'DropDownCount'#2'B'#10'ItemHeight'
-  +#2#0#8'OnChange'#7#13'LUTdropChange'#8'OnSelect'#7#13'LUTdropSelect'#14'Pare'
-  +'ntShowHint'#8#8'ShowHint'#9#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#3#0
-  +#0#0#9'TComboBox'#8'ZoomDrop'#4'Left'#3#225#0#6'Height'#2#20#3'Top'#2#8#5'Wi'
-  +'dth'#2'O'#13'DropDownCount'#2#12#10'ItemHeight'#2#0#13'Items.Strings'#1#6#6
+  +'Height'#2#24#3'Top'#2#5#5'Width'#2'd'#13'DropDownCount'#2'B'#10'ItemHeight'
+  +#2#16#8'OnChange'#7#13'LUTdropChange'#8'OnSelect'#7#13'LUTdropSelect'#14'Par'
+  +'entShowHint'#8#8'ShowHint'#9#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#3#0
+  +#0#0#9'TComboBox'#8'ZoomDrop'#4'Left'#3#225#0#6'Height'#2#24#3'Top'#2#8#5'Wi'
+  +'dth'#2'O'#13'DropDownCount'#2#12#10'ItemHeight'#2#16#13'Items.Strings'#1#6#6
   +'To Fit'#6#6'To Int'#6#2'x1'#6#2'x2'#6#2'x3'#6#2'x4'#6#2'x5'#6#2'x6'#6#2'x7'
   +#6#2'x8'#6#2'x9'#0#8'OnChange'#7#14'ZoomDropChange'#8'OnSelect'#7#14'ZoomDro'
   +'pSelect'#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#14'csDropDownList'#8
-  +'TabOrder'#2#4#0#0#9'TSpinEdit'#9'XViewEdit'#4'Left'#2#24#6'Height'#2#16#3'T'
+  +'TabOrder'#2#4#0#0#9'TSpinEdit'#9'XViewEdit'#4'Left'#2#24#6'Height'#2#24#3'T'
   +'op'#2#12#5'Width'#2'4'#8'MinValue'#2#1#8'OnChange'#7#15'XViewEditChange'#8
   +'TabOrder'#2#0#5'Value'#2'd'#0#0#9'TSpinEdit'#9'YViewEdit'#4'Left'#2'a'#6'He'
-  +'ight'#2#16#3'Top'#2#12#5'Width'#2'4'#8'MinValue'#2#1#8'OnChange'#7#15'XView'
+  +'ight'#2#24#3'Top'#2#12#5'Width'#2'4'#8'MinValue'#2#1#8'OnChange'#7#15'XView'
   +'EditChange'#8'TabOrder'#2#1#5'Value'#2' '#0#0#9'TSpinEdit'#9'ZViewEdit'#4'L'
-  +'eft'#3#169#0#6'Height'#2#16#3'Top'#2#12#5'Width'#2'4'#8'MinValue'#2#1#8'OnC'
+  +'eft'#3#169#0#6'Height'#2#24#3'Top'#2#12#5'Width'#2'4'#8'MinValue'#2#1#8'OnC'
   +'hange'#7#15'XViewEditChange'#8'TabOrder'#2#2#5'Value'#2#14#0#0#6'TPanel'#9
   +'ToolPanel'#4'Left'#3'h'#3#6'Height'#2' '#3'Top'#2#4#5'Width'#3#165#0#10'Bev'
   +'elOuter'#7#6'bvNone'#12'ClientHeight'#2' '#11'ClientWidth'#3#165#0#8'TabOrd'
@@ -858,60 +858,60 @@ LazarusResources.Add('TImgForm','FORMDATA',[
   +#142#0'Q'#255'Y'#0'E'#255#16#255#255#255#0#255#255#255#0#255#255#255#0#255
   +#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#10'GroupIndex'#2','#9'N'
   +'umGlyphs'#2#0#7'OnClick'#7#14'Fill3DBtnClick'#0#0#0#0#6'TPanel'#8'MagPanel'
-  +#4'Left'#2#0#6'Height'#2#18#3'Top'#3#195#1#5'Width'#3#1#4#5'Align'#7#8'alBot'
+  +#4'Left'#2#0#6'Height'#2#18#3'Top'#3#176#1#5'Width'#3#1#4#5'Align'#7#8'alBot'
   +'tom'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2#18#11'ClientWidth'#3#1#4
-  +#8'TabOrder'#2#1#0#6'TLabel'#11'StatusLabel'#4'Left'#2#2#6'Height'#2#18#3'To'
-  +'p'#2#2#5'Width'#3#134#0#7'Caption'#6#20'  No Images Loaded  '#11'ParentColo'
+  +#8'TabOrder'#2#1#0#6'TLabel'#11'StatusLabel'#4'Left'#2#2#6'Height'#2#17#3'To'
+  +'p'#2#2#5'Width'#3#129#0#7'Caption'#6#20'  No Images Loaded  '#11'ParentColo'
   +'r'#8#0#0#12'TProgressBar'#12'ProgressBar1'#4'Left'#3'k'#3#6'Height'#2#18#3
   +'Top'#2#0#5'Width'#3#150#0#5'Align'#7#7'alRight'#7'Anchors'#11#7'akRight'#8
   +'akBottom'#0#11'BorderWidth'#2#1#8'TabOrder'#2#0#0#0#0#6'TPanel'#6'Panel1'#4
-  +'Left'#2#0#6'Height'#3#155#1#3'Top'#2'('#5'Width'#3#1#4#5'Align'#7#8'alClien'
-  +'t'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#3#155#1#11'ClientWidth'#3#1#4
+  +'Left'#2#0#6'Height'#3#136#1#3'Top'#2'('#5'Width'#3#1#4#5'Align'#7#8'alClien'
+  +'t'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#3#136#1#11'ClientWidth'#3#1#4
   +#8'TabOrder'#2#2#0#10'TScrollBox'#11'TriplePanel'#3'Tag'#3#154#2#4'Left'#2#0
-  +#6'Height'#3#155#1#3'Top'#2#0#5'Width'#3#1#4#5'Align'#7#8'alClient'#12'Clien'
-  +'tHeight'#3#155#1#11'ClientWidth'#3#1#4#20'Constraints.MinWidth'#2#5#5'Color'
-  +#7#7'clBlack'#11'ParentColor'#8#8'TabOrder'#2#0#7'OnClick'#7#13'ImgPanelClic'
-  +'k'#0#6'TImage'#10'PGImageCor'#3'Tag'#2#2#6'Cursor'#7#7'crCross'#4'Left'#2#1
-  +#6'Height'#2#12#3'Top'#2#1#5'Width'#2#12#8'AutoSize'#9#10'OnDblClick'#7#18'P'
-  +'GImageCorDblClick'#11'OnMouseDown'#7#16'PGImageMouseDown'#11'OnMouseMove'#7
+  +#6'Height'#3#136#1#3'Top'#2#0#5'Width'#3#1#4#5'Align'#7#8'alClient'#12'Clien'
+  +'tHeight'#3#132#1#11'ClientWidth'#3#253#3#20'Constraints.MinWidth'#2#5#5'Col'
+  +'or'#7#7'clBlack'#11'ParentColor'#8#8'TabOrder'#2#0#7'OnClick'#7#13'ImgPanel'
+  +'Click'#0#6'TImage'#10'PGImageCor'#3'Tag'#2#2#6'Cursor'#7#7'crCross'#4'Left'
+  +#2#1#6'Height'#2#12#3'Top'#2#1#5'Width'#2#12#8'AutoSize'#9#10'OnDblClick'#7
+  +#18'PGImageCorDblClick'#11'OnMouseDown'#7#16'PGImageMouseDown'#11'OnMouseMov'
+  +'e'#7#16'PGImageMouseMove'#9'OnMouseUp'#7#14'PGImageMouseUp'#7'Stretch'#9#0#0
+  +#6'TImage'#10'PGImageSag'#3'Tag'#2#3#6'Cursor'#7#7'crCross'#4'Left'#3'C'#1#6
+  +'Height'#2#12#3'Top'#2'n'#5'Width'#2#12#8'AutoSize'#9#10'OnDblClick'#7#18'PG'
+  +'ImageCorDblClick'#11'OnMouseDown'#7#16'PGImageMouseDown'#11'OnMouseMove'#7
   +#16'PGImageMouseMove'#9'OnMouseUp'#7#14'PGImageMouseUp'#7'Stretch'#9#0#0#6'T'
-  +'Image'#10'PGImageSag'#3'Tag'#2#3#6'Cursor'#7#7'crCross'#4'Left'#3'C'#1#6'He'
-  +'ight'#2#12#3'Top'#2'n'#5'Width'#2#12#8'AutoSize'#9#10'OnDblClick'#7#18'PGIm'
-  +'ageCorDblClick'#11'OnMouseDown'#7#16'PGImageMouseDown'#11'OnMouseMove'#7#16
-  +'PGImageMouseMove'#9'OnMouseUp'#7#14'PGImageMouseUp'#7'Stretch'#9#0#0#6'TIma'
-  +'ge'#9'PGImageAx'#3'Tag'#2#1#6'Cursor'#7#7'crCross'#4'Left'#3#251#2#6'Height'
-  +#2#12#3'Top'#3#238#0#5'Width'#2#12#8'AutoSize'#9#10'OnDblClick'#7#18'PGImage'
-  +'CorDblClick'#11'OnMouseDown'#7#16'PGImageMouseDown'#11'OnMouseMove'#7#16'PG'
-  +'ImageMouseMove'#9'OnMouseUp'#7#14'PGImageMouseUp'#7'Stretch'#9#0#0#0#0#9'TM'
-  +'ainMenu'#9'MainMenu1'#4'left'#2'p'#3'top'#3#212#0#0#9'TMenuItem'#5'File1'#7
-  +'Caption'#6#5'&File'#0#9'TMenuItem'#5'Open1'#7'Caption'#6#5'&Open'#8'ShortCu'
-  +'t'#3'O@'#7'OnClick'#7#10'Open1Click'#0#0#9'TMenuItem'#7'Recent1'#7'Caption'
-  +#6#12'Open &recent'#0#0#9'TMenuItem'#10'Templates1'#7'Caption'#6#15'Open &te'
-  +'mplates'#0#0#9'TMenuItem'#11'CloseImages'#7'Caption'#6#13'&Close images'#7
-  +'OnClick'#7#16'CloseImagesClick'#0#0#9'TMenuItem'#12'SaveasNIfTI1'#7'Caption'
-  +#6#16'Save as NIfTI...'#8'ShortCut'#4'S'#192#0#0#7'OnClick'#7#17'SaveasNIfTI'
-  +'1Click'#0#0#9'TMenuItem'#14'Saveaspicture1'#7'Caption'#6#15'&Save as bitmap'
-  +#8'ShortCut'#3'S@'#7'OnClick'#7#19'Saveaspicture1Click'#0#0#9'TMenuItem'#5'E'
-  +'xit1'#7'Caption'#6#5'E&xit'#7'OnClick'#7#10'Exit1Click'#0#0#0#9'TMenuItem'#5
-  +'Edit1'#7'Caption'#6#5'&Edit'#0#9'TMenuItem'#5'Copy1'#7'Caption'#6#4'Copy'#8
-  +'ShortCut'#3'C@'#7'OnClick'#7#10'Copy1Click'#0#0#9'TMenuItem'#6'Paste1'#7'Ca'
-  +'ption'#6#5'Paste'#8'ShortCut'#3'V@'#7'OnClick'#7#11'Paste1Click'#0#0#9'TMen'
-  +'uItem'#5'Undo1'#7'Caption'#6#4'Undo'#8'ShortCut'#3'Z@'#7'OnClick'#7#10'Undo'
-  ,'1Click'#0#0#0#9'TMenuItem'#11'OverlayMenu'#7'Caption'#6#8'&Overlay'#0#9'TMe'
-  +'nuItem'#11'OverlayOpen'#7'Caption'#6#3'Add'#8'ShortCut'#3'A@'#7'OnClick'#7
-  +#16'OverlayOpenClick'#0#0#9'TMenuItem'#15'CloseOverlayImg'#7'Caption'#6#14'C'
-  +'lose overlays'#7'OnClick'#7#20'CloseOverlayImgClick'#0#0#9'TMenuItem'#14'BG'
-  +'TransPctMenu'#7'Caption'#6#26'Transparency on background'#0#9'TMenuItem'#8
-  +'BGtrans0'#7'Caption'#6#9'0% opaque'#7'Checked'#9#10'GroupIndex'#3#251#0#9'R'
-  +'adioItem'#9#7'OnClick'#7#15'BGtrans100Click'#0#0#9'TMenuItem'#9'BGtrans20'#3
-  +'Tag'#2#20#7'Caption'#6#3'20%'#10'GroupIndex'#3#251#0#9'RadioItem'#9#7'OnCli'
-  +'ck'#7#15'BGtrans100Click'#0#0#9'TMenuItem'#9'BGtrans40'#3'Tag'#2'('#7'Capti'
-  +'on'#6#3'40%'#10'GroupIndex'#3#251#0#9'RadioItem'#9#7'OnClick'#7#15'BGtrans1'
-  +'00Click'#0#0#9'TMenuItem'#9'BGtrans50'#3'Tag'#2'2'#7'Caption'#6#3'50%'#10'G'
-  +'roupIndex'#3#251#0#9'RadioItem'#9#7'OnClick'#7#15'BGtrans100Click'#0#0#9'TM'
-  +'enuItem'#9'BGtrans60'#3'Tag'#2'<'#7'Caption'#6#3'60%'#10'GroupIndex'#3#251#0
-  +#9'RadioItem'#9#7'OnClick'#7#15'BGtrans100Click'#0#0#9'TMenuItem'#9'BGtrans8'
-  +'0'#3'Tag'#2'P'#7'Caption'#6#3'80%'#10'GroupIndex'#3#251#0#9'RadioItem'#9#7
+  +'Image'#9'PGImageAx'#3'Tag'#2#1#6'Cursor'#7#7'crCross'#4'Left'#3#251#2#6'Hei'
+  +'ght'#2#12#3'Top'#3#238#0#5'Width'#2#12#8'AutoSize'#9#10'OnDblClick'#7#18'PG'
+  +'ImageCorDblClick'#11'OnMouseDown'#7#16'PGImageMouseDown'#11'OnMouseMove'#7
+  +#16'PGImageMouseMove'#9'OnMouseUp'#7#14'PGImageMouseUp'#7'Stretch'#9#0#0#0#0
+  +#9'TMainMenu'#9'MainMenu1'#4'left'#2'p'#3'top'#3#212#0#0#9'TMenuItem'#5'File'
+  +'1'#7'Caption'#6#5'&File'#0#9'TMenuItem'#5'Open1'#7'Caption'#6#5'&Open'#8'Sh'
+  +'ortCut'#3'O@'#7'OnClick'#7#10'Open1Click'#0#0#9'TMenuItem'#7'Recent1'#7'Cap'
+  +'tion'#6#12'Open &recent'#0#0#9'TMenuItem'#10'Templates1'#7'Caption'#6#15'Op'
+  +'en &templates'#0#0#9'TMenuItem'#11'CloseImages'#7'Caption'#6#13'&Close imag'
+  +'es'#7'OnClick'#7#16'CloseImagesClick'#0#0#9'TMenuItem'#12'SaveasNIfTI1'#7'C'
+  +'aption'#6#16'Save as NIfTI...'#8'ShortCut'#4'S'#192#0#0#7'OnClick'#7#17'Sav'
+  +'easNIfTI1Click'#0#0#9'TMenuItem'#14'Saveaspicture1'#7'Caption'#6#15'&Save a'
+  +'s bitmap'#8'ShortCut'#3'S@'#7'OnClick'#7#19'Saveaspicture1Click'#0#0#9'TMen'
+  +'uItem'#5'Exit1'#7'Caption'#6#5'E&xit'#7'OnClick'#7#10'Exit1Click'#0#0#0#9'T'
+  +'MenuItem'#5'Edit1'#7'Caption'#6#5'&Edit'#0#9'TMenuItem'#5'Copy1'#7'Caption'
+  +#6#4'Copy'#8'ShortCut'#3'C@'#7'OnClick'#7#10'Copy1Click'#0#0#9'TMenuItem'#6
+  +'Paste1'#7'Caption'#6#5'Paste'#8'ShortCut'#3'V@'#7'OnClick'#7#11'Paste1Click'
+  +#0#0#9'TMenuItem'#5'Undo1'#7'Caption'#6#4'Undo'#8'ShortCut'#3'Z@'#7'OnClick'
+  ,#7#10'Undo1Click'#0#0#0#9'TMenuItem'#11'OverlayMenu'#7'Caption'#6#8'&Overlay'
+  +#0#9'TMenuItem'#11'OverlayOpen'#7'Caption'#6#3'Add'#8'ShortCut'#3'A@'#7'OnCl'
+  +'ick'#7#16'OverlayOpenClick'#0#0#9'TMenuItem'#15'CloseOverlayImg'#7'Caption'
+  +#6#14'Close overlays'#7'OnClick'#7#20'CloseOverlayImgClick'#0#0#9'TMenuItem'
+  +#14'BGTransPctMenu'#7'Caption'#6#26'Transparency on background'#0#9'TMenuIte'
+  +'m'#8'BGtrans0'#7'Caption'#6#9'0% opaque'#7'Checked'#9#10'GroupIndex'#3#251#0
+  +#9'RadioItem'#9#7'OnClick'#7#15'BGtrans100Click'#0#0#9'TMenuItem'#9'BGtrans2'
+  +'0'#3'Tag'#2#20#7'Caption'#6#3'20%'#10'GroupIndex'#3#251#0#9'RadioItem'#9#7
+  +'OnClick'#7#15'BGtrans100Click'#0#0#9'TMenuItem'#9'BGtrans40'#3'Tag'#2'('#7
+  +'Caption'#6#3'40%'#10'GroupIndex'#3#251#0#9'RadioItem'#9#7'OnClick'#7#15'BGt'
+  +'rans100Click'#0#0#9'TMenuItem'#9'BGtrans50'#3'Tag'#2'2'#7'Caption'#6#3'50%'
+  +#10'GroupIndex'#3#251#0#9'RadioItem'#9#7'OnClick'#7#15'BGtrans100Click'#0#0#9
+  +'TMenuItem'#9'BGtrans60'#3'Tag'#2'<'#7'Caption'#6#3'60%'#10'GroupIndex'#3#251
+  +#0#9'RadioItem'#9#7'OnClick'#7#15'BGtrans100Click'#0#0#9'TMenuItem'#9'BGtran'
+  +'s80'#3'Tag'#2'P'#7'Caption'#6#3'80%'#10'GroupIndex'#3#251#0#9'RadioItem'#9#7
   +'OnClick'#7#15'BGtrans100Click'#0#0#9'TMenuItem'#10'BGtrans100'#3'Tag'#2'd'#7
   +'Caption'#6#16'100% transparent'#10'GroupIndex'#3#251#0#9'RadioItem'#9#7'OnC'
   +'lick'#7#15'BGtrans100Click'#0#0#9'TMenuItem'#10'BGAdditive'#3'Tag'#2#255#7
diff --git a/nifti_img_view.pas b/nifti_img_view.pas
index 0122e4f..b79b03d 100644
--- a/nifti_img_view.pas
+++ b/nifti_img_view.pas
@@ -1,9 +1,9 @@
 unit nifti_img_view;
   {$mode delphi}
 interface
-{x$IFNDEF Darwin}
-{$DEFINE COMPILEYOKE}
-{x$ENDIF}
+{$IFDEF UNIX}
+		{$IFNDEF ENDIAN_BIG}{$DEFINE COMPILEYOKE}{$ENDIF} //not supported on PPC
+{$ENDIF}
 uses
 {$H+}
 {$IFDEF Darwin}CarbonOpenDoc,{$ENDIF}
@@ -1464,7 +1464,7 @@ var
 	lFilename: string;
 begin
      CloseImagesClick(nil);
-     if not OpenDialogExecute(kImgFilter,'Select background image',false) then exit;
+     if not OpenDialogExecute(kImgFilterPlusAny,'Select background image',false) then exit;
      lFilename := HdrForm.OpenHdrDlg.Filename;
      OpenAndDisplayImg(lFilename,True);
 end;

-- 
Alioth's /git/debian-med/git-commit-notice on /srv/git.debian.org/git/debian-med/mricron.git



More information about the debian-med-commit mailing list