[110] | 1 | /* src/duchamp.hh. Generated by configure. */ |
---|
[105] | 2 | #ifndef DUCHAMP_HH |
---|
| 3 | #define DUCHAMP_HH |
---|
| 4 | |
---|
[175] | 5 | #include <iostream> |
---|
[125] | 6 | #include <string> |
---|
| 7 | |
---|
[141] | 8 | #undef PACKAGE_BUGREPORT |
---|
| 9 | #undef PACKAGE_NAME |
---|
| 10 | #undef PACKAGE_STRING |
---|
| 11 | #undef PACKAGE_TARNAME |
---|
| 12 | #undef PACKAGE_VERSION |
---|
[110] | 13 | #include "config.h" |
---|
| 14 | |
---|
[71] | 15 | // how to convey whether a function has worked |
---|
[168] | 16 | enum OUTCOME {SUCCESS=0, FAILURE}; |
---|
[71] | 17 | |
---|
[110] | 18 | const std::string ERR_USAGE_MSG = |
---|
[85] | 19 | "Usage:: Duchamp -p [parameter file]\n\ |
---|
[57] | 20 | Other options:\n\ |
---|
[85] | 21 | -f <file> Use default parameters with imageFile=<file>\n\ |
---|
| 22 | -v Version number\n\ |
---|
| 23 | -h This help information\n"; |
---|
[57] | 24 | |
---|
[142] | 25 | const std::string ERR_USAGE_MSG_SHORT="Usage:: Duchamp -p [parameter file]\n"; |
---|
[57] | 26 | |
---|
[110] | 27 | const std::string PROGNAME = PACKAGE_NAME; |
---|
[57] | 28 | |
---|
[110] | 29 | const std::string VERSION = PACKAGE_VERSION; |
---|
[71] | 30 | |
---|
[120] | 31 | // Specialised functions to report warnings and errors. |
---|
| 32 | // These are defined in duchamp.cc |
---|
| 33 | void duchampWarning(std::string subroutine, std::string warning); |
---|
| 34 | void duchampError(std::string subroutine, std::string error); |
---|
| 35 | |
---|
[175] | 36 | // A simple functions to print a given number of backspaces or spaces |
---|
| 37 | // to std::cout |
---|
| 38 | inline void printBackSpace(int num){for(int i=0;i<num;i++) std::cout << '\b';}; |
---|
| 39 | inline void printSpace(int num){ for(int i=0;i<num;i++) std::cout << ' '; }; |
---|
| 40 | inline void printHash(int num){ for(int i=0;i<num;i++) std::cout << '#'; }; |
---|
[187] | 41 | class ProgressBar |
---|
| 42 | { |
---|
| 43 | /** |
---|
| 44 | * ProgressBar Class |
---|
| 45 | * A class that prints out a progress bar in the form |#### | |
---|
| 46 | * that shows how far through a function or loop you are. |
---|
| 47 | * The length of it defaults to 20, but can be set when declaring the |
---|
| 48 | * object. |
---|
| 49 | * There are three functions: |
---|
| 50 | * init(size) --> prints an empty bar, and defines the increment |
---|
| 51 | * update(num) --> prints the correct number of #s, but only when |
---|
| 52 | * num is a multiple of the increment. |
---|
| 53 | * rewind(num) --> prints backspaces to cover the entire bar. |
---|
| 54 | */ |
---|
| 55 | public: |
---|
[201] | 56 | ProgressBar(){length=20; loc=BEG;}; |
---|
| 57 | ProgressBar(int newlength){length=newlength; loc=BEG;}; |
---|
| 58 | enum POS {BEG=0,END}; |
---|
| 59 | |
---|
[187] | 60 | void init(int size){ |
---|
| 61 | std::cout << "|"; printSpace(length); |
---|
| 62 | std::cout << "|" << std::flush; |
---|
| 63 | fraction = size/length; |
---|
[201] | 64 | loc = END; |
---|
[187] | 65 | }; |
---|
| 66 | void update(int num){ |
---|
| 67 | if(num%fraction==0){ |
---|
| 68 | printBackSpace(length+2); std::cout << "|"; |
---|
| 69 | printHash(num/fraction); printSpace(length-num/fraction); |
---|
| 70 | std::cout << "|" << std::flush; |
---|
| 71 | } |
---|
[201] | 72 | loc=END; |
---|
[187] | 73 | }; |
---|
[204] | 74 | void rewind(){ |
---|
| 75 | if(loc==END) printBackSpace(length+2); |
---|
| 76 | loc=BEG; |
---|
| 77 | std::cout << std::flush; |
---|
| 78 | }; |
---|
| 79 | void remove(){ |
---|
| 80 | rewind(); |
---|
| 81 | printSpace(length+2); |
---|
| 82 | loc=END; |
---|
| 83 | rewind(); |
---|
| 84 | std::cout << std::flush; |
---|
| 85 | }; |
---|
[201] | 86 | void fillSpace(std::string someString){ |
---|
| 87 | rewind(); |
---|
| 88 | std::cout << someString; |
---|
| 89 | printSpace(length+2-someString.size()); |
---|
| 90 | loc=END; |
---|
| 91 | } |
---|
[187] | 92 | private: |
---|
[201] | 93 | POS loc; |
---|
[187] | 94 | int fraction; |
---|
| 95 | int length; |
---|
| 96 | }; |
---|
[175] | 97 | |
---|
[103] | 98 | // The spectral type that we want the wcsprm structs to be in |
---|
[142] | 99 | const char duchampVelocityType[9] = "VELO-F2V"; |
---|
| 100 | const char duchampFrequencyType[9] = "FREQ"; |
---|
[103] | 101 | |
---|
[186] | 102 | enum TYPEDESC {FREQUENCY=0,VELOCITY,WAVELENGTH}; |
---|
| 103 | const std::string duchampSpectralDescription[3]= |
---|
| 104 | {"Frequency", "Velocity", "Wavelength"}; |
---|
| 105 | |
---|
[110] | 106 | // The following are the FITS Header Keywords corresponding to the |
---|
[71] | 107 | // parameters related to the atrous reconstruction. |
---|
[208] | 108 | const std::string keyword_scaleMin = "DU_MINSC"; |
---|
| 109 | const std::string keyword_snrRecon = "DU_ATCUT"; |
---|
| 110 | const std::string keyword_reconDim = "DU_ATDIM"; |
---|
| 111 | const std::string keyword_filterCode = "DU_FILTR"; |
---|
| 112 | const std::string keyword_ReconResid = "DU_RECON";//reconstruction/residual? |
---|
| 113 | const std::string keyword_hanningwidth = "DU_WHANN"; // hanning width |
---|
| 114 | const std::string keyword_subsection = "DU_IMSUB"; |
---|
[142] | 115 | |
---|
[71] | 116 | // And these are the comments corresponding to the relevant keywords |
---|
[208] | 117 | const std::string comment_scaleMin = "Duchamp parameter scaleMin"; |
---|
| 118 | const std::string comment_snrRecon = "Duchamp parameter snrRecon"; |
---|
| 119 | const std::string comment_reconDim = "Duchamp parameter reconDim"; |
---|
| 120 | const std::string comment_filterCode = "Duchamp parameter filterCode"; |
---|
| 121 | const std::string comment_ReconResid = "Is this the reconstruction or residual?"; |
---|
| 122 | const std::string comment_hanningwidth = "Duchamp parameter hanningWidth"; |
---|
| 123 | const std::string comment_subsection = "Subsection of the original image"; |
---|
[105] | 124 | |
---|
[208] | 125 | // Descriptive Headers: for the reconstruction case |
---|
| 126 | const std::string header_reconHistory1 = |
---|
| 127 | "Reconstructed with a trous wavelet technique"; |
---|
| 128 | const std::string header_reconHistory2 = |
---|
| 129 | "Reconstruction by Duchamp v." + VERSION; |
---|
| 130 | const std::string header_reconHistory_input = |
---|
| 131 | "Original (input) image used by Duchamp follows"; |
---|
| 132 | const std::string header_reconSubsection_comment = |
---|
| 133 | "A subsection of the original was reconstructed by Duchamp"; |
---|
| 134 | const std::string header_atrous_comment = |
---|
| 135 | "The following are the Duchamp parameters used in reconstruction"; |
---|
| 136 | |
---|
| 137 | // Descriptive Headers: for the Hanning-smoothing case |
---|
| 138 | const std::string header_smoothHistory = |
---|
| 139 | "Hanning smoothed by Duchamp v." + VERSION; |
---|
| 140 | const std::string header_smoothHistory_input = |
---|
| 141 | "Original (input) image used by Duchamp follows"; |
---|
| 142 | const std::string header_smoothSubsection_comment = |
---|
| 143 | "A subsection of the original was smoothed by Duchamp"; |
---|
| 144 | |
---|
[105] | 145 | #endif |
---|
| 146 | |
---|