X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=src%2Fdialogs.h;h=354602113bb55d53e24049626d1914c8b5be8cee;hp=03582ac6771320be3ab467db733a82fa90d59c71;hb=7ec2cd66921180a624813dff9f8bac76c6b268cc;hpb=4b18b0a7fed4e25130c6edf7929d0df50b8c24ea diff --git a/src/dialogs.h b/src/dialogs.h index 03582ac..3546021 100644 --- a/src/dialogs.h +++ b/src/dialogs.h @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: dialogs.h,v 1.1 2000/07/18 03:14:35 kevin Exp $ +** $Id: dialogs.h,v 1.17 2001/01/01 10:14:34 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 @@ -30,28 +30,231 @@ #define __DIALOGSH__ #include "wx/wx.h" +#include +#include "ctsupport.h" +#include "scanner.h" +#include "phantom.h" +#include "procsignal.h" +#include "filter.h" + + +// CLASS StringValueAndTitleListBox +// +// A superclass of wxListBox that can handle string values and titles +// and by displaying the title in the list box and returning the string value + +class StringValueAndTitleListBox : public wxListBox +{ + public: + StringValueAndTitleListBox (wxDialog* pParent, int nChoices, const char* aszTitle[], const char* aszValue[]); + + const char* getSelectionStringValue () const; + + private: + const char** m_ppszValues; +}; + + +class DialogGetPhantom : public wxDialog +{ + public: + DialogGetPhantom (wxFrame* pParent, int iDefaultPhantom = Phantom::PHM_HERMAN); + virtual ~DialogGetPhantom () {} + + const char* getPhantom (); + + private: + StringValueAndTitleListBox* m_pListBoxPhantom; +}; + + +#include +class ImageFileDocument; +class DialogGetComparisonImage : public wxDialog +{ + public: + DialogGetComparisonImage (wxFrame* pParent, const char* const pszTitle, const std::vector& rVecIF, bool bShowMakeDifference); + virtual ~DialogGetComparisonImage () {} + + ImageFileDocument* getImageFileDocument (); + + bool getMakeDifferenceImage(); + + private: + wxListBox* m_pListBoxImageChoices; + wxCheckBox* m_pMakeDifferenceImage; + const std::vector& m_rVecIF; +}; + + class ImageFile; -class DialogGetImageMinMax : public wxDialog +class DialogGetMinMax : public wxDialog { public: - DialogGetImageMinMax (wxFrame* pParent, const ImageFile& rImagefile, double dDefaultMin = 0., double dDefaultMax = 0.); - ~DialogGetImageMinMax (void); + DialogGetMinMax (wxFrame* pParent, const char* const pszTitle, double dDefaultMin = 0., double dDefaultMax = 0.); + virtual ~DialogGetMinMax (); - double getMinimum (void); - double getMaximum (void); + double getMinimum (); + double getMaximum (); private: - wxBoxSizer* m_pTopSizer; wxTextCtrl* m_pTextCtrlMin; wxTextCtrl* m_pTextCtrlMax; - wxBoxSizer* m_pButtonSizer; - wxButton* m_pButtonOk; - wxButton* m_pButtonCancel; double m_dDefaultMin; double m_dDefaultMax; }; + +class DialogGetRasterParameters : public wxDialog +{ + public: + DialogGetRasterParameters (wxFrame* pParent, int iDefaultXSize = 0, int iDefaultYSize = 0, int iDefaultNSamples = 1); + virtual ~DialogGetRasterParameters (); + + unsigned int getXSize (); + unsigned int getYSize (); + unsigned int getNSamples (); + + private: + wxTextCtrl* m_pTextCtrlXSize; + wxTextCtrl* m_pTextCtrlYSize; + wxTextCtrl* m_pTextCtrlNSamples; + + int m_iDefaultXSize; + int m_iDefaultYSize; + int m_iDefaultNSamples; +}; + + +class DialogGetProjectionParameters : public wxDialog +{ + public: + DialogGetProjectionParameters (wxFrame* pParent, int iDefaultNDet = 0, int iDefaultNView = 0, int iDefaultNSamples = 1, double dDefaultRotAngle = 1., double dDefaultFocalLength = 1, double dDefaultFieldOfView = 1., int iDefaultGeometry = Scanner::GEOMETRY_PARALLEL, int iDefaultTrace = Trace::TRACE_NONE); + ~DialogGetProjectionParameters (); + + unsigned int getNDet (); + unsigned int getNView (); + unsigned int getNSamples (); + int getTrace (); + + double getRotAngle (); + double getFieldOfViewRatio (); + double getFocalLengthRatio (); + const char* getGeometry(); + + private: + wxTextCtrl* m_pTextCtrlNDet; + wxTextCtrl* m_pTextCtrlNView; + wxTextCtrl* m_pTextCtrlNSamples; + wxTextCtrl* m_pTextCtrlRotAngle; + wxTextCtrl* m_pTextCtrlFocalLength; + wxTextCtrl* m_pTextCtrlFieldOfView; + + StringValueAndTitleListBox* m_pListBoxGeometry; + StringValueAndTitleListBox* m_pListBoxTrace; + + int m_iDefaultNDet; + int m_iDefaultNView; + int m_iDefaultNSamples; + int m_iDefaultTrace; + int m_iDefaultGeometry; + double m_dDefaultRotAngle; + double m_dDefaultFocalLength; + double m_dDefaultFieldOfView; +}; + + +#include "backprojectors.h" +class DialogGetReconstructionParameters : public wxDialog +{ + public: + DialogGetReconstructionParameters (wxFrame* pParent, int iDefaultXSize = 0, int iDefaultYSize = 0, int iDefaultFilterID = SignalFilter::FILTER_ABS_BANDLIMIT, double dDefaultFilterParam = 1., int iDefaultFilterMethodID = ProcessSignal::FILTER_METHOD_CONVOLUTION, int iDefaultFilterGeneration = ProcessSignal::FILTER_GENERATION_INVALID, int iDefaultZeropad = 3, int iDefaultInterpID = Backprojector::INTERP_LINEAR, int iDefaultInterpParam = 1, int iDefaultBackprojectID = Backprojector::BPROJ_IDIFF3, int iDefaultTrace = Trace::TRACE_NONE); + virtual ~DialogGetReconstructionParameters (); + + unsigned int getXSize(); + unsigned int getYSize(); + const char* getFilterName(); + double getFilterParam(); + const char* getFilterMethodName(); + unsigned int getZeropad(); + const char* getFilterGenerationName(); + const char* getInterpName(); + unsigned int getInterpParam(); + const char* getBackprojectName(); + int getTrace (); + + private: + wxTextCtrl* m_pTextCtrlXSize; + wxTextCtrl* m_pTextCtrlYSize; + wxTextCtrl* m_pTextCtrlZeropad; + wxTextCtrl* m_pTextCtrlFilterParam; + wxTextCtrl* m_pTextCtrlInterpParam; + + StringValueAndTitleListBox* m_pListBoxFilter; + StringValueAndTitleListBox* m_pListBoxFilterMethod; + StringValueAndTitleListBox* m_pListBoxFilterGeneration; + StringValueAndTitleListBox* m_pListBoxInterp; + StringValueAndTitleListBox* m_pListBoxBackproject; + StringValueAndTitleListBox* m_pListBoxTrace; + + int m_iDefaultXSize; + int m_iDefaultYSize; + double m_dDefaultFilterParam; + int m_iDefaultZeropad; + int m_iDefaultInterpParam; + int m_iDefaultTrace; +}; + + +class DialogGetFilterParameters : public wxDialog +{ + public: + DialogGetFilterParameters (wxFrame* pParent, int iDefaultXSize = 0, int iDefaultYSize = 0, int iDefaultFilterID = SignalFilter::FILTER_BANDLIMIT, double dDefaultFilterParam = 1., double dDefaultBandwidth = 1., int iDefaultDomain = SignalFilter::DOMAIN_SPATIAL); + virtual ~DialogGetFilterParameters (); + + unsigned int getXSize(); + unsigned int getYSize(); + const char* getFilterName(); + const char* getDomainName(); + double getFilterParam(); + double getBandwidth(); + + private: + wxTextCtrl* m_pTextCtrlXSize; + wxTextCtrl* m_pTextCtrlYSize; + wxTextCtrl* m_pTextCtrlFilterParam; + wxTextCtrl* m_pTextCtrlBandwidth; + + StringValueAndTitleListBox* m_pListBoxFilter; + StringValueAndTitleListBox* m_pListBoxDomain; + + int m_iDefaultXSize; + int m_iDefaultYSize; + double m_dDefaultFilterParam; + double m_dDefaultBandwidth; + int m_iDefaultDomain; +}; + +class DialogAutoScaleParameters : public wxDialog +{ + public: + DialogAutoScaleParameters (wxFrame* pParent, double mean, double mode, double median, double stddev, double dDefaultScaleFactor = 1.); + virtual ~DialogAutoScaleParameters() {} + + bool getMinMax (double* pMin, double* pMax); + double getAutoScaleFactor (); + + private: + const double m_dMean; + const double m_dMode; + const double m_dMedian; + const double m_dStdDev; + + wxTextCtrl* m_pTextCtrlStdDevFactor; + wxListBox* m_pListBoxCenter; +}; + #endif