197 if(fileName.contains(
".svg", Qt::CaseInsensitive)) {
199 QSvgGenerator svgGen;
200 svgGen.setFileName(fileName);
201 svgGen.setSize(this->size());
202 svgGen.setViewBox(this->rect());
204 QWidget::render(&svgGen);
207 if(fileName.contains(
".png", Qt::CaseInsensitive)) {
208 QImage image(this->size(), QImage::Format_ARGB32);
209 image.fill(Qt::transparent);
211 QPainter painter(&image);
212 QWidget::render(&painter);
213 image.save(fileName);
327 QPainter painter(
this);
331 painter.drawRect(QRect(-1,-1,this->width()+2,this->height()+2));
334 painter.setRenderHint(QPainter::Antialiasing,
true);
345 painter.setPen(QPen(Qt::red, 1, Qt::DashLine));
346 painter.setBrush(Qt::red);
347 painter.setOpacity(0.1);
350 qDebug() <<
"Unable to get data. Returning early.";
354 float fDx = (float)(this->width()) / ((float)
m_pEvokedSetModel->getNumSamples());
357 float posX = fDx*(fromSamp);
359 float width = fDx*(toSamp-fromSamp);
361 QRect rect(posX,0,width,this->height());
363 painter.drawRect(rect);
371 painter.setPen(QPen(Qt::red, 1, Qt::DashLine));
373 float fDx = (float)(this->width()) / ((float)
m_pEvokedSetModel->getNumSamples());
375 painter.drawLine(posX, 1, posX, this->height());
377 painter.drawText(QPointF(posX+5,this->rect().bottomRight().y()-5), QString(
"0ms / Stimulus"));
386 QColor colorTimeSpacer = Qt::black;
387 colorTimeSpacer.setAlphaF(0.5);
388 painter.setPen(QPen(colorTimeSpacer, 1, Qt::DashLine));
390 float yStart = this->rect().topLeft().y();
391 float yEnd = this->rect().bottomRight().y();
400 float timeDistanceMSec = 50.0;
401 float timeDistanceSamples = (timeDistanceMSec/1000.0)*
m_pEvokedSetModel->getSamplingFrequency();
404 while(sampleCounter-timeDistanceSamples>0) {
405 sampleCounter-=timeDistanceSamples;
406 float x = fDx*sampleCounter;
407 painter.drawLine(x, yStart, x, yEnd);
408 painter.drawText(QPointF(x+5,yEnd-5), QString(
"-%1ms").arg(timeDistanceMSec*counter));
415 while(sampleCounter+timeDistanceSamples<m_pEvokedSetModel->getNumSamples()) {
416 sampleCounter+=timeDistanceSamples;
417 float x = fDx*sampleCounter;
418 painter.drawLine(x, yStart, x, yEnd);
419 painter.drawText(QPointF(x+5,yEnd-5), QString(
"%1ms").arg(timeDistanceMSec*counter));
429 painter.setPen(QPen(Qt::black, 1, Qt::DashLine));
431 painter.drawLine(0, this->height()/2, this->width(), this->height()/2);
436 painter.translate(0,this->height()/2);
493 return QRhiWidget::paintEvent(event);
506 painter.setOpacity(0.20);
508 painter.setOpacity(0.75);
512 float fScaleY = this->height()/(2*fMaxValue);
515 float fWinMaxVal = ((float)this->height()-2)/2.0f;
521 QPointF qSamplePosition;
523 float fDx = (float)(this->width()-2) / ((float)
m_pEvokedSetModel->getNumSamples()-1.0f);
525 QList<DISPLIB::AvrTypeRowVector> rowVec =
m_pEvokedSetModel->data(row,1).value<QList<DISPLIB::AvrTypeRowVector> >();
528 for(
int j = 0; j < rowVec.size(); ++j) {
529 QString sAvrComment = rowVec.at(j).first;
534 freezeColor.setAlphaF(0.5);
535 painter.setPen(QPen(freezeColor, 1));
543 rowVec.at(j).second.cols() / this->width() < 1 ? dsFactor = 1 : dsFactor = rowVec.at(j).second.cols() / this->width();
548 QPainterPath path(QPointF(1,0));
549 float y_base = path.currentPosition().y();
552 if(rowVec.at(j).second.cols() > 0)
554 float val = rowVec.at(j).second[0];
555 fValue = (val)*fScaleY;
557 float newY = y_base+fValue;
559 qSamplePosition.setY(-newY);
560 qSamplePosition.setX(path.currentPosition().x());
562 path.moveTo(qSamplePosition);
567 for(i = 1; i < rowVec.at(j).second.cols() && path.elementCount() <= this->width(); i += dsFactor) {
568 float val = rowVec.at(j).second[i];
569 fValue = val*fScaleY;
572 fValue = fValue > fWinMaxVal ? fWinMaxVal : fValue < -fWinMaxVal ? -fWinMaxVal : fValue;
574 float newY = y_base+fValue;
576 qSamplePosition.setY(-newY);
578 qSamplePosition.setX(path.currentPosition().x()+fDx);
580 path.lineTo(qSamplePosition);
600 painter.drawPath(path);