r5231: Auto commit for Debian build
authorKevin M. Rosenberg <kevin@rosenberg.net>
Fri, 4 Jul 2003 21:39:40 +0000 (21:39 +0000)
committerKevin M. Rosenberg <kevin@rosenberg.net>
Fri, 4 Jul 2003 21:39:40 +0000 (21:39 +0000)
15 files changed:
debian/changelog
debian/control
debian/rules
include/scanner.h
libctsim/backprojectors.cpp
libctsim/filter.cpp
libctsim/imagefile.cpp
libctsim/phantom.cpp
libctsim/procsignal.cpp
libctsim/projections.cpp
libctsim/scanner.cpp
libctsim/trace.cpp
man/Makefile.am
man/linogram.1 [new file with mode: 0644]
src/tips.cpp

index 15ac3a6..ace0c65 100644 (file)
@@ -1,3 +1,9 @@
+ctsim (4.2.5-1) unstable; urgency=low
+
+  * Fix gcc-3.3 compilation issues (closes:200074)
+
+ -- Kevin M. Rosenberg <kmr@debian.org>  Fri,  4 Jul 2003 14:23:38 -0600
+
 ctsim (4.2.4b-2) unstable; urgency=low
 
   * Allow mesag1 | libgl1 in all binary packages (closes:190213)
index 9bb20cf..090d916 100644 (file)
@@ -4,7 +4,7 @@ Priority: extra
 Maintainer: Kevin M. Rosenberg <kmr@debian.org>
 Build-Depends: debhelper (>= 4.0.0), wxwin2.4-headers, fftw-dev, libreadline4-dev, mesa-common-dev, libwxgtk2.4-dev, ctn-dev, libpng12-dev, dpkg-dev
 Build-Depends-Indep: debhelper (>= 4.0.0)
-Standards-Version: 3.5.9.0
+Standards-Version: 3.5.10.0
 
 Package: ctsim
 Architecture: any
index 478e811..4d073ab 100755 (executable)
@@ -1,7 +1,5 @@
 #!/usr/bin/make -f
 
-export DH_COMPAT=4
-
 ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
        CFLAGS += -g
 endif
index cad4be0..eba02d4 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: scanner.h,v 1.23 2003/04/01 19:49:41 kevin Exp $
+**  $Id: scanner.h,v 1.24 2003/07/04 21:39:39 kevin Exp $
 **
 **
 **  This program is free software; you can redistribute it and/or modify
@@ -111,8 +111,8 @@ class Scanner
   int geometry() const {return m_idGeometry;}
 
   static int getGeometryCount() {return s_iGeometryCount;}
-  static const char** getGeometryNameArray() {return s_aszGeometryName;}
-  static const char** getGeometryTitleArray() {return s_aszGeometryTitle;}
+  static const char* const* getGeometryNameArray() {return s_aszGeometryName;}
+  static const char* const* getGeometryTitleArray() {return s_aszGeometryTitle;}
   static int convertGeometryNameToID (const char* const geometryName);
   static const char* convertGeometryIDToName (const int idGeometry);
   static const char* convertGeometryIDToTitle (const int idGeometry);
@@ -165,8 +165,8 @@ class Scanner
   double m_dTextHeight;
 #endif
 
-  static const char* s_aszGeometryName[];
-  static const char* s_aszGeometryTitle[];
+  static const char* const s_aszGeometryName[];
+  static const char* const s_aszGeometryTitle[];
   static const int s_iGeometryCount;
 
   void projectSingleView (const Phantom& phm, DetectorArray& darray, const double xd1, const double yd1, const double xd2, const double yd2, const double xs1, const double ys1, const double xs2, const double ys2, const double dDetAngle);
index 7551ff9..164b42e 100644 (file)
@@ -8,7 +8,7 @@
 **  This is part of the CTSim program
 **  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: backprojectors.cpp,v 1.33 2003/03/23 18:37:42 kevin Exp $
+**  $Id: backprojectors.cpp,v 1.34 2003/07/04 21:39:40 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
@@ -35,18 +35,18 @@ const int Backprojector::BPROJ_IDIFF = 3;
 
 const char* const Backprojector::s_aszBackprojectName[] = 
 {
-  {"trig"},
-  {"table"},
-  {"diff"},
-  {"idiff"},
+  "trig",
+  "table",
+  "diff",
+  "idiff",
 };
 
 const char* const Backprojector::s_aszBackprojectTitle[] = 
 {
-  {"Direct Trigometric"},
-  {"Trigometric Table"},
-  {"Difference Iteration"},
-  {"Integer Difference Iteration"},
+  "Direct Trigometric",
+  "Trigometric Table",
+  "Difference Iteration",
+  "Integer Difference Iteration",
 };
 
 const int Backprojector::s_iBackprojectCount = sizeof(s_aszBackprojectName) / sizeof(const char*);
@@ -65,33 +65,33 @@ const int Backprojector::INTERP_3BSPLINE = 7;
 
 const char* const Backprojector::s_aszInterpName[] = 
 {
-  {"nearest"},
-  {"linear"},
-  {"cubic"},
+  "nearest",
+  "linear",
+  "cubic",
 #if HAVE_FREQ_PREINTERP
-  {"freq_preinterpolationj"},
+  "freq_preinterpolationj",
 #endif
 #if HAVE_BSPLINE_INTERP
-  {"bspline"},
-  {"1bspline"},
-  {"2bspline"},
-  {"3bspline"},
+  "bspline",
+  "1bspline",
+  "2bspline",
+  "3bspline",
 #endif
 };
 
 const char* const Backprojector::s_aszInterpTitle[] = 
 {
-  {"Nearest"},
-  {"Linear"},
-  {"Cubic"},
+  "Nearest",
+  "Linear",
+  "Cubic",
 #if HAVE_FREQ_PREINTERP
-  {"Frequency Preinterpolation"},
+  "Frequency Preinterpolation",
 #endif
 #if HAVE_BSPLINE_INTERP
-  {"B-Spline"},
-  {"B-Spline 1st Order"},
-  {"B-Spline 2nd Order"},
-  {"B-Spline 3rd Order"},
+  "B-Spline",
+  "B-Spline 1st Order",
+  "B-Spline 2nd Order",
+  "B-Spline 3rd Order",
 #endif
 };
 
index ab11056..59e02d7 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (c) 1983-2000 Kevin Rosenberg
 **
-**  $Id: filter.cpp,v 1.39 2001/03/13 04:44:25 kevin Exp $
+**  $Id: filter.cpp,v 1.40 2003/07/04 21:39:40 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
@@ -46,33 +46,33 @@ const int SignalFilter::FILTER_TRIANGLE = 11;
 const int SignalFilter::s_iReconstructFilterCount = 4;
 
 const char* const SignalFilter::s_aszFilterName[] = {
-  {"abs_bandlimit"},
-  {"abs_hamming"},
-  {"abs_hanning"},
-  {"abs_cosine"},
-  {"shepp"},
-  {"abs_sinc"},
-  {"bandlimit"},
-  {"sinc"},
-  {"hamming"},
-  {"hanning"},
-  {"cosine"},
-  {"triangle"},
+  "abs_bandlimit",
+  "abs_hamming",
+  "abs_hanning",
+  "abs_cosine",
+  "shepp",
+  "abs_sinc",
+  "bandlimit",
+  "sinc",
+  "hamming",
+  "hanning",
+  "cosine",
+  "triangle"
 };
 
 const char* const SignalFilter::s_aszFilterTitle[] = {
-  {"Abs(w) * Bandlimit"},
-  {"Abs(w) * Hamming"},
-  {"Abs(w) * Hanning"},
-  {"Abs(w) * Cosine"},
-  {"Shepp"},
-  {"Abs(w) * Sinc"},
-  {"Bandlimit"},
-  {"Sinc"},
-  {"Hamming"},
-  {"Hanning"},
-  {"Cosine"},
-  {"Triangle"},
+  "Abs(w) * Bandlimit",
+  "Abs(w) * Hamming",
+  "Abs(w) * Hanning",
+  "Abs(w) * Cosine",
+  "Shepp",
+  "Abs(w) * Sinc",
+  "Bandlimit",
+  "Sinc",
+  "Hamming",
+  "Hanning",
+  "Cosine",
+  "Triangle"
 };
 
 const int SignalFilter::s_iFilterCount = sizeof(s_aszFilterName) / sizeof(const char*);
@@ -83,13 +83,13 @@ const int SignalFilter::DOMAIN_FREQUENCY = 0;
 const int SignalFilter::DOMAIN_SPATIAL = 1;
 
 const char* const SignalFilter::s_aszDomainName[] = {
-  {"frequency"},
-  {"spatial"},
+  "frequency",
+  "spatial",
 };
 
 const char* const SignalFilter::s_aszDomainTitle[] = {
-  {"Frequency"},
-  {"Spatial"},
+  "Frequency",
+  "Spatial",
 };
 
 const int SignalFilter::s_iDomainCount = sizeof(s_aszDomainName) / sizeof(const char*);
index c479adb..57d5b65 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: imagefile.cpp,v 1.47 2003/03/23 18:37:42 kevin Exp $
+**  $Id: imagefile.cpp,v 1.48 2003/07/04 21:39:40 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
@@ -51,27 +51,29 @@ const int ImageFile::EXPORT_FORMAT_RAW = 6;
 
 const char* ImageFile::s_aszExportFormatName[] = 
 {
-  {"text"},
-  {"pgm"},
-  {"pgmascii"},
+  "text",
+  "pgm",
+  "pgmascii",
 #ifdef HAVE_PNG
-  {"png"},
-  {"png16"},
+  "png",
+  "png16",
 #endif
 #ifdef HAVE_CTN_DICOM
-  {"dicom"},
+  "dicom",
 #endif
 };
 
 const char* ImageFile::s_aszExportFormatTitle[] = 
 {
-  {"Text"},
-  {"PGM"},
-  {"PGM ASCII"},
-  {"PNG"},
-  {"PNG 16-bit"},
+  "Text",
+  "PGM",
+  "PGM ASCII",
+#ifdef HAVE_PNG
+  "PNG",
+  "PNG 16-bit",
+#endif
 #ifdef HAVE_CTN_DICOM
-  {"Dicom"},
+  "Dicom",
 #endif
 };
 const int ImageFile::s_iExportFormatCount = sizeof(s_aszExportFormatName) / sizeof(const char*);
@@ -89,21 +91,23 @@ const int ImageFile::IMPORT_FORMAT_DICOM = 2;
 
 const char* ImageFile::s_aszImportFormatName[] = 
 {
-  {"ppm"},
+  "ppm",
 #ifdef HAVE_PNG
-  {"png"},
+  "png",
 #endif
 #ifdef HAVE_CTN_DICOM
-  {"dicom"},
+  "dicom",
 #endif
 };
 
 const char* ImageFile::s_aszImportFormatTitle[] = 
 {
-  {"PPM"},
-  {"PNG"},
+  "PPM",
+#ifdef HAVE_PNG
+  "PNG",
+#endif
 #ifdef HAVE_CTN_DICOM
-  {"Dicom"},
+  "Dicom",
 #endif
 };
 const int ImageFile::s_iImportFormatCount = sizeof(s_aszImportFormatName) / sizeof(const char*);
index 9d9a537..acfedd7 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: phantom.cpp,v 1.33 2003/03/15 14:52:36 kevin Exp $
+**  $Id: phantom.cpp,v 1.34 2003/07/04 21:39:40 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
@@ -38,16 +38,16 @@ const int Phantom::PHM_UNITPULSE = 2;
 
 const char* Phantom::s_aszPhantomName[] = 
 {
-  {"herman"},
-  {"shepp-logan"},
-  {"unit-pulse"},
+  "herman",
+  "shepp-logan",
+  "unit-pulse",
 };
 
 const char* Phantom::s_aszPhantomTitle[] = 
 {
-  {"Herman Head"},
-  {"Shepp-Logan"},
-  {"Unit Pulse"},
+  "Herman Head",
+  "Shepp-Logan",
+  "Unit Pulse",
 };
 
 const int Phantom::s_iPhantomCount = sizeof(s_aszPhantomName) / sizeof(const char*);
index 1685f19..89b6ff0 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: procsignal.cpp,v 1.32 2001/03/30 19:17:32 kevin Exp $
+**  $Id: procsignal.cpp,v 1.33 2003/07/04 21:39:40 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
@@ -42,23 +42,23 @@ const int ProcessSignal::FILTER_METHOD_FFTW = 4;
 const int ProcessSignal::FILTER_METHOD_RFFTW =5 ;
 #endif
 const char* const ProcessSignal::s_aszFilterMethodName[] = {
-  {"convolution"},
-  {"fourier"},
-  {"fouier-table"},
-  {"fft"},
+  "convolution",
+  "fourier",
+  "fouier-table",
+  "fft",
 #if HAVE_FFTW
-  {"fftw"},
-  {"rfftw"},
+  "fftw",
+  "rfftw",
 #endif
 };
 const char* const ProcessSignal::s_aszFilterMethodTitle[] = {
-  {"Convolution"},
-  {"Fourier"},
-  {"Fouier Trigometric Table"},
-  {"FFT"},
+  "Convolution",
+  "Fourier",
+  "Fouier Trigometric Table",
+  "FFT",
 #if HAVE_FFTW
-  {"FFTW"},
-  {"Real/Half-Complex FFTW"},
+  "FFTW",
+  "Real/Half-Complex FFTW",
 #endif
 };
 const int ProcessSignal::s_iFilterMethodCount = sizeof(s_aszFilterMethodName) / sizeof(const char*);
@@ -68,12 +68,12 @@ const int ProcessSignal::FILTER_GENERATION_INVALID = -1;
 const int ProcessSignal::FILTER_GENERATION_DIRECT = 0;
 const int ProcessSignal::FILTER_GENERATION_INVERSE_FOURIER = 1;
 const char* const ProcessSignal::s_aszFilterGenerationName[] = {
-  {"direct"},
-  {"inverse-fourier"},
+  "direct",
+  "inverse-fourier",
 };
 const char* const ProcessSignal::s_aszFilterGenerationTitle[] = {
-  {"Direct"},
-  {"Inverse Fourier"},
+  "Direct",
+  "Inverse Fourier",
 };
 const int ProcessSignal::s_iFilterGenerationCount = sizeof(s_aszFilterGenerationName) / sizeof(const char*);
 
index 6473002..c0e4871 100644 (file)
@@ -8,7 +8,7 @@
 **  This is part of the CTSim program
 **  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: projections.cpp,v 1.82 2003/03/23 18:37:42 kevin Exp $
+**  $Id: projections.cpp,v 1.83 2003/07/04 21:39:40 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
@@ -37,15 +37,15 @@ const int Projections::POLAR_INTERP_BICUBIC = 2;
 
 const char* const Projections::s_aszInterpName[] = 
 {
-  {"nearest"},
-  {"bilinear"},
+  "nearest",
+  "bilinear",
 //  {"bicubic"},
 };
 
 const char* const Projections::s_aszInterpTitle[] = 
 {
-  {"Nearest"},
-  {"Bilinear"},
+  "Nearest",
+  "Bilinear",
 //  {"Bicubic"},
 };
 
index 57babad..aeb5197 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: scanner.cpp,v 1.43 2003/04/01 19:49:41 kevin Exp $
+**  $Id: scanner.cpp,v 1.44 2003/07/04 21:39:40 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
@@ -34,20 +34,20 @@ const int Scanner::GEOMETRY_EQUIANGULAR = 1;
 const int Scanner::GEOMETRY_EQUILINEAR = 2;
 const int Scanner::GEOMETRY_LINOGRAM = 3;
 
-const char* Scanner::s_aszGeometryName[] = 
+const char* const Scanner::s_aszGeometryName[] = 
 {
-  {"parallel"},
-  {"equiangular"},
-  {"equilinear"},
-  {"linogram"},
+  "parallel",
+  "equiangular",
+  "equilinear",
+  "linogram",
 };
 
-const char* Scanner::s_aszGeometryTitle[] = 
+const char* const Scanner::s_aszGeometryTitle[] = 
 {
-  {"Parallel"},
-  {"Equiangular"},
-  {"Equilinear"},
-  {"Linogram"},
+  "Parallel",
+  "Equiangular",
+  "Equilinear",
+  "Linogram",
 };
 
 const int Scanner::s_iGeometryCount = sizeof(s_aszGeometryName) / sizeof(const char*);
index 3fe33f0..73636ed 100644 (file)
@@ -8,7 +8,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: trace.cpp,v 1.3 2000/08/27 20:32:55 kevin Exp $
+**  $Id: trace.cpp,v 1.4 2003/07/04 21:39:40 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
@@ -42,22 +42,22 @@ const int Trace::BIT_CLIPPING = 0x0010;
 
 const char* Trace::s_aszTraceName[] = 
 {
-  {"none"},
-  {"console"},
-  {"phantom"},
-  {"proj"},
-  {"plot"},
-  {"clipping"},
+  "none",
+  "console",
+  "phantom",
+  "proj",
+  "plot",
+  "clipping",
 };
 
 const char* Trace::s_aszTraceTitle[] = 
 {
-  {"None"},
-  {"Console"},
-  {"Phantom"},
-  {"Projections"},
-  {"Plot"},
-  {"Clipping"},
+  "None",
+  "Console",
+  "Phantom",
+  "Projections",
+  "Plot",
+  "Clipping",
 };
 
 const int Trace::s_iTraceCount = sizeof(s_aszTraceName) / sizeof(const char*);
index 7f24410..184adb3 100644 (file)
@@ -1,2 +1,2 @@
-man_MANS=pjrec.1 phm2pj.1 phm2if.1 ifexport.1 ifinfo.1 if1.1 if2.1 pjinfo.1 ifinfo.1 pj2if.1 ctsim.1 ctsimtext.1 phm2helix.1 pjHinterp.1
+man_MANS=pjrec.1 phm2pj.1 phm2if.1 ifexport.1 ifinfo.1 if1.1 if2.1 pjinfo.1 ifinfo.1 pj2if.1 ctsim.1 ctsimtext.1 phm2helix.1 pjHinterp.1 linogram.1
 EXTRA_DIST = $(man_MANS) 
diff --git a/man/linogram.1 b/man/linogram.1
new file mode 100644 (file)
index 0000000..783c22a
--- /dev/null
@@ -0,0 +1,30 @@
+.\" -*- NROFF -*-
+.\" 
+.TH "linogram" "1" "" "Kevin Rosenberg" "Engineering"
+.SH "NAME"
+linogram \- Linogram gribddisplay for CTSIM
+
+.SH "SYNOPSIS"
+.B linogram [OPTIONS]
+
+.SH "DESCRIPTION"
+.Nm linogram
+displays the grib used in linogram\-based scanning for 
+the CTSim package. 
+
+.SH "OPTIONS"
+\fIlinogram\fP accepts the following options
+.TP 12
+.B \-\-version      Display version
+.TP 12
+.B \-\-help         Print a terse help message
+
+.SH "AUTHORS"
+Kevin Rosenberg, M.D. <kevin@ctsim.org>
+
+.SH "HISTORY"
+CTSim was begun in 1983 using MS\-DOS and an EGA display adapter. In
+1999 it was ported to GNU/Linux and later ported to Microsoft Windows.
+
+.SH "SEE ALSO"
+.BR ifinfo (1), if1 (1), if2 (1), ifexport (1), phm2pj (1), phm2if (1), pj2if (1), pjinfo (1), pjrec (1)
index 05c2a9e..20acf99 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2001 Kevin Rosenberg
 **
-**  $Id: tips.cpp,v 1.3 2001/03/05 20:29:23 kevin Exp $
+**  $Id: tips.cpp,v 1.4 2003/07/04 21:39:40 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
 
 
 const char* const CTSimTipProvider::s_aszTips[] = {
-  {"You can create a geometric phantom using the \"File - Create Phantom\" menu command."},
-  {"You can create a gray-scale, rasterized image of a phantom by using the \"Process - Rasterize\" menu command on a geometric phantom."},
-  {"You can simulate the x-ray process by using the \"Process - Projections\" menu command on a geometric phantom."},
-  {"You can simulate first, second, and third-fourth-fifth generation CT scanners by using different scanner geometries."},
-  {"You can reconstruct an image from the x-ray data by using the \"Reconstruction\" menu on a projection file."},
-  {"You can specify different levels of smoothing by using different filters in the \"Reconstruction\" dialog."},
-  {"You can select a row and column of an image by left-mouse button clicking on an image."},
-  {"You can plot a column or row of an image by using the \"Analyze - Plot\" command."},
-  {"You can save your plots to a disk file by using the \"File - Save\" command."},
-  {"You can create your own phantoms using a text editor. Please see the manual for the simple file format."},
-  {"You can perform 2-dimension Fourier transform of images using the \"Filter\" menu commands."},
-  {"You can create an image of a filter by using the \"File - Create Filter\" menu command."},
-  {"You can add two images by using the \"Image - Add\" menu command."},
-  {"You can display the value of a pixel in an image by right-mouse button clicking on an image."},
-  {"You can view a 3-dimensional view of an image using the \"Image - 3D\" menu command."},
-  {"You can scale an image to any size using the \"Image - Scale Size\" menu command."},
-  {"You can display context-sensitive help by using the \"Help\" button on dialog boxes."},
-  {"You can compare two images by using the \"Analyze - Compare Images\" menu command."},
-  {"You can display these tips at any time by using the \"Help - Tips\" menu command."},
-  {"You can control CTSim's operation using the \"File - Preferences\" menu command."},
+  "You can create a geometric phantom using the \"File - Create Phantom\" menu command.",
+  "You can create a gray-scale, rasterized image of a phantom by using the \"Process - Rasterize\" menu command on a geometric phantom.",
+  "You can simulate the x-ray process by using the \"Process - Projections\" menu command on a geometric phantom.",
+  "You can simulate first, second, and third-fourth-fifth generation CT scanners by using different scanner geometries.",
+  "You can reconstruct an image from the x-ray data by using the \"Reconstruction\" menu on a projection file.",
+  "You can specify different levels of smoothing by using different filters in the \"Reconstruction\" dialog.",
+  "You can select a row and column of an image by left-mouse button clicking on an image.",
+  "You can plot a column or row of an image by using the \"Analyze - Plot\" command.",
+  "You can save your plots to a disk file by using the \"File - Save\" command.",
+  "You can create your own phantoms using a text editor. Please see the manual for the simple file format.",
+  "You can perform 2-dimension Fourier transform of images using the \"Filter\" menu commands.",
+  "You can create an image of a filter by using the \"File - Create Filter\" menu command.",
+  "You can add two images by using the \"Image - Add\" menu command.",
+  "You can display the value of a pixel in an image by right-mouse button clicking on an image.",
+  "You can view a 3-dimensional view of an image using the \"Image - 3D\" menu command.",
+  "You can scale an image to any size using the \"Image - Scale Size\" menu command.",
+  "You can display context-sensitive help by using the \"Help\" button on dialog boxes.",
+  "You can compare two images by using the \"Analyze - Compare Images\" menu command.",
+  "You can display these tips at any time by using the \"Help - Tips\" menu command.",
+  "You can control CTSim's operation using the \"File - Preferences\" menu command.",
 };
 
 const size_t CTSimTipProvider::s_iNumTips = sizeof(s_aszTips) / sizeof(const char *);