Program Listing for File Scale.h#
↰ Return to documentation for file (src/main/cpp/lib/Scale.h)
#ifndef SCALE_H_
#define SCALE_H_
#include <cmath>
#include <cstddef>
#include <vector>
#include <sstream>
#include "Label.h"
std::pair<double, double>
create_rounded_interval (double min, double max);
class Scale
{
protected:
size_t m_major_intersections;
size_t m_minor_intersections;
TextProperties m_label_prop;
std::string m_label_suffix;
public:
Scale (size_t major_intersections, size_t minor_intersections,
const TextProperties& label_prop, const std::string& label_suffix = "") :
m_major_intersections (major_intersections), m_minor_intersections (
minor_intersections), m_label_prop (label_prop), m_label_suffix (
label_suffix)
{
}
virtual
~Scale ()
{
}
size_t
get_major_intersections (void) const
{
return m_major_intersections;
}
size_t
get_minor_intersections (void) const
{
return m_minor_intersections;
}
};
class SimpleScale : public Scale
{
private:
std::pair<double, double> m_extremes;
public:
SimpleScale (size_t major_intersections, size_t minor_intersections,
const std::pair<double, double>& extremes,
const TextProperties& label_prop,
const std::string& label_suffix = "") :
Scale (major_intersections, minor_intersections, label_prop,
label_suffix), m_extremes (create_rounded_interval(extremes.first, extremes.second))
{
}
inline const std::pair<double, double> &
get_extremes () const
{
return m_extremes;
}
std::vector<Label>
make_labels (void) const;
};
class MultiScale : public Scale
{
private:
std::vector<std::pair<double, double>> m_extremes;
public:
MultiScale (size_t ticks_major, size_t ticks_minor,
const TextProperties& label_prop,
const std::string& label_suffix = "") :
Scale (ticks_major, ticks_minor, label_prop, label_suffix)
{
}
inline void
add_scale (const std::pair<double, double>& extremes)
{
m_extremes.push_back (create_rounded_interval(extremes.first, extremes.second));
}
inline size_t
get_scale_number (void) const
{
return m_extremes.size ();
}
inline const std::pair<double, double> &
get_extremes (size_t i) const
{
return m_extremes[i];
}
std::vector<Label>
make_labels (size_t i) const;
};
#endif /* TICKS_H_ */