176 if(fileName.contains(
".svg", Qt::CaseInsensitive)) {
178 QSvgGenerator svgGen;
179 svgGen.setFileName(fileName);
180 svgGen.setSize(this->size());
181 svgGen.setViewBox(this->rect());
183 QWidget::render(&svgGen);
186 if(fileName.contains(
".png", Qt::CaseInsensitive)) {
187 QImage image(this->size(), QImage::Format_ARGB32);
188 image.fill(Qt::transparent);
190 QPainter painter(&image);
191 QWidget::render(&painter);
192 image.save(fileName);
306 QPainter painter(
this);
310 painter.drawRect(QRect(-1,-1,this->width()+2,this->height()+2));
313 painter.setRenderHint(QPainter::Antialiasing,
true);
324 painter.setPen(QPen(Qt::red, 1, Qt::DashLine));
325 painter.setBrush(Qt::red);
326 painter.setOpacity(0.1);
329 qDebug() <<
"Unable to get data. Returning early.";
333 float fDx = (float)(this->width()) / ((float)
m_pEvokedSetModel->getNumSamples());
336 float posX = fDx*(fromSamp);
338 float width = fDx*(toSamp-fromSamp);
340 QRect rect(posX,0,width,this->height());
342 painter.drawRect(rect);
350 painter.setPen(QPen(Qt::red, 1, Qt::DashLine));
352 float fDx = (float)(this->width()) / ((float)
m_pEvokedSetModel->getNumSamples());
354 painter.drawLine(posX, 1, posX, this->height());
356 painter.drawText(QPointF(posX+5,this->rect().bottomRight().y()-5), QString(
"0ms / Stimulus"));
365 QColor colorTimeSpacer = Qt::black;
366 colorTimeSpacer.setAlphaF(0.5);
367 painter.setPen(QPen(colorTimeSpacer, 1, Qt::DashLine));
369 float yStart = this->rect().topLeft().y();
370 float yEnd = this->rect().bottomRight().y();
379 float timeDistanceMSec = 50.0;
380 float timeDistanceSamples = (timeDistanceMSec/1000.0)*
m_pEvokedSetModel->getSamplingFrequency();
383 while(sampleCounter-timeDistanceSamples>0) {
384 sampleCounter-=timeDistanceSamples;
385 float x = fDx*sampleCounter;
386 painter.drawLine(x, yStart, x, yEnd);
387 painter.drawText(QPointF(x+5,yEnd-5), QString(
"-%1ms").arg(timeDistanceMSec*counter));
394 while(sampleCounter+timeDistanceSamples<m_pEvokedSetModel->getNumSamples()) {
395 sampleCounter+=timeDistanceSamples;
396 float x = fDx*sampleCounter;
397 painter.drawLine(x, yStart, x, yEnd);
398 painter.drawText(QPointF(x+5,yEnd-5), QString(
"%1ms").arg(timeDistanceMSec*counter));
408 painter.setPen(QPen(Qt::black, 1, Qt::DashLine));
410 painter.drawLine(0, this->height()/2, this->width(), this->height()/2);
415 painter.translate(0,this->height()/2);
472 return QRhiWidget::paintEvent(event);
485 painter.setOpacity(0.20);
487 painter.setOpacity(0.75);
491 float fScaleY = this->height()/(2*fMaxValue);
494 float fWinMaxVal = ((float)this->height()-2)/2.0f;
500 QPointF qSamplePosition;
502 float fDx = (float)(this->width()-2) / ((float)
m_pEvokedSetModel->getNumSamples()-1.0f);
504 QList<DISPLIB::AvrTypeRowVector> rowVec =
m_pEvokedSetModel->data(row,1).value<QList<DISPLIB::AvrTypeRowVector> >();
507 for(
int j = 0; j < rowVec.size(); ++j) {
508 QString sAvrComment = rowVec.at(j).first;
513 freezeColor.setAlphaF(0.5);
514 painter.setPen(QPen(freezeColor, 1));
522 rowVec.at(j).second.cols() / this->width() < 1 ? dsFactor = 1 : dsFactor = rowVec.at(j).second.cols() / this->width();
527 QPainterPath path(QPointF(1,0));
528 float y_base = path.currentPosition().y();
531 if(rowVec.at(j).second.cols() > 0)
533 float val = rowVec.at(j).second[0];
534 fValue = (val)*fScaleY;
536 float newY = y_base+fValue;
538 qSamplePosition.setY(-newY);
539 qSamplePosition.setX(path.currentPosition().x());
541 path.moveTo(qSamplePosition);
546 for(i = 1; i < rowVec.at(j).second.cols() && path.elementCount() <= this->width(); i += dsFactor) {
547 float val = rowVec.at(j).second[i];
548 fValue = val*fScaleY;
551 fValue = fValue > fWinMaxVal ? fWinMaxVal : fValue < -fWinMaxVal ? -fWinMaxVal : fValue;
553 float newY = y_base+fValue;
555 qSamplePosition.setY(-newY);
557 qSamplePosition.setX(path.currentPosition().x()+fDx);
559 path.lineTo(qSamplePosition);
579 painter.drawPath(path);