#include "multichartview.h" #include "ui_multichartview.h" MultiChartView::MultiChartView(QWidget *parent) : QWidget(parent), ui(new Ui::MultiChartView) { ui->setupUi(this); xRangeMax = 0.0; xRangeMin = 0.0; } MultiChartView::~MultiChartView() { std::map::iterator cit; for (cit = chartMap.begin(); cit != chartMap.end(); cit++) { delete cit->second; } std::map::iterator vit; for (vit = viewMap.begin(); vit != viewMap.end(); vit++) { delete vit->second; } delete ui; } void MultiChartView::addArray(const nix::DataArray &array) { this->arrayMap.insert(std::pair(array.id(), array)); ArrayInfo ai(array); this->infoMap.insert(std::pair(array.id(), &ai)); Chart* chart = createChart(ai); ChartView *view = createChartView(chart, ai); double absMin = 0.0, absMax = 0.0; std::map::iterator it; for (it = infoMap.begin(); it != infoMap.end(); it++) { if (it->second->xoffset < absMin) absMin = it->second->xoffset; if (it->second->xmax > absMax) absMax = it->second->xmax; } ui->scrollBar->setMinimum(0); ui->scrollBar->setMaximum(100000); ui->scrollBar->setPageStep(100); ui->vBox->addWidget(view); } Chart* MultiChartView::createChart(const ArrayInfo &info) { Chart *chart = new Chart(); chart->setTitle(QString::fromStdString(arrayMap.at(info.arrayid).name())); chart->legend()->hide(); chart->createDefaultAxes(); this->chartMap.insert(std::pair(info.arrayid, chart)); return chart; } ChartView* MultiChartView::createChartView(Chart *chart, const ArrayInfo &info) { ChartView *view = new ChartView(chart); view->setLineWidth(1); view->setRenderHint(QPainter::Antialiasing); /* QMargins margins = voltageChart->margins(); int marg1 = margins.left(); margins.setLeft(marg1 * 4); eodChart->setMargins(margins); */ this->viewMap.insert(std::pair(info.arrayid, view)); return view; }