//==== Change XSec Type ====// void XSecSurf::ChangeXSecShape( int index, int type ) { //==== Old XSec ====// XSec* xs = FindXSec( index ); if ( !xs ) { return; } //==== Create New XSec ====// XSec* nxs = CreateXSec( type ); if ( nxs ) { //==== Copy Data ====// nxs->CopyFrom( xs ); m_XSecIDDeque.insert( m_XSecIDDeque.begin() + index, nxs->GetID() ); //==== Remove Old XSec ====// m_XSecIDDeque.erase( m_XSecIDDeque.begin() + index + 1 ); vector_remove_val( m_XSecPtrVec, xs ); delete xs; } }
//==== Paste XSec ====// void XSecSurf::PasteXSec( int index ) { XSec* xs = FindXSec( index ); if ( !xs ) { return; } XSec* saved_xs = FindXSec( m_SavedXSec ); if ( !saved_xs ) { return; } string new_xs_id = InsertXSec( saved_xs->GetXSecCurve()->GetType(), index ); XSec* new_xs = FindXSec( new_xs_id ); if ( !new_xs ) { return; } //==== Copy Data ====// new_xs->CopyFrom( saved_xs ); //==== Copy Position from xsec being replaced ====// new_xs->CopyBasePos( xs ); deque_remove_val( m_XSecIDDeque, xs->GetID() ); vector_remove_val( m_XSecPtrVec, xs ); delete xs; }
//==== Insert XSec After Index ====// string XSecSurf::InsertXSec( int type, int index ) { string id; XSec* xs = CreateXSec( type ); if ( xs ) // Valid XSec? { id = xs->GetID(); if ( index < ( int )m_XSecIDDeque.size() ) { m_XSecIDDeque.insert( m_XSecIDDeque.begin() + index + 1, xs->GetID() ); } else { m_XSecIDDeque.push_back( xs->GetID() ); } } return id; }
//==== Insert XSec After Index ====// string XSecSurf::AddXSec( int type ) { string id; XSec* xs = CreateXSec( type ); if ( xs ) { id = xs->GetID(); m_XSecIDDeque.push_back( id ); } return id; }
//==== Cut XSec ====// void XSecSurf::CutXSec( int index ) { if ( (int)m_XSecIDDeque.size() <= m_CutMinNumXSecs ) { return; } XSec* xs = FindXSec( index ); if ( !xs ) { return; } //==== Delete Saved XSec ====// XSec* saved_xs = FindXSec( m_SavedXSec ); if ( saved_xs ) { vector_remove_val( m_XSecPtrVec, saved_xs ); delete saved_xs; } m_SavedXSec = xs->GetID(); m_XSecIDDeque.erase( m_XSecIDDeque.begin() + index ); }