void SynchronizeTool::setIncrement(int slice) { if (m_lastView == m_q2dviewer->getCurrentAnatomicalPlaneLabel()) { double currentSpacingBetweenSlices = m_q2dviewer->getCurrentSpacingBetweenSlices(); DEBUG_LOG(QString("setIncrement::currentSpacingBetweenSlices = %1").arg(currentSpacingBetweenSlices)); // Si la imatge no té espai entre llesques (0.0), llavors li donem un valor nominal if (currentSpacingBetweenSlices == 0.0) { currentSpacingBetweenSlices = 1.0; } // Distancia incrementada double increment = (slice - m_lastSlice) * currentSpacingBetweenSlices; m_lastSlice = slice; disconnect(m_toolData, SIGNAL(sliceChanged()), this, SLOT(applySliceChanges())); this->m_toolData->setIncrement(increment, m_q2dviewer->getCurrentAnatomicalPlaneLabel()); connect(m_toolData, SIGNAL(sliceChanged()), SLOT(applySliceChanges())); } else { // No es posa l'increment però s'actualitza la vista m_lastView = m_q2dviewer->getCurrentAnatomicalPlaneLabel(); } }
//----------------------------------------------------------------------------- void DatPanel::setSlice(int k) { if(k>=nz) k=nz-1; if(k<0) k=0; if(k!=kz) { infoDlg->setSlice(k); emit sliceChanged(k); kz = k; refresh(); } }
void SynchronizeTool::setEnabled(bool enabled) { if (enabled) { if (!m_enabled) { connect(m_toolData, SIGNAL(sliceChanged()), SLOT(applySliceChanges())); connect(m_q2dviewer, SIGNAL(sliceChanged(int)), SLOT(setIncrement(int))); m_enabled = enabled; } reset(); } else { disconnect(m_toolData, SIGNAL(sliceChanged()), this, SLOT(applySliceChanges())); disconnect(m_q2dviewer, SIGNAL(sliceChanged(int)), this, SLOT(setIncrement(int))); m_enabled = false; } }
//----------------------------------------------------------------------------- void DatPanel::setVar(mglDataA *v) { ready = false; if(var) var->o = 0; var = v; infoDlg->setVar(v); nx = ny = nz = kz = 0; if(v) { QString s = QString::fromWCharArray(v->s.c_str()); v->o = this; v->func = deleteDat; refresh(); setWindowTitle(s + tr(" - UDAV variable")); infoDlg->setWindowTitle(s + tr(" - UDAV preview")); } else { tab->setColumnCount(0); tab->setRowCount(0); emit nzChanged(nz); } emit sliceChanged(0); }
void ImageWidget::on_horizontalSlider_valueChanged( int position ) { emit sliceChanged( m_viewNumber, position ); }
void ImageWidget::on_spinBox_valueChanged( int position ) { emit sliceChanged( m_viewNumber, position ); }
void SliceViewer::sliceSlot( int n) { SetSliceNumber(n); emit sliceChanged(mSliceNumber); Render(); }
void SynchronizeToolData::setIncrement(double value, QString view) { m_increment = value; m_incrementView = view; emit(sliceChanged()); }
//----------------------------------------------------------------------------- void DatPanel::refresh() { bool rc = false; if(!var) return; infoDlg->allowRefresh=false; if(nx!=var->GetNx()) { nx = var->GetNx(); tab->setColumnCount(nx); rc=true; } if(ny!=var->GetNy()) { ny = var->GetNy(); tab->setRowCount(ny); rc=true; } if(kz>=var->GetNz()) { kz = 0; emit sliceChanged(0); } if(nz!=var->GetNz()) { nz = var->GetNz(); emit nzChanged(nz); } const mglData *dd = dynamic_cast<const mglData *>(var); if(dd) id = QString(dd->id.c_str()); const mglDataC *dc = dynamic_cast<const mglDataC *>(var); if(dc) id = QString(dc->id.c_str()); if(nz==1 && ny>1 && !id.isEmpty()) { QStringList head; QString s; for(int i=0;i<ny;i++) { s = QString("%1").arg(i); if(id[i]>='a' && id[i]<='z') s=s+" ("+id[i]+")"; head<<s; } tab->setHorizontalHeaderLabels(head); } long m=var->s.length(); QString s,d; if(rc) { QStringList sh,sv; for(long i=0;i<nx;i++) sh<<QString::number(i); tab->setHorizontalHeaderLabels(sh); for(long i=0;i<ny;i++) sv<<QString::number(i); tab->setVerticalHeaderLabels(sv); for(long i=0;i<nx;i++) for(long j=0;j<ny;j++) tab->setItem(j,i,new QTableWidgetItem); } mglDataC *cc = dynamic_cast<mglDataC*>(var); if(cc) for(long i=0;i<nx;i++) for(long j=0;j<ny;j++) { dual f = cc->a[i+nx*(j+ny*kz)]; if(mgl_isnan(f)) s = "nan"; else if(mgl_isbad(f)) s="inf"; else if(imag(f)>0) s.sprintf("%.15g+%.15gi",real(f),imag(f)); else if(imag(f)<0) s.sprintf("%.15g-%.15gi",real(f),-imag(f)); else s.sprintf("%15g",real(f)); tab->item(j,i)->setText(s); } else for(long i=0;i<nx;i++) for(long j=0;j<ny;j++) { double f = var->v(i,j,kz); if(mgl_isnan(f)) s = "nan"; else if(mgl_isbad(f)) s=f>0?"inf":"-inf"; else s.sprintf("%.15g",f); tab->item(j,i)->setText(s); } infoDlg->allowRefresh=true; infoDlg->refresh(); QChar *ss = new QChar[m+1]; for(long i=0;i<m;i++) ss[i] = var->s[i]; s = QString(ss, m); delete []ss; d.sprintf("%d * %d * %d", nx, ny, nz); ready = true; }