#ifndef CHART_MARKERS_H #define CHART_MARKERS_H #include #include "gtl_gui_chart_marker.h" #include "gtl_gui_chart_series.h" #include "gui_global.h" namespace gtl { namespace gui { class GTL_GUI_EXPORT chart_markers : public QAbstractTableModel { Q_OBJECT public: explicit chart_markers(QObject *parent = nullptr); // Header: QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; // Basic functionality: int rowCount(const QModelIndex &parent = QModelIndex()) const override; int columnCount(const QModelIndex &parent = QModelIndex()) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; void add_marker(chart_marker *marker); void remove_marker(chart_marker* marker); void add_series(chart_series *series); void remove_series(chart_series *series); chart_marker* marker_at(const QPointF &point) const; int count_markers() const; chart_marker* marker(int idx) const; void set_color(QColor color); QColor color() const; void set_bgnd_color(QColor color); QColor bgnd_color() const; private: std::vector _markers; std::vector _series; QColor _color; QColor _bgnd_color; private: QVariant get_marker_value(int idx_marker, int idx_series) const; int index_of(chart_marker* marker) const; int index_of(chart_series* series) const; void sort_markers(); signals: void color_changed(); private slots: void marker_position_changed(); void series_data_changed(); }; } } #endif // CHART_MARKERS_H