Program Listing for File InputAxis.h

Program Listing for File InputAxis.h#

Return to documentation for file (src/main/cpp/lib/InputAxis.h)

#ifndef INPUTAXIS_H_
#define INPUTAXIS_H_

#include "Scale.h"
#include "DataSet.h"
#include "Configuration.h"
#include "Coordinates.h"

class InputAxis
{
public:
  class Histogram
  {
  private:
      DefVariable m_variable;
      std::size_t m_num_intervals;
      std::vector<double> m_frequencies;
  public:
    Histogram (DefVariable var);

    void
    calculate (const std::vector<double> & data);

    double
    get_section_frequency (std::size_t i) const;

    inline std::size_t
    get_num_intervals (void) const
    {
      return m_num_intervals;
    }

    inline void
    set_num_intervals (std::size_t num_intervals)
    {
      m_num_intervals = num_intervals;
      m_frequencies.clear ();
      for (std::size_t i = 0; i < m_num_intervals; ++i)
    m_frequencies.push_back (0);
    }
  };

private:
  DefVariable m_variable;

  SimpleScale m_scale;

  Angle m_start, m_end;
  double m_radius;
  double m_height;

  /* Style defining how the InputAxis is drawn */
  DrawerProperties<> m_prop;

  /* The histogram describing the frequencies of the intervals */
  Histogram m_histogram;

public:
  InputAxis (DefVariable variable, const Angle& start, const Angle& end,
         double radius, double height, const DrawerProperties<>& prop);

  const DefVariable&
  get_var () const
  {
    return m_variable;
  }

  const Histogram&
  get_histogram () const
  {
    return m_histogram;
  }

  const Angle&
  get_start () const
  {
    return m_start;
  }

  void
  set_start (const Angle& start)
  {
    m_start = start;
  }

  const Angle&
  get_end () const
  {
    return m_end;
  }

  void
  set_end (const Angle& end)
  {
    m_end = end;
  }

  double
  get_radius () const
  {
    return m_radius;
  }

  void
  set_radius (double radius)
  {
    m_radius = radius;
  }

  double
  get_height () const
  {
    return m_height;
  }

  void
  set_height (double height)
  {
    m_height = height;
  }

  const DrawerProperties<>&
  get_prop () const
  {
    return m_prop;
  }

  void
  set_prop (const DrawerProperties<>& prop)
  {
    m_prop = prop;
  }

  const SimpleScale&
  get_scale () const
  {
    return m_scale;
  }

  Label
  make_label (const TextProperties& prop) const
  {
    return Label (m_variable.name, prop);
  }

  void
  calculate_histogram (const std::vector<double>& data);
};

#endif /* INPUTAXIS_H_ */