Program Listing for File Configuration.h#
↰ Return to documentation for file (src/main/cpp/lib/Configuration.h)
#ifndef CONFIGURATION_H_
#define CONFIGURATION_H_
#include <string>
#include <vector>
#include <regex>
#include <memory>
#include <functional>
#include <clocale>
#include "Utils.h"
#include "DrawerProperties.h"
#include "TextProperties.h"
#include "Triangle.h"
#include "libmoovie_export.h"
#define MOOVIE_CONF_LINE(key, value) (("moovie." TO_STRING(key) "=") + (value))
class Configuration
{
public:
static const std::array<Color, 10> GLOW_10;
static const Triangle<Color, 12> SET3;
static const Color SET2_3_1;
static const Color SET2_3_2;
static const Color SET2_3_3;
private:
static LIBMOOVIE_EXPORT std::shared_ptr<Configuration> instance;
std::string m_input_file;
std::string m_output_file = "image.svg";
int m_width = 0;
int m_height = 0;
double m_output_angle_span = 160;
double m_output_inner_radius = 160;
double m_output_thickness = 5;
double m_grid_size = 150;
int m_num_major_sections_grid = 10;
int m_num_minor_sections_grid = 10;
double m_min_grid_fill_ratio = 0.9;
double m_input_inner_radius = 180;
double m_input_thickness = 5;
double m_input_separation_angle = 5;
int m_num_major_sections_axis = 10;
int m_num_minor_sections_axis = 10;
bool m_histograms_enabled = true;
int m_num_histogram_classes = 10;
double m_histogram_height = 20;
Color m_histogram_background =
{ 0, 0, 0, .1 };
Color m_histogram_fill =
{ .5, .5, .5, 1 };
int m_relevant_places = 3;
DrawerProperties<> m_prop_thick =
{ 0.5, Color::BLACK, Color::BLACK };
DrawerProperties<> m_prop_thin =
{ 0.1, Color::BLACK, Color::BLACK };
TextProperties m_prop_scale_label =
{ "Liberation Serif", 5 };
TextProperties m_prop_axis_label =
{ "Liberation Serif", 10 };
public:
inline static Configuration &
get_instance ()
{
if (instance.get () == nullptr)
{
throw std::bad_function_call ();
}
return *instance;
}
static void
initialize (const std::string & fname, const std::string & cpath);
static void
initialize (const std::string & fname);
static void
save_to_file (const std::string & cpath);
// General
inline const std::string &
get_input_file () const
{
return m_input_file;
}
inline void
set_input_file (const std::string& input_file)
{
m_input_file = input_file;
}
inline const std::string &
get_output_file () const
{
return m_output_file;
}
inline void
set_output_file (const std::string & output_file)
{
m_output_file = output_file;
}
inline int
get_width () const
{
return m_width;
}
inline void
set_width (int width)
{
m_width = width;
}
inline int
get_height () const
{
return m_height;
}
inline void
set_height (int height)
{
m_height = height;
}
// OutputGrid
double
get_output_angle_span () const
{
return m_output_angle_span;
}
void
set_output_angle_span (double output_angle_span)
{
m_output_angle_span = output_angle_span;
}
double
get_output_inner_radius () const
{
return m_output_inner_radius;
}
void
set_output_inner_radius (double output_inner_radius)
{
m_output_inner_radius = output_inner_radius;
}
double
get_output_thickness () const
{
return m_output_thickness;
}
void
set_output_thickness (double output_thickness)
{
m_output_thickness = output_thickness;
}
double
get_grid_size () const
{
return m_grid_size;
}
void
set_grid_size (double grid_size)
{
m_grid_size = grid_size;
}
int
get_num_major_sections_grid () const
{
return m_num_major_sections_grid;
}
void
set_num_major_sections_grid (int major_sections)
{
m_num_major_sections_grid = major_sections;
}
int
get_num_minor_sections_grid () const
{
return m_num_minor_sections_grid;
}
void
set_num_minor_sections_grid (int minor_sections)
{
m_num_minor_sections_grid = minor_sections;
}
double
get_min_grid_fill_ratio () const
{
return m_min_grid_fill_ratio;
}
void
set_min_grid_fill_ratio (double min_grid_fill_ratio)
{
m_min_grid_fill_ratio = min_grid_fill_ratio;
}
// InputAxis
double
get_input_inner_radius () const
{
return m_input_inner_radius;
}
void
set_input_inner_radius (double input_inner_radius)
{
m_input_inner_radius = input_inner_radius;
}
double
get_input_separation_angle () const
{
return m_input_separation_angle;
}
void
set_input_separation_angle (double input_separation_angle)
{
m_input_separation_angle = input_separation_angle;
}
double
get_input_thickness () const
{
return m_input_thickness;
}
void
set_input_thickness (double input_thickness)
{
m_input_thickness = input_thickness;
}
int
get_num_major_sections_axis () const
{
return m_num_major_sections_axis;
}
void
set_num_major_sections_axis (int major_sections)
{
m_num_major_sections_axis = major_sections;
}
int
get_num_minor_sections_axis () const
{
return m_num_minor_sections_axis;
}
void
set_num_minor_sections_axis (int minor_sections)
{
m_num_minor_sections_axis = minor_sections;
}
bool
is_histograms_enabled () const
{
return m_histograms_enabled;
}
void
set_histograms_enabled (bool histograms_enabled)
{
m_histograms_enabled = histograms_enabled;
}
int
get_num_histogram_classes () const
{
return m_num_histogram_classes;
}
void
set_num_histogram_classes (int num_histogram_classes)
{
m_num_histogram_classes = num_histogram_classes;
}
double
get_histogram_height () const
{
return m_histogram_height;
}
void
set_histogram_height (double histogram_height)
{
m_histogram_height = histogram_height;
}
const Color&
get_histogram_background () const
{
return m_histogram_background;
}
void
set_histogram_background (const Color& histogram_background)
{
m_histogram_background = histogram_background;
}
const Color&
get_histogram_fill () const
{
return m_histogram_fill;
}
void
set_histogram_fill (const Color& histogram_fill)
{
m_histogram_fill = histogram_fill;
}
// IOVector
int
get_relevant_places () const
{
return m_relevant_places;
}
void
set_relevant_places (int relevant_places)
{
m_relevant_places = relevant_places;
}
// Standard properties and labels
const DrawerProperties<> &
get_prop_thick () const
{
return m_prop_thick;
}
void
set_prop_thick (const DrawerProperties<> & prop_thick)
{
m_prop_thick = prop_thick;
}
const DrawerProperties<> &
get_prop_thin () const
{
return m_prop_thin;
}
void
set_prop_thin (const DrawerProperties<> & prop_thin)
{
m_prop_thin = prop_thin;
}
const TextProperties &
get_prop_scale_label () const
{
return m_prop_scale_label;
}
void
set_prop_scale_label (const TextProperties & prop_scale_label)
{
m_prop_scale_label = prop_scale_label;
}
const TextProperties &
get_prop_axis_label () const
{
return m_prop_axis_label;
}
void
set_prop_axis_label (const TextProperties& prop_axis_label)
{
m_prop_axis_label = prop_axis_label;
}
private:
Configuration (const std::string& fpath, const std::string& cpath);
Configuration (const std::string& fpath);
void
adjust_height ();
};
#endif /* CONFIGURATION_H_ */