Esempio n. 1
0
void YSelection::addInterval( const YInterval& i )
{
    bool containsFrom;
    bool containsTo;
    unsigned int idFrom = locatePosition( i.from(), &containsFrom );
    unsigned int idTo = locatePosition( i.to(), &containsTo );
    if ( containsFrom && containsTo ) {
        if ( idFrom != idTo ) {
            mMap[ idFrom ].setTo( mMap[ idTo ].to() );
            removeInterval( idFrom + 1, idTo - idFrom );
        }
    } else if ( containsFrom ) {
        mMap[ idFrom ].setTo( i.to() );
        removeInterval( idFrom + 1, idTo - idFrom - 1 );
    } else if ( containsTo ) {
        mMap[ idTo ].setFrom( i.from() );
        removeInterval( idFrom, idTo - idFrom );
    } else if ( idTo != idFrom ) {
        mMap[ idFrom ].setFrom( i.from() );
        mMap[ idFrom ].setTo( i.to() );
        removeInterval( idFrom + 1, idTo - idFrom );
    } else {
        insertInterval( idFrom, i );
    }
}
Esempio n. 2
0
void YSelection::delInterval( const YInterval& i )
{
    bool containsFrom;
    bool containsTo;
    unsigned int idFrom = locatePosition( i.from(), &containsFrom );
    unsigned int idTo = locatePosition( i.to(), &containsTo );
    if ( idFrom == idTo && !containsFrom && !containsTo ) return ;
    // dbg() << "delInterval: from=" << idFrom << "," << containsFrom << "; to=" << idTo << "," << containsTo << endl;

    if ( containsFrom && i.from() <= mMap[ idFrom ].from() ) {
        containsFrom = false;
    }
    if ( containsTo && i.to() >= mMap[ idTo ].to() ) {
        ++idTo;
        containsTo = false;
    }
    if ( containsTo && containsFrom && idFrom == idTo ) {
        ++idTo;
        insertInterval( idTo, mMap[ idFrom ] );
    }

    if ( containsFrom )
        mMap[ idFrom ].setTo( YBound(i.from().pos(), !i.from().opened()) );
    if ( containsTo )
        mMap[ idTo ].setFrom( YBound(i.to().pos(), !i.to().opened()) );
    removeInterval( idFrom + (containsFrom ? 1 : 0), idTo - idFrom - (containsFrom && containsTo ? 1 : 0) );
}
QTransferFunctionEditorByValues::QTransferFunctionEditorByValues(QWidget *parent)
 : QTransferFunctionEditor(parent)
{
    setupUi(this);

    // Creem una scroll area per si hi ha molts intervals (no es pot crear des del Qt Designer)

    QScrollArea *scrollArea = new QScrollArea(this);
    qobject_cast<QBoxLayout*>(this->layout())->insertWidget(1, scrollArea);

    m_intervalEditorsWidget = new QWidget(scrollArea);
    QBoxLayout *layout = new QVBoxLayout(m_intervalEditorsWidget);
    m_intervalEditorsLayout = new QVBoxLayout();
    layout->addLayout(m_intervalEditorsLayout);
    layout->addStretch();
    layout->setMargin(0);

    scrollArea->setWidget(m_intervalEditorsWidget);
    scrollArea->setWidgetResizable(true);
    scrollArea->setFrameShape(QFrame::NoFrame);

    // Creem el primer interval

    QTransferFunctionIntervalEditor *first = new QTransferFunctionIntervalEditor(m_intervalEditorsWidget);
    first->setIsFirst(true);
    first->setIsLast(true);
    first->setObjectName("interval0");
    m_intervalEditorsLayout->addWidget(first);

    connect(first, SIGNAL(startChanged(int)), SLOT(markAsChanged()));
    connect(first, SIGNAL(endChanged(int)), SLOT(markAsChanged()));
    connect(first, SIGNAL(colorChanged(const QColor&)), SLOT(markAsChanged()));

    // Mida mínima de la scroll area
    QStyle *style = scrollArea->style();
    int scrollBarWidth = style->pixelMetric(QStyle::PM_ScrollBarExtent);
    scrollArea->setMinimumWidth(first->minimumSizeHint().width() + scrollBarWidth);

    m_numberOfIntervals = 1;

    m_changed = true;

    connect(m_addPushButton, SIGNAL(clicked()), SLOT(addInterval()));
    connect(m_removePushButton, SIGNAL(clicked()), SLOT(removeInterval()));
    connect(m_nameLineEdit, SIGNAL(textChanged(const QString&)), SLOT(markAsChanged()));
}
Esempio n. 4
0
/*!
    \fn QMediaTimeRange::operator-=(const QMediaTimeInterval &interval)

    Removes the specified \a interval from the time range and returns the result.
    \since 1.0
*/
QMediaTimeRange& QMediaTimeRange::operator-=(const QMediaTimeInterval &interval)
{
    removeInterval(interval);
    return *this;
}