예제 #1
0
파일: view.cpp 프로젝트: rodety/Clinica
 void View::mouseReleaseEvent(QMouseEvent *event)
 {
     if (QGraphicsItem *item = itemAt(event->pos())) {
         if (ImageItem *image = qgraphicsitem_cast<ImageItem *>(item))
             //showInformation(image);
               showViewer(image);
     }
     QGraphicsView::mouseReleaseEvent(event);
 }
예제 #2
0
void Engine::onDeviceResume() {
    if (mIsInitialized) {
        showViewer();
        mSoundManager->setPaused(false);
        for (QQuickItem* child : mInputArea->findChildren<QQuickItem*>()) {
            if (Util::javaScriptFuncExists(child, "onDeviceResume")) {
                QMetaObject::invokeMethod(child, "onDeviceResume");
            }
        }
    }
    resume();
    emit deviceResume();
}
예제 #3
0
void Engine::init() {
    if (mIsInitialized) {
        return;
    }

    // Create renderer.
    mRenderer.reset(new Renderer());
    mRenderList.reset(new RenderList());

    // Create window.
    mViewer.reset(new QQuickView());
    mViewer->setSource(Util::getUrlPathToAsset("Engine/qml/main.qml"));
    mViewer->setResizeMode(QQuickView::SizeRootObjectToView);

    // Initially set the window to call glClear for us. This is to prevent an uninitialized frame
    // buffer from being displayed to the user. We prevent the window from calling glClear later
    // so that we can render under it.
    mViewer->setColor(QColor::fromRgba(0x00000000));
    mViewer->setClearBeforeRendering(true);

    // Attempt to select RGB565 with a 16-bit depth buffer.
    // TODO: According to comments in q_createConfigAttributesFromFormat (qeglconvenience.cpp) this
    // doesn't work.
    QSurfaceFormat surfaceFormat;
    surfaceFormat.setSwapBehavior(QSurfaceFormat::DoubleBuffer);
    surfaceFormat.setRedBufferSize(5);
    surfaceFormat.setGreenBufferSize(6);
    surfaceFormat.setBlueBufferSize(5);
    surfaceFormat.setDepthBufferSize(16);
    surfaceFormat.setStencilBufferSize(8);
    surfaceFormat.setAlphaBufferSize(0);
    surfaceFormat.setSamples(0);
    mViewer->setFormat(surfaceFormat);

    showViewer();

    // Load materials.
    mTextureManager.reset(new TextureManager());
    mTerrainMaterials.reset(new TerrainMaterials(Util::getPathToData("materials.json")));
    mSoundManager.reset(new SoundManager(this));

    // Create UI components.
    mInputArea = getRoot()->findChild<InputArea*>("inputArea");
    Q_ASSERT(mInputArea);

    mCamera = mViewer->rootObject()->findChild<Camera*>("camera");
    mLevelLoader = mCamera->findChild<QQuickItem*>("levelLoader");

    // Other connections.
    connect(mViewer.get(), &QQuickView::beforeSynchronizing, this, &Engine::onBeforeSynchronizing,
            Qt::DirectConnection);
    connect(mViewer.get(), &QQuickView::beforeRendering, this, &Engine::onBeforeRendering,
            Qt::DirectConnection);
    connect(mViewer.get(), &QQuickView::afterRendering, this, &Engine::onAfterRendering,
            Qt::DirectConnection);
    connect(mViewer.get(), &QQuickView::afterAnimating, this, &Engine::update,
            Qt::DirectConnection);
    connect(mLevelLoader, SIGNAL(loadCompleted(bool)), this, SLOT(onLoadCompleted(bool)));

    mContactListener.reset(new ContactListener());
    mDestructionListener.reset(new DestructionListener());
    mDebugDraw.reset(new LiquidFunDebugDraw());

    mIsInitialized = true;
}