diff options
| author | Vasile Vilvoiu <vasi@vilvoiu.ro> | 2021-07-21 21:14:30 +0300 |
|---|---|---|
| committer | Vasile Vilvoiu <vasi@vilvoiu.ro> | 2021-07-21 21:14:30 +0300 |
| commit | ee8a1573204f76b16b9fb711608447aabee55696 (patch) | |
| tree | 50bbcf182716ee0b5b2e5c1ecf104f7143d0bbfe /src/configuration.hpp | |
| parent | a7c430fa81c9e22dbce74869a0a27304da78855b (diff) | |
Added header file comments for classes and methods.
Renamed all factory methods to ::Build().
Diffstat (limited to 'src/configuration.hpp')
| -rw-r--r-- | src/configuration.hpp | 95 |
1 files changed, 57 insertions, 38 deletions
diff --git a/src/configuration.hpp b/src/configuration.hpp index f6fff18..7659237 100644 --- a/src/configuration.hpp +++ b/src/configuration.hpp @@ -17,48 +17,52 @@ #include <optional> #include <tuple> +/** + * Configuration God object. This parses program arguments into usable, + * structured configuration options. + */ class Configuration { private: std::optional<std::string> input_filename_; std::optional<std::string> output_filename_; - bool dump_to_stdout_; - - std::size_t block_size_; - double rate_; - DataType datatype_; - bool has_complex_input_; - double prescale_factor_; - - std::size_t fft_width_; - std::size_t fft_stride_; - WindowFunctionType window_function_; - std::size_t average_count_; - bool alias_negative_; - - bool no_resampling_; - std::size_t width_; - double min_freq_; - double max_freq_; - ValueMapType scale_type_; - std::string scale_unit_; + bool dump_to_stdout_; /* true if output PNG image must go to stdout */ + + std::size_t block_size_; /* group read values in blocks of block_size_ items */ + double rate_; /* sampling rate of signal, in Hz */ + DataType datatype_; /* input data type (does not cover complex/real discrimination) */ + bool has_complex_input_; /* true if input is complex */ + double prescale_factor_; /* value to scale input with before applying other transformations */ + + std::size_t fft_width_; /* size of FFT window, in values */ + std::size_t fft_stride_; /* stride of FFT window, in values */ + WindowFunctionType window_function_; /* window function to apply before FFT */ + std::size_t average_count_; /* number of windows to average for each displayed window */ + bool alias_negative_; /* alias negative frequencies to positive */ + + bool no_resampling_; /* do not perform resampling; if true, width_ is meaningless */ + std::size_t width_; /* width of resampled output window, in values or pixels */ + double min_freq_; /* lower bound of displayed frewquency band */ + double max_freq_; /* upper bound of displayed frewquency band */ + ValueMapType scale_type_; /* type of scale used on FFT output */ + std::string scale_unit_; /* unit of the scale (just the text) */ double scale_lower_bound_; double scale_upper_bound_; - ColorMapType color_map_; - sf::Color color_map_custom_color_; - sf::Color background_color_; - sf::Color foreground_color_; - bool has_axes_; - bool has_legend_; - bool is_horizontal_; - bool print_input_; - bool print_fft_; - bool print_output_; - - bool live_; - std::size_t count_; - std::string title_; - - bool has_live_window_; + ColorMapType color_map_; /* color map to apply to scaled output */ + sf::Color color_map_custom_color_; /* custom color for color map (where applicable) */ + sf::Color background_color_; /* background color of rendered output */ + sf::Color foreground_color_; /* foreground color of rendered output (text, axes etc) */ + bool has_axes_; /* render axes */ + bool has_legend_; /* render legend */ + bool is_horizontal_; /* flows from left to right, instead of top to bottom */ + bool print_input_; /* debug printing of input */ + bool print_fft_; /* debug printing of FFT values */ + bool print_output_; /* debug printing of output */ + + bool live_; /* whether we have live output or not */ + std::size_t count_; /* number of output windows to display in spectrogoram */ + std::string title_; /* window title */ + + bool has_live_window_; /* display a live plot of the current FFT window */ std::size_t margin_size_; std::size_t live_margin_size_; @@ -69,15 +73,30 @@ private: Configuration(); + /** + * Translate a hex color to a sf::Color. + * @param str RGB/RGBA hex color code. + * @return Color. + */ static sf::Color StringToColor(const std::string& str); + /** + * Parse a scale string. + * @param str Scale string. + * @return Optional bounds and unit string. + */ using OptionalBound = std::optional<double>; using ScaleProperties = std::tuple<OptionalBound, OptionalBound, std::string>; static ScaleProperties StringToScale(const std::string& str); public: - /* parse command line arguments and return a configuration object */ - static std::tuple<Configuration, int, bool> FromArgs(int argc, char **argv); + /** + * Parse command line arguments and return a configuration object. + * @param argc Argument strings. + * @param argv Argument count. + * @return New Configuration object instance. + */ + static std::tuple<Configuration, int, bool> Build(int argc, char **argv); /* generic getters */ Configuration GetForLive() const; |
