本文整理汇总了C++中LayerMRI::OriginalIndexToRAS方法的典型用法代码示例。如果您正苦于以下问题:C++ LayerMRI::OriginalIndexToRAS方法的具体用法?C++ LayerMRI::OriginalIndexToRAS怎么用?C++ LayerMRI::OriginalIndexToRAS使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LayerMRI
的用法示例。
在下文中一共展示了LayerMRI::OriginalIndexToRAS方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnFinishEditing
void PixelInfoListCtrl::OnFinishEditing( wxCommandEvent& event )
{
LayerCollectionManager* lcm = MainWindow::GetMainWindowPointer()->GetLayerCollectionManager();
LayerCollection* lc = MainWindow::GetMainWindowPointer()->GetLayerCollection( "MRI" );
// see if entered text is valid
wxArrayString sa = MyUtils::SplitString( m_textEditor->GetValue(), _(",") );
long ptr = m_listPtr[m_nRowEdited];
Layer* layer_ptr = (Layer*)ptr;
if ( ptr == 1 || ( layer_ptr && layer_ptr->IsTypeOf( "MRI" ) ) )
{
if ( sa.Count() < 3 )
sa = MyUtils::SplitString( m_textEditor->GetValue(), _(" ") );
if ( sa.Count() < 3 )
{
cerr << "Invalid coordinate string. Make sure they are three numbers." << endl;
return;
}
}
if ( ptr == 1 ) // RAS
{
double ras[3];
if ( sa[0].ToDouble( ras ) && sa[1].ToDouble( ras+1 ) && sa[2].ToDouble( ras+2 ) )
{
wxListItem item;
GetColumn( 0, item );
LayerMRI* layer = (LayerMRI*)lc->GetLayer( 0 );
if ( layer )
layer->RASToTarget( ras, ras );
if ( item.GetText() == _("Cursor") )
{
lc->SetCursorRASPosition( ras );
lcm->SetSlicePosition( ras );
}
else if ( item.GetText() == _("Mouse") )
lc->SetCurrentRASPosition( ras );
UpdateList();
m_textEditor->Hide();
}
else
{
cerr << "Invalid coordinate string. Make sure they are three numbers." << endl;
}
}
else if ( layer_ptr && layer_ptr->IsTypeOf( "MRI" ) ) // voxel
{
long x, y, z;
if ( sa.Count() < 3 )
{
cerr << "Invalid voxel coordinate string. Make sure they are three numbers." << endl;
return;
}
int n = sa[0].Find( wxChar('['), true );
if ( n != wxNOT_FOUND )
sa[0] = sa[0].Mid( n+1 );
n = sa[2].Find( wxChar(']') );
if ( n != wxNOT_FOUND )
sa[2] = sa[2].Left( n );
if ( sa[0].ToLong( &x ) && sa[1].ToLong( &y ) && sa[2].ToLong( &z ) )
{
int nv[3] = { x, y, z };
double ras[3];
wxListItem item;
GetColumn( 0, item );
LayerMRI* layer = (LayerMRI*)layer_ptr;
layer->OriginalIndexToRAS( nv, ras );
layer->RASToTarget( ras, ras );
if ( item.GetText() == _("Cursor") )
{
lc->SetCursorRASPosition( ras );
lcm->SetSlicePosition( ras );
}
else if ( item.GetText() == _("Mouse") )
lc->SetCurrentRASPosition( ras );
UpdateList();
m_textEditor->Hide();
}
else
{
cerr << "Invalid voxel coordinate string. Make sure they are three numbers." << endl;
}
}
else if ( layer_ptr && layer_ptr->IsTypeOf( "Surface" ) ) // surface
{
wxString strg = m_textEditor->GetValue();
LayerSurface* layer = (LayerSurface*)layer_ptr;
double ras[3];
bool bSuccess = false;
if ( m_listValue[m_nRowEdited].Find( _("Coord") ) == 0 ) // coordinate item
{
sa = MyUtils::SplitString( strg, _(",") );
if ( sa.Count() < 3 )
sa = MyUtils::SplitString( m_textEditor->GetValue(), _(" ") );
if ( sa.Count() >= 3 && sa[0].ToDouble( ras ) && sa[1].ToDouble( ras+1 ) && sa[2].ToDouble( ras+2 ) )
{
layer->GetTargetAtSurfaceRAS( ras, ras );
bSuccess = true;
}
//.........这里部分代码省略.........
示例2: OnEditFinished
void InfoTreeWidget::OnEditFinished()
{
if (!m_itemEdited)
{
return;
}
QStringList list = m_editor->text().trimmed().split(",", QString::SkipEmptyParts);
QVariantMap map = m_itemEdited->data(1, Qt::UserRole).toMap();
if ( list.size() < 3)
{
list = m_editor->text().trimmed().split(" ", QString::SkipEmptyParts);
}
QString type = map["Type"].toString();
double ras[3];
bool bSuccess = false;
QObject* layer = map["Object"].value<QObject*>();
if ( type == "SurfaceVertex")
{
bool bOK;
int nVertex = list[0].toInt(&bOK);
if (bOK && qobject_cast<LayerSurface*>(layer)->GetTargetAtVertex(nVertex, ras))
{
bSuccess = true;
}
else
{
std::cerr << "Error: Invalid input";
}
}
else
{
if ( list.size() < 3 )
{
std::cerr << "Error: Need to enter 3 numbers.";
}
else
{
bool bOK;
ras[0] = list[0].toDouble(&bOK);
ras[1] = list[1].toDouble(&bOK);
ras[2] = list[2].toDouble(&bOK);
if (bOK)
{
if (type == "RAS")
{
LayerMRI* mri = (LayerMRI*)MainWindow::GetMainWindow()->GetLayerCollection("MRI")->GetLayer( 0 );
if ( mri )
{
mri->RASToTarget( ras, ras );
}
}
else if (type == "MRI")
{
LayerMRI* mri = qobject_cast<LayerMRI*>(layer);
int nv[3] = {(int)ras[0], (int)ras[1], (int)ras[2]};
mri->OriginalIndexToRAS( nv, ras );
mri->RASToTarget( ras, ras );
}
else if (type == "SurfaceRAS")
{
qobject_cast<LayerSurface*>(layer)->GetTargetAtSurfaceRAS( ras, ras );
}
bSuccess = true;
}
else
{
std::cerr << "Error: Invalid input";
}
}
}
if (bSuccess)
{
m_editor->hide();
emit RASChangeTriggered(ras[0], ras[1], ras[2]);
}
}