Example #1
0
// 顺时针旋转90度, 根据边界范围旋转完成后自行调整图形位置
void Tetris::rotate(int min_x, int max_x, int min_y, int max_y)
{
	if (key < 0)
	{
		return;
	}
	int maxX = min_x, minX = max_x, maxY = min_y, minY = max_y;
	// TODO 越界处理
	for (int i = 0; i < 4; i++)
	{
		BYTE x = positions[i].x, y = positions[i].y;
		positions[i].x = y - positions[key].y + positions[key].x;
		positions[i].y = positions[key].x + positions[key].y - x;
	}
	getMaxMin(minX, maxX, minY, maxY);
	// 越界纠正
	if (maxX > max_x)
	{
		changeX(max_x - maxX);
	}
	if (minX < min_x)
	{
		changeX(min_x - minX);
	}
	if (maxY > max_y)
	{
		changeY(max_y - maxY);
	}
	if (minY < min_y)
	{
		changeY(min_y - minY);
	}
}
Example #2
0
int Viewfinder::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QWidget::qt_metacall(_c, _id, _a);
    if (_id < 0)
        return _id;
    if (_c == QMetaObject::InvokeMetaMethod) {
        switch (_id) {
        case 0: processFrames((*reinterpret_cast< int(*)>(_a[1]))); break;
        case 1: processFrame(); break;
        case 2: toggleCube(); break;
        case 3: toggleGourd(); break;
        case 4: paintCube(); break;
        case 5: paintGourd(); break;
        case 6: changeX(); break;
        case 7: changeY(); break;
        case 8: changeZ(); break;
        case 9: rotateX(); break;
        case 10: rotateY(); break;
        case 11: rotateZ(); break;
        case 12: plus(); break;
        case 13: minus(); break;
        case 14: openDirectory(); break;
        default: ;
        }
        _id -= 15;
    }
    return _id;
}
void CPPositionPlugin::configDialog()
{
    bool reactivate = false;
    enum MessageFlags newMessageFlags;

    positionConfigDialog *dialog = new positionConfigDialog(topic, ui->label->isVisible(), ui->label->text(), messageFlags);


    if(!dialog->exec())
        return;

    if(topic != dialog->topicedit->text())
    {
        topic = dialog->topicedit->text();
        settings->setValue(uuid.toString() + "/Topic", topic);
        reactivate = true;
    }

    newMessageFlags = (enum MessageFlags)(dialog->typebox->itemData(dialog->typebox->currentIndex()).toInt() | (dialog->stampedcheck->isChecked() ? MessageStamped : MessageNone ) | (dialog->withcovcheck->isChecked() ? MessageWithCov : MessageNone ));

    if(newMessageFlags != messageFlags)
        reactivate = true;

    messageFlags = newMessageFlags; 
    settings->setValue(uuid.toString() + "/Type", (int)messageFlags);

    if (reactivate)
    {
        emit changeX("N/A");
        emit changeY("N/A");
        emit changeZ("N/A");
        activateNodelet(true);
    }

    if(ui->label->isVisible() != dialog->slabelcheck->isChecked())
    {
        ui->label->setVisible(dialog->slabelcheck->isChecked());
        settings->setValue(uuid.toString() + "/ShowLabel", dialog->slabelcheck->isChecked());
    }

    if(ui->label->text() != dialog->labeledit->text())
    {
        emit changeLabel(dialog->labeledit->text());
        settings->setValue(uuid.toString() + "/Label", dialog->labeledit->text());
    }
}
void CPPositionPlugin::displayValues(double x, double y, double z)
{ 
    emit changeX(QString::number(x, 'f', 4));
    emit changeY(QString::number(y, 'f', 4));
    emit changeZ(QString::number(z, 'f', 4));
}
Example #5
0
// 向下移动
void Tetris::down()
{
	changeX(1);
}