Пример #1
0
//==== 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;
    }
}
Пример #2
0
//==== 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;
}
Пример #3
0
//==== 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;
}
Пример #4
0
//==== 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;
}
Пример #5
0
//==== 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 );
}