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();
    }
}
Exemple #2
0
//-----------------------------------------------------------------------------
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;
    }
}
Exemple #4
0
//-----------------------------------------------------------------------------
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());
}
Exemple #9
0
//-----------------------------------------------------------------------------
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;
}