Program Listing for File IOVector.h#
↰ Return to documentation for file (src/main/cpp/lib/IOVector.h)
#ifndef IOVECTOR_H_
#define IOVECTOR_H_
#include <vector>
#include "Coordinates.h"
#include "InputAxis.h"
#include "Mapper.h"
#include "OutputGrid.h"
struct Point
{
const Polar coord;
const DrawerProperties<> prop;
Point (Polar&& coord_, const DrawerProperties<>& prop_) :
coord (coord_), prop (prop_)
{
}
};
class IOVector
{
private:
/* The Point data */
std::vector<Point> m_points;
public:
const Point&
operator[] (std::size_t i) const
{
return m_points[i];
}
inline std::size_t
size (void) const
{
return m_points.size ();
}
template<typename ... Arg>
void
emplace_back (Arg&&... args)
{
m_points.emplace_back (std::forward<Arg>(args)...);
}
};
class IOVectorFactory
{
private:
double m_line_width, m_line_alpha, m_fill_alpha, m_round_factor;
const OutputGrid& m_grid;
const std::vector<InputAxis>& m_axis;
std::vector<Mapper> m_input_mapper, m_output_mapper;
public:
IOVectorFactory (std::size_t num_data_rows, const OutputGrid& grid,
const std::vector<InputAxis>& axis);
IOVector
create (const DefDataRow& row) const;
private:
double
round (bool grid, std::size_t i, double val) const;
const Color&
get_color (double val) const;
};
#endif /* IOVECTOR_H_ */