From: Kevin M. Rosenberg Date: Tue, 19 Dec 2000 21:37:51 +0000 (+0000) Subject: r306: Changes for PlotFile support X-Git-Tag: debian-4.5.3-3~711 X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=commitdiff_plain;h=89997e727ff5d4d8828f6fdaee435d809b623ffe r306: Changes for PlotFile support --- diff --git a/ChangeLog b/ChangeLog index c8c93f1..029bd14 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2.5.1 - Released 12/30/00 + +12/18/00 Added plotfile class + 2.5.0 - 12/18/00 First Microsoft Windows GUI version Modifications for Microsoft Visual C++ compilation. diff --git a/include/Makefile.am b/include/Makefile.am index 63726ae..97a27b5 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -1,4 +1,5 @@ -noinst_HEADERS=ct.h ezplot.h pol.h sgp.h array2d.h imagefile.h backprojectors.h mpiworld.h fnetorderstream.h phantom.h timer.h sstream_subst scanner.h projections.h ctsupport.h filter.h array2dfile.h trace.h transformmatrix.h procsignal.h reconstruct.h +noinst_HEADERS=ct.h ezplot.h pol.h sgp.h array2d.h imagefile.h backprojectors.h mpiworld.h fnetorderstream.h phantom.h timer.h sstream_subst scanner.h projections.h ctsupport.h filter.h array2dfile.h trace.h transformmatrix.h procsignal.h reconstruct.h plotfile.h + diff --git a/include/ct.h b/include/ct.h index efe5839..652df0c 100644 --- a/include/ct.h +++ b/include/ct.h @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: ct.h,v 1.46 2000/12/17 23:09:46 kevin Exp $ +** $Id: ct.h,v 1.47 2000/12/19 21:37:51 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -174,6 +174,7 @@ extern "C" { #include "procsignal.h" #include "projections.h" #include "reconstruct.h" +#include "plotfile.h" #include "trace.h" diff --git a/libctsupport/Makefile.am b/libctsupport/Makefile.am index 3d964e8..c04f426 100644 --- a/libctsupport/Makefile.am +++ b/libctsupport/Makefile.am @@ -1,6 +1,6 @@ noinst_LIBRARIES = libctsupport.a INCLUDES=@my_includes@ -libctsupport_a_SOURCES= strfuncs.cpp syserror.cpp fnetorderstream.cpp consoleio.cpp mathfuncs.cpp xform.cpp clip.cpp +libctsupport_a_SOURCES= strfuncs.cpp syserror.cpp fnetorderstream.cpp consoleio.cpp mathfuncs.cpp xform.cpp clip.cpp plotfile.cpp EXTRA_DIST=Makefile.nt diff --git a/msvc/ctsim/ctsim.dsp b/msvc/ctsim/ctsim.dsp index d393449..6c6220f 100644 --- a/msvc/ctsim/ctsim.dsp +++ b/msvc/ctsim/ctsim.dsp @@ -158,7 +158,6 @@ SOURCE=..\..\..\wx2\include\wx\msw\wx.rc # ADD BASE RSC /l 0x409 /i "\wx2\include\wx\msw" # SUBTRACT BASE RSC /i "\wx2\include\wx\msw" /i "\wx2\include" # ADD RSC /l 0x409 /i "\wx2\include\wx\msw" -# SUBTRACT RSC /i "\wx2\include\wx\msw" /i "\wx2\include" !ENDIF diff --git a/msvc/ctsim/ctsim.plg b/msvc/ctsim/ctsim.plg index ccee352..e7655cf 100644 --- a/msvc/ctsim/ctsim.plg +++ b/msvc/ctsim/ctsim.plg @@ -3,109 +3,10 @@
 

Build Log

---------------------Configuration: FFTW2st - Win32 Release-------------------- -

-

Command Lines

- - - -

Results

-FFTW2st.lib - 0 error(s), 0 warning(s) -

---------------------Configuration: FFTW2st - Win32 Debug-------------------- -

-

Command Lines

- - - -

Results

-FFTW2st.lib - 0 error(s), 0 warning(s) -

---------------------Configuration: RFFTW2st - Win32 Release-------------------- -

-

Command Lines

- - - -

Results

-RFFTW2st.lib - 0 error(s), 0 warning(s) -

---------------------Configuration: RFFTW2st - Win32 Debug-------------------- -

-

Command Lines

- - - -

Results

-RFFTW2st.lib - 0 error(s), 0 warning(s) -

---------------------Configuration: ctsim - Win32 Release-------------------- -

-

Command Lines

- - - -

Results

-ctsim.exe - 0 error(s), 0 warning(s) -

---------------------Configuration: libctsim - Win32 Debug-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP16.tmp" with contents -[ -/nologo /G6 /MTd /W3 /Gm /GR- /GX /ZI /Od /I "..\..\..\zlib" /I "..\..\INCLUDE" /I "..\..\getopt" /I "..\..\..\lpng108" /I "..\..\..\fftw-2.1.3\fftw" /I "..\..\..\fftw-2.1.3\rfftw" /I "..\..\..\wx2\include" /D "_DEBUG" /D "HAVE_WXWIN" /D "HAVE_STRING_H" /D "HAVE_GETOPT_H" /D "WIN32" /D "_MBCS" /D "_LIB" /D "MSVC" /D "HAVE_FFTW" /D "HAVE_PNG" /D "HAVE_SGP" /D "HAVE_WXWINDOWS" /D "__WXMSW__" /FR"Debug/" /Fp"Debug/libctsim.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c -"C:\ctsim-2.0.6\libctsim\backprojectors.cpp" -] -Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP16.tmp" -Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP17.tmp" with contents -[ -/nologo /out:"Debug\libctsim.lib" -".\Debug\array2dfile.obj" -".\Debug\backprojectors.obj" -".\Debug\clip.obj" -".\Debug\consoleio.obj" -".\Debug\ezplot.obj" -".\Debug\ezset.obj" -".\Debug\ezsupport.obj" -".\Debug\filter.obj" -".\Debug\fnetorderstream.obj" -".\Debug\getopt.obj" -".\Debug\getopt1.obj" -".\Debug\imagefile.obj" -".\Debug\mathfuncs.obj" -".\Debug\phantom.obj" -".\Debug\pol.obj" -".\Debug\procsignal.obj" -".\Debug\projections.obj" -".\Debug\reconstruct.obj" -".\Debug\scanner.obj" -".\Debug\sgp.obj" -".\Debug\strfuncs.obj" -".\Debug\syserror.obj" -".\Debug\trace.obj" -".\Debug\transformmatrix.obj" -".\Debug\xform.obj" -] -Creating command line "link.exe -lib @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP17.tmp" -

Output Window

-Compiling... -backprojectors.cpp -Creating library... -

--------------------Configuration: ctsim - Win32 Debug--------------------

Command Lines

-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP18.tmp" with contents -[ -/nologo /G6 /MTd /W3 /Gm /GR /GX /ZI /Od /I "\wx2\include" /I "." /I "..\..\include" /I "..\..\getopt" /I "..\..\..\lpng108" /I "..\..\..\zlib" /I "..\..\..\fftw-2.1.3\fftw" /I "..\..\..\fftw-2.1.3\rfftw" /D VERSION=\"2.5.0\" /D "_DEBUG" /D "__WXMSW__" /D "HAVE_SGP" /D "HAVE_PNG" /D "HAVE_WXWINDOWS" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "HAVE_STRING_H" /D "HAVE_FFTW" /D "HAVE_RFFTW" /D "HAVE_GETOPT_H" /D "MSVC" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D CTSIMVERSION=\"2.5.0\" /FR"Debug/" /Fp"Debug/ctsim.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c -"C:\ctsim-2.0.6\src\ctsim.cpp" -"C:\ctsim-2.0.6\src\dlgprojections.cpp" -"C:\ctsim-2.0.6\src\dlgreconstruct.cpp" -"C:\ctsim-2.0.6\src\docs.cpp" -"C:\ctsim-2.0.6\src\views.cpp" -] -Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP18.tmp" -Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP19.tmp" with contents +Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP70.tmp" with contents [ comctl32.lib winmm.lib rpcrt4.lib ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../libctsim/Debug/libctsim.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\..\lpng108\msvc\win32\libpng\lib_dbg\libpng.lib ..\..\..\lpng108\msvc\win32\zlib\lib_dbg\zlib.lib libcmtd.lib ..\..\..\fftw-2.1.3\Win32\FFTW2st\Debug\FFTW2st.lib ..\..\..\fftw-2.1.3\Win32\RFFTW2st\Debug\RFFTW2st.lib ../../../wx2/lib/wxd.lib /nologo /subsystem:windows /incremental:yes /pdb:"Debug/ctsim.pdb" /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrtd.lib" /out:"Debug/ctsim.exe" /pdbtype:sept /libpath:"..\..\..\lpng108\msvc\win32\libpng\lib" /libpath:"..\..\..\lpng108\msvc\win32\zlib\lib" ".\Debug\ctsim.obj" @@ -120,380 +21,14 @@ comctl32.lib winmm.lib rpcrt4.lib ws2_32.lib kernel32.lib user32.lib gdi32.lib w "\fftw-2.1.3\Win32\RFFTW2st\Debug\RFFTW2st.lib" "\wx2\lib\wxd.lib" ] -Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP19.tmp" +Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP70.tmp"

Output Window

-Compiling... -ctsim.cpp -dlgprojections.cpp -dlgreconstruct.cpp -docs.cpp -views.cpp Linking... -Creating command line "bscmake.exe /nologo /o"Debug/ctsim.bsc" ".\Debug\ctsim.sbr" ".\Debug\dialogs.sbr" ".\Debug\dlgprojections.sbr" ".\Debug\dlgreconstruct.sbr" ".\Debug\docs.sbr" ".\Debug\views.sbr"" -Creating browse info file... -

Output Window

Results

ctsim.exe - 0 error(s), 0 warning(s) -

---------------------Configuration: if1 - Win32 Release-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP1B.tmp" with contents -[ -wx.lib libctsim.lib zlib.lib comctl32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libpng.lib /nologo /subsystem:console /incremental:no /pdb:"Release/if1.pdb" /machine:I386 /out:"Release/if1.exe" /libpath:"..\libctsim\Release" /libpath:"..\..\..\lpng108\msvc\win32\libpng\lib" /libpath:"..\..\..\wx2\lib" /libpath:"..\..\..\lpng108\msvc\win32\zlib\lib" -".\Release\if1.obj" -"\ctsim-2.0.6\msvc\libctsim\Release\libctsim.lib" -] -Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP1B.tmp" -

Output Window

-Linking... - - - -

Results

-if1.exe - 0 error(s), 0 warning(s) -

---------------------Configuration: if1 - Win32 Debug-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP1D.tmp" with contents -[ -comctl32.lib winmm.lib rpcrt4.lib ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../libctsim/Debug/libctsim.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\..\lpng108\msvc\win32\libpng\lib_dbg\libpng.lib ..\..\..\lpng108\msvc\win32\zlib\lib_dbg\zlib.lib libcmtd.lib ..\..\..\fftw-2.1.3\Win32\FFTW2st\Debug\FFTW2st.lib ..\..\..\fftw-2.1.3\Win32\RFFTW2st\Debug\RFFTW2st.lib ../../../wx2/lib/wxd.lib /nologo /subsystem:console /incremental:yes /pdb:"Debug/if1.pdb" /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrtd.lib" /out:"Debug/if1.exe" /pdbtype:sept /libpath:"..\..\..\lpng108\msvc\win32\libpng\lib" /libpath:"..\..\..\lpng108\msvc\win32\zlib\lib" -".\Debug\if1.obj" -"\ctsim-2.0.6\msvc\libctsim\Debug\libctsim.lib" -] -Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP1D.tmp" -

Output Window

-Linking... - - - -

Results

-if1.exe - 0 error(s), 0 warning(s) -

---------------------Configuration: if2 - Win32 Release-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP1E.tmp" with contents -[ -wx.lib libctsim.lib zlib.lib comctl32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libpng.lib /nologo /subsystem:console /incremental:no /pdb:"Release/if2.pdb" /machine:I386 /out:"Release/if2.exe" /libpath:"..\libctsim\Release" /libpath:"..\..\..\lpng108\msvc\win32\libpng\lib" /libpath:"..\..\..\wx2\lib" /libpath:"..\..\..\lpng108\msvc\win32\zlib\lib" -".\Release\if2.obj" -"\ctsim-2.0.6\msvc\libctsim\Release\libctsim.lib" -] -Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP1E.tmp" -

Output Window

-Linking... - - - -

Results

-if2.exe - 0 error(s), 0 warning(s) -

---------------------Configuration: if2 - Win32 Debug-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP20.tmp" with contents -[ -comctl32.lib winmm.lib rpcrt4.lib ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../libctsim/Debug/libctsim.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\..\lpng108\msvc\win32\libpng\lib_dbg\libpng.lib ..\..\..\lpng108\msvc\win32\zlib\lib_dbg\zlib.lib libcmtd.lib ..\..\..\fftw-2.1.3\Win32\FFTW2st\Debug\FFTW2st.lib ..\..\..\fftw-2.1.3\Win32\RFFTW2st\Debug\RFFTW2st.lib ../../../wx2/lib/wxd.lib /nologo /subsystem:console /incremental:yes /pdb:"Debug/if2.pdb" /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrtd.lib" /out:"Debug/if2.exe" /pdbtype:sept /libpath:"..\..\..\lpng108\msvc\win32\libpng\lib" /libpath:"..\..\..\lpng108\msvc\win32\zlib\lib" -".\Debug\if2.obj" -"\ctsim-2.0.6\msvc\libctsim\Debug\libctsim.lib" -] -Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP20.tmp" -

Output Window

-Linking... - - - -

Results

-if2.exe - 0 error(s), 0 warning(s) -

---------------------Configuration: ifexport - Win32 Release-------------------- -

-

Command Lines

- - - -

Results

-ifexport.exe - 0 error(s), 0 warning(s) -

---------------------Configuration: ifexport - Win32 Debug-------------------- -

-

Command Lines

- - - -

Results

-ifexport.exe - 0 error(s), 0 warning(s) -

---------------------Configuration: ifinfo - Win32 Release-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP21.tmp" with contents -[ -wx.lib libctsim.lib zlib.lib comctl32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libpng.lib /nologo /subsystem:console /incremental:no /pdb:"Release/ifinfo.pdb" /machine:I386 /out:"Release/ifinfo.exe" /libpath:"..\libctsim\Release" /libpath:"..\..\..\lpng108\msvc\win32\libpng\lib" /libpath:"..\..\..\wx2\lib" /libpath:"..\..\..\lpng108\msvc\win32\zlib\lib" -".\Release\ifinfo.obj" -"\ctsim-2.0.6\msvc\libctsim\Release\libctsim.lib" -] -Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP21.tmp" -

Output Window

-Linking... - - - -

Results

-ifinfo.exe - 0 error(s), 0 warning(s) -

---------------------Configuration: ifinfo - Win32 Debug-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP23.tmp" with contents -[ -rpcrt4.lib comctl32.lib wsock32.lib ../libctsim/Debug/libctsim.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\..\lpng108\msvc\win32\libpng\lib_dbg\libpng.lib ..\..\..\lpng108\msvc\win32\zlib\lib_dbg\zlib.lib libcpd.lib libcd.lib ..\..\..\fftw-2.1.3\Win32\FFTW2st\Debug\FFTW2st.lib ..\..\..\fftw-2.1.3\Win32\RFFTW2st\Debug\RFFTW2st.lib /nologo /subsystem:console /incremental:yes /pdb:"Debug/ifinfo.pdb" /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrt.lib" /nodefaultlib /out:"Debug/ifinfo.exe" /pdbtype:sept -".\Debug\ifinfo.obj" -"\ctsim-2.0.6\msvc\libctsim\Debug\libctsim.lib" -] -Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP23.tmp" -

Output Window

-Linking... - - - -

Results

-ifinfo.exe - 0 error(s), 0 warning(s) -

---------------------Configuration: libpng - Win32 LIB-------------------- -

-

Command Lines

- - - -

Results

-libpng.lib - 0 error(s), 0 warning(s) -

---------------------Configuration: libpng - Win32 LIB Debug-------------------- -

-

Command Lines

- - - -

Results

-libpng.lib - 0 error(s), 0 warning(s) -

---------------------Configuration: phm2if - Win32 Release-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP24.tmp" with contents -[ -wx.lib libctsim.lib zlib.lib comctl32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libpng.lib /nologo /subsystem:console /incremental:no /pdb:"Release/phm2if.pdb" /machine:I386 /out:"Release/phm2if.exe" /libpath:"..\libctsim\Release" /libpath:"..\..\..\lpng108\msvc\win32\libpng\lib" /libpath:"..\..\..\wx2\lib" /libpath:"..\..\..\lpng108\msvc\win32\zlib\lib" -".\Release\phm2if.obj" -"\ctsim-2.0.6\msvc\libctsim\Release\libctsim.lib" -] -Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP24.tmp" -

Output Window

-Linking... -LINK : warning LNK4089: all references to "ADVAPI32.dll" discarded by /OPT:REF -LINK : warning LNK4089: all references to "WSOCK32.dll" discarded by /OPT:REF - - - -

Results

-phm2if.exe - 0 error(s), 2 warning(s) -

---------------------Configuration: phm2if - Win32 Debug-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP26.tmp" with contents -[ -comctl32.lib winmm.lib rpcrt4.lib ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../libctsim/Debug/libctsim.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\..\lpng108\msvc\win32\libpng\lib_dbg\libpng.lib ..\..\..\lpng108\msvc\win32\zlib\lib_dbg\zlib.lib libcmtd.lib ..\..\..\fftw-2.1.3\Win32\FFTW2st\Debug\FFTW2st.lib ..\..\..\fftw-2.1.3\Win32\RFFTW2st\Debug\RFFTW2st.lib ../../../wx2/lib/wxd.lib /nologo /subsystem:console /incremental:yes /pdb:"Debug/phm2if.pdb" /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrtd.lib" /out:"Debug/phm2if.exe" /pdbtype:sept /libpath:"..\..\..\lpng108\msvc\win32\libpng\lib" /libpath:"..\..\..\lpng108\msvc\win32\zlib\lib" -".\Debug\phm2if.obj" -"\ctsim-2.0.6\msvc\libctsim\Debug\libctsim.lib" -] -Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP26.tmp" -

Output Window

-Linking... - - - -

Results

-phm2if.exe - 0 error(s), 0 warning(s) -

---------------------Configuration: phm2pj - Win32 Release-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP27.tmp" with contents -[ -wx.lib libctsim.lib zlib.lib comctl32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libpng.lib /nologo /subsystem:console /incremental:no /pdb:"Release/phm2pj.pdb" /machine:I386 /out:"Release/phm2pj.exe" /libpath:"..\libctsim\Release" /libpath:"..\..\..\lpng108\msvc\win32\libpng\lib" /libpath:"..\..\..\wx2\lib" /libpath:"..\..\..\lpng108\msvc\win32\zlib\lib" -".\Release\phm2pj.obj" -"\ctsim-2.0.6\msvc\libctsim\Release\libctsim.lib" -] -Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP27.tmp" -

Output Window

-Linking... -LINK : warning LNK4089: all references to "ADVAPI32.dll" discarded by /OPT:REF -LINK : warning LNK4089: all references to "WSOCK32.dll" discarded by /OPT:REF - - - -

Results

-phm2pj.exe - 0 error(s), 2 warning(s) -

---------------------Configuration: phm2pj - Win32 Debug-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP29.tmp" with contents -[ -comctl32.lib winmm.lib rpcrt4.lib ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../libctsim/Debug/libctsim.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\..\lpng108\msvc\win32\libpng\lib_dbg\libpng.lib ..\..\..\lpng108\msvc\win32\zlib\lib_dbg\zlib.lib libcmtd.lib ..\..\..\fftw-2.1.3\Win32\FFTW2st\Debug\FFTW2st.lib ..\..\..\fftw-2.1.3\Win32\RFFTW2st\Debug\RFFTW2st.lib ../../../wx2/lib/wxd.lib /nologo /subsystem:console /incremental:yes /pdb:"Debug/phm2pj.pdb" /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrtd.lib" /out:"Debug/phm2pj.exe" /pdbtype:sept /libpath:"..\..\..\lpng108\msvc\win32\libpng\lib" /libpath:"..\..\..\lpng108\msvc\win32\zlib\lib" -".\Debug\phm2pj.obj" -"\ctsim-2.0.6\msvc\libctsim\Debug\libctsim.lib" -] -Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP29.tmp" -

Output Window

-Linking... - - - -

Results

-phm2pj.exe - 0 error(s), 0 warning(s) -

---------------------Configuration: pj2if - Win32 Release-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP2A.tmp" with contents -[ -wx.lib libctsim.lib zlib.lib comctl32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libpng.lib /nologo /subsystem:console /incremental:no /pdb:"Release/pj2if.pdb" /machine:I386 /out:"Release/pj2if.exe" /libpath:"..\libctsim\Release" /libpath:"..\..\..\lpng108\msvc\win32\libpng\lib" /libpath:"..\..\..\wx2\lib" /libpath:"..\..\..\lpng108\msvc\win32\zlib\lib" -".\Release\pj2if.obj" -"\ctsim-2.0.6\msvc\libctsim\Release\libctsim.lib" -"\wx2\lib\wx.lib" -] -Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP2A.tmp" -

Output Window

-Linking... -LINK : warning LNK4089: all references to "ADVAPI32.dll" discarded by /OPT:REF -LINK : warning LNK4089: all references to "WSOCK32.dll" discarded by /OPT:REF - - - -

Results

-pj2if.exe - 0 error(s), 2 warning(s) -

---------------------Configuration: pj2if - Win32 Debug-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP2C.tmp" with contents -[ -comctl32.lib winmm.lib rpcrt4.lib ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../libctsim/Debug/libctsim.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\..\lpng108\msvc\win32\libpng\lib_dbg\libpng.lib ..\..\..\lpng108\msvc\win32\zlib\lib_dbg\zlib.lib libcmtd.lib ..\..\..\fftw-2.1.3\Win32\FFTW2st\Debug\FFTW2st.lib ..\..\..\fftw-2.1.3\Win32\RFFTW2st\Debug\RFFTW2st.lib ../../../wx2/lib/wxd.lib /nologo /subsystem:console /incremental:yes /pdb:"Debug/pj2if.pdb" /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrtd.lib" /out:"Debug/pj2if.exe" /pdbtype:sept /libpath:"..\..\..\lpng108\msvc\win32\libpng\lib" /libpath:"..\..\..\lpng108\msvc\win32\zlib\lib" -".\Debug\pj2if.obj" -"\ctsim-2.0.6\msvc\libctsim\Debug\libctsim.lib" -"\wx2\lib\wxd.lib" -] -Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP2C.tmp" -

Output Window

-Linking... - - - -

Results

-pj2if.exe - 0 error(s), 0 warning(s) -

---------------------Configuration: pjinfo - Win32 Release-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP2D.tmp" with contents -[ -wx.lib libctsim.lib zlib.lib comctl32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libpng.lib /nologo /subsystem:console /incremental:no /pdb:"Release/pjinfo.pdb" /machine:I386 /out:"Release/pjinfo.exe" /libpath:"..\libctsim\Release" /libpath:"..\..\..\lpng108\msvc\win32\libpng\lib" /libpath:"..\..\..\wx2\lib" /libpath:"..\..\..\lpng108\msvc\win32\zlib\lib" -".\Release\pjinfo.obj" -"\fftw-2.1.3\Win32\FFTW2st\Release\FFTW2st.lib" -"\ctsim-2.0.6\msvc\libctsim\Release\libctsim.lib" -"\fftw-2.1.3\Win32\RFFTW2st\Release\RFFTW2st.lib" -"\wx2\lib\wx.lib" -] -Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP2D.tmp" -

Output Window

-Linking... -LINK : warning LNK4089: all references to "ADVAPI32.dll" discarded by /OPT:REF -LINK : warning LNK4089: all references to "WSOCK32.dll" discarded by /OPT:REF - - - -

Results

-pjinfo.exe - 0 error(s), 2 warning(s) -

---------------------Configuration: pjinfo - Win32 Debug-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP2F.tmp" with contents -[ -comctl32.lib winmm.lib rpcrt4.lib ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../libctsim/Debug/libctsim.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\..\lpng108\msvc\win32\libpng\lib_dbg\libpng.lib ..\..\..\lpng108\msvc\win32\zlib\lib_dbg\zlib.lib libcmtd.lib ..\..\..\fftw-2.1.3\Win32\FFTW2st\Debug\FFTW2st.lib ..\..\..\fftw-2.1.3\Win32\RFFTW2st\Debug\RFFTW2st.lib ../../../wx2/lib/wxd.lib /nologo /subsystem:console /incremental:yes /pdb:"Debug/pjinfo.pdb" /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrtd.lib" /out:"Debug/pjinfo.exe" /pdbtype:sept /libpath:"..\..\..\lpng108\msvc\win32\libpng\lib" /libpath:"..\..\..\lpng108\msvc\win32\zlib\lib" -".\Debug\pjinfo.obj" -"\fftw-2.1.3\Win32\FFTW2st\Debug\FFTW2st.lib" -"\ctsim-2.0.6\msvc\libctsim\Debug\libctsim.lib" -"\fftw-2.1.3\Win32\RFFTW2st\Debug\RFFTW2st.lib" -"\wx2\lib\wxd.lib" -] -Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP2F.tmp" -

Output Window

-Linking... - - - -

Results

-pjinfo.exe - 0 error(s), 0 warning(s) -

---------------------Configuration: pjrec - Win32 Release-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP30.tmp" with contents -[ -wx.lib libctsim.lib zlib.lib comctl32.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libpng.lib /nologo /subsystem:console /incremental:no /pdb:"Release/pjrec.pdb" /machine:I386 /out:"Release/pjrec.exe" /libpath:"..\libctsim\Release" /libpath:"..\..\..\lpng108\msvc\win32\libpng\lib" /libpath:"..\..\..\wx2\lib" /libpath:"..\..\..\lpng108\msvc\win32\zlib\lib" -".\Release\pjrec.obj" -"\fftw-2.1.3\Win32\FFTW2st\Release\FFTW2st.lib" -"\fftw-2.1.3\Win32\RFFTW2st\Release\RFFTW2st.lib" -"\wx2\lib\wx.lib" -"\ctsim-2.0.6\msvc\libctsim\Release\libctsim.lib" -] -Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP30.tmp" -

Output Window

-Linking... -LINK : warning LNK4089: all references to "ADVAPI32.dll" discarded by /OPT:REF -LINK : warning LNK4089: all references to "WSOCK32.dll" discarded by /OPT:REF - - - -

Results

-pjrec.exe - 0 error(s), 2 warning(s) -

---------------------Configuration: pjrec - Win32 Debug-------------------- -

-

Command Lines

-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP32.tmp" with contents -[ -comctl32.lib winmm.lib rpcrt4.lib ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../libctsim/Debug/libctsim.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\..\lpng108\msvc\win32\libpng\lib_dbg\libpng.lib ..\..\..\lpng108\msvc\win32\zlib\lib_dbg\zlib.lib libcmtd.lib ..\..\..\fftw-2.1.3\Win32\FFTW2st\Debug\FFTW2st.lib ..\..\..\fftw-2.1.3\Win32\RFFTW2st\Debug\RFFTW2st.lib ../../../wx2/lib/wxd.lib /nologo /subsystem:console /incremental:yes /pdb:"Debug/pjrec.pdb" /debug /machine:I386 /nodefaultlib:"libcd.lib" /nodefaultlib:"libcid.lib" /nodefaultlib:"msvcrtd.lib" /out:"Debug/pjrec.exe" /pdbtype:sept /libpath:"..\..\..\lpng108\msvc\win32\libpng\lib" /libpath:"..\..\..\lpng108\msvc\win32\zlib\lib" -".\Debug\pjrec.obj" -"\fftw-2.1.3\Win32\FFTW2st\Debug\FFTW2st.lib" -"\fftw-2.1.3\Win32\RFFTW2st\Debug\RFFTW2st.lib" -"\wx2\lib\wxd.lib" -"\ctsim-2.0.6\msvc\libctsim\Debug\libctsim.lib" -] -Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP32.tmp" -

Output Window

-Linking... - - - -

Results

-pjrec.exe - 0 error(s), 0 warning(s) -

---------------------Configuration: wxvc - Win32 LIB Debug-------------------- -

-

Command Lines

- - - -

Results

-wxd.lib - 0 error(s), 0 warning(s)
diff --git a/msvc/libctsim/libctsim.dsp b/msvc/libctsim/libctsim.dsp index 25b8d8f..9f377be 100644 --- a/msvc/libctsim/libctsim.dsp +++ b/msvc/libctsim/libctsim.dsp @@ -147,6 +147,10 @@ SOURCE=..\..\libctsim\phantom.cpp # End Source File # Begin Source File +SOURCE=..\..\libctsupport\plotfile.cpp +# End Source File +# Begin Source File + SOURCE=..\..\libctgraphics\pol.cpp # End Source File # Begin Source File @@ -243,6 +247,10 @@ SOURCE=..\..\include\phantom.h # End Source File # Begin Source File +SOURCE=..\..\include\plotfile.h +# End Source File +# Begin Source File + SOURCE=..\..\include\pol.h # End Source File # Begin Source File diff --git a/src/ctsim.cpp b/src/ctsim.cpp index 556f431..0c09001 100644 --- a/src/ctsim.cpp +++ b/src/ctsim.cpp @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: ctsim.cpp,v 1.17 2000/12/17 22:30:34 kevin Exp $ +** $Id: ctsim.cpp,v 1.18 2000/12/19 21:37:51 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -61,7 +61,7 @@ #endif #endif -static const char* rcsindent = "$Id: ctsim.cpp,v 1.17 2000/12/17 22:30:34 kevin Exp $"; +static const char* rcsindent = "$Id: ctsim.cpp,v 1.18 2000/12/19 21:37:51 kevin Exp $"; class CTSimApp* theApp = NULL; @@ -128,6 +128,8 @@ CTSimApp::OnInit() new wxDocTemplate (m_docManager, "PhantomFile", "*.phm", "", "phm", "Phantom doc", "Phantom View", CLASSINFO(PhantomDocument), CLASSINFO(PhantomView)); + new wxDocTemplate (m_docManager, "PlotFile", "*.plt", "", "plot", "Plot doc", "Plot View", CLASSINFO(PlotFileDocument), CLASSINFO(PlotFileView)); + //// Create the main frame window m_pFrame = new MainFrame(m_docManager, (wxFrame *) NULL, -1, "CTSim", wxPoint(0, 0), wxSize(500, 400), wxDEFAULT_FRAME_STYLE); diff --git a/src/ctsim.h b/src/ctsim.h index 976de33..220a540 100644 --- a/src/ctsim.h +++ b/src/ctsim.h @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: ctsim.h,v 1.8 2000/12/16 06:12:47 kevin Exp $ +** $Id: ctsim.h,v 1.9 2000/12/19 21:37:51 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -131,7 +131,9 @@ enum { IFMENU_FILE_PROPERTIES, PJMENU_FILE_PROPERTIES, PHMMENU_FILE_PROPERTIES, - PJMENU_PROCESS_RECONSTRUCT, + PJMENU_PROCESS_RECONSTRUCT, + IFMENU_PLOT_ROW, + IFMENU_PLOT_COL, IFMENU_VIEW_SCALE_AUTO, IFMENU_VIEW_SCALE_MINMAX, PHMMENU_PROCESS_RASTERIZE, diff --git a/src/docs.cpp b/src/docs.cpp index 179cc89..c3fd489 100644 --- a/src/docs.cpp +++ b/src/docs.cpp @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: docs.cpp,v 1.6 2000/12/18 09:55:22 kevin Exp $ +** $Id: docs.cpp,v 1.7 2000/12/19 21:37:51 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -196,3 +196,46 @@ void PhantomDocument::Modify(bool mod) wxDocument::Modify(mod); } + +// PlotFileDocument + +IMPLEMENT_DYNAMIC_CLASS(PlotFileDocument, wxDocument) + +bool PlotFileDocument::OnOpenDocument(const wxString& filename) +{ + if (filename == "untitled.plt") { + wxString untitledFilename = theApp->getUntitledFilename(); + SetFilename (untitledFilename, true); + } else { + if (! m_plot.fileRead (filename.c_str())) { + *theApp->getLog() << "Unable to read plot file " << filename << "\n"; + return false; + } + *theApp->getLog() << "Read plot file " << filename << "\n"; + SetFilename(filename, true); + } + Modify(false); + UpdateAllViews(); + PlotFileView* ifView = dynamic_cast(GetFirstView()); + if (ifView) + ifView->OnUpdate(ifView, NULL); + + return true; +} + +bool PlotFileDocument::OnCloseDocument () +{ + bool bReturn = wxDocument::OnCloseDocument(); + return bReturn; +} + +bool PlotFileDocument::IsModified(void) const +{ + return wxDocument::IsModified(); +} + +void PlotFileDocument::Modify(bool mod) +{ + wxDocument::Modify(mod); +} + diff --git a/src/docs.h b/src/docs.h index e19f962..5afcf63 100644 --- a/src/docs.h +++ b/src/docs.h @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: docs.h,v 1.5 2000/09/07 01:28:33 kevin Exp $ +** $Id: docs.h,v 1.6 2000/12/19 21:37:51 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -48,17 +48,17 @@ private: public: virtual bool OnSaveDocument (const wxString& filename); virtual bool OnOpenDocument (const wxString& filename); - virtual bool IsModified (void) const; + virtual bool IsModified () const; virtual bool OnCloseDocument (); virtual void Modify (bool mod); - ImageFileDocument (void) {} - ~ImageFileDocument (void) {} + ImageFileDocument () {} + ~ImageFileDocument () {} - const ImageFile& getImageFile(void) const + const ImageFile& getImageFile() const { return m_imageFile; } - ImageFile& getImageFile(void) + ImageFile& getImageFile() { return m_imageFile; } }; @@ -72,17 +72,17 @@ private: public: virtual bool OnSaveDocument (const wxString& filename); virtual bool OnOpenDocument (const wxString& filename); - virtual bool IsModified (void) const; + virtual bool IsModified () const; virtual bool OnCloseDocument (); virtual void Modify (bool mod); - ProjectionFileDocument (void) {} - ~ProjectionFileDocument (void) {} + ProjectionFileDocument () {} + ~ProjectionFileDocument () {} - const Projections& getProjections (void) const + const Projections& getProjections () const { return m_projectionFile; } - Projections& getProjections (void) + Projections& getProjections () { return m_projectionFile; } }; @@ -97,28 +97,58 @@ private: wxString m_namePhantom; public: - PhantomDocument (void) + PhantomDocument () : m_idPhantom(Phantom::PHM_INVALID) {} - ~PhantomDocument (void) + ~PhantomDocument () {} - const int getPhantomID (void) const + const int getPhantomID () const { return m_idPhantom; } - const wxString& getPhantomName (void) const + const wxString& getPhantomName () const { return m_namePhantom; } - const Phantom& getPhantom (void) const + const Phantom& getPhantom () const { return m_phantom; } - Phantom& getPhantom (void) + Phantom& getPhantom () { return m_phantom; } virtual bool OnOpenDocument (const wxString& filename); virtual bool OnCloseDocument (); - virtual bool IsModified (void) const; + virtual bool IsModified () const; + virtual void Modify (bool mod); +}; + +class PlotFileDocument: public wxDocument +{ + DECLARE_DYNAMIC_CLASS(PlotFileDocument) + +private: + PlotFile m_plot; + wxString m_namePlot; + +public: + PlotFileDocument () + {} + + ~PlotFileDocument () + {} + + const wxString& getPlotName () const + { return m_namePlot; } + + const PlotFile& getPlotFile () const + { return m_plot; } + + PlotFile& getPlot () + { return m_plot; } + + virtual bool OnOpenDocument (const wxString& filename); + virtual bool OnCloseDocument (); + virtual bool IsModified () const; virtual void Modify (bool mod); }; diff --git a/src/views.cpp b/src/views.cpp index f150237..81eb051 100644 --- a/src/views.cpp +++ b/src/views.cpp @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: views.cpp,v 1.30 2000/12/18 09:31:26 kevin Exp $ +** $Id: views.cpp,v 1.31 2000/12/19 21:37:51 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -71,7 +71,9 @@ END_EVENT_TABLE() ImageFileCanvas::ImageFileCanvas (ImageFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style) : wxScrolledWindow(frame, -1, pos, size, style) { - m_pView = v; + m_pView = v; + m_xCursor = -1; + m_yCursor = -1; } void @@ -79,8 +81,35 @@ ImageFileCanvas::OnDraw(wxDC& dc) { if (m_pView) m_pView->OnDraw(& dc); +} + +void +ImageFileCanvas::DrawRubberBandCursor (wxDC& dc, int x, int y) +{ + const ImageFile& rIF = m_pView->GetDocument()->getImageFile(); + ImageFileArrayConst v = rIF.getArray(); + int nx = rIF.nx(); + int ny = rIF.ny(); + + dc.SetLogicalFunction (wxINVERT); + dc.SetPen (*wxGREEN_PEN); + dc.DrawLine (0, y, nx, y); + dc.DrawLine (x, 0, x, ny); + dc.SetLogicalFunction (wxCOPY); +} + +bool +ImageFileCanvas::GetCurrentCursor (int& x, int& y) +{ + x = m_xCursor; + y = m_yCursor; + + if (m_xCursor >= 0 && m_yCursor >= 0) + return true; + else + return false; } - + void ImageFileCanvas::OnMouseEvent(wxMouseEvent& event) { @@ -91,24 +120,41 @@ ImageFileCanvas::OnMouseEvent(wxMouseEvent& event) PrepareDC(dc); wxPoint pt(event.GetLogicalPosition(dc)); - - if (event.LeftIsDown()) { - const ImageFile& rIF = m_pView->GetDocument()->getImageFile(); - ImageFileArrayConst v = rIF.getArray(); - int nx = rIF.nx(); - int ny = rIF.ny(); - - if (pt.x >= 0 && pt.x < nx && pt.y >= 0 && pt.y < ny) { - std::ostringstream os; - os << "Image value (" << pt.x << "," << pt.y << ") = " << v[pt.x][ny - 1 - pt.y] << "\n"; - *theApp->getLog() << os.str().c_str(); - } else - *theApp->getLog() << "Mouse out of image range (" << pt.x << "," << pt.y << ")\n"; - - } + + if (event.RightIsDown()) { + const ImageFile& rIF = m_pView->GetDocument()->getImageFile(); + ImageFileArrayConst v = rIF.getArray(); + int nx = rIF.nx(); + int ny = rIF.ny(); + + if (pt.x >= 0 && pt.x < nx && pt.y >= 0 && pt.y < ny) { + std::ostringstream os; + os << "Image value (" << pt.x << "," << pt.y << ") = " << v[pt.x][ny - 1 - pt.y] << "\n"; + *theApp->getLog() << os.str().c_str(); + } else + *theApp->getLog() << "Mouse out of image range (" << pt.x << "," << pt.y << ")\n"; + } + else if (event.LeftIsDown()) { + const ImageFile& rIF = m_pView->GetDocument()->getImageFile(); + ImageFileArrayConst v = rIF.getArray(); + int nx = rIF.nx(); + int ny = rIF.ny(); + + if (pt.x >= 0 && pt.x < nx && pt.y >= 0 && pt.y < ny) { + if (m_xCursor >= 0 && m_yCursor >= 0) { + DrawRubberBandCursor (dc, m_xCursor, m_yCursor); + } + DrawRubberBandCursor (dc, pt.x, pt.y); + m_xCursor = pt.x; + m_yCursor = pt.y; + std::ostringstream os; + os << "Selected column" << pt.x << " and row" << pt.y << "\n"; + *theApp->getLog() << os.str().c_str(); + } else + *theApp->getLog() << "Mouse out of image range (" << pt.x << "," << pt.y << ")\n"; + } } - // ImageFileView IMPLEMENT_DYNAMIC_CLASS(ImageFileView, wxView) @@ -116,7 +162,9 @@ IMPLEMENT_DYNAMIC_CLASS(ImageFileView, wxView) BEGIN_EVENT_TABLE(ImageFileView, wxView) EVT_MENU(IFMENU_FILE_PROPERTIES, ImageFileView::OnProperties) EVT_MENU(IFMENU_VIEW_SCALE_MINMAX, ImageFileView::OnScaleMinMax) -EVT_MENU(IFMENU_VIEW_SCALE_AUTO, ImageFileView::OnScaleAuto) +EVT_MENU(IFMENU_VIEW_SCALE_AUTO, ImageFileView::OnScaleAuto) +EVT_MENU(IFMENU_PLOT_ROW, ImageFileView::OnPlotRow) +EVT_MENU(IFMENU_PLOT_COL, ImageFileView::OnPlotCol) END_EVENT_TABLE() ImageFileView::ImageFileView(void) @@ -229,14 +277,19 @@ ImageFileView::CreateChildFrame(wxDocument *doc, wxView *view) wxMenu *view_menu = new wxMenu; view_menu->Append(IFMENU_VIEW_SCALE_MINMAX, "Display Scale &Set..."); view_menu->Append(IFMENU_VIEW_SCALE_AUTO, "Display Scale &Auto..."); - + + wxMenu *plot_menu = new wxMenu; + plot_menu->Append (IFMENU_PLOT_ROW, "Plot &Row"); + plot_menu->Append (IFMENU_PLOT_COL, "Plot &Column"); + wxMenu *help_menu = new wxMenu; help_menu->Append(MAINMENU_HELP_ABOUT, "&About"); wxMenuBar *menu_bar = new wxMenuBar; menu_bar->Append(file_menu, "&File"); - menu_bar->Append(view_menu, "&View"); + menu_bar->Append(view_menu, "&View"); + menu_bar->Append(plot_menu, "&Plot"); menu_bar->Append(help_menu, "&Help"); subframe->SetMenuBar(menu_bar); @@ -277,6 +330,10 @@ ImageFileView::OnDraw (wxDC* dc) { if (m_bitmap.Ok()) dc->DrawBitmap(m_bitmap, 0, 0, false); + + int xCursor, yCursor; + if (m_canvas->GetCurrentCursor (xCursor, yCursor)) + m_canvas->DrawRubberBandCursor (*dc, xCursor, yCursor); } @@ -317,7 +374,7 @@ ImageFileView::OnUpdate (wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) ) ySize = clamp (ySize, 0, 800); m_frame->SetClientSize (xSize, ySize); m_canvas->SetScrollbars(20, 20, nx/20, ny/20); - m_canvas->SetBackgroundColour(*wxWHITE); + m_canvas->SetBackgroundColour(*wxWHITE); } if (m_canvas) @@ -346,8 +403,99 @@ ImageFileView::OnClose (bool deleteWindow) } return true; } + +#include "wx/plot.h" + +class VectorPlotCurve : wxPlotCurve { +private: + int m_nPoints; + std::vector m_points; + +public: + VectorPlotCurve (const double* const points, int n, double minVal, double maxVal) + : wxPlotCurve (minVal, minVal, maxVal) + { + for (int i = 0; i < n; i++) + m_points.push_back(points[i]); + } + + wxInt32 GetStartX () + { return 0; } + + wxInt32 GetEndX () + { return m_nPoints - 1; } + + double GetY (wxInt32 x) + { return m_points[x]; } +}; + - +void +ImageFileView::OnPlotRow (wxCommandEvent& event) +{ + int xCursor, yCursor; + if (! m_canvas->GetCurrentCursor (xCursor, yCursor)) { + // os << "No row selected. Please use left mouse button on image to select row\n"; + return; + } + + const ImageFile& rIF = dynamic_cast(GetDocument())->getImageFile(); + ImageFileArrayConst v = rIF.getArray(); + int nx = rIF.nx(); + int ny = rIF.ny(); + + if (v != NULL && yCursor < ny) { + double* pVec = new double [nx]; + double minVal = v[0][yCursor]; + double maxVal = minVal; + for (int i = 0; i < nx; i++) { + pVec[i] = v[i][yCursor]; + if (pVec[i] < minVal) + minVal = pVec[i]; + else if (pVec[i] > maxVal) + maxVal = pVec[i]; + } + VectorPlotCurve* plotCurve = new VectorPlotCurve (pVec, nx, minVal, maxVal); + wxPlotWindow* plotWindow = new wxPlotWindow (m_canvas, NULL, wxPoint(0,0), wxSize(500,300)); + plotWindow->Add (reinterpret_cast(plotCurve)); + plotWindow->Enable(TRUE); + plotWindow->Show(); + } + +} + +void +ImageFileView::OnPlotCol (wxCommandEvent& event) +{ + int xCursor, yCursor; + if (! m_canvas->GetCurrentCursor (xCursor, yCursor)) { + // os << "No column selected. Please use left mouse button on image to select column\n"; + return; + } + + const ImageFile& rIF = dynamic_cast(GetDocument())->getImageFile(); + ImageFileArrayConst v = rIF.getArray(); + int nx = rIF.nx(); + int ny = rIF.ny(); + + if (v != NULL && xCursor < nx) { + double* pVec = new double [ny]; + double minVal = v[xCursor][0]; + double maxVal = minVal; + for (int i = 0; i < ny; i++) { + if (minVal < v[xCursor][i]) + minVal = v[xCursor][i]; + else if (maxVal > v[xCursor][i]) + maxVal = v[xCursor][i]; + pVec[i] = v[xCursor][i]; + } + + VectorPlotCurve* plotCurve = new VectorPlotCurve (pVec, ny, minVal, maxVal); + wxPlotWindow plotWindow (m_canvas, NULL, wxPoint(0,0), wxSize(500,300)); + plotWindow.Add (reinterpret_cast(plotCurve)); + } +} + // PhantomCanvas @@ -975,3 +1123,173 @@ ProjectionFileView::OnClose (bool deleteWindow) return true; } + + +// PlotFileCanvas + +PlotFileCanvas::PlotFileCanvas (PlotFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style) +: wxScrolledWindow(frame, -1, pos, size, style) +{ + m_pView = v; +} + +void +PlotFileCanvas::OnDraw(wxDC& dc) +{ + if (m_pView) + m_pView->OnDraw(& dc); +} + +// PlotFileView + +IMPLEMENT_DYNAMIC_CLASS(PlotFileView, wxView) + +BEGIN_EVENT_TABLE(PlotFileView, wxView) +EVT_MENU(PJMENU_FILE_PROPERTIES, PlotFileView::OnProperties) +END_EVENT_TABLE() + +PlotFileView::PlotFileView(void) +: wxView(), m_canvas(NULL), m_frame(NULL) +{ +} + +PlotFileView::~PlotFileView(void) +{ +} + +void +PlotFileView::OnProperties (wxCommandEvent& event) +{ + const PlotFile& rProj = GetDocument()->getPlot(); + std::ostringstream os; + os << "Columns: " << rProj.getNumColumns() << ", Records: " << rProj.getNumRecords() << "\n"; + *theApp->getLog() << os.str().c_str(); + wxMessageDialog dialogMsg (m_frame, os.str().c_str(), "Plot File Properties", wxOK | wxICON_INFORMATION); + dialogMsg.ShowModal(); +} + + +PlotFileCanvas* +PlotFileView::CreateCanvas (wxView *view, wxFrame *parent) +{ + PlotFileCanvas* pCanvas; + int width, height; + parent->GetClientSize(&width, &height); + + pCanvas = new PlotFileCanvas (dynamic_cast(view), parent, wxPoint(0, 0), wxSize(width, height), 0); + + pCanvas->SetBackgroundColour(*wxWHITE); + pCanvas->Clear(); + + return pCanvas; +} + +wxFrame* +PlotFileView::CreateChildFrame(wxDocument *doc, wxView *view) +{ + wxDocChildFrame *subframe = new wxDocChildFrame(doc, view, theApp->getMainFrame(), -1, "Plot Frame", wxPoint(10, 10), wxSize(500, 300), wxDEFAULT_FRAME_STYLE); + + wxMenu *file_menu = new wxMenu; + + file_menu->Append(MAINMENU_FILE_CREATE_PHANTOM, "Cr&eate Phantom..."); + file_menu->Append(wxID_OPEN, "&Open..."); + file_menu->Append(wxID_SAVE, "&Save"); + file_menu->Append(wxID_SAVEAS, "Save &As..."); + file_menu->Append(wxID_CLOSE, "&Close"); + + file_menu->AppendSeparator(); + file_menu->Append(PJMENU_FILE_PROPERTIES, "P&roperties"); + + file_menu->AppendSeparator(); + file_menu->Append(wxID_PRINT, "&Print..."); + file_menu->Append(wxID_PRINT_SETUP, "Print &Setup..."); + file_menu->Append(wxID_PREVIEW, "Print Pre&view"); + + wxMenu *help_menu = new wxMenu; + help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents"); + help_menu->AppendSeparator(); + help_menu->Append(MAINMENU_HELP_ABOUT, "&About"); + + wxMenuBar *menu_bar = new wxMenuBar; + + menu_bar->Append(file_menu, "&File"); + menu_bar->Append(help_menu, "&Help"); + + subframe->SetMenuBar(menu_bar); + + subframe->Centre(wxBOTH); + + return subframe; +} + + +bool +PlotFileView::OnCreate(wxDocument *doc, long WXUNUSED(flags) ) +{ + m_frame = CreateChildFrame(doc, this); + SetFrame(m_frame); + + int width, height; + m_frame->GetClientSize(&width, &height); + m_frame->SetTitle ("Plot File"); + m_canvas = CreateCanvas (this, m_frame); + +#ifdef __X__ + int x, y; // X requires a forced resize + m_frame->GetSize(&x, &y); + m_frame->SetSize(-1, -1, x, y); +#endif + + m_frame->Show(true); + Activate(true); + + return true; +} + +void +PlotFileView::OnDraw (wxDC* dc) +{ + if (m_bitmap.Ok()) + dc->DrawBitmap (m_bitmap, 0, 0, false); +} + + +void +PlotFileView::OnUpdate(wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) ) +{ + const PlotFile& rPlot = GetDocument()->getPlotFile(); + const int iNColumns = rPlot.getNumColumns(); + const int iNRecords = rPlot.getNumRecords(); + if (iNColumns > 0 && iNRecords > 0) { +// int xSize, ySize; +// m_frame->SetClientSize (xSize, ySize); +// m_canvas->SetScrollbars (20, 20, nDet/20, nView/20); + } + + if (m_canvas) + m_canvas->Refresh(); +} + +bool +PlotFileView::OnClose (bool deleteWindow) +{ + if (!GetDocument()->Close()) + return false; + + m_canvas->Clear(); + m_canvas->m_pView = NULL; + m_canvas = NULL; + wxString s(wxTheApp->GetAppName()); + if (m_frame) + m_frame->SetTitle(s); + SetFrame(NULL); + + Activate(false); + + if (deleteWindow) { + delete m_frame; + return true; + } + return true; +} + diff --git a/src/views.h b/src/views.h index 9fb14a1..34d140d 100644 --- a/src/views.h +++ b/src/views.h @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: views.h,v 1.11 2000/12/18 09:31:26 kevin Exp $ +** $Id: views.h,v 1.12 2000/12/19 21:37:51 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -67,6 +67,8 @@ public: void OnProperties (wxCommandEvent& event); void OnScaleAuto (wxCommandEvent& event); void OnScaleMinMax (wxCommandEvent& event); + void OnPlotRow (wxCommandEvent& event); + void OnPlotCol (wxCommandEvent& event); wxFrame* getFrame() { return m_frame; } @@ -79,12 +81,19 @@ public: class ImageFileCanvas: public wxScrolledWindow { +private: + int m_xCursor; + int m_yCursor; + public: ImageFileView* m_pView; ImageFileCanvas (ImageFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style); virtual void OnDraw(wxDC& dc); void OnMouseEvent(wxMouseEvent& event); + + void DrawRubberBandCursor (wxDC& dc, int x, int y); + bool GetCurrentCursor (int& x, int& y); DECLARE_EVENT_TABLE() }; @@ -196,6 +205,62 @@ public: }; +class PlotFileCanvas; +class PlotFileView : public wxView +{ + DECLARE_DYNAMIC_CLASS(PlotFileView) + + wxMemoryDC m_memoryDC; + wxBitmap m_bitmap; + +private: + PlotFileCanvas *CreateCanvas(wxView *view, wxFrame *parent); + wxFrame *CreateChildFrame(wxDocument *doc, wxView *view); + + PlotFileCanvas *m_canvas; + wxFrame *m_frame; + + int m_iDefaultNX; + int m_iDefaultNY; + int m_iDefaultFilter; + int m_iDefaultFilterMethod; + double m_dDefaultFilterParam; + int m_iDefaultFilterGeneration; + int m_iDefaultZeropad; + int m_iDefaultInterpolation; + int m_iDefaultInterpParam; + int m_iDefaultBackprojector; + int m_iDefaultTrace; + +public: + PlotFileView(void); + virtual ~PlotFileView(void); + + bool OnCreate(wxDocument *doc, long flags); + void OnDraw(wxDC* dc); + void OnUpdate(wxView *sender, wxObject *hint = NULL); + bool OnClose (bool deleteWindow = true); + void OnProperties (wxCommandEvent& event); + + wxFrame* getFrame () + { return m_frame; } + + PlotFileDocument* GetDocument(void) + { return dynamic_cast(wxView::GetDocument()); } + + DECLARE_EVENT_TABLE() +}; + +class PlotFileCanvas: public wxScrolledWindow +{ +public: + PlotFileView* m_pView; + + PlotFileCanvas (PlotFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style); + virtual void OnDraw(wxDC& dc); +}; + + #endif diff --git a/tools/if2.cpp b/tools/if2.cpp index ce6d3da..db92c22 100644 --- a/tools/if2.cpp +++ b/tools/if2.cpp @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: if2.cpp,v 1.2 2000/12/18 13:39:15 kevin Exp $ +** $Id: if2.cpp,v 1.3 2000/12/19 21:37:51 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -45,7 +45,7 @@ static struct option my_options[] = {0, 0, 0, 0} }; -static const char* g_szIdStr = "$Id: if2.cpp,v 1.2 2000/12/18 13:39:15 kevin Exp $"; +static const char* g_szIdStr = "$Id: if2.cpp,v 1.3 2000/12/19 21:37:51 kevin Exp $"; void if2_usage (const char *program) @@ -55,7 +55,7 @@ if2_usage (const char *program) std::cout << std::endl; std::cout << " infile1 Name of first input IF file\n"; std::cout << " infile2 Name of second input IF file\n"; - std::cout << " outfile Name of output IF file\n"; + std::cout << " outfile Name of output Image or Plot file\n"; std::cout << " --add Add images\n"; std::cout << " --sub Subtract image 2 from image 1\n"; std::cout << " --mul Multiply images\n"; @@ -75,13 +75,14 @@ if2_main (int argc, char *const argv[]) ImageFile* pim_out = NULL; std::string in_file1; std::string in_file2; - std::string out_file; + std::string strOutFile; int opt_verbose = 0; int opt_add = 0; int opt_sub = 0; int opt_mul = 0; int opt_comp = 0; - bool opt_outputFile = false; + bool opt_bImageOutputFile = false; + bool opt_bPlotOutputFile = false; int opt_rowPlot = -1; int opt_columnPlot = -1; Timer timerProgram; @@ -96,27 +97,29 @@ if2_main (int argc, char *const argv[]) switch (c) { case O_ADD: opt_add = 1; - opt_outputFile = true; + opt_bImageOutputFile = true; break; case O_SUB : opt_sub = 1; - opt_outputFile = true; + opt_bImageOutputFile = true; break; case O_MUL: opt_mul = 1; - opt_outputFile = true; + opt_bImageOutputFile = true; break; case O_ROW_PLOT: opt_rowPlot = strtol(optarg, &endptr, 10); if (endptr != optarg + strlen(optarg)) { if2_usage(argv[0]); } + opt_bPlotOutputFile = true; break; case O_COLUMN_PLOT: opt_columnPlot = strtol(optarg, &endptr, 10); if (endptr != optarg + strlen(optarg)) { if2_usage(argv[0]); } + opt_bPlotOutputFile = true; break; case O_COMP: opt_comp = 1; @@ -141,19 +144,19 @@ if2_main (int argc, char *const argv[]) } } - if (opt_outputFile && (optind + 3 != argc)) { + if ((opt_bImageOutputFile || opt_bPlotOutputFile) && (optind + 3 != argc)) { if2_usage(argv[0]); return (1); } - else if (! opt_outputFile && optind + 2 != argc) { + else if (! (opt_bImageOutputFile || opt_bPlotOutputFile) && optind + 2 != argc) { if2_usage(argv[0]); return (1); } in_file1 = argv[optind]; in_file2 = argv[optind + 1]; - if (opt_outputFile) - out_file = argv[optind + 2]; + if (opt_bImageOutputFile || opt_bPlotOutputFile) + strOutFile = argv[optind + 2]; pim_in1 = new ImageFile (); pim_in2 = new ImageFile (); @@ -179,7 +182,11 @@ if2_main (int argc, char *const argv[]) ImageFileArray v2 = im_in2.getArray(); ImageFileArray vout = NULL; - if (opt_outputFile) { + if (opt_bImageOutputFile && opt_bPlotOutputFile) { + sys_error (ERR_SEVERE, "Both Image and Plot output files can not be selected simultaneously"); + return (1); + } + if (opt_bImageOutputFile) { pim_out = new ImageFile (im_in1.nx(), im_in1.ny()); vout = pim_out->getArray(); } @@ -222,7 +229,8 @@ if2_main (int argc, char *const argv[]) double d, r, e; im_in1.comparativeStatistics (im_in2, d, r, e); std::cout << "d=" << d << ", r=" << r << ", e=" << e << std::endl; - } + } + int i; if (opt_columnPlot > 0) { if (opt_columnPlot >= nx || opt_columnPlot >= nx2) { @@ -232,6 +240,18 @@ if2_main (int argc, char *const argv[]) double* plot_xaxis = new double [nx]; for (i = 0; i < nx; i++) plot_xaxis[i] = i; + + PlotFile plotFile (3, nx); + + plotFile.addColumn (0, plot_xaxis); + plotFile.addColumn (1, v1[opt_columnPlot]); + plotFile.addColumn (2, v2[opt_columnPlot]); + plotFile.setTitle ("Column Plot"); + plotFile.setXLabel ("Column"); + plotFile.setYLabel ("Pixel Value"); + + plotFile.fileWrite (strOutFile.c_str()); + #if HAVE_SGP SGPDriver driver ("Column Plot"); SGP sgp (driver); @@ -247,9 +267,9 @@ if2_main (int argc, char *const argv[]) ezplot.addCurve (plot_xaxis, v2[opt_columnPlot], im_in2.ny()); ezplot.plot(); std::cout << "Press enter to continue" << flush; - cio_kb_getc(); -#endif - delete plot_xaxis; + cio_kb_getc(); +#endif + delete plot_xaxis; } if (opt_rowPlot > 0) { @@ -258,16 +278,27 @@ if2_main (int argc, char *const argv[]) return (1); } double* plot_xaxis = new double [ny]; - double* v1Row = new double [nx]; - double* v2Row = new double [nx2]; + double* v1Row = new double [ny]; + double* v2Row = new double [ny2]; for (i = 0; i < ny; i++) plot_xaxis[i] = i; - for (i = 0; i < nx; i++) + for (i = 0; i < ny; i++) v1Row[i] = v1[i][opt_rowPlot]; - for (i = 0; i < nx2; i++) + for (i = 0; i < ny2; i++) v2Row[i] = v2[i][opt_rowPlot]; + PlotFile plotFile (3, ny); + + plotFile.addColumn (0, plot_xaxis); + plotFile.addColumn (1, v1Row); + plotFile.addColumn (2, v2Row); + plotFile.setTitle ("Row Plot"); + plotFile.setXLabel ("Row"); + plotFile.setYLabel ("Pixel Value"); + + plotFile.fileWrite (strOutFile.c_str()); + #if HAVE_SGP SGPDriver driver ("Row Plot"); SGP sgp (driver); @@ -290,13 +321,13 @@ if2_main (int argc, char *const argv[]) delete v2Row; } - if (opt_outputFile) { + if (opt_bImageOutputFile) { pim_out->labelsCopy (im_in1, "if2 file 1: "); pim_out->labelsCopy (im_in2, "if2 file 2: "); pim_out->labelAdd (Array2dFileLabel::L_HISTORY, strOperation.c_str(), timerProgram.timerEnd()); - pim_out->fileWrite(out_file); + pim_out->fileWrite (strOutFile); } - + return (0); }