void tst_WindowsMobile::testSimpleWidget()
{
    if (qt_wince_is_smartphone())
        QSKIP("This test is only for Windows Mobile", SkipAll);

    QMenuBar menubar;
    menubar.show();
    QWidget maximized;
    QPalette pal = maximized.palette();
    pal.setColor(QPalette::Background, Qt::red);
    maximized.setPalette(pal);
    maximized.showMaximized();
    QWidget widget;
    widget.setGeometry(100, 100, 200, 200);
    widget.setWindowTitle("Widget");
    widget.show();
    qApp->processEvents();
    QTest::qWait(1000);

    QWidget widget2;
    widget2.setGeometry(100, 380, 300, 200);
    widget2.setWindowTitle("Widget 2");
    widget2.setWindowFlags(Qt::Popup);
    widget2.show();

    qApp->processEvents();
    QTest::qWait(1000);
    takeScreenShot("testSimpleWidget_current.png");
    compareScreenshots("testSimpleWidget_current.png", ":/testSimpleWidget_current.png");
}
Пример #2
0
void WindowServerLuna::setupDockModeAnimations()
{
	// this function first takes a screen shot of the device out of dockmode and then in dock mode, 
	// irrespective of the direction of animation

	// take a screen shot of outside dock mode
	reorderWindowManagersForDockMode(false);
	m_dockModeMgr->setOpacity(0.0);

	const HostInfo& hostInfo = HostBase::instance()->getInfo();
	int displayWidth = hostInfo.displayWidth;
	int displayHeight = hostInfo.displayHeight;

	m_screenShot = takeScreenShot();
	
	m_screenShotObject = new QGraphicsPixmapObject();
	m_screenShotObject->setPixmap(m_screenShot);
	m_screenShotObject->setPos (displayWidth/2,displayHeight/2);
	m_screenShotObject->setVisible(false);
	m_screenFade.setTargetObject(NULL);
	m_screenFade.setTargetObject(m_screenShotObject);
	m_screenScale.setTargetObject(NULL);
	m_screenScale.setTargetObject(m_screenShotObject);

	// take a screen shot of inside dock mode
	reorderWindowManagersForDockMode(true);
	m_dockModeMgr->setOpacity(1.0);

	m_dockImage = takeScreenShot();

	m_dockImageObject = new QGraphicsPixmapObject();
	m_dockImageObject->setPixmap(m_dockImage);
	m_dockImageObject->setPos (displayWidth/2,displayHeight/2);
	m_dockImageObject->setVisible (false);
	m_dockFade.setTargetObject(NULL);
	m_dockFade.setTargetObject(m_dockImageObject);
	m_dockScale.setTargetObject(NULL);
	m_dockScale.setTargetObject(m_dockImageObject);
	
	// adding it to the scene
	if (m_dockImageObject)
		scene()->addItem (m_dockImageObject);
	if (m_screenShotObject)
		scene()->addItem (m_screenShotObject);
}
Пример #3
0
void Application::tick( float timeStep ) {
	PROFILE("Total Tick");
	
	updateScene(timeStep);
	drawScene();
	
	if (movieMode) {
		takeScreenShot("arfox");
	}
}
Пример #4
0
void Application::handleInputKeyPress(const InputKeyPress *input) {
	switch (input->key) {
	case SDLK_q: {
		ActionApplicationQuit action;
		sendGlobalAction(&action);
	}
	break;
	
	case SDLK_F11:
		takeScreenShot("screen");
		break;
	}
}
Пример #5
0
void DialogMenu::exitMenu()
{
#ifdef TAKE_SCREENSHOTS
    takeScreenShot();
#endif
    beep();
    if(humidityChanged)
    {
        qDebug() << "\nHumidityChanged!" ;
        qDebug() << "Sand Humidity:" << globals.HumiditySand << "%   Fraction Humidity:"<< globals.HumidityFraction ;
        qDebug() << "New values will take part in next recepie selection.\n";
    }
    this->accept();
}
void tst_WindowsMobile::testMainWindowAndMenuBar()
{
    if (qt_wince_is_smartphone())
        QSKIP("This test is only for Windows Mobile", SkipAll);

    QProcess process;
    process.start("testQMenuBar.exe");
    QCOMPARE(process.state(), QProcess::Running);
    QTest::qWait(6000);
    openMenu();
    QTest::qWait(1000);
    takeScreenShot("testQMenuBar_current.png");
    process.close();
    compareScreenshots("testQMenuBar_current.png", ":/testQMenuBar_current.png");
}
Пример #7
0
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    // main window
    QWidget win;

    // GL format
    QGLFormat format;
    format.setVersion(4,3);
    format.setProfile(QGLFormat::CoreProfile);
    MainView *glView = new MainView(format);

    QVBoxLayout *mainLayout = new QVBoxLayout(&win);
    mainLayout->addWidget(glView);

    QWidget *cPanel = new QWidget(&win);
    QHBoxLayout *cPanelLayout = new QHBoxLayout();
    cPanel->setLayout(cPanelLayout);

    QPushButton *sShotButton = new QPushButton("Screen Shot");
    cPanelLayout->addWidget(sShotButton);
    QObject::connect( sShotButton, SIGNAL(clicked()), glView, SLOT(takeScreenShot()) );

    QPushButton *switchButton = new QPushButton("Switch Buffers");
    cPanelLayout->addWidget(switchButton);
    QObject::connect(switchButton, SIGNAL(clicked()), glView, SLOT(switchModel()));

    QPushButton *animButton = new QPushButton("Start/Stop Animation");
    cPanelLayout->addWidget(animButton);
    QObject::connect(animButton, SIGNAL(clicked()), glView, SLOT(toggleAnimation()) );

    mainLayout->addWidget(cPanel);

    win.setLayout(mainLayout);
    win.setWindowTitle("Simple Scene");
    win.show();

    return app.exec();
}
Пример #8
0
void
Gui::notify_key_event(gnash::key::code k, int modifier, bool pressed) 
{

    // Handle GUI shortcuts
    if (pressed) {
        if (k == gnash::key::ESCAPE) {
            if (isFullscreen()) {
                _stage->setStageDisplayState(movie_root::DISPLAYSTATE_NORMAL);
            }
        }
	
        if (modifier & gnash::key::GNASH_MOD_CONTROL) {
            switch (k) {
              case gnash::key::o:
              case gnash::key::O:
                  takeScreenShot();
                  break;
              case gnash::key::r:
              case gnash::key::R:
                  restart();
                  break;
              case gnash::key::p:
              case gnash::key::P:
                  pause();
                  break;
              case gnash::key::l:
              case gnash::key::L:
                  refreshView();
                  break;
              case gnash::key::q:
              case gnash::key::Q:
              case gnash::key::w:
              case gnash::key::W:
                  quit();
                  break;
              case gnash::key::f:
              case gnash::key::F:
                  toggleFullscreen();
                  break;
              case gnash::key::h:
              case gnash::key::H:
                  showUpdatedRegions(!showUpdatedRegions());
                  break;
              case gnash::key::MINUS:
              {
                  // Max interval allowed: 1 second (1FPS)
                  const size_t ni = std::min<size_t>(_interval + 2, 1000u);
                  setInterval(ni);
                  break;
              }
              case gnash::key::PLUS:
              {
                  // Min interval allowed: 1/100 second (100FPS)
                  const size_t ni = std::max<size_t>(_interval - 2, 10u);
                  setInterval(ni);
                  break;
              }
              case gnash::key::EQUALS:
              {
                  if (_stage) {
                      const float fps = _stage->getRootMovie().frameRate();
                      // Min interval allowed: 1/100 second (100FPS)
                      const size_t ni = 1000.0/fps;
                      setInterval(ni);
                  }
                  break;
              }
              default:
                  break;
            }
            
#ifdef ENABLE_KEYBOARD_MOUSE_MOVEMENTS
            if ( _keyboardMouseMovements ) {
                int step = _keyboardMouseMovementsStep; 
                // x5 if SHIFT is pressed
                if (modifier & gnash::key::GNASH_MOD_SHIFT) step *= 5; 
                switch (k) {
                  case gnash::key::UP:
                  {
                      int newx = _xpointer;
                      int newy = _ypointer-step;
                      if ( newy < 0 ) newy=0;
                      notifyMouseMove(newx, newy);
                      break;
                  }
                  case gnash::key::DOWN:
                  {
                      int newx = _xpointer;
                      int newy = _ypointer+step;
                      if ( newy >= _height ) newy = _height-1;
                      notifyMouseMove(newx, newy);
                      break;
                  }
                  case gnash::key::LEFT:
                  {
                      int newx = _xpointer-step;
                      int newy = _ypointer;
                      if ( newx < 0 ) newx = 0;
                      notifyMouseMove(newx, newy);
                      break;
                  }
                  case gnash::key::RIGHT:
                  {
                      const int newy = _ypointer;
                      int newx = _xpointer + step;
                      if ( newx >= _width ) newx = _width-1;
                      notifyMouseMove(newx, newy);
                      break;
                  }
                  default:
                      break;
                }
            }
#endif // ENABLE_KEYBOARD_MOUSE_MOVEMENTS
        }
    }
    
    if (!_started) return;
    
    if (_stopped) return;
    
    if (_stage->keyEvent(k, pressed)) {
        // any action triggered by the
        // event required screen refresh
        display(_stage);
    }
    
}
Пример #9
0
// handles keyboard and mouse input to control the camera and
// exit the program
void BlocksGame::handleInput(float dT)
{
    sf::Event event;
    while(m_window->pollEvent(event))
    {
        switch(event.type)
        {
            case sf::Event::Closed:
                quit();
                break;
            case sf::Event::KeyPressed:
                if(event.key.code == sf::Keyboard::Escape)
                    quit();
                if(event.key.code == sf::Keyboard::F2)
                    takeScreenShot();
                if(event.key.code == sf::Keyboard::F5)
                    m_world->saveWorld(savesDir);
                break;
        }
    }

    sf::Vector3<float> angles = m_cam->getAngles();

    const float speed = 2000.0; // 10 blocks / sec

    sf::Vector2i mousePos = sf::Mouse::getPosition(*m_window);

    float dX = mousePos.x - SCREEN_WIDTH / 2;
    float dY = mousePos.y - SCREEN_HEIGHT / 2;
    //dX /= 1-0.5; // sensitivity
    //dY /= 1-0.5;
    dX *= RAD_90 * dT;
    dY *= -RAD_90 * dT;
    
    m_cam->rotate(dY, dX, 0);

    if(sf::Keyboard::isKeyPressed(sf::Keyboard::E))
    {
        std::cout << m_cam->getPosition().y / 200.0 << std::endl;
    }

    // forward
    if(sf::Keyboard::isKeyPressed(sf::Keyboard::W))
    {
        float zspd = speed * dT * sin((angles.y));
        float xspd = speed * dT * cos((angles.y));
        float yspd = 0;//speed * window.GetFrameTime() * sin(angles.x);
        m_cam->move(sf::Vector3<float>(xspd, yspd, zspd));
    }
    // backwards
    if(sf::Keyboard::isKeyPressed(sf::Keyboard::S))
    {
        float zspd = speed * dT * sin((angles.y));
        float xspd = speed * dT * cos((angles.y));
        float yspd = 0;//-speed * window.GetFrameTime() * sin(angles.x);
        m_cam->move(sf::Vector3<float>(-xspd, yspd, -zspd));
    }
    // left
    if(sf::Keyboard::isKeyPressed(sf::Keyboard::A))
    {
        float zspd = -speed * dT * sin(angles.y + RAD_90);
        float xspd = -speed * dT * cos(angles.y + RAD_90);
        m_cam->move(sf::Vector3<float>(xspd, 0, zspd));
    }
    // right
    if(sf::Keyboard::isKeyPressed(sf::Keyboard::D))
    {
        float zspd = -speed * dT * sin(angles.y + RAD_90);
        float xspd = -speed * dT * cos(angles.y + RAD_90);
        m_cam->move(sf::Vector3<float>(-xspd, 0, -zspd));
    }
    // up
    if(sf::Keyboard::isKeyPressed(sf::Keyboard::Space))
        m_cam->move(sf::Vector3<float>(0, speed * dT, 0));
    // down
    if(sf::Keyboard::isKeyPressed(sf::Keyboard::LShift))
        m_cam->move(sf::Vector3<float>(0, -speed * dT, 0));

    sf::Mouse::setPosition(sf::Vector2i(SCREEN_WIDTH/2, SCREEN_HEIGHT/2), *m_window);

    // mouse clicks
    static bool leftMouseDown = false;
    if(sf::Mouse::isButtonPressed(sf::Mouse::Left) && !leftMouseDown)
    {
        leftMouseDown = true;
        sf::Vector3<int> blockPos = getBlockPosFromCam();
        sf::Vector3<float> worldPos = getWorldCoordsAtScrenPos(SCREEN_WIDTH/2, SCREEN_HEIGHT/2);
        if(worldPos.x * worldPos.x + worldPos.y * worldPos.y + worldPos.z * worldPos.z < (1000.0 * 1000.0))
        {
            //std::cout << "Close enough to remove" << std::endl;
            int id = m_world->getBlockId(blockPos.x, blockPos.y, blockPos.z);
            if(id != 0)
            {
                std::cout << "removing block\n";
                m_world->setBlockId(blockPos.x, blockPos.y, blockPos.z, 0);
            }
        }
    }else if(!sf::Mouse::isButtonPressed(sf::Mouse::Left))
        leftMouseDown = false;
}