r306: Changes for PlotFile support
authorKevin M. Rosenberg <kevin@rosenberg.net>
Tue, 19 Dec 2000 21:37:51 +0000 (21:37 +0000)
committerKevin M. Rosenberg <kevin@rosenberg.net>
Tue, 19 Dec 2000 21:37:51 +0000 (21:37 +0000)
14 files changed:
ChangeLog
include/Makefile.am
include/ct.h
libctsupport/Makefile.am
msvc/ctsim/ctsim.dsp
msvc/ctsim/ctsim.plg
msvc/libctsim/libctsim.dsp
src/ctsim.cpp
src/ctsim.h
src/docs.cpp
src/docs.h
src/views.cpp
src/views.h
tools/if2.cpp

index c8c93f108ea1d3afa0e16f3396e35cdba38da24b..029bd14091fbea12782224c5cd0db6d9f9257e7a 100644 (file)
--- 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.
index 63726ae89a722992debfcf711842ca976dd8ce3d..97a27b503d6aae0cb709183a6634d448ee973a03 100644 (file)
@@ -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
+
 
 
 
index efe5839d2abbac88007c6b2ddfc9ede98a58961f..652df0c964f197206b07f1defefa3da51783e956 100644 (file)
@@ -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"\r
 #include "trace.h"
 
 
index 3d964e8639bd89b2a7d8137e83b00366f66c8f7d..c04f4269f240b2b2ab2a58ec2856c8864a2f2f91 100644 (file)
@@ -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
 
 
index d3934498cee4e91223f019dd3195f89d8c83cd2c..6c6220fd7550916a7f7872e673309dd163a04889 100644 (file)
@@ -158,7 +158,6 @@ SOURCE=..\..\..\wx2\include\wx\msw\wx.rc
 # ADD BASE RSC /l 0x409 /i "\wx2\include\wx\msw"\r
 # SUBTRACT BASE RSC /i "\wx2\include\wx\msw" /i "\wx2\include"\r
 # ADD RSC /l 0x409 /i "\wx2\include\wx\msw"\r
-# SUBTRACT RSC /i "\wx2\include\wx\msw" /i "\wx2\include"\r
 \r
 !ENDIF \r
 \r
index ccee352aab7b3506ddb8ae70a5ccd7e979b29e3f..e7655cfc7e67668f926fa7b7286dc663a533321b 100644 (file)
 <pre>\r
 <h1>Build Log</h1>\r
 <h3>\r
---------------------Configuration: FFTW2st - Win32 Release--------------------\r
-</h3>\r
-<h3>Command Lines</h3>\r
-\r
-\r
-\r
-<h3>Results</h3>\r
-FFTW2st.lib - 0 error(s), 0 warning(s)\r
-<h3>\r
---------------------Configuration: FFTW2st - Win32 Debug--------------------\r
-</h3>\r
-<h3>Command Lines</h3>\r
-\r
-\r
-\r
-<h3>Results</h3>\r
-FFTW2st.lib - 0 error(s), 0 warning(s)\r
-<h3>\r
---------------------Configuration: RFFTW2st - Win32 Release--------------------\r
-</h3>\r
-<h3>Command Lines</h3>\r
-\r
-\r
-\r
-<h3>Results</h3>\r
-RFFTW2st.lib - 0 error(s), 0 warning(s)\r
-<h3>\r
---------------------Configuration: RFFTW2st - Win32 Debug--------------------\r
-</h3>\r
-<h3>Command Lines</h3>\r
-\r
-\r
-\r
-<h3>Results</h3>\r
-RFFTW2st.lib - 0 error(s), 0 warning(s)\r
-<h3>\r
---------------------Configuration: ctsim - Win32 Release--------------------\r
-</h3>\r
-<h3>Command Lines</h3>\r
-\r
-\r
-\r
-<h3>Results</h3>\r
-ctsim.exe - 0 error(s), 0 warning(s)\r
-<h3>\r
---------------------Configuration: libctsim - Win32 Debug--------------------\r
-</h3>\r
-<h3>Command Lines</h3>\r
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP16.tmp" with contents\r
-[\r
-/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 \r
-"C:\ctsim-2.0.6\libctsim\backprojectors.cpp"\r
-]\r
-Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP16.tmp" \r
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP17.tmp" with contents\r
-[\r
-/nologo /out:"Debug\libctsim.lib" \r
-".\Debug\array2dfile.obj"\r
-".\Debug\backprojectors.obj"\r
-".\Debug\clip.obj"\r
-".\Debug\consoleio.obj"\r
-".\Debug\ezplot.obj"\r
-".\Debug\ezset.obj"\r
-".\Debug\ezsupport.obj"\r
-".\Debug\filter.obj"\r
-".\Debug\fnetorderstream.obj"\r
-".\Debug\getopt.obj"\r
-".\Debug\getopt1.obj"\r
-".\Debug\imagefile.obj"\r
-".\Debug\mathfuncs.obj"\r
-".\Debug\phantom.obj"\r
-".\Debug\pol.obj"\r
-".\Debug\procsignal.obj"\r
-".\Debug\projections.obj"\r
-".\Debug\reconstruct.obj"\r
-".\Debug\scanner.obj"\r
-".\Debug\sgp.obj"\r
-".\Debug\strfuncs.obj"\r
-".\Debug\syserror.obj"\r
-".\Debug\trace.obj"\r
-".\Debug\transformmatrix.obj"\r
-".\Debug\xform.obj"\r
-]\r
-Creating command line "link.exe -lib @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP17.tmp"\r
-<h3>Output Window</h3>\r
-Compiling...\r
-backprojectors.cpp\r
-Creating library...\r
-<h3>\r
 --------------------Configuration: ctsim - Win32 Debug--------------------\r
 </h3>\r
 <h3>Command Lines</h3>\r
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP18.tmp" with contents\r
-[\r
-/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 \r
-"C:\ctsim-2.0.6\src\ctsim.cpp"\r
-"C:\ctsim-2.0.6\src\dlgprojections.cpp"\r
-"C:\ctsim-2.0.6\src\dlgreconstruct.cpp"\r
-"C:\ctsim-2.0.6\src\docs.cpp"\r
-"C:\ctsim-2.0.6\src\views.cpp"\r
-]\r
-Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP18.tmp" \r
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP19.tmp" with contents\r
+Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP70.tmp" with contents\r
 [\r
 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" \r
 ".\Debug\ctsim.obj"\r
@@ -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"\r
 "\wx2\lib\wxd.lib"\r
 ]\r
-Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP19.tmp"\r
+Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP70.tmp"\r
 <h3>Output Window</h3>\r
-Compiling...\r
-ctsim.cpp\r
-dlgprojections.cpp\r
-dlgreconstruct.cpp\r
-docs.cpp\r
-views.cpp\r
 Linking...\r
-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""\r
-Creating browse info file...\r
-<h3>Output Window</h3>\r
 \r
 \r
 \r
 <h3>Results</h3>\r
 ctsim.exe - 0 error(s), 0 warning(s)\r
-<h3>\r
---------------------Configuration: if1 - Win32 Release--------------------\r
-</h3>\r
-<h3>Command Lines</h3>\r
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP1B.tmp" with contents\r
-[\r
-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" \r
-".\Release\if1.obj"\r
-"\ctsim-2.0.6\msvc\libctsim\Release\libctsim.lib"\r
-]\r
-Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP1B.tmp"\r
-<h3>Output Window</h3>\r
-Linking...\r
-\r
-\r
-\r
-<h3>Results</h3>\r
-if1.exe - 0 error(s), 0 warning(s)\r
-<h3>\r
---------------------Configuration: if1 - Win32 Debug--------------------\r
-</h3>\r
-<h3>Command Lines</h3>\r
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP1D.tmp" with contents\r
-[\r
-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" \r
-".\Debug\if1.obj"\r
-"\ctsim-2.0.6\msvc\libctsim\Debug\libctsim.lib"\r
-]\r
-Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP1D.tmp"\r
-<h3>Output Window</h3>\r
-Linking...\r
-\r
-\r
-\r
-<h3>Results</h3>\r
-if1.exe - 0 error(s), 0 warning(s)\r
-<h3>\r
---------------------Configuration: if2 - Win32 Release--------------------\r
-</h3>\r
-<h3>Command Lines</h3>\r
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP1E.tmp" with contents\r
-[\r
-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" \r
-".\Release\if2.obj"\r
-"\ctsim-2.0.6\msvc\libctsim\Release\libctsim.lib"\r
-]\r
-Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP1E.tmp"\r
-<h3>Output Window</h3>\r
-Linking...\r
-\r
-\r
-\r
-<h3>Results</h3>\r
-if2.exe - 0 error(s), 0 warning(s)\r
-<h3>\r
---------------------Configuration: if2 - Win32 Debug--------------------\r
-</h3>\r
-<h3>Command Lines</h3>\r
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP20.tmp" with contents\r
-[\r
-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" \r
-".\Debug\if2.obj"\r
-"\ctsim-2.0.6\msvc\libctsim\Debug\libctsim.lib"\r
-]\r
-Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP20.tmp"\r
-<h3>Output Window</h3>\r
-Linking...\r
-\r
-\r
-\r
-<h3>Results</h3>\r
-if2.exe - 0 error(s), 0 warning(s)\r
-<h3>\r
---------------------Configuration: ifexport - Win32 Release--------------------\r
-</h3>\r
-<h3>Command Lines</h3>\r
-\r
-\r
-\r
-<h3>Results</h3>\r
-ifexport.exe - 0 error(s), 0 warning(s)\r
-<h3>\r
---------------------Configuration: ifexport - Win32 Debug--------------------\r
-</h3>\r
-<h3>Command Lines</h3>\r
-\r
-\r
-\r
-<h3>Results</h3>\r
-ifexport.exe - 0 error(s), 0 warning(s)\r
-<h3>\r
---------------------Configuration: ifinfo - Win32 Release--------------------\r
-</h3>\r
-<h3>Command Lines</h3>\r
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP21.tmp" with contents\r
-[\r
-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" \r
-".\Release\ifinfo.obj"\r
-"\ctsim-2.0.6\msvc\libctsim\Release\libctsim.lib"\r
-]\r
-Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP21.tmp"\r
-<h3>Output Window</h3>\r
-Linking...\r
-\r
-\r
-\r
-<h3>Results</h3>\r
-ifinfo.exe - 0 error(s), 0 warning(s)\r
-<h3>\r
---------------------Configuration: ifinfo - Win32 Debug--------------------\r
-</h3>\r
-<h3>Command Lines</h3>\r
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP23.tmp" with contents\r
-[\r
-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 \r
-".\Debug\ifinfo.obj"\r
-"\ctsim-2.0.6\msvc\libctsim\Debug\libctsim.lib"\r
-]\r
-Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP23.tmp"\r
-<h3>Output Window</h3>\r
-Linking...\r
-\r
-\r
-\r
-<h3>Results</h3>\r
-ifinfo.exe - 0 error(s), 0 warning(s)\r
-<h3>\r
---------------------Configuration: libpng - Win32 LIB--------------------\r
-</h3>\r
-<h3>Command Lines</h3>\r
-\r
-\r
-\r
-<h3>Results</h3>\r
-libpng.lib - 0 error(s), 0 warning(s)\r
-<h3>\r
---------------------Configuration: libpng - Win32 LIB Debug--------------------\r
-</h3>\r
-<h3>Command Lines</h3>\r
-\r
-\r
-\r
-<h3>Results</h3>\r
-libpng.lib - 0 error(s), 0 warning(s)\r
-<h3>\r
---------------------Configuration: phm2if - Win32 Release--------------------\r
-</h3>\r
-<h3>Command Lines</h3>\r
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP24.tmp" with contents\r
-[\r
-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" \r
-".\Release\phm2if.obj"\r
-"\ctsim-2.0.6\msvc\libctsim\Release\libctsim.lib"\r
-]\r
-Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP24.tmp"\r
-<h3>Output Window</h3>\r
-Linking...\r
-LINK : warning LNK4089: all references to "ADVAPI32.dll" discarded by /OPT:REF\r
-LINK : warning LNK4089: all references to "WSOCK32.dll" discarded by /OPT:REF\r
-\r
-\r
-\r
-<h3>Results</h3>\r
-phm2if.exe - 0 error(s), 2 warning(s)\r
-<h3>\r
---------------------Configuration: phm2if - Win32 Debug--------------------\r
-</h3>\r
-<h3>Command Lines</h3>\r
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP26.tmp" with contents\r
-[\r
-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" \r
-".\Debug\phm2if.obj"\r
-"\ctsim-2.0.6\msvc\libctsim\Debug\libctsim.lib"\r
-]\r
-Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP26.tmp"\r
-<h3>Output Window</h3>\r
-Linking...\r
-\r
-\r
-\r
-<h3>Results</h3>\r
-phm2if.exe - 0 error(s), 0 warning(s)\r
-<h3>\r
---------------------Configuration: phm2pj - Win32 Release--------------------\r
-</h3>\r
-<h3>Command Lines</h3>\r
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP27.tmp" with contents\r
-[\r
-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" \r
-".\Release\phm2pj.obj"\r
-"\ctsim-2.0.6\msvc\libctsim\Release\libctsim.lib"\r
-]\r
-Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP27.tmp"\r
-<h3>Output Window</h3>\r
-Linking...\r
-LINK : warning LNK4089: all references to "ADVAPI32.dll" discarded by /OPT:REF\r
-LINK : warning LNK4089: all references to "WSOCK32.dll" discarded by /OPT:REF\r
-\r
-\r
-\r
-<h3>Results</h3>\r
-phm2pj.exe - 0 error(s), 2 warning(s)\r
-<h3>\r
---------------------Configuration: phm2pj - Win32 Debug--------------------\r
-</h3>\r
-<h3>Command Lines</h3>\r
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP29.tmp" with contents\r
-[\r
-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" \r
-".\Debug\phm2pj.obj"\r
-"\ctsim-2.0.6\msvc\libctsim\Debug\libctsim.lib"\r
-]\r
-Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP29.tmp"\r
-<h3>Output Window</h3>\r
-Linking...\r
-\r
-\r
-\r
-<h3>Results</h3>\r
-phm2pj.exe - 0 error(s), 0 warning(s)\r
-<h3>\r
---------------------Configuration: pj2if - Win32 Release--------------------\r
-</h3>\r
-<h3>Command Lines</h3>\r
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP2A.tmp" with contents\r
-[\r
-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" \r
-".\Release\pj2if.obj"\r
-"\ctsim-2.0.6\msvc\libctsim\Release\libctsim.lib"\r
-"\wx2\lib\wx.lib"\r
-]\r
-Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP2A.tmp"\r
-<h3>Output Window</h3>\r
-Linking...\r
-LINK : warning LNK4089: all references to "ADVAPI32.dll" discarded by /OPT:REF\r
-LINK : warning LNK4089: all references to "WSOCK32.dll" discarded by /OPT:REF\r
-\r
-\r
-\r
-<h3>Results</h3>\r
-pj2if.exe - 0 error(s), 2 warning(s)\r
-<h3>\r
---------------------Configuration: pj2if - Win32 Debug--------------------\r
-</h3>\r
-<h3>Command Lines</h3>\r
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP2C.tmp" with contents\r
-[\r
-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" \r
-".\Debug\pj2if.obj"\r
-"\ctsim-2.0.6\msvc\libctsim\Debug\libctsim.lib"\r
-"\wx2\lib\wxd.lib"\r
-]\r
-Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP2C.tmp"\r
-<h3>Output Window</h3>\r
-Linking...\r
-\r
-\r
-\r
-<h3>Results</h3>\r
-pj2if.exe - 0 error(s), 0 warning(s)\r
-<h3>\r
---------------------Configuration: pjinfo - Win32 Release--------------------\r
-</h3>\r
-<h3>Command Lines</h3>\r
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP2D.tmp" with contents\r
-[\r
-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" \r
-".\Release\pjinfo.obj"\r
-"\fftw-2.1.3\Win32\FFTW2st\Release\FFTW2st.lib"\r
-"\ctsim-2.0.6\msvc\libctsim\Release\libctsim.lib"\r
-"\fftw-2.1.3\Win32\RFFTW2st\Release\RFFTW2st.lib"\r
-"\wx2\lib\wx.lib"\r
-]\r
-Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP2D.tmp"\r
-<h3>Output Window</h3>\r
-Linking...\r
-LINK : warning LNK4089: all references to "ADVAPI32.dll" discarded by /OPT:REF\r
-LINK : warning LNK4089: all references to "WSOCK32.dll" discarded by /OPT:REF\r
-\r
-\r
-\r
-<h3>Results</h3>\r
-pjinfo.exe - 0 error(s), 2 warning(s)\r
-<h3>\r
---------------------Configuration: pjinfo - Win32 Debug--------------------\r
-</h3>\r
-<h3>Command Lines</h3>\r
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP2F.tmp" with contents\r
-[\r
-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" \r
-".\Debug\pjinfo.obj"\r
-"\fftw-2.1.3\Win32\FFTW2st\Debug\FFTW2st.lib"\r
-"\ctsim-2.0.6\msvc\libctsim\Debug\libctsim.lib"\r
-"\fftw-2.1.3\Win32\RFFTW2st\Debug\RFFTW2st.lib"\r
-"\wx2\lib\wxd.lib"\r
-]\r
-Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP2F.tmp"\r
-<h3>Output Window</h3>\r
-Linking...\r
-\r
-\r
-\r
-<h3>Results</h3>\r
-pjinfo.exe - 0 error(s), 0 warning(s)\r
-<h3>\r
---------------------Configuration: pjrec - Win32 Release--------------------\r
-</h3>\r
-<h3>Command Lines</h3>\r
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP30.tmp" with contents\r
-[\r
-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" \r
-".\Release\pjrec.obj"\r
-"\fftw-2.1.3\Win32\FFTW2st\Release\FFTW2st.lib"\r
-"\fftw-2.1.3\Win32\RFFTW2st\Release\RFFTW2st.lib"\r
-"\wx2\lib\wx.lib"\r
-"\ctsim-2.0.6\msvc\libctsim\Release\libctsim.lib"\r
-]\r
-Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP30.tmp"\r
-<h3>Output Window</h3>\r
-Linking...\r
-LINK : warning LNK4089: all references to "ADVAPI32.dll" discarded by /OPT:REF\r
-LINK : warning LNK4089: all references to "WSOCK32.dll" discarded by /OPT:REF\r
-\r
-\r
-\r
-<h3>Results</h3>\r
-pjrec.exe - 0 error(s), 2 warning(s)\r
-<h3>\r
---------------------Configuration: pjrec - Win32 Debug--------------------\r
-</h3>\r
-<h3>Command Lines</h3>\r
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP32.tmp" with contents\r
-[\r
-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" \r
-".\Debug\pjrec.obj"\r
-"\fftw-2.1.3\Win32\FFTW2st\Debug\FFTW2st.lib"\r
-"\fftw-2.1.3\Win32\RFFTW2st\Debug\RFFTW2st.lib"\r
-"\wx2\lib\wxd.lib"\r
-"\ctsim-2.0.6\msvc\libctsim\Debug\libctsim.lib"\r
-]\r
-Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP32.tmp"\r
-<h3>Output Window</h3>\r
-Linking...\r
-\r
-\r
-\r
-<h3>Results</h3>\r
-pjrec.exe - 0 error(s), 0 warning(s)\r
-<h3>\r
---------------------Configuration: wxvc - Win32 LIB Debug--------------------\r
-</h3>\r
-<h3>Command Lines</h3>\r
-\r
-\r
-\r
-<h3>Results</h3>\r
-wxd.lib - 0 error(s), 0 warning(s)\r
 </pre>\r
 </body>\r
 </html>\r
index 25b8d8f581bd5e11d1e7ef95ef8c218ca0a8bd40..9f377be8a3d8afaf18f1208852b8d99ec4e24fec 100644 (file)
@@ -147,6 +147,10 @@ SOURCE=..\..\libctsim\phantom.cpp
 # End Source File\r
 # Begin Source File\r
 \r
+SOURCE=..\..\libctsupport\plotfile.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
 SOURCE=..\..\libctgraphics\pol.cpp\r
 # End Source File\r
 # Begin Source File\r
@@ -243,6 +247,10 @@ SOURCE=..\..\include\phantom.h
 # End Source File\r
 # Begin Source File\r
 \r
+SOURCE=..\..\include\plotfile.h\r
+# End Source File\r
+# Begin Source File\r
+\r
 SOURCE=..\..\include\pol.h\r
 # End Source File\r
 # Begin Source File\r
index 556f431540186e5947390ea60dd60347dce97531..0c09001cc0bab65c2b30ba4b95e5bf9c99146628 100644 (file)
@@ -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
 \r
-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);
     
index 976de33b0e45be61dd9bf776fd1ce3075b609201..220a540c6d8afbed5d8ca9ee643d46a3404f26e2 100644 (file)
@@ -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,\r
+       IFMENU_PLOT_ROW,\r
+       IFMENU_PLOT_COL,
     IFMENU_VIEW_SCALE_AUTO,
     IFMENU_VIEW_SCALE_MINMAX,
     PHMMENU_PROCESS_RASTERIZE,
index 179cc89750461dca1a20a89f22bdbf56a1a29dff..c3fd4892fd8747a0eb08adda81880eb0936f2703 100644 (file)
@@ -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();\r
+  PlotFileView* ifView = dynamic_cast<PlotFileView*>(GetFirstView());\r
+  if (ifView)\r
+         ifView->OnUpdate(ifView, NULL);\r
+
+  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);
+}
+
index e19f962069952530da16bf8679e8688903d916b9..5afcf63e469f23700677bb722c018c6427d280bc 100644 (file)
@@ -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);
 };
 
index f150237ba69005232ad9ef6f407d9c73b121fc80..81eb051098485141b32c14cdf0d802ae5f259476 100644 (file)
@@ -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;\r
+       m_xCursor = -1;\r
+       m_yCursor = -1;
 }
 
 void 
@@ -79,8 +81,35 @@ ImageFileCanvas::OnDraw(wxDC& dc)
 {
     if (m_pView)
         m_pView->OnDraw(& dc);
+}\r
+\r
+void \r
+ImageFileCanvas::DrawRubberBandCursor (wxDC& dc, int x, int y)\r
+{\r
+       const ImageFile& rIF = m_pView->GetDocument()->getImageFile();\r
+       ImageFileArrayConst v = rIF.getArray();\r
+       int nx = rIF.nx();\r
+       int ny = rIF.ny();\r
+\r
+       dc.SetLogicalFunction (wxINVERT);\r
+       dc.SetPen (*wxGREEN_PEN);\r
+       dc.DrawLine (0, y, nx, y);\r
+       dc.DrawLine (x, 0, x, ny);\r
+       dc.SetLogicalFunction (wxCOPY);\r
+}\r
+\r
+bool\r
+ImageFileCanvas::GetCurrentCursor (int& x, int& y)\r
+{\r
+       x = m_xCursor;\r
+       y = m_yCursor;\r
+\r
+       if (m_xCursor >= 0 && m_yCursor >= 0)\r
+               return true;\r
+       else\r
+               return false;\r
 }
-
+\r
 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";
-               
-    }
+\r
+    if (event.RightIsDown()) {\r
+               const ImageFile& rIF = m_pView->GetDocument()->getImageFile();\r
+               ImageFileArrayConst v = rIF.getArray();\r
+               int nx = rIF.nx();\r
+               int ny = rIF.ny();\r
+               \r
+               if (pt.x >= 0 && pt.x < nx && pt.y >= 0 && pt.y < ny) {\r
+                       std::ostringstream os;\r
+                       os << "Image value (" << pt.x << "," << pt.y << ") = " << v[pt.x][ny - 1 - pt.y] << "\n";\r
+                       *theApp->getLog() << os.str().c_str();\r
+               } else\r
+                       *theApp->getLog() << "Mouse out of image range (" << pt.x << "," << pt.y << ")\n";\r
+    }\r
+    else if (event.LeftIsDown()) {\r
+               const ImageFile& rIF = m_pView->GetDocument()->getImageFile();\r
+               ImageFileArrayConst v = rIF.getArray();\r
+               int nx = rIF.nx();\r
+               int ny = rIF.ny();\r
+               \r
+               if (pt.x >= 0 && pt.x < nx && pt.y >= 0 && pt.y < ny) {\r
+                       if (m_xCursor >= 0 && m_yCursor >= 0) {\r
+                               DrawRubberBandCursor (dc, m_xCursor, m_yCursor);\r
+                       }\r
+                       DrawRubberBandCursor (dc, pt.x, pt.y);\r
+                       m_xCursor = pt.x;\r
+                       m_yCursor = pt.y;\r
+                       std::ostringstream os;\r
+                       os << "Selected column" << pt.x << " and row" << pt.y << "\n";\r
+                       *theApp->getLog() << os.str().c_str();\r
+               } else\r
+                       *theApp->getLog() << "Mouse out of image range (" << pt.x << "," << pt.y << ")\n";\r
+    }\r
 }
 
-
 // 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)\r
+EVT_MENU(IFMENU_PLOT_ROW, ImageFileView::OnPlotRow)
+EVT_MENU(IFMENU_PLOT_COL, ImageFileView::OnPlotCol)\r
 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...");
-    
+    \r
+       wxMenu *plot_menu = new wxMenu;\r
+       plot_menu->Append (IFMENU_PLOT_ROW, "Plot &Row");\r
+       plot_menu->Append (IFMENU_PLOT_COL, "Plot &Column");\r
+
     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");\r
+       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);
+\r
+       int xCursor, yCursor;\r
+       if (m_canvas->GetCurrentCursor (xCursor, yCursor))\r
+               m_canvas->DrawRubberBandCursor (*dc, xCursor, yCursor);\r
 }
 
 
@@ -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);\r
     } 
        
     if (m_canvas)
@@ -346,8 +403,99 @@ ImageFileView::OnClose (bool deleteWindow)
     }
     return true;
 }
+\r
+#include "wx/plot.h"\r
+\r
+class VectorPlotCurve : wxPlotCurve {\r
+private:\r
+       int     m_nPoints;\r
+       std::vector<double> m_points;\r
+\r
+public:\r
+       VectorPlotCurve (const double* const points, int n, double minVal, double maxVal)\r
+               : wxPlotCurve (minVal, minVal, maxVal)\r
+       {\r
+               for (int i = 0; i < n; i++)\r
+                       m_points.push_back(points[i]);\r
+       }\r
+\r
+       wxInt32 GetStartX ()\r
+       { return 0; }\r
+\r
+       wxInt32 GetEndX ()\r
+       { return m_nPoints - 1; }\r
+\r
+       double GetY (wxInt32 x)\r
+       { return m_points[x]; }\r
+};\r
+\r
 
-
+void\r
+ImageFileView::OnPlotRow (wxCommandEvent& event)\r
+{\r
+       int xCursor, yCursor;\r
+       if (! m_canvas->GetCurrentCursor (xCursor, yCursor)) {\r
+               // os << "No row selected. Please use left mouse button on image to select row\n";\r
+               return;\r
+       }\r
+\r
+    const ImageFile& rIF = dynamic_cast<ImageFileDocument*>(GetDocument())->getImageFile();\r
+    ImageFileArrayConst v = rIF.getArray();\r
+    int nx = rIF.nx();\r
+    int ny = rIF.ny();\r
+\r
+    if (v != NULL && yCursor < ny) {\r
+               double* pVec = new double [nx];\r
+               double minVal = v[0][yCursor];\r
+               double maxVal = minVal;\r
+               for (int i = 0; i < nx; i++) {\r
+                       pVec[i] = v[i][yCursor];\r
+                       if (pVec[i] < minVal)\r
+                               minVal = pVec[i];\r
+                       else if (pVec[i] > maxVal)\r
+                               maxVal = pVec[i];\r
+               }\r
+               VectorPlotCurve* plotCurve = new VectorPlotCurve (pVec, nx, minVal, maxVal);\r
+               wxPlotWindow* plotWindow = new wxPlotWindow (m_canvas, NULL, wxPoint(0,0), wxSize(500,300));\r
+               plotWindow->Add (reinterpret_cast<wxPlotCurve*>(plotCurve));\r
+               plotWindow->Enable(TRUE);\r
+               plotWindow->Show();\r
+       }\r
+\r
+}\r
+
+void\r
+ImageFileView::OnPlotCol (wxCommandEvent& event)\r
+{\r
+       int xCursor, yCursor;\r
+       if (! m_canvas->GetCurrentCursor (xCursor, yCursor)) {\r
+               // os << "No column selected. Please use left mouse button on image to select column\n";\r
+               return;\r
+       }\r
+\r
+    const ImageFile& rIF = dynamic_cast<ImageFileDocument*>(GetDocument())->getImageFile();\r
+    ImageFileArrayConst v = rIF.getArray();\r
+    int nx = rIF.nx();\r
+    int ny = rIF.ny();\r
+\r
+    if (v != NULL && xCursor < nx) {\r
+               double* pVec = new double [ny];\r
+               double minVal = v[xCursor][0];\r
+               double maxVal = minVal;\r
+               for (int i = 0; i < ny; i++) {\r
+                       if (minVal < v[xCursor][i])\r
+                               minVal = v[xCursor][i];\r
+                       else if (maxVal > v[xCursor][i])\r
+                               maxVal = v[xCursor][i];\r
+                       pVec[i] = v[xCursor][i];\r
+               }\r
+\r
+               VectorPlotCurve* plotCurve = new VectorPlotCurve (pVec, ny, minVal, maxVal);\r
+               wxPlotWindow plotWindow (m_canvas, NULL, wxPoint(0,0), wxSize(500,300));\r
+               plotWindow.Add (reinterpret_cast<wxPlotCurve*>(plotCurve));\r
+       }\r
+}\r
+\r
 
 // 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;\r
+       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<PlotFileView*>(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();\r
+       const int iNRecords = rPlot.getNumRecords();
+    if (iNColumns > 0 && iNRecords > 0) {
+//      int xSize, ySize;\r
+//      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;
+}
+
index 9fb14a1bb3dcd8038252cf20b7ffeeadbd277c68..34d140d48abc5a8a78984014ae3f504f12f56e54 100644 (file)
@@ -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);\r
+       void OnPlotCol (wxCommandEvent& event);\r
 \r
        wxFrame* getFrame()\r
        { return m_frame; }\r
@@ -79,12 +81,19 @@ public:
 
 class ImageFileCanvas: public wxScrolledWindow
 {
+private:\r
+       int m_xCursor;\r
+       int m_yCursor;\r
+\r
 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);
+\r
+       void DrawRubberBandCursor (wxDC& dc, int x, int y);\r
+       bool GetCurrentCursor (int& x, int& y);\r
 
     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<PlotFileDocument*>(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
 
index ce6d3da9505236577646a560e5fcdb8b7a97a46e..db92c228aee511cbc53b788b4f0e65539f5a4db7 100644 (file)
@@ -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;
-  }\r
+  }
+\r
   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;
+\r
+    PlotFile plotFile (3, nx);\r
+\r
+    plotFile.addColumn (0, plot_xaxis);\r
+    plotFile.addColumn (1, v1[opt_columnPlot]);\r
+    plotFile.addColumn (2, v2[opt_columnPlot]);\r
+    plotFile.setTitle ("Column Plot");\r
+    plotFile.setXLabel ("Column");\r
+    plotFile.setYLabel ("Pixel Value");\r
+\r
+    plotFile.fileWrite (strOutFile.c_str());\r
+\r
 #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();\r
-#endif\r
-       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];\r
-       double* v2Row = new double [nx2];
+    double* v1Row = new double [ny];\r
+       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;\r
   }
 
-  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);
   }
-
+\r
   return (0);
 }