Пример #1
0
void BlurMgr::Apply(TimeValue t, Bitmap *bm, RenderGlobalContext *gc, CheckAbortCallback *_checkAbort)
{
	m_checkAbort = _checkAbort;
	int type;
	(WORD*)bm->GetStoragePtr(&type);
	assert(type == BMM_TRUE_48);

	if(gc && gc->renderer)
	{
		//Check for SSE support  
		IRenderSSEControl* rSSE = (IRenderSSEControl *)( gc->renderer->GetInterface( IRenderSSEControl::IID ) );

		if(rSSE && rSSE->IsSSEEnabled() && IsSSE())
			gBlurSSE_Enabled = TRUE;
		else
			gBlurSSE_Enabled = FALSE;
	}
	else
	{
		if(IsSSE())
			gBlurSSE_Enabled = TRUE;
		else
			gBlurSSE_Enabled = FALSE;
	}



	// check for active selections
	BOOL selsActive = false;
	for (int i=0; (!selsActive && i<numSels); i++)
		pbSelData->GetValue(m_selActiveIds[i], t, selsActive, FOREVER);

	if (!selsActive)
		return;

	// if source bitmap has changed since last call
	if ( m_lastBMModifyID != bm->GetModifyID() )
	{
		m_lastBMModifyID = bm->GetModifyID();
		m_compValid = false;
		if ( (bm->Width() != m_imageW) || (bm->Height() != m_imageH) )
		{
			m_imageW = bm->Width();
			m_imageH = bm->Height();
			m_compMap.resize(m_imageSz = m_imageW * m_imageH);
		}
	}

	updateSelections(t, bm, gc);
	blur(t, bm, gc, selsActive);
	return;
}
Пример #2
0
void MainWindow::readListOutput() {
    static QRegExp nameRegExp("\\sName: (alsa.+)$");
    static QRegExp deviceDescRegExp("^\\s+device\\.description = \"(.+)\"\\s*$");
    if(!deviceDescRegExp.isValid())
        qWarning() << deviceDescRegExp.errorString();
    disconnect(processConnection);

    QString alsaDeviceName;
    //QDebug debug(QtDebugMsg);
    while(process.canReadLine()) {
        QByteArray line = process.readLine();
        if(nameRegExp.exactMatch(line)) {
            alsaDeviceName = nameRegExp.cap(1).trimmed();
            qDebug() << "device found" << alsaDeviceName;
        } else if(!alsaDeviceName.isEmpty() &&
                  deviceDescRegExp.exactMatch(line)) {
            QString deviceName = deviceDescRegExp.cap(1).trimmed();
            qDebug() << "device name found" << deviceName;

            devices.insert(alsaDeviceName, deviceName);
            alsaDeviceName.clear();
        }/* else
            debug << line;*/
    }
    ui->addStream->setEnabled(true);
    ui->tableWidget->setEnabled(true);
    ui->startRecording->setEnabled(true);
    ui->actionRefresh->setEnabled(true);
    ui->status->setText("Ready");
    ui->progressBar->hide();

    if(ui->tableWidget->rowCount() == 0)
        on_addStream_clicked();
    else {
        // TODO: Clear hanging pointers
        updateSelections();
    }
}
Пример #3
0
void MainWindow::on_addStream_clicked()
{
    int rowID = ui->tableWidget->rowCount();
    ui->tableWidget->insertRow(rowID);

    QComboBox* sinkSelection = new QComboBox();
    QPushButton* removeStream = new QPushButton("Remove");
    if(rowID == 0)
        removeStream->setEnabled(false);
    else if(rowID == 1)
        ui->tableWidget->cellWidget(0, 1)->setEnabled(true);
    connect(removeStream, &QPushButton::clicked, [=] () {
        for(int i=0; i<ui->tableWidget->rowCount(); i++) {
            if(ui->tableWidget->cellWidget(i, 0) == sinkSelection) {
                ui->tableWidget->removeRow(i);
                break;
            }
        }
        ui->addStream->setEnabled(true);
        if(ui->tableWidget->rowCount() == 1) {
            ui->tableWidget->cellWidget(0, 1)->setEnabled(false);
            QComboBox* rowCombo = (QComboBox*)ui->tableWidget->cellWidget(0, 0);
            const QStandardItemModel* model = qobject_cast<const QStandardItemModel*>(rowCombo->model());
            for(int r=0; r<rowCombo->count(); r++) {
                if(r == rowCombo->currentIndex())
                    continue;

                QStandardItem* item = model->item(r);
                item->setData(1 | 32, Qt::UserRole - 1);
            }
        } else
            updateSelections();
    });
    int defaultItem = 0;
    bool lastWasDisabled = true;
    QHashIterator<QString, QString> it(devices);
    while(it.hasNext()) {
        it.next();
        bool disabled = false;
        sinkSelection->addItem(it.value(), it.key());
        for(int i=0; i<rowID; i++) {
            QComboBox* rowCombo = (QComboBox*)ui->tableWidget->cellWidget(i, 0);
            if(rowCombo->currentData() == it.key()) {
                disabled = true;
                break;
            }
        }
        if(lastWasDisabled) {
            if(disabled)
                defaultItem ++;
            else
                lastWasDisabled = false;
        }
    }
    if(defaultItem > 0)
        sinkSelection->setCurrentIndex(defaultItem);
    if(rowID == devices.size()-1)
        ui->addStream->setEnabled(false);
    ui->tableWidget->setCellWidget(rowID, 0, sinkSelection);
    ui->tableWidget->setCellWidget(rowID, 1, removeStream);
    updateSelections();

    connect(sinkSelection, &QComboBox::currentTextChanged, [=] (QString) {
        updateSelections();
    });
}