r471: Fixed shutdown crash, added Revert
[ctsim.git] / ChangeLog
1 3.0.0beta1 - Released
2
3         * ctsim: Added most-recently-used files to File menu with
4         registry storage between executions.
5
6         * ctsim: Added MDI interface for Windows version and made it default
7
8         * ctsim: Added graphical About box
9
10         * ctsim: Escape key now removes cursor from image files
11
12         * ctsim: Added Revert to ImageFile menu
13         
14         * ctsim: Added accelerator (hotkeys) to frames
15
16         * ctsim: Online help added as well as HTML help
17         
18         * ctsim: Added icons to Frames on X-Window and MS Windows versions
19
20         * ctsim: Fixed tick-label placement for plots on projection and
21         reconstruction dialogs.
22
23         * timer.h: Add use of _ftime when compiling on MSVC
24
25         * ctsim: Fixed crash on shutdown bug
26         
27         * pjinfo: Fixed bug when doing --dump and not specifing --endview
28
29         * ctsimtext-lam: Changes for first version to compile under lam
30         
31 3.0.0alpha5 - Released 1/12/00
32
33         * ctsim: Added EZPlotDialog, used by debugging plots in
34         procsignal.cpp
35         
36         * ctsimtext: Fixed bugs for MSVC and with empty input lines. Fixed 
37         bug in parsing command-line parameters.
38
39         * views.cpp: Fixed bug in copying of labels from images to
40         plotfiles
41         
42         * syserror.cpp: fixed reporting for fatal errors
43
44         * projections.cpp: fixed MSVC failure with std:: namespace
45
46         * procsignal.cpp: fixed bug in equiangular reconstructions
47         for frequency/inverse-fourier filtering
48         
49 3.0.0alpha4 - Released 1/09/01
50
51         * ctsim: Added reset to full-intensity scale menu item
52
53         * ctsim: Add conversion of projections to polar plot [Thanks to
54         Ian Kay for reference and math hints in polar bilinear scaling]
55
56         * ctsim: improve bilinear scaling of image size [Thanks to Ian Kay
57         for math tips]
58
59         * ctsim: imagefile labels are now copied to plotfiles
60
61         * ctsim: Added more analyze menuitems
62         
63         * ctsimtext: First version. All command-line tools are now accessed
64         through this master shell. Has both command-line and interactive
65         interface
66         
67         * ctsim: Fixed initialization of min/max bug for PlotFiles
68
69         * ezplot: Cleaned up y-tick label placement
70
71         * sgp: Added better support for projection/reconstruction animation
72         
73 3.0.0alpha3 - Released 1/02/01
74
75         * ctsim: Added plotting of histograms
76         
77         * imagefile.cpp: fixed bug in generation of 16-bit PNG images
78
79         * ezplot.cpp: adjusted xtick label displays for better placement
80         
81 3.0alpha2 - Released 1/02/01
82         
83         * ctsim: All functions of command-line tools are now in graphical ctsim
84         
85         * ctsim: added generation of filter images
86
87         * ctsim: Added 2-image math functions (mul, add, div, sub)
88
89         * ctsim: Added export of imagefiles to graphic file formats
90
91         * ctsim: Added support for scaling imagefiles in new sizes
92
93         * ctsim: Added ability to save standard phantom definitions as
94         text files suitable for reading.
95         
96         * ctsim: Add labels for image transformations and display of labels
97         when performing properties of images.
98
99         * processsignal.cpp: Fixed "off by one" bug in
100         shuffleNaturalToFourierOrder when n is even. Moved functions to
101         fourier.cpp
102
103         * imagefile.cpp: Added FFTW library to imagefile processing. Converted
104         image math functions to complex-valued math.
105
106         * phantom.cpp: Added ability to save phantom files as ASCII text.
107         
108 3.0alpha1 - Released 12/29/00
109
110         * Added PlotFile class to system, used by if2 and ctsim for row
111         and column plots and comparison plots
112
113         * ctsim: Added image comparison statistics and image subtraction
114
115         * ctsim: Added plotting of rows & columns with y-axis scaling 
116
117         * ctsim: Added row and column plot comparisons between two image
118         files.
119
120         * ctsim: Added "Process" menu to image file display with math
121         functions. Added 2-dimensional inverse Fourier to math
122         functions. Added support for complex (real/imaginary) images.
123
124         * mathfuncs.cpp: Reworked statistics algorithm to share between
125         imagefile and plotfile classes.
126
127         * imagefile.cpp: Fixed scaling bug when rasterizing Phantom with
128         nsamples > 2.  Added generic mage math functions, moved from
129         if1.cpp and if2.cpp to imagefile.cpp. Added support complex
130         images.
131
132         * array2dfile.cpp: Added code to support complex (real/imaginary)
133         images.
134
135         * if1: Updated to handle error conditions, such as sqrt of a
136         negative number. Converted to use new ImageFile math functions.
137         
138         * if2: Updated to output plot files and use new ImageFile class
139         math functions
140
141         * if1: Updated to use new ImageFile class math functions
142
143         * ezplot: Reworked to better store colors/linestyles/symbols with
144         individual curves. Improved display of labels and ticks. Updated
145         to use POL class member variable. Updated to more C++ conventions.
146
147         * pol: converted to C++ class. Extracted HashTable to separate
148         class.
149         
150         * sgp: Added linestyle settings
151         
152 2.5.0 - 12/18/00 
153    First Microsoft Windows GUI version
154    Modifications for Microsoft Visual C++ compilation.
155    Improved pjinfo to output binary headers and view data, useful
156         when manually compiling phantoms that vary during projection
157         process. Thanks to Ian Kay for idea and code submission.
158    Improved sorting to find median in ImageFile::statistics
159    Fixed core-dump bug in Array2dFile::labelsCopy() function (Ian Kay) 
160    Changed reconstruction dialog to fix onto smaller screens
161    Fixed display of plotting in Projection views
162    Improved animation displays for Projections and Reconstructions
163    Changed code to explicitly use std:: namespace rather than 
164         "namespace using std" statements
165    Fixed reconstruction scaling bug introduced in 2.0.6
166    Renamed if2img to ifexport, if-1 to if1, if-2 to if2
167         
168 2.0.6 - 12/03/00
169    Fixed minor compilation problem with procsignal.h
170    Updated README file
171    Fixed bug when simulating projections and Trace == CONSOLE
172    Fixed scaling bug when performing redundant rotations around object
173         
174 2.0.5 - 12/01/00
175    Improved compilation on RedHat 7
176    Changed some of ANSI C header files to C++ header files
177    Removed README.RedHat7
178         
179 2.0.4 - 11/25/00
180    Added documentation for --geometry setting
181    Added README.RedHat7 document
182          
183 2.0.3 - 11/20/00
184    Fixed bug in generation of binary PGM files
185    Fixed MPI compilation bug in phm2pj.cpp
186    Inverted y-axis output for pj2if (bug alert from Ian Kay)
187         
188 2.0.2 - 11/8/00
189    Additions to man pages (Ian Kay)
190    Fix problem with reading of ASCII phantom files (Ian Kay)
191
192 2.0.1 - 10/1/00
193    Fixed syntax error in fftw configuration
194    Slight modifications to support gcc v2.9.6
195         
196 2.0.0 - 9/7/00
197    Version 2.0.0 released!
198    ctsim: Added Window menu to Main frame
199    ctsim: Disabled not support reconstruction method
200    Fixed obscure bug in sys_error
201    Fixed compilation in mingw environment not present
202    Fixed compilation in non-graphical environments      
203         
204 2.0.0-b12 - 9/4/00
205    ctsim: Added animation of reconstruction
206    ctsim: Added saving of dialog parameters for Projection & Reconstruction
207    ctsim: Added progress dialog for rasterization of phantom
208    ctsim: used setpriority to set lower priority
209    ctsim: fixed pReconstruct not being deleted causing scaling problem
210    ctsim: fixed projection animation dialog buttons
211
212 2.0.0-b11 - 9/1/00
213    ctsim: Added projection graph to animation of projection collection  
214    ctsim: Added single stepping to projection collection animation
215    ctsim: improved File/Properties display for projection files
216    ctsim: Added progress dialog for reconstructions
217    ctsim: Added file labels for projection and reconstruction images
218    ctsim: Made File/Properties bring up modal dialogs
219    Added reconstruction for Equilinear and Equiangular geometries
220    Changed theta to be -PI/2 to make compliant with Kak-Slaney formulas
221    Separated reconstruction into Reconstructor class
222    Fixed center of detector adjustment for even number of detectors
223    Added --enable-static to generate statically linked programs
224         
225 2.0.0-b10 - 8/25/00
226    ctsim: Added animation of projection collection processs
227    ctsim: Added Auto Scaling for image windows
228    ctsim: Change menus from "windowing" to "display scaling"
229    Added FieldOfView and FocalLength ratio parameters to projection collection
230    Added FocalLength & FieldOfView fields to projection data files
231    Added Projection collection for Equilinear and Equiangular geometries
232    Changed name of Rowland Phantom to correct name of Shepp-Logan
233    Fixed bug in backprojection selection
234         
235 2.0.0-b9 - 8/22/00
236    Added RCS Id strings to executable files
237    Added RPM Spec file for RPM package creation
238    Added loading of ASCII phanthom definitions from files
239    Fixed compilation for non-SGP architectures 
240    Decomposed SignalFilter class into ProcessSignal and SignalFilter classes
241    Added Filter-Generation option to reconstruction to allow direct or 
242         inverse_fourier construction of filters
243    Added median to statistics and to auto-windowing
244         
245 2.0.0-b8 - 8/1/00
246    Added line color support to SGP
247    Fixed lineAbs bug
248         
249 2.0.0-b7 - 7/25/00
250    Finished support for dmallocxx library
251    Fixed bug in SignalFilter::convertFilterMethodNameToID()
252    Rewrote SGP & EZPlot to use C++ object-oriented. SGP can now write to 
253         G2 windows and well as WXWindows.
254    ctsim program: "Create Phantom" now shows phantom object
255    Fixed row-plot bug in if-2
256    Reworked EZPlot's multiple plot operation
257         
258 2.0.0-b6 - 7/22/00
259    ctsim program: improved initial size and scroll area for image 
260         and projection files
261    ctsim program: added rasterization parameters, projections parameters,
262         and reconstruction parameters dialogs
263    Moved char[] static definition from header files to c++ files
264    Completely reorganized option processing in classes to improve
265         expandability and to assist ctsim graphical user interface.
266         
267 2.0.0-b5 - 7/17/00
268    ctsim program: Added dialog to set minimum/maximum display levels 
269    Started ctsim.tex document file
270         
271 2.0.0-b4 - 7/13/00
272    Fixed compiler warnings at -Wall level
273    Began work on CTSim program to be graphical front-end of all functions
274    Moved current src/*.cpp to tools/*.cpp
275    Made CTSim graphical front-end's home to be src/
276         
277 2.0.0-b3 - 7/10/00
278    Added highly optimized backprojection method idiff3
279    Moved comparative stats to if-2 program from ifinfo
280    Fixed image display in if2img using G2 library
281    Added column-plot and row-plot options to if-2
282    Added autoselection of analytic/calculated spatial responses to SignalFilter
283    Added frequency-based preinterpolation to SignalFilter and idiff3
284         backprojection method. Currently, this technique is still under
285         development and debugging
286    Moved graphic file writing to ImageFile class from if2img program
287
288 2.0.0-b2 - 7/07/00  
289    Cleaned up SignalFilter class
290    Added zeropad option to pjrec
291    Added zeropad options to html and cgi files
292    Added fourier_table and rfttw filter methods
293    Added FFTW routines to use real/half-complex transformations
294         
295 2.0.0-b1 - 7/05/00
296    Updated trace level processing
297    Added trace level to SignalFilter
298    Fixed magnitude vs. real output bug in FFT/Fourier filter
299         
300 1.9.9 - 7/04/00
301    Fixed const issue with ImageFileArray
302    Fixed Array2dFile::labelsCopy()
303    Added copy constructor and assignment for Array2dFileLabel class
304    Added Timer to if-2.cpp and ifinfo.cpp
305    Added beginning of frequency-based (DFT & FFT) filter to SignalFilter
306    Added option processing for filter-method for pjrec to choose
307         between convolution, dft, & fft filtering
308    Fixed format string for EZPlot so axis labels now print
309    Added support for FFTW library
310         
311 1.9.8 - 6/27/2000
312    Rewrote Array2dFile class to be non-templated
313    Rewrote Array2dFile class to make reads and writes atomic. No disk files are kept open.
314    Rewrote Array2dFileLabel class to make members private, added access routines
315    Removed timedate.cpp in favor of standard C library time/date functions
316    Renamed ctrec to pjrec, sample-ctrec.sh to sample-ctsim
317    Added signature tag and creation date/time to projection files
318         
319 1.9.7 - 6/25/2000
320    Standardized string option processing by classes. All classes use character strings
321         to select options rather than numeric constants. Added fail() and failMessage()
322         methods to verify that objects are created correctly by character strings.
323    Hid C++ assignment and copy constructors in classes that should not have assignment/copy
324    Rewrote ImageFile class
325    Started support for dmallocxx library, not finished
326    Added G.T. Herman image comparision statistics to ifinfo (see imagefile.cpp)
327    Updated ifinfo to show comparative statistics
328    Added printLabels() to Array2dFile class
329    Added printStatistics() to ImageFile class
330         
331 1.9.6 - 6/22/2000
332    Moved conversion filter name/id to Filter class
333    Moved conversion backprojection name/id to Backproj class
334    Added MPI broadcasting of strings
335         
336 1.9.5 - 6/21/2000
337    Merged proj_reconstr into class Projections
338    Used auto_ptr in Projections::reconstruct to make sure destructor is always called
339    Code cleanup in projections.cpp
340    Moved conversion of phantom names/id to Phantom class
341         
342 1.9.4 - 6/20/2000
343    Converted projection files to C++ library with frnetorderstream
344    Converted image files to C++ library with frnetorderstream
345    Converted filter and convolution to object-oriented code
346    Changed default image file to float from double -- Changable in imagefile.h
347    Optimized image file writing on little-endian architectures
348    Updated README and INSTALL
349         
350 1.9.3 - 6/19/2000
351    Reorganized source files
352    MPI bug fixed to phm2pj.cpp
353         
354 1.9.2 - 6/18/2000
355    Reorganized include files
356    Fixed const pointers in strfuncs
357         
358 1.9.1 - 6/16/2000
359    Renamed directories, moved source files, combined source files
360    to change from 6 libraries to 3 libraries (libctsim, libctsupport,
361    and libctgraphics)
362         
363 1.9.0 - 6/15/2000
364    Skip versions to make version 2.0 the first fully C++ version
365    Renamed Raysums to Projections throughout files
366    Renamed Detector to Scanner
367    Converted Scanner and Projecions to full object-oriented
368         
369 0.6.1 - 6/12/2000
370    Converted Phantom and PhantomElements to Object-Oriented
371    Converted Detector to Object-Oriented
372         
373 0.6.0-b3 - 6/10/2000
374    Improved Integer backprojection method
375         Fixed nearest neighbor to be truly nearest neighbor
376         Made linear interpolation more integer arithmetic -> speed improvement
377    Finished converting all C files to C++
378    Converted all use of malloc/free to C++ new/delete
379    Began object-oriented conversion of Phantom and Projection structures
380         
381 0.6.0-b2 - 6/8/2000
382    Converted MPI data structures to C++ object
383    Made ImageFile directly inherit from Array2dFile
384         
385 0.6.0-b1 - 6/6/2000
386    First C++ conversions
387    Portable IF (image file) format implemented with objects (SDF removed)
388         - Now all data files are cross-platform compatible
389    Converted from MPI to MPI++
390    Converted backprojection to object-oriented
391    Removed MTX from libkmath as no longer need -- replaced with C++ matrices             
392         
393 0.5.4 - 6/4/2000
394    Simpilifed endian handling
395         
396 0.5.4-b3 - 6/1/2000
397    Added support for 64-bit (IA64) CPU
398    Removed broken B-spline interpolation
399    Added support for cygwin platform under Windows 2000
400    Added support for 16-bit PNG graphics
401         
402 0.5.4-b2 - 5/16/2000
403    Added compile-time configuration of endian order
404
405 0.5.4-b1 - 5/14/2000
406    Modified the raysum file format to be platform independent
407         
408 0.5.3 - 5/11/2000
409    Added Microsoft VC compatibility
410    Cleaned up compilation warnings in libgraph
411         
412 0.5.2-b5 - 5/7/2000
413    Continued conversion to ANSI C       
414    Removed old CRT routines
415         
416 0.5.2-b4 - 5/4/2000
417    Renamed pictures to phantoms, objects to phantom elements
418    Continued code cleanup
419         
420 0.5.2-b3 - 4/30/200
421     More code cleanup with reorganizing libraries
422     Added --log and --exp to sdf-1
423     Allowed negative numbers for window levels in CGI interface
424
425 0.5.2-b2 - 4/30/200
426     Continued code cleanup
427         
428 0.5.2-b1 - 4/29/2000
429     Fixed a few MPI bugs
430     Better documented, coded raysum in-memory on on-disk options
431         
432 0.5.1 - 4/28/2000
433     Cleaned out library that wasn't being used by CTSim  
434     Modified ctsim.cgi to read in configuration file ctsim.conf
435
436 0.5.0 - 4/27/2000 
437     First open source distribution for GNU/Linux
438         
439 6/1999 
440   Converted to GNU/Linux
441   added MPI support via LAM library
442         
443 1983-84 
444   Developed under MS-DOS and IBM EGA graphics
445