[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