void specialCallback( int key,int x,int y ){ float centerPosition[] = {0.0, 0.0, 0.0}; switch( key ){ case GLUT_KEY_LEFT: rotateCameraLeft(rotationDelta, eyePosition, centerPosition, upVector); break; case GLUT_KEY_RIGHT: rotateCameraLeft(-rotationDelta, eyePosition, centerPosition, upVector); break; case GLUT_KEY_UP: rotateCameraUp(rotationDelta, eyePosition, centerPosition, upVector); break; case GLUT_KEY_DOWN: rotateCameraUp(-rotationDelta, eyePosition, centerPosition, upVector); break; } glutPostRedisplay( ); }
void AbstractAnimationWindow::createActions() { // actions and widgets for the toolbar int toolbarIconSize = OptionsDialog::instance()->getGeneralSettingsPage()->getToolbarIconSizeSpinBox()->value(); // choose file action mpAnimationChooseFileAction = new QAction(QIcon(":/Resources/icons/open.svg"), Helper::animationChooseFile, this); mpAnimationChooseFileAction->setStatusTip(Helper::animationChooseFileTip); connect(mpAnimationChooseFileAction, SIGNAL(triggered()),this, SLOT(chooseAnimationFileSlotFunction())); // initialize action mpAnimationInitializeAction = new QAction(QIcon(":/Resources/icons/initialize.svg"), Helper::animationInitialize, this); mpAnimationInitializeAction->setStatusTip(Helper::animationInitializeTip); mpAnimationInitializeAction->setEnabled(false); connect(mpAnimationInitializeAction, SIGNAL(triggered()),this, SLOT(initSlotFunction())); // animation play action mpAnimationPlayAction = new QAction(QIcon(":/Resources/icons/play_animation.svg"), Helper::animationPlay, this); mpAnimationPlayAction->setStatusTip(Helper::animationPlayTip); mpAnimationPlayAction->setEnabled(false); connect(mpAnimationPlayAction, SIGNAL(triggered()),this, SLOT(playSlotFunction())); // animation pause action mpAnimationPauseAction = new QAction(QIcon(":/Resources/icons/pause.svg"), Helper::animationPause, this); mpAnimationPauseAction->setStatusTip(Helper::animationPauseTip); mpAnimationPauseAction->setEnabled(false); connect(mpAnimationPauseAction, SIGNAL(triggered()),this, SLOT(pauseSlotFunction())); // animation slide mpAnimationSlider = new QSlider(Qt::Horizontal); mpAnimationSlider->setMinimum(0); mpAnimationSlider->setMaximum(100); mpAnimationSlider->setSliderPosition(0); mpAnimationSlider->setEnabled(false); connect(mpAnimationSlider, SIGNAL(valueChanged(int)),this, SLOT(sliderSetTimeSlotFunction(int))); // animation time QDoubleValidator *pDoubleValidator = new QDoubleValidator(this); pDoubleValidator->setBottom(0); mpAnimationTimeLabel = new Label; mpAnimationTimeLabel->setText(tr("Time [s]:")); mpTimeTextBox = new QLineEdit("0.0"); mpTimeTextBox->setMaximumSize(QSize(toolbarIconSize*2, toolbarIconSize)); mpTimeTextBox->setEnabled(false); mpTimeTextBox->setValidator(pDoubleValidator); connect(mpTimeTextBox, SIGNAL(returnPressed()),this, SLOT(jumpToTimeSlotFunction())); // animation speed mpAnimationSpeedLabel = new Label; mpAnimationSpeedLabel->setText(tr("Speed:")); mpSpeedComboBox = new QComboBox; mpSpeedComboBox->setEditable(true); mpSpeedComboBox->addItems(QStringList() << "10" << "5" << "2" << "1" << "0.5" << "0.2" << "0.1"); mpSpeedComboBox->setCurrentIndex(3); mpSpeedComboBox->setMaximumSize(QSize(toolbarIconSize*2, toolbarIconSize)); mpSpeedComboBox->setEnabled(false); mpSpeedComboBox->setValidator(pDoubleValidator); mpSpeedComboBox->setCompleter(0); connect(mpSpeedComboBox, SIGNAL(currentIndexChanged(int)),this, SLOT(setSpeedSlotFunction())); connect(mpSpeedComboBox->lineEdit(), SIGNAL(textChanged(QString)),this, SLOT(setSpeedSlotFunction())); // perspective drop down mpPerspectiveDropDownBox = new QComboBox; mpPerspectiveDropDownBox->addItem(QIcon(":/Resources/icons/perspective0.svg"), QString("Isometric")); mpPerspectiveDropDownBox->addItem(QIcon(":/Resources/icons/perspective1.svg"),QString("Side")); mpPerspectiveDropDownBox->addItem(QIcon(":/Resources/icons/perspective2.svg"),QString("Front")); mpPerspectiveDropDownBox->addItem(QIcon(":/Resources/icons/perspective3.svg"),QString("Top")); connect(mpPerspectiveDropDownBox, SIGNAL(activated(int)), this, SLOT(setPerspective(int))); // rotate camera left action mpRotateCameraLeftAction = new QAction(QIcon(":/Resources/icons/rotateCameraLeft.svg"), tr("Rotate Left"), this); mpRotateCameraLeftAction->setStatusTip(tr("Rotates the camera left")); connect(mpRotateCameraLeftAction, SIGNAL(triggered()), this, SLOT(rotateCameraLeft())); // rotate camera right action mpRotateCameraRightAction = new QAction(QIcon(":/Resources/icons/rotateCameraRight.svg"), tr("Rotate Right"), this); mpRotateCameraRightAction->setStatusTip(tr("Rotates the camera right")); connect(mpRotateCameraRightAction, SIGNAL(triggered()), this, SLOT(rotateCameraRight())); }