-3.0.0beta2 - Release 2//01
+3.0.0 - Release 2/19/01
* ctsim: Massive update/fix to online help and print manual.
+
+ * ctsim: Added context-sensitive help to dialog boxes
* ctsim: Reformated all dialog boxes, much nicer now.
-
+
+ * ctsim: Improved accelerator key handling
+
* global: Added Hanning filter.
* global: Improved default parameters to that all defaults give
-Version 3.0beta New Features
+Version 3.0 New Features
-* 3-d views of Image files
+* Greatly improved dialog boxes
+
+* Online and print manuals with context-sensitive help!
+
+* 3-d rotating views of image files
* Creation of arbitrary filter images
* All features of command line tools are now in graphical ctsim program!
* Complex-valued image files now supported, lots of image math
- functions added including fourier transformations
+ functions added including Fourier transformations
* Visual and statistical image comparision functions
is modelled after the hypothetical graphics library described by Foley and van
Dam\cite{FOLEY82}. It is designed to be platform-independent.
-\section{Flowchart}
-
+\section{Transformation Sequence}
+\latexonly{
\parbox{11cm}{
\centerline{Master coordinate (MC) level}
\centerline{$\downarrow$}
\centerline{Clipping against Viewport}
\centerline{$\downarrow$}
\centerline{Convert to Physical device coordinates (PDC)}
+}}
+\latexignore{
+\centerline{Master coordinate (MC) level}
+\centerline{Apply \emph{Current transformation matrix}}
+\centerline{World coordinate (WC) level}
+\centerline{Clipping against Window}
+\centerline{Convert to Normalized device coordinates (NDC)}
+\centerline{Clipping against Viewport}
+\centerline{Convert to Physical device coordinates (PDC)}
}
\section{Functions}%
\latexignore{\emph{Pd}.}
\latexonly{These relationships are diagrammed in figure~\ref{phantomgeomfig}.}
\begin{figure}
-\centerline{\image{5cm;0cm}{scangeometry.eps}}
+\centerline{\image{8cm;0cm}{scangeometry.eps}}
\latexonly{\caption{\label{phantomgeomfig} Phantom Geometry}}
\end{figure}
At a setting of \texttt{1}, the Hamming filter is the same as the bandlimit filter.
At a setting of \texttt{0.54}, the Hamming filter is the same as the Hanning
window.}
-\end{twocollist}
-
-\begin{twocollist}
\twocolitem{\textbf{Filter Method}}{Selects the filtering method.
-For large numbers of detectors, \texttt{rfftw} is optimal. For
-smaller numbers of detectors, \texttt{convolution} can be
-faster.
-\begin{itemize}\itemsep=0pt
-\item \texttt{convolution}
-\item \texttt{fourier} - Uses simple Fourier transform.
-\item \texttt{fourier-table} - Optimizes Fourier transform by precalculating trigometric functions.
-\item \texttt{fftw} - Uses complex-valued Fourier transform with the \emph{fftw} library.
-\item \texttt{rfftw} - Uses optimized real/half-complex Fourier transform.
-\end{itemize}
+For large numbers of detectors, the FFT-based filters are preferred whereas for
+smaller numbers of detectors \texttt{convolution} can be
+faster. When \emph{Advanced Options} have been turned off, this menu only shows
+the two basic choices: \texttt{convolution} and \texttt{FFT}. However, when
+\emph{Advanced Options} have been turned on, additional selections are available as
+discussed in the next section.
}
\twocolitem{\textbf{Interpolation}}{Interpolation technique.
\texttt{cubic} is optimal when the
by expert users.
\begin{twocollist}
+\twocolitem{\textbf{Filter Method}}{Selects the filtering method.
+The general comments about this parameter given the previous section still apply.
+With \emph{Advanced Options} on, the full set of filter methods are available:
+\begin{itemize}\itemsep=0pt
+\item \texttt{convolution}
+\item \texttt{fourier} - Uses simple Fourier transform.
+\item \texttt{fourier-table} - Optimizes Fourier transform by precalculating trigometric functions.
+\item \texttt{fftw} - Uses complex-valued Fourier transform with the \emph{fftw} library.
+\item \texttt{rfftw} - Uses optimized real/half-complex Fourier transform.
+\end{itemize}
+}
\twocolitem{\textbf{Backprojection}}{Selects the backprojection
technique. A setting of \texttt{idiff} is optimal.
\begin{itemize}\itemsep=0pt
1
1
ctsim.tex
-17
-0
+18
+3
0
-ctsim.tex
-TeX
-402665466 0 104 1 42 1 22 22 1099 609
-ctsim-textui.tex
+ctsim-gui.tex
TeX
-268447738 0 257 1 258 1 198 198 1275 785
+268447738 2 388 89 388 94 176 176 1253 763
ctsim-appendix.tex
TeX
-268447738 0 16 31 12 10 44 44 1121 631
-ctsim-concepts.tex
+12282 0 32 35 122 1 44 44 1121 631
+ctsim-textui.tex
TeX
-268447738 0 362 1 362 1 110 110 1187 697
-mytitle.sty
-DATA
-273679026 0 16 14 8 13 66 66 1143 653
-ctsim-gui.tex
+12282 5 38 56 38 57 198 198 1275 785
+ctsim-concepts.tex
TeX
-268447738 0 431 23 431 39 176 176 1253 763
+268447738 5 291 46 291 47 110 110 1187 697
ctsim-install.tex
TeX
-268447738 0 45 19 46 62 110 110 1187 697
+268447738 0 15 32 24 22 110 110 1187 697
ctsim-web.tex
TeX
-268447739 0 30 18 32 1 88 88 1165 675
+268447739 0 24 50 25 1 88 88 1165 675
+ctsim.tex
+TeX
+402665466 0 98 25 102 1 22 22 1099 609
+tex2rtf.ini
+DATA
+273777330 0 0 1 17 8 22 22 938 609
+mytitle.sty
+DATA
+273679026 0 16 14 8 13 66 66 1143 653
C:\Program Files\SecureCRT 3.0\download\ct.tex
TeX
268439546 0 3 1 600 1 132 132 1048 719
-\documentclass[letterpaper,12pt]{report}%
+\documentclass[letterpaper,11pt]{report}%
\usepackage{graphicx}
\usepackage{texhelp}
\usepackage{fancyhea}
\newcommand{\indexit}[1]{#1\index{#1}}%
\newcommand{\inioption}[1]{{\bf {\tt #1}}\index{#1}}%
-\newcommand{\manvernum}[0]{0.5}
+\newcommand{\manvernum}[0]{0.6}
\newcommand{\manver}[0]{v\manvernum}
-\newcommand{\mandate}[0]{February 15, 2001}
+\newcommand{\mandate}[0]{February 16, 2001}
\newcommand{\ctsimfooter}{\setfooter{\thepage}{}{}{\small Manual \manver}{\small \mandate}{\thepage}}
\newcommand{\doublehyphen}[1]{-\,-\texttt{#1}}
\newcommand{\ctsimvernum}[0]{3.0.0}
\newcommand{\ctsimver}[0]{CTSim \ctsimvernum}
-\newcommand{\ctsimheadtitle}{\ctsimver Manual}
+\newcommand{\ctsimheadtitle}{\ctsimver\ Manual}
\latexignore{\newcommand{\sqrt}[2]{sqrt(#2)}}
# Begin Source File
SOURCE=..\..\src\ctsim.cpp
-
-!IF "$(CFG)" == "ctsim - Win32 Release"
-
-# ADD CPP /D CTSIMVERSION=\"3.0.0alpha5\"
-# SUBTRACT CPP /D CTSIMVERSION=\"3.0.0beta1\"
-
-!ELSEIF "$(CFG)" == "ctsim - Win32 Debug"
-
# ADD CPP /D CTSIMVERSION=\"3.0.0alpha5\"
# SUBTRACT CPP /D CTSIMVERSION=\"3.0.0beta1\"
-
-!ENDIF
-
# End Source File
# Begin Source File
SOURCE=..\..\src\dialogs.cpp
-
-!IF "$(CFG)" == "ctsim - Win32 Release"
-
-# ADD CPP /D CTSIMVERSION=\"3.0.0alpha5\"
-# SUBTRACT CPP /D CTSIMVERSION=\"3.0.0beta1\"
-
-!ELSEIF "$(CFG)" == "ctsim - Win32 Debug"
-
# ADD CPP /D CTSIMVERSION=\"3.0.0alpha5\"
# SUBTRACT CPP /D CTSIMVERSION=\"3.0.0beta1\"
-
-!ENDIF
-
# End Source File
# Begin Source File
SOURCE=..\..\src\dlgprojections.cpp
-
-!IF "$(CFG)" == "ctsim - Win32 Release"
-
# ADD CPP /D CTSIMVERSION=\"3.0.0alpha5\"
# SUBTRACT CPP /D CTSIMVERSION=\"3.0.0beta1\"
-
-!ELSEIF "$(CFG)" == "ctsim - Win32 Debug"
-
-# ADD CPP /D CTSIMVERSION=\"3.0.0alpha5\"
-# SUBTRACT CPP /D CTSIMVERSION=\"3.0.0beta1\"
-
-!ENDIF
-
# End Source File
# Begin Source File
SOURCE=..\..\src\dlgreconstruct.cpp
-
-!IF "$(CFG)" == "ctsim - Win32 Release"
-
-# ADD CPP /D CTSIMVERSION=\"3.0.0alpha5\"
-# SUBTRACT CPP /D CTSIMVERSION=\"3.0.0beta1\"
-
-!ELSEIF "$(CFG)" == "ctsim - Win32 Debug"
-
# ADD CPP /D CTSIMVERSION=\"3.0.0alpha5\"
# SUBTRACT CPP /D CTSIMVERSION=\"3.0.0beta1\"
-
-!ENDIF
-
# End Source File
# Begin Source File
SOURCE=..\..\src\docs.cpp
-
-!IF "$(CFG)" == "ctsim - Win32 Release"
-
# ADD CPP /D CTSIMVERSION=\"3.0.0alpha5\"
# SUBTRACT CPP /D CTSIMVERSION=\"3.0.0beta1\"
-
-!ELSEIF "$(CFG)" == "ctsim - Win32 Debug"
-
-# ADD CPP /D CTSIMVERSION=\"3.0.0alpha5\"
-# SUBTRACT CPP /D CTSIMVERSION=\"3.0.0beta1\"
-
-!ENDIF
-
# End Source File
# Begin Source File
SOURCE=..\..\src\graph3dview.cpp
-
-!IF "$(CFG)" == "ctsim - Win32 Release"
-
-!ELSEIF "$(CFG)" == "ctsim - Win32 Debug"
-
-!ENDIF
-
# End Source File
# Begin Source File
SOURCE=..\..\src\views.cpp
-
-!IF "$(CFG)" == "ctsim - Win32 Release"
-
# ADD CPP /D CTSIMVERSION=\"3.0.0alpha5\"
# SUBTRACT CPP /D CTSIMVERSION=\"3.0.0beta1\"
-
-!ELSEIF "$(CFG)" == "ctsim - Win32 Debug"
-
-# ADD CPP /D CTSIMVERSION=\"3.0.0alpha5\"
-# SUBTRACT CPP /D CTSIMVERSION=\"3.0.0beta1\"
-
-!ENDIF
-
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
+SOURCE="..\..\src\ctsim-map.h"
+# End Source File
+# Begin Source File
+
SOURCE=..\..\src\ctsim.h
# End Source File
# Begin Source File
<pre>
<h1>Build Log</h1>
<h3>
---------------------Configuration: libctsim - Win32 Release--------------------
+--------------------Configuration: ctsim - Win32 Release--------------------
</h3>
<h3>Command Lines</h3>
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP472.tmp" with contents
-[
-/nologo /G6 /MT /W3 /GR /GX /O2 /I "\wx2.2.5\src\png" /I "\wx2.2.5\src\zlib" /I "..\..\INCLUDE" /I "..\..\getopt" /I "..\..\..\fftw-2.1.3\fftw" /I "..\..\..\fftw-2.1.3\rfftw" /I "..\..\..\wx2.2.5\include" /D "NDEBUG" /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__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /Fp"Release/libctsim.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c
-"C:\ctsim\libctsim\filter.cpp"
-]
-Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP472.tmp"
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP473.tmp" with contents
+Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP51C.tmp" with contents
[
-/nologo /out:"Release\libctsim.lib"
-.\Release\array2dfile.obj
-.\Release\backprojectors.obj
-.\Release\clip.obj
-.\Release\consoleio.obj
-.\Release\dlgezplot.obj
-.\Release\ezplot.obj
-.\Release\ezset.obj
-.\Release\ezsupport.obj
-.\Release\filter.obj
-.\Release\fnetorderstream.obj
-.\Release\fourier.obj
-.\Release\getopt.obj
-.\Release\getopt1.obj
-.\Release\globalvars.obj
-.\Release\hashtable.obj
-.\Release\imagefile.obj
-.\Release\interpolator.obj
-.\Release\mathfuncs.obj
-.\Release\phantom.obj
-.\Release\plotfile.obj
-.\Release\pol.obj
-.\Release\procsignal.obj
-.\Release\projections.obj
-.\Release\reconstruct.obj
-.\Release\scanner.obj
-.\Release\sgp.obj
-.\Release\strfuncs.obj
-.\Release\syserror.obj
-.\Release\trace.obj
-.\Release\transformmatrix.obj
-.\Release\xform.obj
+/nologo /G6 /MT /W3 /GR /GX /O2 /I "..\..\..\fftw-2.1.3\fftw" /I "\wx2.2.5\include" /I "\wx2.2.5\src\png" /I "\wx2.2.5\src\zlib" /I "..\..\include" /I "..\..\getopt" /I "..\..\..\fftw-2.1.3\rfftw" /D "NDEBUG" /D "__WXWIN__" /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=\"3.0.0alpha5\" /FR"Release/" /Fp"Release/ctsim.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c
+"C:\ctsim\src\dialogs.cpp"
]
-Creating command line "link.exe -lib @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP473.tmp"
-<h3>Output Window</h3>
-Compiling...
-filter.cpp
-Creating library...
-<h3>
---------------------Configuration: ctsim - Win32 Release--------------------
-</h3>
-<h3>Command Lines</h3>
-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP474.tmp" with contents
+Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP51C.tmp"
+Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP51D.tmp" with contents
[
wsock32.lib tiff.lib jpeg.lib png.lib zlib.lib xpm.lib comctl32.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 opengl32.lib glu32.lib htmlhelp.lib /nologo /subsystem:windows /incremental:no /pdb:"Release/ctsim.pdb" /machine:I386 /out:"Release/ctsim.exe" /libpath:"\wx2.2.5\lib"
.\Release\ctsim.obj
\wx2.2.5\lib\zlib.lib
\wx2.2.5\lib\tiff.lib
]
-Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP474.tmp"
+Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP51D.tmp"
<h3>Output Window</h3>
+Compiling...
+dialogs.cpp
Linking...
LINK : warning LNK4089: all references to "WSOCK32.dll" discarded by /OPT:REF
# End Source File
# Begin Source File
-SOURCE=..\..\libctsupport\cubicinterp.cpp
-# End Source File
-# Begin Source File
-
SOURCE=..\..\tools\if1.cpp
# End Source File
# Begin Source File
** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: ctsim.cpp,v 1.78 2001/02/16 00:28:41 kevin Exp $
+** $Id: ctsim.cpp,v 1.79 2001/02/16 02:36:18 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
#endif
#endif
-static const char* rcsindent = "$Id: ctsim.cpp,v 1.78 2001/02/16 00:28:41 kevin Exp $";
+static const char* rcsindent = "$Id: ctsim.cpp,v 1.79 2001/02/16 02:36:18 kevin Exp $";
struct option CTSimApp::ctsimOptions[] =
{
EVT_MENU(MAINMENU_FILE_PREFERENCES, MainFrame::OnPreferences)
EVT_MENU(MAINMENU_HELP_ABOUT, MainFrame::OnAbout)
EVT_MENU(MAINMENU_HELP_CONTENTS, MainFrame::OnHelpContents)
-EVT_MENU(MAINMENU_HELP_TOPICS, MainFrame::OnHelpTopics)
EVT_BUTTON(IDH_DLG_RASTERIZE, MainFrame::OnHelpButton)
EVT_BUTTON(IDH_DLG_PROJECTIONS, MainFrame::OnHelpButton)
EVT_BUTTON(IDH_DLG_RECONSTRUCTION, MainFrame::OnHelpButton)
wxMenu* help_menu = new wxMenu;
help_menu->Append (MAINMENU_HELP_CONTENTS, "&Contents\tF1");
- help_menu->Append (MAINMENU_HELP_TOPICS, "&Topics\tCtrl-T");
#if defined(CTSIM_WINHELP) && (defined(DEBUG) || defined(_DEBUG))
help_menu->Append (MAINMENU_HELP_SECONDARY, "&Secondary Help");
#endif
wxAcceleratorEntry accelEntries[15];
accelEntries[0].Set (wxACCEL_CTRL, static_cast<int>('O'), wxID_OPEN);
- accelEntries[1].Set (wxACCEL_CTRL, static_cast<int>('H'), MAINMENU_HELP_TOPICS);
accelEntries[2].Set (wxACCEL_CTRL, static_cast<int>('P'), MAINMENU_FILE_CREATE_PHANTOM);
accelEntries[3].Set (wxACCEL_CTRL, static_cast<int>('F'), MAINMENU_FILE_CREATE_FILTER);
#ifndef CTSIM_MDI
}
}
-void
-MainFrame::OnHelpTopics (wxCommandEvent& event)
-{
- showHelp (event.GetId());
-}
void
MainFrame::OnHelpContents (wxCommandEvent& event)
#endif
break;
- case MAINMENU_HELP_TOPICS:
-#ifdef CTSIM_WINHELP
- m_winHelp.DisplaySection (IDH_INTRODUCTION);
-#else
- m_htmlHelp.DisplayIndex();
-#endif
- break;
-
default:
#ifdef CTSIM_WINHELP
m_winHelp.DisplaySection (commandID);
** This is part of the CTSim program
** Copyright (c) 1983-2001 Kevin Rosenberg
**
-** $Id: ctsim.h,v 1.46 2001/02/16 00:28:41 kevin Exp $
+** $Id: ctsim.h,v 1.47 2001/02/16 02:36:18 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
void showHelp (int commandID);
void OnAbout (wxCommandEvent& event);
- void OnHelpTopics (wxCommandEvent& event);
void OnHelpContents (wxCommandEvent& event);
void OnCreatePhantom (wxCommandEvent& event);
void OnPreferences (wxCommandEvent& event);
MAINMENU_WINDOW_BASE = 500,
MAINMENU_HELP_ABOUT = 600,
MAINMENU_HELP_CONTENTS,
- MAINMENU_HELP_TOPICS,
#if defined(CTSIM_WINHELP) && (defined(DEBUG) || defined(_DEBUG))
MAINMENU_HELP_SECONDARY,
#endif
** This is part of the CTSim program
** Copyright (c) 1983-2001 Kevin Rosenberg
**
-** $Id: dialogs.cpp,v 1.33 2001/02/16 00:28:41 kevin Exp $
+** $Id: dialogs.cpp,v 1.34 2001/02/16 02:36:18 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
m_pRadioBoxFilter->SetSelection (iDefaultFilterID);
pGridSizer->Add (m_pRadioBoxFilter, 0, wxALL | wxALIGN_LEFT | wxEXPAND);
- m_pRadioBoxFilterMethod = new StringValueAndTitleRadioBox (this, _T("Filter Method"), ProcessSignal::getFilterMethodCount(), ProcessSignal::getFilterMethodTitleArray(), ProcessSignal::getFilterMethodNameArray());
- m_pRadioBoxFilterMethod->SetSelection (iDefaultFilterMethodID);
- pGridSizer->Add (m_pRadioBoxFilterMethod, 0, wxALL | wxALIGN_LEFT | wxEXPAND);
-
+ if (theApp->getAdvancedOptions()) {
+ m_pRadioBoxFilterMethod = new StringValueAndTitleRadioBox (this, _T("Filter Method"), ProcessSignal::getFilterMethodCount(), ProcessSignal::getFilterMethodTitleArray(), ProcessSignal::getFilterMethodNameArray());
+ m_pRadioBoxFilterMethod->SetSelection (iDefaultFilterMethodID);
+ pGridSizer->Add (m_pRadioBoxFilterMethod, 0, wxALL | wxALIGN_LEFT | wxEXPAND);
+ } else {
+#if HAVE_FFTW
+ static const char* aszFilterMethodTitle[] = {"Convolution", "FFT"};
+ static const char* aszFilterMethodName[] = {"convolution", "rfftw"};
+#else
+ static const char* aszFilterMethodTitle[] = {"Convolution", "Fourier"};
+ static const char* aszFilterMethodName[] = {"convolution", "fourier-table"};
+#endif
+ m_pRadioBoxFilterMethod = new StringValueAndTitleRadioBox (this, _T("Filter Method"), 2, aszFilterMethodTitle, aszFilterMethodName);
+#if HAVE_FFTW
+ m_pRadioBoxFilterMethod->SetSelection (1);
+#else
+ m_pRadioBoxFilterMethod->SetSelection (0);
+#endif
+ pGridSizer->Add (m_pRadioBoxFilterMethod, 0, wxALL | wxALIGN_LEFT | wxEXPAND);
+ }
+
if (theApp->getAdvancedOptions()) {
m_pRadioBoxFilterGeneration = new StringValueAndTitleRadioBox (this, _T("Filter Generation"), ProcessSignal::getFilterGenerationCount(), ProcessSignal::getFilterGenerationTitleArray(), ProcessSignal::getFilterGenerationNameArray());
m_pRadioBoxFilterGeneration->SetSelection (iDefaultFilterGenerationID);
** This is part of the CTSim program
** Copyright (c) 1983-2001 Kevin Rosenberg
**
-** $Id: graph3dview.cpp,v 1.12 2001/02/08 22:38:23 kevin Exp $
+** $Id: graph3dview.cpp,v 1.13 2001/02/16 02:36:18 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
wxMenu *help_menu = new wxMenu;
help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1");
- help_menu->Append(MAINMENU_HELP_TOPICS, "&Topics\tCtrl-H");
help_menu->Append(MAINMENU_HELP_ABOUT, "&About");
wxMenuBar *menu_bar = new wxMenuBar;
subframe->SetMenuBar(menu_bar);
subframe->Centre(wxBOTH);
-
- wxAcceleratorEntry accelEntries[12];
- accelEntries[0].Set (wxACCEL_CTRL, static_cast<int>('O'), wxID_OPEN);
- accelEntries[1].Set (wxACCEL_CTRL, static_cast<int>('H'), MAINMENU_HELP_TOPICS);
- accelEntries[2].Set (wxACCEL_CTRL, static_cast<int>('P'), MAINMENU_FILE_CREATE_PHANTOM);
- accelEntries[3].Set (wxACCEL_CTRL, static_cast<int>('F'), MAINMENU_FILE_CREATE_FILTER);
- accelEntries[4].Set (wxACCEL_NORMAL, WXK_F1, MAINMENU_HELP_CONTENTS);
- accelEntries[5].Set (wxACCEL_CTRL, static_cast<int>('R'), GRAPH3D_VIEW_SURFACE);
- accelEntries[6].Set (wxACCEL_CTRL, static_cast<int>('L'), GRAPH3D_VIEW_COLOR);
- accelEntries[7].Set (wxACCEL_CTRL, static_cast<int>('G'), GRAPH3D_VIEW_LIGHTING);
- accelEntries[8].Set (wxACCEL_CTRL, static_cast<int>('M'), GRAPH3D_VIEW_SMOOTH);
- accelEntries[9].Set (wxACCEL_CTRL, static_cast<int>('E'), GRAPH3D_VIEW_SCALE_MINMAX);
- accelEntries[10].Set (wxACCEL_CTRL, static_cast<int>('A'), GRAPH3D_VIEW_SCALE_AUTO);
- accelEntries[11].Set (wxACCEL_CTRL, static_cast<int>('U'), GRAPH3D_VIEW_SCALE_FULL);
- wxAcceleratorTable accelTable (12, accelEntries);
+
+ wxAcceleratorEntry accelEntries[7];
+ accelEntries[0].Set (wxACCEL_CTRL, static_cast<int>('R'), GRAPH3D_VIEW_SURFACE);
+ accelEntries[1].Set (wxACCEL_CTRL, static_cast<int>('L'), GRAPH3D_VIEW_COLOR);
+ accelEntries[2].Set (wxACCEL_CTRL, static_cast<int>('G'), GRAPH3D_VIEW_LIGHTING);
+ accelEntries[3].Set (wxACCEL_CTRL, static_cast<int>('M'), GRAPH3D_VIEW_SMOOTH);
+ accelEntries[4].Set (wxACCEL_CTRL, static_cast<int>('E'), GRAPH3D_VIEW_SCALE_MINMAX);
+ accelEntries[5].Set (wxACCEL_CTRL, static_cast<int>('A'), GRAPH3D_VIEW_SCALE_AUTO);
+ accelEntries[6].Set (wxACCEL_CTRL, static_cast<int>('U'), GRAPH3D_VIEW_SCALE_FULL);
+ wxAcceleratorTable accelTable (7, accelEntries);
subframe->SetAcceleratorTable (accelTable);
-
+
return subframe;
}
** This is part of the CTSim program
** Copyright (c) 1983-2001 Kevin Rosenberg
**
-** $Id: views.cpp,v 1.104 2001/02/14 18:39:47 kevin Exp $
+** $Id: views.cpp,v 1.105 2001/02/16 02:36:18 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
wxMenu *help_menu = new wxMenu;
help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1");
- help_menu->Append(MAINMENU_HELP_TOPICS, "&Topics\tCtrl-H");
help_menu->Append(MAINMENU_HELP_ABOUT, "&About");
wxMenuBar *menu_bar = new wxMenuBar;
subframe->Centre(wxBOTH);
- wxAcceleratorEntry accelEntries[11];
- accelEntries[0].Set (wxACCEL_CTRL, static_cast<int>('O'), wxID_OPEN);
- accelEntries[1].Set (wxACCEL_CTRL, static_cast<int>('S'), wxID_SAVE);
- accelEntries[2].Set (wxACCEL_CTRL, static_cast<int>('W'), wxID_CLOSE);
- accelEntries[3].Set (wxACCEL_CTRL, static_cast<int>('H'), MAINMENU_HELP_TOPICS);
- accelEntries[4].Set (wxACCEL_CTRL, static_cast<int>('P'), MAINMENU_FILE_CREATE_PHANTOM);
- accelEntries[5].Set (wxACCEL_CTRL, static_cast<int>('F'), MAINMENU_FILE_CREATE_FILTER);
- accelEntries[6].Set (wxACCEL_NORMAL, WXK_F1, MAINMENU_HELP_CONTENTS);
- accelEntries[7].Set (wxACCEL_CTRL, static_cast<int>('A'), IFMENU_VIEW_SCALE_AUTO);
- accelEntries[8].Set (wxACCEL_CTRL, static_cast<int>('U'), IFMENU_VIEW_SCALE_FULL);
- accelEntries[9].Set (wxACCEL_CTRL, static_cast<int>('E'), IFMENU_VIEW_SCALE_MINMAX);
+ wxAcceleratorEntry accelEntries[4];
+ accelEntries[0].Set (wxACCEL_CTRL, static_cast<int>('A'), IFMENU_VIEW_SCALE_AUTO);
+ accelEntries[1].Set (wxACCEL_CTRL, static_cast<int>('U'), IFMENU_VIEW_SCALE_FULL);
+ accelEntries[2].Set (wxACCEL_CTRL, static_cast<int>('E'), IFMENU_VIEW_SCALE_MINMAX);
#if wxUSE_GLCANVAS
- accelEntries[10].Set (wxACCEL_CTRL, static_cast<int>('3'), IFMENU_IMAGE_CONVERT3D);
- wxAcceleratorTable accelTable (11, accelEntries);
+ accelEntries[3].Set (wxACCEL_CTRL, static_cast<int>('3'), IFMENU_IMAGE_CONVERT3D);
+ wxAcceleratorTable accelTable (4, accelEntries);
#else
- wxAcceleratorTable accelTable (10, accelEntries);
+ wxAcceleratorTable accelTable (3, accelEntries);
#endif
subframe->SetAcceleratorTable (accelTable);
wxMenu *help_menu = new wxMenu;
help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1");
- help_menu->Append(MAINMENU_HELP_TOPICS, "&Topics\tCtrl-H");
help_menu->Append(MAINMENU_HELP_ABOUT, "&About");
wxMenuBar *menu_bar = new wxMenuBar;
subframe->SetMenuBar(menu_bar);
subframe->Centre(wxBOTH);
- wxAcceleratorEntry accelEntries[8];
- accelEntries[0].Set (wxACCEL_CTRL, static_cast<int>('O'), wxID_OPEN);
- accelEntries[1].Set (wxACCEL_CTRL, static_cast<int>('S'), wxID_SAVE);
- accelEntries[2].Set (wxACCEL_CTRL, static_cast<int>('H'), MAINMENU_HELP_TOPICS);
- accelEntries[3].Set (wxACCEL_CTRL, static_cast<int>('P'), MAINMENU_FILE_CREATE_PHANTOM);
- accelEntries[4].Set (wxACCEL_CTRL, static_cast<int>('F'), MAINMENU_FILE_CREATE_FILTER);
- accelEntries[5].Set (wxACCEL_NORMAL, WXK_F1, MAINMENU_HELP_CONTENTS);
- accelEntries[6].Set (wxACCEL_CTRL, static_cast<int>('J'), PHMMENU_PROCESS_PROJECTIONS);
- accelEntries[7].Set (wxACCEL_CTRL, static_cast<int>('R'), PHMMENU_PROCESS_RASTERIZE);
- wxAcceleratorTable accelTable (8, accelEntries);
+ wxAcceleratorEntry accelEntries[2];
+ accelEntries[0].Set (wxACCEL_CTRL, static_cast<int>('J'), PHMMENU_PROCESS_PROJECTIONS);
+ accelEntries[1].Set (wxACCEL_CTRL, static_cast<int>('R'), PHMMENU_PROCESS_RASTERIZE);
+ wxAcceleratorTable accelTable (2, accelEntries);
subframe->SetAcceleratorTable (accelTable);
return subframe;
wxMenu *help_menu = new wxMenu;
help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1");
- help_menu->Append(MAINMENU_HELP_TOPICS, "&Topics\tCtrl-H");
help_menu->Append(MAINMENU_HELP_ABOUT, "&About");
wxMenuBar *menu_bar = new wxMenuBar;
subframe->SetMenuBar(menu_bar);
subframe->Centre(wxBOTH);
- wxAcceleratorEntry accelEntries[11];
- accelEntries[0].Set (wxACCEL_CTRL, static_cast<int>('O'), wxID_OPEN);
- accelEntries[1].Set (wxACCEL_CTRL, static_cast<int>('S'), wxID_SAVE);
- accelEntries[2].Set (wxACCEL_CTRL, static_cast<int>('W'), wxID_CLOSE);
- accelEntries[3].Set (wxACCEL_CTRL, static_cast<int>('H'), MAINMENU_HELP_TOPICS);
- accelEntries[4].Set (wxACCEL_CTRL, static_cast<int>('P'), MAINMENU_FILE_CREATE_PHANTOM);
- accelEntries[5].Set (wxACCEL_CTRL, static_cast<int>('F'), MAINMENU_FILE_CREATE_FILTER);
- accelEntries[6].Set (wxACCEL_NORMAL, WXK_F1, MAINMENU_HELP_CONTENTS);
- accelEntries[7].Set (wxACCEL_CTRL, static_cast<int>('L'), PJMENU_CONVERT_POLAR);
- accelEntries[8].Set (wxACCEL_CTRL, static_cast<int>('I'), PJMENU_CONVERT_FFT_POLAR);
- accelEntries[9].Set (wxACCEL_CTRL, static_cast<int>('R'), PJMENU_RECONSTRUCT_FBP);
- accelEntries[10].Set (wxACCEL_CTRL, static_cast<int>('E'), PJMENU_RECONSTRUCT_FOURIER);
- wxAcceleratorTable accelTable (11, accelEntries);
+ wxAcceleratorEntry accelEntries[4];
+ accelEntries[0].Set (wxACCEL_CTRL, static_cast<int>('L'), PJMENU_CONVERT_POLAR);
+ accelEntries[1].Set (wxACCEL_CTRL, static_cast<int>('I'), PJMENU_CONVERT_FFT_POLAR);
+ accelEntries[2].Set (wxACCEL_CTRL, static_cast<int>('R'), PJMENU_RECONSTRUCT_FBP);
+ accelEntries[3].Set (wxACCEL_CTRL, static_cast<int>('E'), PJMENU_RECONSTRUCT_FOURIER);
+ wxAcceleratorTable accelTable (4, accelEntries);
subframe->SetAcceleratorTable (accelTable);
return subframe;
wxMenu *help_menu = new wxMenu;
help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1");
- help_menu->Append(MAINMENU_HELP_TOPICS, "&Topics\tCtrl-H");
help_menu->Append(MAINMENU_HELP_ABOUT, "&About");
wxMenuBar *menu_bar = new wxMenuBar;
subframe->SetMenuBar(menu_bar);
subframe->Centre(wxBOTH);
- wxAcceleratorEntry accelEntries[10];
- accelEntries[0].Set (wxACCEL_CTRL, static_cast<int>('O'), wxID_OPEN);
- accelEntries[1].Set (wxACCEL_CTRL, static_cast<int>('S'), wxID_SAVE);
- accelEntries[2].Set (wxACCEL_CTRL, static_cast<int>('W'), wxID_CLOSE);
- accelEntries[3].Set (wxACCEL_CTRL, static_cast<int>('H'), MAINMENU_HELP_TOPICS);
- accelEntries[4].Set (wxACCEL_CTRL, static_cast<int>('P'), MAINMENU_FILE_CREATE_PHANTOM);
- accelEntries[5].Set (wxACCEL_CTRL, static_cast<int>('F'), MAINMENU_FILE_CREATE_FILTER);
- accelEntries[6].Set (wxACCEL_NORMAL, WXK_F1, MAINMENU_HELP_CONTENTS);
- accelEntries[7].Set (wxACCEL_CTRL, static_cast<int>('E'), PLOTMENU_VIEW_SCALE_MINMAX);
- accelEntries[8].Set (wxACCEL_CTRL, static_cast<int>('A'), PLOTMENU_VIEW_SCALE_AUTO);
- accelEntries[9].Set (wxACCEL_CTRL, static_cast<int>('U'), PLOTMENU_VIEW_SCALE_FULL);
- wxAcceleratorTable accelTable (10, accelEntries);
+ wxAcceleratorEntry accelEntries[3];
+ accelEntries[0].Set (wxACCEL_CTRL, static_cast<int>('E'), PLOTMENU_VIEW_SCALE_MINMAX);
+ accelEntries[1].Set (wxACCEL_CTRL, static_cast<int>('A'), PLOTMENU_VIEW_SCALE_AUTO);
+ accelEntries[2].Set (wxACCEL_CTRL, static_cast<int>('U'), PLOTMENU_VIEW_SCALE_FULL);
+ wxAcceleratorTable accelTable (3, accelEntries);
subframe->SetAcceleratorTable (accelTable);
return subframe;
wxMenu *help_menu = new wxMenu;
help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1");
- help_menu->Append(MAINMENU_HELP_TOPICS, "&Topics\tCtrl-H");
help_menu->Append(MAINMENU_HELP_ABOUT, "&About");
wxMenuBar *menu_bar = new wxMenuBar;
subframe->SetMenuBar(menu_bar);
subframe->Centre(wxBOTH);
-
- wxAcceleratorEntry accelEntries[5];
- accelEntries[0].Set (wxACCEL_CTRL, static_cast<int>('O'), wxID_OPEN);
- accelEntries[1].Set (wxACCEL_CTRL, static_cast<int>('S'), wxID_SAVE);
- accelEntries[2].Set (wxACCEL_CTRL, static_cast<int>('W'), wxID_CLOSE);
- accelEntries[3].Set (wxACCEL_CTRL, static_cast<int>('H'), MAINMENU_HELP_TOPICS);
- accelEntries[4].Set (wxACCEL_NORMAL, WXK_F1, MAINMENU_HELP_CONTENTS);
- wxAcceleratorTable accelTable (5, accelEntries);
- subframe->SetAcceleratorTable (accelTable);
-
+
return subframe;
}