qwtSpectrumDisplay.h 1.26 KB
#include <qwt/qwt_plot.h>
#include <qwt/qwt_plot_curve.h>

#include <vector>
#include <QVector>
#include "globals.h"

class qwtSpectrumDisplay
{
	QwtPlot* mainPlot;

	QwtPlotCurve* simSpectrum;



public:
	qwtSpectrumDisplay()
	{
		mainPlot = new QwtPlot();
		simSpectrum = new QwtPlotCurve("Simulated Spectrum");

        //set colors
        mainPlot->setCanvasBackground(QBrush(Qt::black));
		simSpectrum->setPen(QPen(Qt::white));

		//attach curves
		simSpectrum->attach(mainPlot);

        //display the plot
		mainPlot->show();
	}

	void updateCurves()
	{
        //create qVectors to store curve values
        QVector<double> qNu;
        QVector<double> qV;

        //update the simulation
        for(int i = 0; i < SimSpectrum.size(); i++)
        {
            qNu.push_back(SimSpectrum[i].nu);
            qV.push_back(SimSpectrum[i].A);
        }
        simSpectrum->setSamples(qNu, qV);
	}

	void replot()
	{
        //set the appropriate axis title
        mainPlot->setAxisTitle(2, "Wavenumber (cm^-1)");
        if(dispSimType == AbsorbanceSpecType)
            mainPlot->setAxisTitle(0, "Absorbance (a.u.)");
        else if(dispSimType == IntensitySpecType)
            mainPlot->setAxisTitle(0, "Intensity (a.u.)");

        updateCurves();

		mainPlot->replot();
	}

};