summaryrefslogtreecommitdiffstats
path: root/demos/qt3d
diff options
context:
space:
mode:
Diffstat (limited to 'demos/qt3d')
-rw-r--r--demos/qt3d/README14
-rw-r--r--demos/qt3d/cubehouse/cube.qrc7
-rw-r--r--demos/qt3d/cubehouse/cubehouse.desktop7
-rw-r--r--demos/qt3d/cubehouse/cubehouse.pro22
-rw-r--r--demos/qt3d/cubehouse/cubehouse.rc1
-rw-r--r--demos/qt3d/cubehouse/cubeview.cpp460
-rw-r--r--demos/qt3d/cubehouse/cubeview.h108
-rw-r--r--demos/qt3d/cubehouse/main.cpp70
-rw-r--r--demos/qt3d/cubehouse/projectivetextureeffect.cpp148
-rw-r--r--demos/qt3d/cubehouse/projectivetextureeffect.h79
-rw-r--r--demos/qt3d/cubehouse/qt3d.icobin67646 -> 0 bytes
-rw-r--r--demos/qt3d/cubehouse/qt3d.pngbin3677 -> 0 bytes
-rw-r--r--demos/qt3d/cubehouse/qtlogo.pngbin13923 -> 0 bytes
-rw-r--r--demos/qt3d/cubehouse/shaders/depth.frag50
-rw-r--r--demos/qt3d/cubehouse/shaders/depth.vert75
-rw-r--r--demos/qt3d/cubehouse/shaders/depthTestShader.frag91
-rw-r--r--demos/qt3d/cubehouse/shaders/depthTestShader.vert91
-rw-r--r--demos/qt3d/cubehouse/shaders/objectlineartexgen.frag52
-rw-r--r--demos/qt3d/cubehouse/shaders/objectlineartexgen.vert63
-rw-r--r--demos/qt3d/pageflip/gradient.pngbin229 -> 0 bytes
-rw-r--r--demos/qt3d/pageflip/pageflip.cpp388
-rw-r--r--demos/qt3d/pageflip/pageflip.desktop7
-rw-r--r--demos/qt3d/pageflip/pageflip.pro17
-rw-r--r--demos/qt3d/pageflip/pageflip.qrc9
-rw-r--r--demos/qt3d/pageflip/pageflip.rc1
-rw-r--r--demos/qt3d/pageflip/pageflipmath.cpp592
-rw-r--r--demos/qt3d/pageflip/pageflipmath_p.h120
-rw-r--r--demos/qt3d/pageflip/qqpage1.pngbin77887 -> 0 bytes
-rw-r--r--demos/qt3d/pageflip/qqpage2.pngbin74710 -> 0 bytes
-rw-r--r--demos/qt3d/pageflip/qqpage3.pngbin73043 -> 0 bytes
-rw-r--r--demos/qt3d/pageflip/qqpage4.pngbin78092 -> 0 bytes
-rw-r--r--demos/qt3d/pageflip/qt3d.icobin67646 -> 0 bytes
-rw-r--r--demos/qt3d/pageflip/qt3d.pngbin3677 -> 0 bytes
-rw-r--r--demos/qt3d/photobrowser3d/buttons.cpp134
-rw-r--r--demos/qt3d/photobrowser3d/buttons.h62
-rw-r--r--demos/qt3d/photobrowser3d/bytereader.cpp158
-rw-r--r--demos/qt3d/photobrowser3d/bytereader.h69
-rw-r--r--demos/qt3d/photobrowser3d/filescanner.cpp127
-rw-r--r--demos/qt3d/photobrowser3d/filescanner.h79
-rw-r--r--demos/qt3d/photobrowser3d/imagedisplay.cpp224
-rw-r--r--demos/qt3d/photobrowser3d/imagedisplay.h88
-rw-r--r--demos/qt3d/photobrowser3d/imageloader.cpp115
-rw-r--r--demos/qt3d/photobrowser3d/imageloader.h83
-rw-r--r--demos/qt3d/photobrowser3d/imagemanager.cpp133
-rw-r--r--demos/qt3d/photobrowser3d/imagemanager.h78
-rw-r--r--demos/qt3d/photobrowser3d/images/P1000223.JPGbin29760 -> 0 bytes
-rw-r--r--demos/qt3d/photobrowser3d/images/P1000228.JPGbin27685 -> 0 bytes
-rw-r--r--demos/qt3d/photobrowser3d/images/P1000472.JPGbin25850 -> 0 bytes
-rw-r--r--demos/qt3d/photobrowser3d/images/arrows-left.pngbin5303 -> 0 bytes
-rw-r--r--demos/qt3d/photobrowser3d/images/arrows.xcfbin289659 -> 0 bytes
-rw-r--r--demos/qt3d/photobrowser3d/images/default_sky_base.xcfbin93208 -> 0 bytes
-rw-r--r--demos/qt3d/photobrowser3d/images/default_sky_down.pngbin249343 -> 0 bytes
-rw-r--r--demos/qt3d/photobrowser3d/images/default_sky_east.pngbin367747 -> 0 bytes
-rw-r--r--demos/qt3d/photobrowser3d/images/default_sky_north.pngbin331943 -> 0 bytes
-rw-r--r--demos/qt3d/photobrowser3d/images/default_sky_south.pngbin407823 -> 0 bytes
-rw-r--r--demos/qt3d/photobrowser3d/images/default_sky_up.pngbin127393 -> 0 bytes
-rw-r--r--demos/qt3d/photobrowser3d/images/default_sky_west.pngbin362244 -> 0 bytes
-rw-r--r--demos/qt3d/photobrowser3d/images/girder.pngbin196973 -> 0 bytes
-rw-r--r--demos/qt3d/photobrowser3d/launcher.cpp115
-rw-r--r--demos/qt3d/photobrowser3d/main.cpp83
-rw-r--r--demos/qt3d/photobrowser3d/pancontroller.cpp244
-rw-r--r--demos/qt3d/photobrowser3d/pancontroller.h92
-rw-r--r--demos/qt3d/photobrowser3d/photobrowser.rc1
-rw-r--r--demos/qt3d/photobrowser3d/photobrowser3d.desktop7
-rw-r--r--demos/qt3d/photobrowser3d/photobrowser3d.pro71
-rw-r--r--demos/qt3d/photobrowser3d/photobrowser3d.qrc23
-rw-r--r--demos/qt3d/photobrowser3d/photobrowser3dview.cpp446
-rw-r--r--demos/qt3d/photobrowser3d/photobrowser3dview.h116
-rw-r--r--demos/qt3d/photobrowser3d/qatlas.cpp188
-rw-r--r--demos/qt3d/photobrowser3d/qatlas.h104
-rw-r--r--demos/qt3d/photobrowser3d/qfocusadaptor.cpp187
-rw-r--r--demos/qt3d/photobrowser3d/qfocusadaptor.h82
-rw-r--r--demos/qt3d/photobrowser3d/qphotobrowser3dscene.cpp58
-rw-r--r--demos/qt3d/photobrowser3d/qphotobrowser3dscene.h62
-rw-r--r--demos/qt3d/photobrowser3d/qt3d.icobin67646 -> 0 bytes
-rw-r--r--demos/qt3d/photobrowser3d/qt3d.pngbin3677 -> 0 bytes
-rw-r--r--demos/qt3d/photobrowser3d/shaders/replace_texture.fsh54
-rw-r--r--demos/qt3d/photobrowser3d/shaders/replace_texture.vsh58
-rw-r--r--demos/qt3d/photobrowser3d/skybox.cpp223
-rw-r--r--demos/qt3d/photobrowser3d/skybox.h72
-rw-r--r--demos/qt3d/photobrowser3d/threadpool.cpp135
-rw-r--r--demos/qt3d/photobrowser3d/threadpool.h81
-rw-r--r--demos/qt3d/photobrowser3d/thumbnailableimage.cpp302
-rw-r--r--demos/qt3d/photobrowser3d/thumbnailableimage.h101
-rw-r--r--demos/qt3d/photobrowser3d/thumbnaileffect.cpp186
-rw-r--r--demos/qt3d/photobrowser3d/thumbnaileffect.h70
-rw-r--r--demos/qt3d/photobrowser3d/thumbnailnode.cpp281
-rw-r--r--demos/qt3d/photobrowser3d/thumbnailnode.h96
-rw-r--r--demos/qt3d/qt3d.pro2
-rw-r--r--demos/qt3d/qt3d.svg32
-rw-r--r--demos/qt3d/shapes/qt3d.icobin67646 -> 0 bytes
-rw-r--r--demos/qt3d/shapes/qt3d.pngbin3677 -> 0 bytes
-rw-r--r--demos/qt3d/shapes/shapes.cpp430
-rw-r--r--demos/qt3d/shapes/shapes.desktop7
-rw-r--r--demos/qt3d/shapes/shapes.pro14
-rw-r--r--demos/qt3d/shapes/shapes.rc1
-rw-r--r--demos/qt3d/teaservice/README7
-rw-r--r--demos/qt3d/teaservice/meshobject.cpp155
-rw-r--r--demos/qt3d/teaservice/meshobject.h117
-rw-r--r--demos/qt3d/teaservice/per_pixel_lighting.fsh112
-rw-r--r--demos/qt3d/teaservice/per_pixel_lighting.vsh96
-rw-r--r--demos/qt3d/teaservice/perpixeleffect.cpp52
-rw-r--r--demos/qt3d/teaservice/perpixeleffect.h58
-rw-r--r--demos/qt3d/teaservice/qt3d.icobin67646 -> 0 bytes
-rw-r--r--demos/qt3d/teaservice/qt3d.pngbin3677 -> 0 bytes
-rw-r--r--demos/qt3d/teaservice/sceneobject.cpp72
-rw-r--r--demos/qt3d/teaservice/sceneobject.h63
-rw-r--r--demos/qt3d/teaservice/teacup.txt280
-rw-r--r--demos/qt3d/teaservice/teaservice.cpp386
-rw-r--r--demos/qt3d/teaservice/teaservice.desktop7
-rw-r--r--demos/qt3d/teaservice/teaservice.pro17
-rw-r--r--demos/qt3d/teaservice/teaservice.qrc8
-rw-r--r--demos/qt3d/teaservice/teaservice.rc1
-rw-r--r--demos/qt3d/teaservice/teaspoon.txt275
114 files changed, 0 insertions, 9552 deletions
diff --git a/demos/qt3d/README b/demos/qt3d/README
deleted file mode 100644
index 9188d92d..00000000
--- a/demos/qt3d/README
+++ /dev/null
@@ -1,14 +0,0 @@
-This directory contains demos for the Qt3D C++ API.
-
-Qt3D can be used to extend Qt Quick3D with custom 3D items. Qt3D is also
-a general 3D toolkit, featuring a scenegraph API, support for OpenGL VBO's
-and other utilities for general 3D programming.
-
-Research work on Qt3D also continues in the labs repository:
-
- http://qt.gitorious.org/qt-labs/qt3d
-
-...and is from time to time ported into Qt Quick3D.
-
-Check the labs version of Qt3D for additional cutting edge features such as
-support for stereoscopic hardware.
diff --git a/demos/qt3d/cubehouse/cube.qrc b/demos/qt3d/cubehouse/cube.qrc
deleted file mode 100644
index 9de1d255..00000000
--- a/demos/qt3d/cubehouse/cube.qrc
+++ /dev/null
@@ -1,7 +0,0 @@
-<!DOCTYPE RCC><RCC version="1.0">
-<qresource>
- <file>qtlogo.png</file>
- <file>shaders/objectlineartexgen.frag</file>
- <file>shaders/objectlineartexgen.vert</file>
-</qresource>
-</RCC>
diff --git a/demos/qt3d/cubehouse/cubehouse.desktop b/demos/qt3d/cubehouse/cubehouse.desktop
deleted file mode 100644
index 685e6418..00000000
--- a/demos/qt3d/cubehouse/cubehouse.desktop
+++ /dev/null
@@ -1,7 +0,0 @@
-[Desktop Entry]
-Type=Application
-Name=CubeHouse
-Icon=/usr/share/icons/hicolor/80x80/apps/qt3d.png
-Exec=/usr/bin/invoker --type=e -s /usr/bin/cubehouse -fullscreen
-OnlyShowIn=X-MeeGo;
-X-MeeGo-Logical-Id=qtn_comm_appname_cubehouse
diff --git a/demos/qt3d/cubehouse/cubehouse.pro b/demos/qt3d/cubehouse/cubehouse.pro
deleted file mode 100644
index f809849e..00000000
--- a/demos/qt3d/cubehouse/cubehouse.pro
+++ /dev/null
@@ -1,22 +0,0 @@
-TEMPLATE = app
-TARGET = cubehouse
-CONFIG += qt warn_on
-
-CONFIG += qt3d_deploy_pkg
-include(../../../pkg.pri)
-
-SOURCES = cubeview.cpp main.cpp projectivetextureeffect.cpp
-HEADERS = cubeview.h projectivetextureeffect.h
-win32:DEFINES+=_CRT_SECURE_NO_WARNINGS
-RESOURCES = cube.qrc
-
-OTHER_FILES += \
- shaders/objectlineartexgen.frag \
- shaders/objectlineartexgen.vert
-
-OTHER_FILES += \
- cubehouse.rc \
- cubehouse.desktop
-
-RC_FILE = cubehouse.rc
-
diff --git a/demos/qt3d/cubehouse/cubehouse.rc b/demos/qt3d/cubehouse/cubehouse.rc
deleted file mode 100644
index b40ecdc1..00000000
--- a/demos/qt3d/cubehouse/cubehouse.rc
+++ /dev/null
@@ -1 +0,0 @@
-IDI_ICON1 ICON DISCARDABLE "qt3d.ico"
diff --git a/demos/qt3d/cubehouse/cubeview.cpp b/demos/qt3d/cubehouse/cubeview.cpp
deleted file mode 100644
index 8c4f5e30..00000000
--- a/demos/qt3d/cubehouse/cubeview.cpp
+++ /dev/null
@@ -1,460 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "cubeview.h"
-#include "qglcube.h"
-#include "qglteapot.h"
-#include <QtCore/qdebug.h>
-#include <QtCore/qtimer.h>
-#include <QtCore/qpropertyanimation.h>
-#include <stdio.h>
-#include <qmath.h>
-#include "projectivetextureeffect.h"
-
-//#define PROJECTOR_CAMERA_DEBUG_MARKERS
-
-
-CubeView::CubeView(QWidget *parent)
- : QGLView(parent), scene(0), cube(0), teapot(0), room(0),
- sensitivity(0.1f),
- lightParameters(0),
- showFrameRate(false),
- stereo(false),
- useProjectiveTextureEffect(false),
- cangle(0.0f),
- prevX(0),
- prevY(0),
- prevZ(0),
- havePrev(false),
- projectiveTextureEffect(0)
-{
- setOption(CameraNavigation, false);
-
- roomCamera = new QGLCamera(this);
- roomCamera->setAdjustForAspectRatio(false);
-
- QPropertyAnimation *animation;
-
- animation = new QPropertyAnimation(this, "cubeAngle", this);
- animation->setStartValue(0.0f);
- animation->setEndValue(360.0f);
- animation->setDuration(5000);
- animation->setLoopCount(-1);
- animation->start();
-
- time.start();
-}
-
-void CubeView::initializeGL(QGLPainter *painter)
-{
- QGLBuilder builder;
- builder << QGL::Faceted << QGLCube(1.0f);
- cube = builder.currentNode();
- builder << QGL::Faceted;
- room = builder.currentNode();
- builder.pushNode();
- QGLSceneNode *back = builder.newNode();
- {
- QGeometryData quad;
- quad.appendVertex(QVector3D(-3.0f, -3.0f, -15.0f));
- quad.appendVertex(QVector3D( 3.0f, -3.0f, -15.0f));
- quad.appendVertex(QVector3D( 3.0f, 3.0f, -15.0f));
- quad.appendVertex(QVector3D(-3.0f, 3.0f, -15.0f));
- builder.addQuads(quad);
- }
- QGLSceneNode *left = builder.newNode();
- {
- QGeometryData quad;
- quad.appendVertex(QVector3D(-3.0f, -3.0f, -15.0f));
- quad.appendVertex(QVector3D(-3.0f, 3.0f, -15.0f));
- quad.appendVertex(QVector3D(-3.0f, 3.0f, 0.0f));
- quad.appendVertex(QVector3D(-3.0f, -3.0f, 0.0f));
- builder.addQuads(quad);
- }
- QGLSceneNode *right = builder.newNode();
- {
- QGeometryData quad;
- quad.appendVertex(QVector3D(3.0f, 3.0f, -15.0f));
- quad.appendVertex(QVector3D(3.0f, -3.0f, -15.0f));
- quad.appendVertex(QVector3D(3.0f, -3.0f, 0.0f));
- quad.appendVertex(QVector3D(3.0f, 3.0f, 0.0f));
- builder.addQuads(quad);
- }
- QGLSceneNode *top = builder.newNode();
- {
- QGeometryData quad;
- quad.appendVertex(QVector3D(-3.0f, 3.0f, -15.0f));
- quad.appendVertex(QVector3D( 3.0f, 3.0f, -15.0f));
- quad.appendVertex(QVector3D( 3.0f, 3.0f, 0.0f));
- quad.appendVertex(QVector3D(-3.0f, 3.0f, 0.0f));
- builder.addQuads(quad);
- }
- QGLSceneNode *bottom = builder.newNode();
- {
- QGeometryData quad;
- quad.appendVertex(QVector3D(-3.0f, -3.0f, -15.0f));
- quad.appendVertex(QVector3D(-3.0f, -3.0f, 0.0f));
- quad.appendVertex(QVector3D( 3.0f, -3.0f, 0.0f));
- quad.appendVertex(QVector3D( 3.0f, -3.0f, -15.0f));
- builder.addQuads(quad);
- }
- builder.popNode();
-
- int index;
- QGLMaterialCollection *palette = builder.sceneNode()->palette();
-
- QGLMaterial *mat1 = new QGLMaterial();
- mat1->setDiffuseColor(QColor(128, 100, 0));
- index = palette->addMaterial(mat1);
- back->setMaterialIndex(index);
-
- QGLMaterial *mat2 = new QGLMaterial();
- mat2->setDiffuseColor(Qt::cyan);
- index = palette->addMaterial(mat2);
- left->setMaterialIndex(index);
- right->setMaterialIndex(index);
-
- QGLMaterial *mat3 = new QGLMaterial();
- mat3->setDiffuseColor(Qt::yellow);
- index = palette->addMaterial(mat3);
- top->setMaterialIndex(index);
- bottom->setMaterialIndex(index);
-
- //qDumpScene(room);
-
- builder.newSection();
- builder << QGLTeapot();
- teapot = builder.currentNode();
- QGLMaterial *china = new QGLMaterial();
- china->setAmbientColor(QColor(192, 150, 128));
- china->setSpecularColor(QColor(60, 60, 60));
- china->setShininess(128);
- teapot->setMaterial(china);
-
- scene = builder.finalizedSceneNode();
- scene->setParent(this);
-
- roomModel = new QGLLightModel(this);
- roomModel->setAmbientSceneColor(Qt::white);
- roomModel->setViewerPosition(QGLLightModel::LocalViewer);
-
- normalModel = new QGLLightModel(this);
-
- lightParameters = new QGLLightParameters(this);
- lightParameters->setPosition(QVector3D(0.0f, 0.0f, 3.0f));
- painter->setMainLight(lightParameters);
-
- QImage textureImage(QLatin1String(":/qtlogo.png"));
- texture.setImage(textureImage);
-
- if (stereo) {
- camera()->setEyeSeparation(0.4f);
- roomCamera->setEyeSeparation(0.1f);
- }
-
- if (useProjectiveTextureEffect)
- {
- // initialize the projector camera
- projectorCamera = new QGLCamera(this);
- projectiveTextureEffect = new ProjectiveTextureEffect;
- connect(projectorCamera, SIGNAL(viewChanged()),
- this, SLOT(updateProjectorViewMatrix()));
- connect(projectorCamera, SIGNAL(projectionChanged()),
- this, SLOT(updateProjectorProjectionMatrix()));
- }
-}
-
-void CubeView::paintGL(QGLPainter *painter)
-{
- if (showFrameRate)
- qWarning("time since last frame: %d ms", time.restart());
-
- glDisable(GL_BLEND);
-
- // Animate the projector position so the effect can be seen
- if (useProjectiveTextureEffect)
- {
- projectorCamera->tiltPanRollCenter
- (-0.1f, -0.3f, 0.0f, QGLCamera::PanTiltRoll);
- }
-
- painter->modelViewMatrix().push();
- painter->projectionMatrix().push();
-
- painter->setStandardEffect(QGL::LitMaterial);
- painter->setCamera(roomCamera);
- painter->setLightModel(roomModel);
- room->draw(painter);
-
- painter->modelViewMatrix().pop();
- painter->projectionMatrix().pop();
-
- painter->modelViewMatrix().push();
- // These are the model transformations
- painter->modelViewMatrix().translate(-0.8f, -1.5f, -3.0f);
- painter->setLightModel(normalModel);
- if (useProjectiveTextureEffect)
- {
- modelMatrix.push();
- // For an effect that looks like we have only one projector
- // Over the whole screen, we duplicate transformations into the
- // projector's model matrix. For now, we don't apply the transform
- // to center the effect on each object and see it more clearly.
- // modelMatrix.translate(-0.8f, -1.5f, -3.0f);
-
- updateProjectiveTextureEffect();
-
- painter->setUserEffect(projectiveTextureEffect);
- texture.bind();
- }
- else
- {
- painter->setStandardEffect(QGL::LitMaterial);
- }
- teapot->draw(painter);
-
- if (useProjectiveTextureEffect)
- modelMatrix.pop();
- painter->modelViewMatrix().pop();
-
-
- // These are the model transformations
- painter->modelViewMatrix().push();
- painter->modelViewMatrix().translate(1.0f, -0.5f, 0.0f);
- painter->modelViewMatrix().rotate(cangle, 1.0f, 1.0f, 1.0f);
-
- texture.bind();
- if (useProjectiveTextureEffect)
- {
- modelMatrix.push();
- // For an effect that looks like we have only one projector
- // Over the whole screen, we duplicate transformations into the
- // projector's model matrix. For now, we don't apply the transform
- // to center the effect on each object and see it more clearly.
-// modelMatrix.translate(1.0f, -0.5f, 0.0f);
- modelMatrix.rotate(cangle, 1.0f, 1.0f, 1.0f);
- updateProjectiveTextureEffect();
- painter->setUserEffect(projectiveTextureEffect);
-// painter->setStandardEffect(QGL::FlatDecalTexture2D);
- cube->draw(painter);
- modelMatrix.pop();
- }
- else
- {
- glEnable(GL_BLEND);
- painter->setStandardEffect(QGL::LitDecalTexture2D);
- painter->setFaceColor(QGL::AllFaces, QColor(170, 202, 0, 120));
- glDisable(GL_DEPTH_TEST);
- glCullFace(GL_FRONT);
- glEnable(GL_CULL_FACE);
- cube->draw(painter);
- glCullFace(GL_BACK);
- cube->draw(painter);
- glDisable(GL_CULL_FACE);
- glEnable(GL_DEPTH_TEST);
- glBindTexture(GL_TEXTURE_2D, 0);
- }
-
- painter->modelViewMatrix().pop();
-#ifdef PROJECTOR_CAMERA_DEBUG_MARKERS
- if (useProjectiveTextureEffect)
- {
-
- painter->modelViewMatrix().push();
- modelMatrix.push();
- painter->modelViewMatrix().translate(projectorCamera->eye());
- painter->modelViewMatrix().scale(0.2);
- painter->setStandardEffect(QGL::LitMaterial);
- modelMatrix.translate(projectorCamera->eye());
- cube->draw(painter);
-
- modelMatrix.pop();
- painter->modelViewMatrix().pop();
-
- painter->modelViewMatrix().push();
- modelMatrix.push();
- painter->modelViewMatrix().translate(projectorCamera->center());
- painter->modelViewMatrix().scale(0.1);
- painter->setStandardEffect(QGL::LitMaterial);
- cube->draw(painter);
- modelMatrix.pop();
- painter->modelViewMatrix().pop();
-
- QVector3DArray verts;
-
- QVector3D origin = projectorCamera->eye();
-
- QVector3D target = projectorCamera->center();
- QVector3D direction = projectorCamera->center() - projectorCamera->eye();
-
- QVector3D normal = projectorCamera->upVector().normalized();
- qreal nearPlane = projectorCamera->nearPlane();
- qreal farPlane = projectorCamera->farPlane();
- qreal fieldOfView = projectorCamera->fieldOfView();
-
- QVector3D nearTopLeft;
- QVector3D nearTopRight;
- QVector3D nearBottomLeft;
- QVector3D nearBottomRight;
- QVector3D farTopLeft;
- QVector3D farTopRight;
- QVector3D farBottomLeft;
- QVector3D farBottomRight;
-
- QSizeF viewSize = projectorCamera->viewSize();
-
- qreal fieldDepthRatio = farPlane / nearPlane;
-
- QVector3D rightVector = QVector3D::crossProduct(direction, normal).normalized() * viewSize.width() / 2.0;
- QVector3D topVector = normal * viewSize.height() / 2.0;
-
- QVector3D topLeftVector = direction + topVector - rightVector;
- QVector3D topRightVector = direction + topVector + rightVector;
- QVector3D bottomLeftVector = direction - topVector - rightVector;
- QVector3D bottomRightVector = direction - topVector + rightVector;
-
- verts.append(origin, origin + (direction * (farPlane / direction.length())));
-
- verts.append(origin, origin + (topLeftVector * fieldDepthRatio));
- verts.append(origin, origin + (topRightVector * fieldDepthRatio));
- verts.append(origin, origin + (bottomLeftVector * fieldDepthRatio));
- verts.append(origin, origin + (bottomRightVector * fieldDepthRatio));
-
- verts.append(origin + topLeftVector, origin + topRightVector);
- verts.append(origin + topRightVector, origin + bottomRightVector);
- verts.append(origin + bottomRightVector, origin + bottomLeftVector);
- verts.append(origin + bottomLeftVector, origin + topLeftVector);
-
- verts.append(origin + (topLeftVector * fieldDepthRatio),
- (origin + topRightVector * fieldDepthRatio));
- verts.append(origin + (topRightVector * fieldDepthRatio),
- (origin + bottomRightVector * fieldDepthRatio));
- verts.append(origin + (bottomRightVector * fieldDepthRatio),
- (origin + bottomLeftVector * fieldDepthRatio));
- verts.append(origin + (bottomLeftVector * fieldDepthRatio),
- (origin + topLeftVector * fieldDepthRatio));
-
- verts.append(origin, origin + normal);
-
- painter->modelViewMatrix().push();
- painter->setStandardEffect(QGL::FlatColor);
- painter->clearAttributes();
- painter->setVertexAttribute(QGL::Position, QGLAttributeValue(verts));
- glLineWidth(1.0f);
-
- painter->setColor(QColor(255,255,255,255));
- painter->draw(QGL::Lines, verts.size());
- painter->modelViewMatrix().pop();
- }
-#endif
-}
-
-//inline void CubeView::setProjectiveTextureEffect(bool value)
-//{
-// useProjectiveTextureEffect = value;
-//}
-
-void CubeView::setCubeAngle(qreal angle)
-{
- cangle = angle;
- accelerometerTimeout();
- update();
-}
-
-void CubeView::accelerometerTimeout()
-{
- QVector3D g = gravity();
- camera()->setMotionAdjustment(g);
- roomCamera->setMotionAdjustment(g);
-}
-
-QVector3D CubeView::gravity() const
-{
- // Access the raw accelerometer data on the N900.
- FILE *file = fopen("/sys/class/i2c-adapter/i2c-3/3-001d/coord", "r");
- if (!file)
- return QVector3D(0, 0, -1);
- float x = 0;
- float y = 0;
- float z = 0;
- fscanf(file, "%f %f %f", &x, &y, &z);
- fclose(file);
-
- // Smooth out the reported values. Large changes are applied as-is,
- // and small jitters smooth to the rest position.
- if (havePrev) {
- qreal xdiff = x - prevX;
- qreal ydiff = y - prevY;
- qreal zdiff = z - prevZ;
- if (qAbs(xdiff) < 20.0f && qAbs(ydiff) < 20.0f && qAbs(zdiff) < 20.0f) {
- x = prevX + xdiff * 0.1f;
- y = prevY + ydiff * 0.1f;
- z = prevZ + zdiff * 0.1f;
- }
- }
- prevX = x;
- prevY = y;
- prevZ = z;
- havePrev = true;
-
- return QVector3D((x / 1000.0f) * sensitivity,
- (-y / 1000.0f) * sensitivity, -z / 1000.0f);
-}
-
-void CubeView::updateProjectorViewMatrix()
-{
- Q_ASSERT_X(projectorCamera != 0, Q_FUNC_INFO, "Null projector camera in updateProjectorViewMatrix()");
- projectiveTextureEffect->setProjectorViewMatrix(projectorCamera->modelViewMatrix());
- updateProjectiveTextureEffect();
-}
-
-void CubeView::updateProjectorProjectionMatrix()
-{
- qreal projectorAspectRatio = 1.0;
- projectiveTextureEffect->setProjectorProjectionMatrix(projectorCamera->projectionMatrix(projectorAspectRatio));
- updateProjectiveTextureEffect();
-}
-
-void CubeView::updateProjectiveTextureEffect()
-{
- projectiveTextureEffect->setProjectorDirection(projectorCamera->center() - projectorCamera->eye());
- projectiveTextureEffect->setModelMatrix(modelMatrix);
-}
diff --git a/demos/qt3d/cubehouse/cubeview.h b/demos/qt3d/cubehouse/cubeview.h
deleted file mode 100644
index 52517ea1..00000000
--- a/demos/qt3d/cubehouse/cubeview.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef CUBEVIEW_H
-#define CUBEVIEW_H
-
-#include "qglview.h"
-#include "qglbuilder.h"
-#include "qgltexture2d.h"
-#include <QtCore/qdatetime.h>
-
-class ProjectiveTextureEffect;
-
-class CubeView : public QGLView
-{
- Q_OBJECT
- Q_PROPERTY(qreal cubeAngle READ cubeAngle WRITE setCubeAngle)
-public:
- CubeView(QWidget *parent = 0);
- ~CubeView() {}
-
- void setShowFrameRate(bool value) { showFrameRate = value; }
- void setStereo(bool value) { stereo = value; }
- void setProjectiveTextureEffect(bool value)
-{
- useProjectiveTextureEffect = value;
-}
-
- qreal cubeAngle() const { return cangle; }
- void setCubeAngle(qreal angle);
-
-protected:
- void initializeGL(QGLPainter *painter);
- void paintGL(QGLPainter *painter);
-
-private slots:
- void accelerometerTimeout();
- void updateProjectorViewMatrix();
- void updateProjectorProjectionMatrix();
- void updateProjectiveTextureEffect();
-
-private:
- QGLTexture2D texture;
- QGLSceneNode *scene;
- QGLSceneNode *cube;
- QGLSceneNode *teapot;
- QGLSceneNode *room;
- QGLCamera *roomCamera;
- QGLCamera *projectorCamera;
- qreal sensitivity;
- QGLLightModel *roomModel;
- QGLLightModel *normalModel;
- QGLLightParameters *lightParameters;
- bool showFrameRate;
- bool stereo;
- bool useProjectiveTextureEffect;
- QTime time;
- qreal cangle;
- mutable qreal prevX, prevY, prevZ;
- mutable bool havePrev;
-
- QVector3D gravity() const;
-
- ProjectiveTextureEffect* projectiveTextureEffect;
- QMatrix4x4 biasMatrix;
- QMatrix4x4Stack modelMatrix;
- QMatrix4x4 objectLinearTexgenMatrix;
-};
-
-#endif
diff --git a/demos/qt3d/cubehouse/main.cpp b/demos/qt3d/cubehouse/main.cpp
deleted file mode 100644
index a18b6584..00000000
--- a/demos/qt3d/cubehouse/main.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QApplication>
-#include "cubeview.h"
-
-int main(int argc, char *argv[])
-{
- QApplication app(argc, argv);
- CubeView view;
- if (QApplication::arguments().contains(QLatin1String("-framerate")))
- view.setShowFrameRate(true);
- if (QApplication::arguments().contains(QLatin1String("-projectivetexture")))
- view.setProjectiveTextureEffect(true);
- if (QApplication::arguments().contains(QLatin1String("-stereo")))
- view.setStereo(true);
- else if (view.stereoType() != QGLView::RedCyanAnaglyph)
- view.setStereo(true);
-
-#ifdef Q_OS_SYMBIAN
- view.setAttribute(Qt::WA_LockLandscapeOrientation, true);
- view.showFullScreen();
-#else
- if (QApplication::arguments().contains(QLatin1String("-maximize")))
- view.showMaximized();
- else if (QApplication::arguments().contains(QLatin1String("-fullscreen")))
- view.showFullScreen();
- else
- view.show();
-#endif
- return app.exec();
-}
diff --git a/demos/qt3d/cubehouse/projectivetextureeffect.cpp b/demos/qt3d/cubehouse/projectivetextureeffect.cpp
deleted file mode 100644
index 4a88dd37..00000000
--- a/demos/qt3d/cubehouse/projectivetextureeffect.cpp
+++ /dev/null
@@ -1,148 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QFile>
-#include "projectivetextureeffect.h"
-#include <QtOpenGL/qglshaderprogram.h>
-
-static const QMatrix4x4 biasMatrix = QMatrix4x4(0.5, 0.0, 0.0, 0.5,
- 0.0, 0.5, 0.0, 0.5,
- 0.0, 0.0, 0.5, 0.5,
- 0.0, 0.0, 0.0, 1.0);
-
-/*!
- The ProjectiveTextureEffect mimics the effect of shining a projector onto
- a scene from a specific direction. Vertex coordinates in object space are
- transformed into eye-space coordinates relative to the light direction,
- using the objectLinearTexgenMatrix.
-*/
-ProjectiveTextureEffect::ProjectiveTextureEffect() :
- matrixDirty(true)
-{
- setupShaders();
-}
-
-void ProjectiveTextureEffect::setActive(QGLPainter *painter, bool flag)
-{
- QGLShaderProgramEffect::setActive(painter, flag);
-}
-
-void ProjectiveTextureEffect::update(QGLPainter *painter, QGLPainter::Updates updates)
-{
- QGLShaderProgramEffect::update(painter, updates);
-
- if (matrixDirty)
- {
- recalulateObjectLinearTexgenMatrix();
- matrixDirty = false;
- }
-
- program()->setUniformValue("objectLinearTexgenMatrix",
- objectLinearTexgenMatrix);
- program()->setUniformValue("projectorDirection",
- projectorDirection);
-}
-
-void ProjectiveTextureEffect::setProjectorDirection(const QVector4D &direction)
-{
- this->projectorDirection = direction;
- matrixDirty = true;
-}
-
-void ProjectiveTextureEffect::setCameraModelViewMatrix(const QMatrix4x4 &newCameraModelViewMatrix)
-{
- cameraModelViewMatrix = newCameraModelViewMatrix;
- bool invertible;
- inverseCameraModelViewMatrix =
- newCameraModelViewMatrix.inverted(&invertible);
- Q_ASSERT(invertible);
- if (!invertible)
- qWarning() << "camera Model view matrix not invertible in ProjectiveDepthTestEffect::setCameraModelViewMatrix()";
- matrixDirty = true;
-}
-
-void ProjectiveTextureEffect::setProjectorProjectionMatrix(const QMatrix4x4 &newMatrix)
-{
- projectorProjectionMatrix = newMatrix;
- matrixDirty = true;
-}
-
-void ProjectiveTextureEffect::setProjectorViewMatrix(const QMatrix4x4 &newMatrix)
-{
- projectorViewMatrix = newMatrix;
- matrixDirty = true;
-}
-
-void ProjectiveTextureEffect::setModelMatrix(const QMatrix4x4 &newMatrix)
-{
- modelMatrix = newMatrix;
- matrixDirty = true;
-}
-
-void ProjectiveTextureEffect::recalulateObjectLinearTexgenMatrix()
-{
- objectLinearTexgenMatrix = biasMatrix *
- projectorProjectionMatrix *
- projectorViewMatrix *
- modelMatrix;
-}
-
-void ProjectiveTextureEffect::setupShaders()
-{
- QString vertexShaderFileName = QLatin1String(":/shaders/objectlineartexgen.vert");
- QFile vertexShaderFile(vertexShaderFileName);
- if (vertexShaderFile.open(QIODevice::ReadOnly | QIODevice::Text))
- {
- setVertexShader(vertexShaderFile.readAll());
- } else {
- qWarning() << "Could not open file "<<vertexShaderFileName<<", failed to load vertex shader";
- }
-
- QString fragmentShaderFileName = QLatin1String(":/shaders/objectlineartexgen.frag");
- QFile fragmentShaderFile(fragmentShaderFileName);
- if (fragmentShaderFile.open(QIODevice::ReadOnly | QIODevice::Text))
- {
- setFragmentShader(fragmentShaderFile.readAll());
- } else {
- qWarning() << "Could not open file "<<fragmentShaderFileName<<", failed to load fragment shader";
- }
-
-}
diff --git a/demos/qt3d/cubehouse/projectivetextureeffect.h b/demos/qt3d/cubehouse/projectivetextureeffect.h
deleted file mode 100644
index 8730710a..00000000
--- a/demos/qt3d/cubehouse/projectivetextureeffect.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef PROJECTIVEDTEXTUREEFFECT_H
-#define PROJECTIVEDTEXTUREEFFECT_H
-
-#include "qglshaderprogrameffect.h"
-//#include "deptheffect.h"
-#include "qmatrix4x4.h"
-
-class ProjectiveTextureEffect : public QGLShaderProgramEffect
-{
-public:
- explicit ProjectiveTextureEffect();
- virtual void setActive(QGLPainter *painter, bool flag);
- virtual void update(QGLPainter *painter, QGLPainter::Updates updates);
- virtual void setProjectorDirection(const QVector4D &direction);
-
- void setCameraModelViewMatrix(const QMatrix4x4 &newCameraModelViewMatrix);
- void setProjectorProjectionMatrix(const QMatrix4x4 &newMatrix);
- void setProjectorViewMatrix(const QMatrix4x4 &newMatrix);
- void setModelMatrix(const QMatrix4x4 &newMatrix);
-
-// TODO:
-// QMatrix4x4 eyeLinearTexgenMatrix;
-
-protected:
- virtual void setupShaders();
-private:
- virtual void recalulateObjectLinearTexgenMatrix();
- bool matrixDirty;
- QMatrix4x4 modelMatrix;
- QMatrix4x4 objectLinearTexgenMatrix;
- QMatrix4x4 cameraModelViewMatrix;
- QMatrix4x4 inverseCameraModelViewMatrix;
- QMatrix4x4 projectorProjectionMatrix;
- QMatrix4x4 projectorViewMatrix;
- QVector4D projectorDirection;
-};
-
-#endif // PROJECTIVEDTEXTUREEFFECT_H
diff --git a/demos/qt3d/cubehouse/qt3d.ico b/demos/qt3d/cubehouse/qt3d.ico
deleted file mode 100644
index e6442baf..00000000
--- a/demos/qt3d/cubehouse/qt3d.ico
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/cubehouse/qt3d.png b/demos/qt3d/cubehouse/qt3d.png
deleted file mode 100644
index 21ec0176..00000000
--- a/demos/qt3d/cubehouse/qt3d.png
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/cubehouse/qtlogo.png b/demos/qt3d/cubehouse/qtlogo.png
deleted file mode 100644
index 7d3e97eb..00000000
--- a/demos/qt3d/cubehouse/qtlogo.png
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/cubehouse/shaders/depth.frag b/demos/qt3d/cubehouse/shaders/depth.frag
deleted file mode 100644
index 939cfc95..00000000
--- a/demos/qt3d/cubehouse/shaders/depth.frag
+++ /dev/null
@@ -1,50 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-varying float depth;
-
-void main(void)
-{
- float stupidMathsDepth = depth;
- stupidMathsDepth = (stupidMathsDepth + 10.0) / 20.0;
-// gl_FragColor = vec4(vec3(stupidMathsDepth), 1.0);
- gl_FragColor = vec4(1.0, 0.0, 1.0, 1.0);
-};
diff --git a/demos/qt3d/cubehouse/shaders/depth.vert b/demos/qt3d/cubehouse/shaders/depth.vert
deleted file mode 100644
index 8e13193b..00000000
--- a/demos/qt3d/cubehouse/shaders/depth.vert
+++ /dev/null
@@ -1,75 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-attribute highp vec4 vertex;
-varying float depth;
-uniform highp mat4 qt_ModelViewMatrix;
-uniform highp mat4 qt_ProjectionMatrix;
-
-attribute highp vec4 texCoords;
-
-uniform highp mat4 cameraCombinedMatrix;
-uniform highp mat4 cameraModelViewMatrix;
-uniform highp mat4 cameraProjectionMatrix;
-
-uniform highp mat4 lightCombinedMatrix;
-
-varying highp vec4 qt_TexCoord0;
-varying highp vec4 onScreenPosition;
-varying highp vec4 lightScreenPosition;
-varying highp vec4 worldSpaceVertex;
-
-void main(void)
-{
- qt_TexCoord0 = texCoords;
-
- // qt_ProjectionMatrix == cameraProjectionMatrix
-// onScreenPosition = qt_ProjectionMatrix * qt_ModelViewMatrix * vertex;
-//onScreenPosition = cameraProjectionMatrix * qt_ModelViewMatrix * vertex;
-
- onScreenPosition = cameraProjectionMatrix
- * cameraModelViewMatrix
-// * qt_ModelViewMatrix
- * vertex;
- depth = onScreenPosition.z;
-
- gl_Position = onScreenPosition;
-};
diff --git a/demos/qt3d/cubehouse/shaders/depthTestShader.frag b/demos/qt3d/cubehouse/shaders/depthTestShader.frag
deleted file mode 100644
index b2c6957b..00000000
--- a/demos/qt3d/cubehouse/shaders/depthTestShader.frag
+++ /dev/null
@@ -1,91 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-// This is equivilent to GL_REPLACE
-varying highp vec4 qt_TexCoord0;
-
-uniform mediump sampler2D texture;
-uniform mediump mat4 textureMatrix;
-varying highp vec4 onScreenPosition;
-varying highp vec4 lightScreenPosition;
-varying highp vec4 worldSpaceVertex;
-varying float lightDepth;
-varying float actualDepth;
-
-void main(void)
-{
-
- // I should be able to build a matrix to do this:
-// vec4 normalizedOnScreenPosition = (onScreenPosition + 5.0) / 10.0;
-vec4 normalizedLightScreenPosition = (((lightScreenPosition
-//+ lightScreenPosition.w
-) / lightScreenPosition.w ) + 1.0) / 2.0;
-
-// float lightMapDepth = texture2D(texture, normalizedLightScreenPosition.st).z;
- float lightMapDepth = texture2D(texture, normalizedLightScreenPosition.st ).z;
-// gl_FragColor = vec4(lightMapDepth, lightMapDepth, lightMapDepth, 1.0);
-
-// gl_FragColor = vec4(normalizedLightScreenPosition.st,0.0,1.0);
-
-// float lightActualDepth = normalizedLightScreenPosition.z;
- float lightActualDepth = lightDepth;
-// gl_FragColor = vec4(lightActualDepth, lightActualDepth, lightActualDepth, 1.0);
- float lightActualDepthWithStupidMaths = (lightActualDepth + 10.0) / 20.0;
- float lightDepthWithStupidMaths = (lightDepth + 10.0) / 20.0;
-// gl_FragColor = vec4(vec3(lightActualDepthWithStupidMaths), 1.0);
-
-
-// if (lightActualDepthWithStupidMaths > lightMapDepth )
-// gl_FragColor = vec4(0.2, 0.2, 0.2, 1.0);
-// else
- gl_FragColor = vec4(1.0, 1.0, 0.5, 1.0);
-
-
-// gl_FragColor = vec4(lightDepthWithStupidMaths, lightDepthWithStupidMaths, lightDepthWithStupidMaths, 1.0);
-
-
-//float stupidMathslightDepth = (lightDepth + 10.0) / 20;
-//gl_FragColor = vec4(stupidMathslightDepth, stupidMathslightDepth, stupidMathslightDepth, 1.0);
-
-//float stupidMathsActualDepth = (actualDepth + 10.0) / 20.0;
-//gl_FragColor = vec4(stupidMathsActualDepth, stupidMathsActualDepth, stupidMathsActualDepth, 1.0);
-
-};
diff --git a/demos/qt3d/cubehouse/shaders/depthTestShader.vert b/demos/qt3d/cubehouse/shaders/depthTestShader.vert
deleted file mode 100644
index 6f640c87..00000000
--- a/demos/qt3d/cubehouse/shaders/depthTestShader.vert
+++ /dev/null
@@ -1,91 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-attribute highp vec4 vertex;
-attribute highp vec4 texCoords;
-
-uniform highp mat4 matrix;
-uniform highp mat4 qt_ProjectionMatrix;
-uniform highp mat4 qt_ModelViewMatrix;
-
-uniform highp mat4 cameraCombinedMatrix;
-uniform highp mat4 lightCombinedMatrix;
-
-uniform highp mat4 cameraModelViewMatrix;
-uniform highp mat4 inverseCameraModelViewMatrix;
-uniform highp mat4 lightModelViewMatrix;
-
-uniform highp mat4 cameraProjectionMatrix;
-uniform highp mat4 lightProjectionMatrix;
-
-varying highp vec4 qt_TexCoord0;
-varying highp vec4 onScreenPosition;
-varying highp vec4 lightScreenPosition;
-varying highp vec4 worldSpaceVertex;
-varying float lightDepth;
-varying float actualDepth;
-
-void main(void)
-{
- qt_TexCoord0 = texCoords;
-// onScreenPosition = matrix * vertex;
-//onScreenPosition = cameraCombinedMatrix * vertex; // works
- onScreenPosition = qt_ProjectionMatrix *
- qt_ModelViewMatrix
- * vertex;
-
- highp vec4 worldPosition = inverseCameraModelViewMatrix *
- qt_ModelViewMatrix * vertex;
-
-// lightScreenPosition = lightCombinedMatrix * vertex;
-// lightScreenPosition = lightCombinedMatrix * worldPosition;
- lightScreenPosition = lightProjectionMatrix * lightModelViewMatrix * vertex;
- lightDepth = lightScreenPosition.z;
-
- actualDepth = onScreenPosition.z;
-
- worldSpaceVertex = vertex;
-
-// gl_Position = qt_ProjectionMatrix * worldPosition;
-//gl_Position = onScreenPosition;
-gl_Position = onScreenPosition;
-// gl_Position = lightScreenPosition;
-};
diff --git a/demos/qt3d/cubehouse/shaders/objectlineartexgen.frag b/demos/qt3d/cubehouse/shaders/objectlineartexgen.frag
deleted file mode 100644
index a4439f28..00000000
--- a/demos/qt3d/cubehouse/shaders/objectlineartexgen.frag
+++ /dev/null
@@ -1,52 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-uniform sampler2D texture;
-varying highp vec4 texCoord;
-varying float facingProjector;
-
-void main(void)
-{
- vec2 clampedCoords = texCoord.st;
- clampedCoords = clamp(texCoord.st, vec2(0.0), vec2(1.0));
- vec4 textureColor = texture2D(texture, clampedCoords);
- gl_FragColor = vec4(textureColor.rgb * facingProjector, 1.0);
-};
diff --git a/demos/qt3d/cubehouse/shaders/objectlineartexgen.vert b/demos/qt3d/cubehouse/shaders/objectlineartexgen.vert
deleted file mode 100644
index b78b938c..00000000
--- a/demos/qt3d/cubehouse/shaders/objectlineartexgen.vert
+++ /dev/null
@@ -1,63 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** No Commercial Usage
-** This file contains pre-release code and may not be distributed.
-** You may use this file in accordance with the terms and conditions
-** contained in the Technology Preview License Agreement accompanying
-** this package.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
-**
-**
-**
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-attribute highp vec4 qt_Vertex;
-attribute highp vec4 qt_Normal;
-uniform highp mat3 qt_NormalMatrix;
-uniform highp mat4 qt_ModelViewProjectionMatrix;
-
-uniform highp mat4 objectLinearTexgenMatrix;
-uniform highp vec4 projectorDirection;
-
-varying highp vec4 texCoord;
-varying float facingProjector;
-
-void main(void)
-{
- texCoord = objectLinearTexgenMatrix * qt_Vertex;
- vec4 normal = normalize(vec4(qt_NormalMatrix * vec3(qt_Vertex), qt_Vertex.w));
- // We're facing the projector if the normal and projector direction
- // are pointing in opposite directions, i.e. if their dot product
- // is negative.
- facingProjector = -dot(normalize(normal), normalize(projectorDirection));
- facingProjector = clamp(facingProjector, 0.0, 1.0);
- gl_Position = qt_ModelViewProjectionMatrix * qt_Vertex;
-};
diff --git a/demos/qt3d/pageflip/gradient.png b/demos/qt3d/pageflip/gradient.png
deleted file mode 100644
index ddadf69d..00000000
--- a/demos/qt3d/pageflip/gradient.png
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/pageflip/pageflip.cpp b/demos/qt3d/pageflip/pageflip.cpp
deleted file mode 100644
index a6e1f232..00000000
--- a/demos/qt3d/pageflip/pageflip.cpp
+++ /dev/null
@@ -1,388 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QApplication>
-#include <QTimer>
-#include <QMouseEvent>
-#include "qglpainter.h"
-#include "qglabstracteffect.h"
-#include "qgltexture2d.h"
-#include "qglshaderprogrameffect.h"
-#include <QtOpenGL/qglshaderprogram.h>
-#include "pageflipmath_p.h"
-
-class PageFlipGradientEffect;
-
-class PageFlipView : public QGLWidget
-{
- Q_OBJECT
-public:
- PageFlipView(QWidget *parent = 0);
- ~PageFlipView();
-
- void setBlend(bool value) { blend = value; }
- void setVertical(bool value) { vertical = value; }
-
-protected:
- void resizeGL(int width, int height);
- void initializeGL();
- void paintGL();
- void mousePressEvent(QMouseEvent *e);
-
-private slots:
- void animate();
-
-private:
- bool blend;
- bool vertical;
-
- qreal posn; // Position within the animation - 0...1
- QSize pageSize; // Size of a page within the window.
-
- QRect pageRect1;
- QRect pageRect2;
-
- QColor colors[4];
- int colorIndex;
-
- QGLTexture2D textures[4];
-
- QGLTexture2D gradientTexture;
-
- PageFlipMath pageFlipMath;
-
- PageFlipGradientEffect *effect;
-
- void setAlphaValue(QGLPainter *painter, GLfloat value);
-};
-
-class PageFlipGradientEffect : public QGLShaderProgramEffect
-{
-public:
- PageFlipGradientEffect();
- ~PageFlipGradientEffect();
-
- void setAlphaValue(GLfloat value);
-};
-
-PageFlipView::PageFlipView(QWidget *parent)
- : QGLWidget(parent)
-{
- posn = 0.0f;
- blend = false;
- vertical = false;
-
- colors[0] = QColor(0, 192, 192, 255);
- colors[1] = QColor(192, 0, 0, 255);
- colors[2] = QColor(192, 192, 0, 255);
- colors[3] = QColor(128, 128, 0, 255);
- colorIndex = 0;
-
- QTimer *timer = new QTimer(this);
- connect(timer, SIGNAL(timeout()), this, SLOT(animate()));
- timer->start(40);
-
- effect = new PageFlipGradientEffect();
-}
-
-PageFlipView::~PageFlipView()
-{
- delete effect;
-}
-
-void PageFlipView::resizeGL(int width, int height)
-{
- glViewport(0, 0, width, height);
-}
-
-void PageFlipView::initializeGL()
-{
- QGLPainter painter(this);
-
- //QSize size = rect().size();
- //int width = size.width() / 3;
- //int height = (int)(width * 1.414f);
- int width = 227;
- int height = 320;
- pageSize = QSize(width, height);
-
- textures[0].setImage(QImage(QLatin1String(":/qqpage1.png")));
- textures[1].setImage(QImage(QLatin1String(":/qqpage2.png")));
- textures[2].setImage(QImage(QLatin1String(":/qqpage3.png")));
- textures[3].setImage(QImage(QLatin1String(":/qqpage4.png")));
-
- gradientTexture.setImage(QImage(QLatin1String(":/gradient.png")));
-
- if (painter.hasOpenGLFeature(QOpenGLFunctions::BlendColor))
- painter.glBlendColor(0, 0, 0, 0);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- if (painter.hasOpenGLFeature(QOpenGLFunctions::BlendEquation))
- painter.glBlendEquation(GL_FUNC_ADD);
- else if (painter.hasOpenGLFeature(QOpenGLFunctions::BlendEquationSeparate))
- painter.glBlendEquationSeparate(GL_FUNC_ADD, GL_FUNC_ADD);
-
- glEnable(GL_BLEND);
-
- if (vertical)
- pageFlipMath.setStartCorner(PageFlipMath::VerticalBottomRight);
- else
- pageFlipMath.setStartCorner(PageFlipMath::BottomRight);
-}
-
-void PageFlipView::paintGL()
-{
- QGLPainter painter(this);
-
- QRect rect = this->rect();
- int midx = rect.width() / 2;
- int topy = (rect.height() - pageSize.height()) / 2;
-
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- QMatrix4x4 projm;
- projm.ortho(rect);
- painter.projectionMatrix() = projm;
- painter.modelViewMatrix().setToIdentity();
-
- if (vertical) {
- pageRect2 = QRect(QPoint(midx - pageSize.width() / 2, topy), pageSize);
- pageRect1 = QRect(QPoint(pageRect2.x() - pageSize.width(), topy), pageSize);
- } else {
- pageRect1 = QRect(QPoint(midx - pageSize.width(), topy), pageSize);
- pageRect2 = QRect(QPoint(midx, topy), pageSize);
- }
- pageFlipMath.setPageRect(pageRect2);
- pageFlipMath.setShowPageReverse(false);
- pageFlipMath.compute(posn);
-
- QGLAttributeValue positions
- (2, GL_FLOAT, pageFlipMath.stride(), pageFlipMath.vertexArray());
- QGLAttributeValue texCoords
- (2, GL_FLOAT, pageFlipMath.stride(), pageFlipMath.vertexArray() + 2);
- QGLAttributeValue gradientCoords
- (1, GL_FLOAT, pageFlipMath.stride(), pageFlipMath.vertexArray() + 4);
-
- if (painter.isFixedFunction())
- painter.setStandardEffect(QGL::FlatReplaceTexture2D);
- else
- painter.setUserEffect(effect);
- painter.setColor(colors[colorIndex]);
- painter.glActiveTexture(GL_TEXTURE0);
- textures[colorIndex].bind();
- if (!painter.isFixedFunction()) {
- painter.glActiveTexture(GL_TEXTURE1);
- gradientTexture.bind();
- }
- painter.clearAttributes();
- painter.setVertexAttribute(QGL::Position, positions);
- painter.setVertexAttribute(QGL::TextureCoord0, texCoords);
- painter.setVertexAttribute(QGL::CustomVertex0, gradientCoords);
- setAlphaValue(&painter, 1.0f);
- painter.update();
- pageFlipMath.drawPage(0);
-
- painter.setColor(colors[(colorIndex + 1) % 4]);
- painter.glActiveTexture(GL_TEXTURE0);
- textures[(colorIndex + 1) % 4].bind();
- setAlphaValue(&painter, 1.0f);
- painter.update();
- pageFlipMath.drawPage(1);
-
- painter.setColor(colors[(colorIndex + 2) % 4]);
- if (!pageFlipMath.showPageReverse())
- textures[(colorIndex + 2) % 4].bind();
- if (blend)
- setAlphaValue(&painter, 0.75f);
- else
- setAlphaValue(&painter, 1.0f);
- painter.update();
- pageFlipMath.drawPage(2);
-
- painter.setColor(colors[(colorIndex + 3) % 4]);
- textures[(colorIndex + 3) % 4].bind();
- setAlphaValue(&painter, 1.0f);
- painter.update();
- pageFlipMath.drawPage(3);
-
- glBindTexture(GL_TEXTURE_2D, 0);
- painter.glActiveTexture(GL_TEXTURE1);
- glBindTexture(GL_TEXTURE_2D, 0);
-
- painter.setStandardEffect(QGL::FlatColor);
- painter.clearAttributes();
- painter.setVertexAttribute(QGL::Position, positions);
- painter.setVertexAttribute(QGL::TextureCoord0, texCoords);
- painter.setVertexAttribute(QGL::CustomVertex0, gradientCoords);
- painter.setColor(QColor(0, 0, 0, 255));
- painter.update();
- pageFlipMath.drawOutline(2);
-}
-
-void PageFlipView::mousePressEvent(QMouseEvent *e)
-{
- int x = e->x();
- int y = e->y();
- bool changed = true;
- if (vertical) {
- if (x >= pageRect2.x() && x < (pageRect2.x() + 20) &&
- y >= pageRect2.y() && y < (pageRect2.y() + 20))
- pageFlipMath.setStartCorner(PageFlipMath::VerticalTopLeft);
- else if (x >= pageRect2.x() && x < (pageRect2.x() + 20) &&
- y >= (pageRect2.bottom() - 20) && y <= pageRect2.bottom())
- pageFlipMath.setStartCorner(PageFlipMath::VerticalBottomLeft);
- else if (x >= (pageRect2.right() - 20) && x <= pageRect2.right() &&
- y >= pageRect2.y() && y < (pageRect2.y() + 20))
- pageFlipMath.setStartCorner(PageFlipMath::VerticalTopRight);
- else if (x >= (pageRect2.right() - 20) && x <= pageRect2.right() &&
- y >= (pageRect2.bottom() - 20) && y <= pageRect2.bottom())
- pageFlipMath.setStartCorner(PageFlipMath::VerticalBottomRight);
- else
- changed = false;
- } else {
- if (x >= pageRect1.x() && x < (pageRect1.x() + 20) &&
- y >= pageRect1.y() && y < (pageRect1.y() + 20))
- pageFlipMath.setStartCorner(PageFlipMath::TopLeft);
- else if (x >= pageRect1.x() && x < (pageRect1.x() + 20) &&
- y >= (pageRect1.bottom() - 20) && y <= pageRect1.bottom())
- pageFlipMath.setStartCorner(PageFlipMath::BottomLeft);
- else if (x >= pageRect2.x() && x < (pageRect2.x() + 20) &&
- y >= pageRect2.y() && y < (pageRect2.y() + 20))
- pageFlipMath.setStartCorner(PageFlipMath::TopLeftOnePage);
- else if (x >= pageRect2.x() && x < (pageRect2.x() + 20) &&
- y >= (pageRect2.bottom() - 20) && y <= pageRect2.bottom())
- pageFlipMath.setStartCorner(PageFlipMath::BottomLeftOnePage);
- else if (x >= (pageRect2.right() - 20) && x <= pageRect2.right() &&
- y >= pageRect2.y() && y < (pageRect2.y() + 20))
- pageFlipMath.setStartCorner(PageFlipMath::TopRight);
- else if (x >= (pageRect2.right() - 20) && x <= pageRect2.right() &&
- y >= (pageRect2.bottom() - 20) && y <= pageRect2.bottom())
- pageFlipMath.setStartCorner(PageFlipMath::BottomRight);
- else
- changed = false;
- }
- if (changed)
- posn = 0.0f;
- QGLWidget::mousePressEvent(e);
-}
-
-void PageFlipView::animate()
-{
- posn += 0.04f;
- if (posn >= 1.0f) {
- posn = 0.0f;
- colorIndex = (colorIndex + 2) % 4;
- }
- updateGL();
-}
-
-void PageFlipView::setAlphaValue(QGLPainter *painter, GLfloat value)
-{
- if (!painter->isFixedFunction())
- effect->setAlphaValue(value);
-}
-
-static char const gradientVertexShader[] =
- "attribute highp vec4 qt_Vertex;\n"
- "attribute highp vec4 qt_MultiTexCoord0;\n"
- "attribute highp float qt_Custom0;\n"
- "uniform mediump mat4 qt_ModelViewProjectionMatrix;\n"
- "varying highp vec4 qt_TexCoord0;\n"
- "varying highp float qGradCtrl;\n"
- "void main(void)\n"
- "{\n"
- " gl_Position = qt_ModelViewProjectionMatrix * qt_Vertex;\n"
- " qt_TexCoord0 = qt_MultiTexCoord0;\n"
- " qGradCtrl = qt_Custom0;\n"
- "}\n";
-
-static char const gradientFragmentShader[] =
- "uniform sampler2D qt_Texture0;\n"
- "uniform sampler2D qt_Texture1;\n"
- "uniform mediump float alphaValue;\n"
- "varying highp vec4 qt_TexCoord0;\n"
- "varying highp float qGradCtrl;\n"
- "void main(void)\n"
- "{\n"
- " mediump vec4 col = texture2D(qt_Texture0, qt_TexCoord0.st);\n"
- " mediump vec4 gradcol = texture2D(qt_Texture1, vec2(qGradCtrl, qt_TexCoord0.t));\n"
- " gl_FragColor = vec4((col * gradcol).xyz, alphaValue);\n"
- "}\n";
-
-PageFlipGradientEffect::PageFlipGradientEffect()
-{
- setVertexShader(gradientVertexShader);
- setFragmentShader(gradientFragmentShader);
-}
-
-PageFlipGradientEffect::~PageFlipGradientEffect()
-{
-}
-
-void PageFlipGradientEffect::setAlphaValue(GLfloat value)
-{
- program()->setUniformValue("alphaValue", value);
-}
-
-int main(int argc, char *argv[])
-{
- QApplication app(argc, argv);
- PageFlipView view;
- if (QApplication::arguments().contains(QLatin1String("-blend")))
- view.setBlend(true);
- if (QApplication::arguments().contains(QLatin1String("-vertical")))
- view.setVertical(true);
-
-
-#ifdef Q_OS_SYMBIAN
- view.setAttribute(Qt::WA_LockLandscapeOrientation, true);
- view.showFullScreen();
-#else
- if (QApplication::arguments().contains(QLatin1String("-maximize")))
- view.showMaximized();
- else if (QApplication::arguments().contains(QLatin1String("-fullscreen")))
- view.showFullScreen();
- else
- view.show();
-#endif
-
- return app.exec();
-}
-
-#include "pageflip.moc"
diff --git a/demos/qt3d/pageflip/pageflip.desktop b/demos/qt3d/pageflip/pageflip.desktop
deleted file mode 100644
index 4ee69dad..00000000
--- a/demos/qt3d/pageflip/pageflip.desktop
+++ /dev/null
@@ -1,7 +0,0 @@
-[Desktop Entry]
-Type=Application
-Name=Pageflip
-Icon=/usr/share/icons/hicolor/80x80/apps/qt3d.png
-Exec=/usr/bin/invoker --type=e -s /usr/bin/pageflip -fullscreen
-OnlyShowIn=X-MeeGo;
-X-MeeGo-Logical-Id=qtn_comm_appname_pageflip
diff --git a/demos/qt3d/pageflip/pageflip.pro b/demos/qt3d/pageflip/pageflip.pro
deleted file mode 100644
index cdcfd4f9..00000000
--- a/demos/qt3d/pageflip/pageflip.pro
+++ /dev/null
@@ -1,17 +0,0 @@
-TEMPLATE = app
-TARGET = pageflip
-CONFIG += qt warn_on
-
-CONFIG += qt3d_deploy_pkg
-include(../../../pkg.pri)
-
-SOURCES = pageflip.cpp pageflipmath.cpp
-HEADERS = pageflipmath_p.h
-RESOURCES = pageflip.qrc
-
-OTHER_FILES += \
- pageflip.rc \
- pageflip.desktop
-
-RC_FILE = pageflip.rc
-
diff --git a/demos/qt3d/pageflip/pageflip.qrc b/demos/qt3d/pageflip/pageflip.qrc
deleted file mode 100644
index 1584add5..00000000
--- a/demos/qt3d/pageflip/pageflip.qrc
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE RCC><RCC version="1.0">
-<qresource>
- <file>qqpage1.png</file>
- <file>qqpage2.png</file>
- <file>qqpage3.png</file>
- <file>qqpage4.png</file>
- <file>gradient.png</file>
-</qresource>
-</RCC>
diff --git a/demos/qt3d/pageflip/pageflip.rc b/demos/qt3d/pageflip/pageflip.rc
deleted file mode 100644
index b40ecdc1..00000000
--- a/demos/qt3d/pageflip/pageflip.rc
+++ /dev/null
@@ -1 +0,0 @@
-IDI_ICON1 ICON DISCARDABLE "qt3d.ico"
diff --git a/demos/qt3d/pageflip/pageflipmath.cpp b/demos/qt3d/pageflip/pageflipmath.cpp
deleted file mode 100644
index afb66dbc..00000000
--- a/demos/qt3d/pageflip/pageflipmath.cpp
+++ /dev/null
@@ -1,592 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "pageflipmath_p.h"
-#include <QtCore/qmath.h>
-
-QT_BEGIN_NAMESPACE
-
-#ifndef M_PI
-#define M_PI 3.14159265358979323846
-#endif
-
-PageFlipMath::PageFlipMath()
-{
- m_showPageReverse = false;
- m_startCorner = BottomRight;
-
- qMemSet(vertices, 0, sizeof(vertices));
- qMemSet(pageCount, 0, sizeof(pageCount));
-}
-
-PageFlipMath::~PageFlipMath()
-{
-}
-
-void PageFlipMath::drawPage(int page) const
-{
- if (page < 0 || page >= 4 || pageCount[page] == 0)
- return;
- glDrawArrays(GL_TRIANGLE_FAN, page * 5, pageCount[page]);
-}
-
-void PageFlipMath::drawOutline(int page) const
-{
- if (page < 0 || page >= 4 || pageCount[page] == 0)
- return;
- glDrawArrays(GL_LINE_LOOP, page * 5, pageCount[page]);
-}
-
-void PageFlipMath::compute(qreal t)
-{
- int page, vertex;
-
- // Compute the relative vertices for position t.
- if (m_startCorner < VerticalBottomRight)
- flip(m_pageRect.width() - 1, m_pageRect.height() - 1, t);
- else
- flip(m_pageRect.height() - 1, m_pageRect.width() - 1, t);
-
- // Deal with starting corner issues by swapping co-ordinates.
- switch (m_startCorner) {
-
- case BottomRight: break;
-
- case TopRight:
- for (page = 0; page < 4; ++page) {
- for (vertex = 0; vertex < pageCount[page]; ++vertex) {
- vertices[page][vertex][1]
- = m_pageRect.height() - 1 - vertices[page][vertex][1];
- vertices[page][vertex][3]
- = 1.0f - vertices[page][vertex][3];
- }
- }
- break;
-
- case BottomLeft:
- for (page = 0; page < 4; ++page) {
- for (vertex = 0; vertex < pageCount[page]; ++vertex) {
- vertices[page][vertex][0]
- = m_pageRect.width() - 1 - vertices[page][vertex][0];
- vertices[page][vertex][0] -= m_pageRect.width();
- vertices[page][vertex][2]
- = 1.0f - vertices[page][vertex][2];
- }
- }
- break;
-
- case TopLeft:
- for (page = 0; page < 4; ++page) {
- for (vertex = 0; vertex < pageCount[page]; ++vertex) {
- vertices[page][vertex][0]
- = m_pageRect.width() - 1 - vertices[page][vertex][0];
- vertices[page][vertex][0] -= m_pageRect.width();
- vertices[page][vertex][1]
- = m_pageRect.height() - 1 - vertices[page][vertex][1];
- vertices[page][vertex][2]
- = 1.0f - vertices[page][vertex][2];
- vertices[page][vertex][3]
- = 1.0f - vertices[page][vertex][3];
- }
- }
- break;
-
- case BottomLeftOnePage:
- for (page = 1; page < 4; ++page) {
- for (vertex = 0; vertex < pageCount[page]; ++vertex) {
- vertices[page][vertex][0]
- = m_pageRect.width() - 1 - vertices[page][vertex][0];
- vertices[page][vertex][2]
- = 1.0f - vertices[page][vertex][2];
- }
- }
- break;
-
- case TopLeftOnePage:
- for (page = 1; page < 4; ++page) {
- for (vertex = 0; vertex < pageCount[page]; ++vertex) {
- vertices[page][vertex][0]
- = m_pageRect.width() - 1 - vertices[page][vertex][0];
- vertices[page][vertex][1]
- = m_pageRect.height() - 1 - vertices[page][vertex][1];
- vertices[page][vertex][2]
- = 1.0f - vertices[page][vertex][2];
- vertices[page][vertex][3]
- = 1.0f - vertices[page][vertex][3];
- }
- }
- break;
-
- case VerticalBottomRight:
- for (page = 0; page < 4; ++page) {
- for (vertex = 0; vertex < pageCount[page]; ++vertex) {
- qSwap(vertices[page][vertex][0], vertices[page][vertex][1]);
- vertices[page][vertex][0]
- = m_pageRect.width() - 1 - vertices[page][vertex][0];
- vertices[page][vertex][1]
- = m_pageRect.height() - 1 - vertices[page][vertex][1];
- qSwap(vertices[page][vertex][2], vertices[page][vertex][3]);
- vertices[page][vertex][2]
- = 1.0f - vertices[page][vertex][2];
- vertices[page][vertex][3]
- = 1.0f - vertices[page][vertex][3];
- }
- }
- break;
-
- case VerticalTopRight:
- for (page = 0; page < 4; ++page) {
- for (vertex = 0; vertex < pageCount[page]; ++vertex) {
- qSwap(vertices[page][vertex][0], vertices[page][vertex][1]);
- vertices[page][vertex][0]
- = m_pageRect.width() - 1 - vertices[page][vertex][0];
- qSwap(vertices[page][vertex][2], vertices[page][vertex][3]);
- vertices[page][vertex][2]
- = 1.0f - vertices[page][vertex][2];
- }
- }
- break;
-
- case VerticalBottomLeft:
- for (page = 0; page < 4; ++page) {
- for (vertex = 0; vertex < pageCount[page]; ++vertex) {
- qSwap(vertices[page][vertex][0], vertices[page][vertex][1]);
- vertices[page][vertex][1]
- = m_pageRect.height() - 1 - vertices[page][vertex][1];
- qSwap(vertices[page][vertex][2], vertices[page][vertex][3]);
- vertices[page][vertex][3]
- = 1.0f - vertices[page][vertex][3];
- }
- }
- break;
-
- case VerticalTopLeft:
- for (page = 0; page < 4; ++page) {
- for (vertex = 0; vertex < pageCount[page]; ++vertex) {
- qSwap(vertices[page][vertex][0], vertices[page][vertex][1]);
- qSwap(vertices[page][vertex][2], vertices[page][vertex][3]);
- }
- }
- break;
- }
-
- // Adjust the vertices for the final rectangle position.
- for (page = 0; page < 4; ++page) {
- for (vertex = 0; vertex < pageCount[page]; ++vertex) {
- vertices[page][vertex][0] += m_pageRect.x();
- vertices[page][vertex][1]
- = m_pageRect.y() +
- (m_pageRect.height() - 1 - vertices[page][vertex][1]);
- }
- }
-
- // Flip the x texture co-ordinates for page 2 if showing the page reverse.
- if (m_showPageReverse) {
- if (m_startCorner < VerticalBottomRight) {
- for (int vertex = 0; vertex < pageCount[2]; ++vertex)
- vertices[2][vertex][2] = 1.0f - vertices[2][vertex][2];
- } else {
- for (int vertex = 0; vertex < pageCount[2]; ++vertex)
- vertices[2][vertex][3] = 1.0f - vertices[2][vertex][3];
- }
- }
-}
-
-// Page 1 is the reference page and extends from the bottom-left
-// corner at (0, 0) to the top-right corner at (pageWidth, pageHeight).
-// The flip starts at the bottom-right corner and proceeds leftwards
-// across the page. All other flip directions and starting corners
-// can be derived from this basic reference flip animation.
-void PageFlipMath::flip(qreal pageWidth, qreal pageHeight, qreal t)
-{
- // Handle the simple start and end position cases first.
- if (t <= 0.0f) {
- // Starting position: pages 0 and 1 in their rest states
- // and pages 2 and 3 not visible.
- pageCount[0] = 4;
- pageCount[1] = 4;
- pageCount[2] = 0;
- pageCount[3] = 0;
-
- vertices[0][0][0] = -pageWidth; // corner 0 at (-pageWidth, 0)
- vertices[0][0][1] = 0.0f;
- vertices[0][0][2] = 0.0f; // texture co-ordinate
- vertices[0][0][3] = 0.0f;
- vertices[0][0][4] = 0.0f; // gradient control
-
- vertices[0][1][0] = 0.0f; // corner 1 at (0, 0)
- vertices[0][1][1] = 0.0f;
- vertices[0][1][2] = 1.0f;
- vertices[0][1][3] = 0.0f;
- vertices[0][1][4] = 1.0f; // gradient along fold on the right
-
- vertices[0][2][0] = 0.0f; // corner 2 at (0, pageHeight)
- vertices[0][2][1] = pageHeight;
- vertices[0][2][2] = 1.0f;
- vertices[0][2][3] = 1.0f;
- vertices[0][2][4] = 1.0f;
-
- vertices[0][3][0] = -pageWidth; // corner 3 at (-pageWidth, pageHeight)
- vertices[0][3][1] = pageHeight;
- vertices[0][3][2] = 0.0f;
- vertices[0][3][3] = 1.0f;
- vertices[0][3][4] = 0.0f;
-
- vertices[1][0][0] = 0.0f; // corner 0 at (0, 0)
- vertices[1][0][1] = 0.0f;
- vertices[1][0][2] = 0.0f; // texture co-ordinate
- vertices[1][0][3] = 0.0f;
- vertices[1][0][4] = 1.0f; // gradient along fold on the left
-
- vertices[1][1][0] = pageWidth; // corner 1 at (pageWidth, 0)
- vertices[1][1][1] = 0.0f;
- vertices[1][1][2] = 1.0f;
- vertices[1][1][3] = 0.0f;
- vertices[1][1][4] = 0.0f;
-
- vertices[1][2][0] = pageWidth; // corner 2 at (pageWidth, pageHeight)
- vertices[1][2][1] = pageHeight;
- vertices[1][2][2] = 1.0f;
- vertices[1][2][3] = 1.0f;
- vertices[1][2][4] = 0.0f;
-
- vertices[1][3][0] = 0.0f; // corner 3 at (0, pageHeight)
- vertices[1][3][1] = pageHeight;
- vertices[1][3][2] = 0.0f;
- vertices[1][3][3] = 1.0f;
- vertices[1][3][4] = 1.0f;
- return;
- } else if (t >= 1.0f) {
- // Ending position: pages 0 and 1 are not visible, but
- // pages 2 and 3 are visible in the rest states.
- pageCount[0] = 0;
- pageCount[1] = 0;
- pageCount[2] = 4;
- pageCount[3] = 4;
-
- vertices[2][0][0] = -pageWidth; // corner 0 at (-pageWidth, 0)
- vertices[2][0][1] = 0.0f;
- vertices[2][0][2] = 0.0f; // texture co-ordinate
- vertices[2][0][3] = 0.0f;
- vertices[2][0][4] = 0.0f; // gradient control
-
- vertices[2][1][0] = 0.0f; // corner 1 at (0, 0)
- vertices[2][1][1] = 0.0f;
- vertices[2][1][2] = 1.0f;
- vertices[2][1][3] = 0.0f;
- vertices[2][1][4] = 1.0f; // gradient along fold on the right
-
- vertices[2][2][0] = 0.0f; // corner 2 at (0, pageHeight)
- vertices[2][2][1] = pageHeight;
- vertices[2][2][2] = 1.0f;
- vertices[2][2][3] = 1.0f;
- vertices[2][2][4] = 1.0f;
-
- vertices[2][3][0] = -pageWidth; // corner 3 at (-pageWidth, pageHeight)
- vertices[2][3][1] = pageHeight;
- vertices[2][3][2] = 0.0f;
- vertices[2][3][3] = 1.0f;
- vertices[2][3][4] = 0.0f;
-
- vertices[3][0][0] = 0.0f; // corner 0 at (0, 0)
- vertices[3][0][1] = 0.0f;
- vertices[3][0][2] = 0.0f; // texture co-ordinate
- vertices[3][0][3] = 0.0f;
- vertices[3][0][4] = 1.0f; // gradient along fold on the left
-
- vertices[3][1][0] = pageWidth; // corner 1 at (pageWidth, 0)
- vertices[3][1][1] = 0.0f;
- vertices[3][1][2] = 1.0f;
- vertices[3][1][3] = 0.0f;
- vertices[3][1][4] = 0.0f;
-
- vertices[3][2][0] = pageWidth; // corner 2 at (pageWidth, pageHeight)
- vertices[3][2][1] = pageHeight;
- vertices[3][2][2] = 1.0f;
- vertices[3][2][3] = 1.0f;
- vertices[3][2][4] = 0.0f;
-
- vertices[3][3][0] = 0.0f; // corner 3 at (0, pageHeight)
- vertices[3][3][1] = pageHeight;
- vertices[3][3][2] = 0.0f;
- vertices[3][3][3] = 1.0f;
- vertices[3][3][4] = 1.0f;
- return;
- }
-
- // Page 0 is the same for all other animation positions.
- pageCount[0] = 4;
-
- vertices[0][0][0] = -pageWidth; // corner 0 at (-pageWidth, 0)
- vertices[0][0][1] = 0.0f;
- vertices[0][0][2] = 0.0f; // texture co-ordinate
- vertices[0][0][3] = 0.0f;
- vertices[0][0][4] = 0.0f; // gradient control
-
- vertices[0][1][0] = 0.0f; // corner 1 at (0, 0)
- vertices[0][1][1] = 0.0f;
- vertices[0][1][2] = 1.0f;
- vertices[0][1][3] = 0.0f;
- vertices[0][1][4] = 1.0f; // gradient along fold on the right
-
- vertices[0][2][0] = 0.0f; // corner 2 at (0, pageHeight)
- vertices[0][2][1] = pageHeight;
- vertices[0][2][2] = 1.0f;
- vertices[0][2][3] = 1.0f;
- vertices[0][2][4] = 1.0f;
-
- vertices[0][3][0] = -pageWidth; // corner 3 at (-pageWidth, pageHeight)
- vertices[0][3][1] = pageHeight;
- vertices[0][3][2] = 0.0f;
- vertices[0][3][3] = 1.0f;
- vertices[0][3][4] = 0.0f;
-
- // Get the angle of the "curling" dividing line to the bottom of the page.
- // Basically: 45deg + (45deg * t) = 45deg * (1 + t), where t is between
- // 0 and 1 but is neither 0 nor 1.
- qreal angle = (M_PI / 4.0f) * (1.0f + t);
-
- // We need the cos and sin of both the angle and angle * 2.
- qreal cosAngle = qCos(angle);
- qreal sinAngle = qSin(angle);
- qreal cosAngle2 = qCos(angle * 2.0f);
- qreal sinAngle2 = qSin(angle * 2.0f);
-
- // Find the reference point. This is the point along the bottom of
- // the page where the dividing line intersects the page bottom.
- qreal refx = pageWidth * (1.0f - t);
- qreal refy = 0.0f;
-
- // Distance from the reference point to the right side of the page.
- qreal d = pageWidth - refx;
-
- // Determine the intersection of the dividing line with the
- // top of the page. If the intersection is not on the page (k >= d),
- // then we need to generate similar triangles. If the intersection is
- // on the page (k < d), then we need to generate similar trapezoids.
- qreal k = (pageHeight * cosAngle) / sinAngle;
- if (k >= d) {
- // Generate similar triangles. Find the intersection with
- // the right-hand side of the page at x == pageWidth.
- qreal intx = pageWidth;
- qreal inty = refy + (d * sinAngle) / cosAngle;
-
- // Find the opposite triangle corner on the back page.
- qreal oppx = refx + d * cosAngle2;
- qreal oppy = refy + d * sinAngle2;
-
- // Generate vertices and texture co-ordinates for the back page.
- qreal texa = 1.0f - (d * sinAngle) / (pageHeight * cosAngle);
- qreal texb = d / pageWidth;
- vertices[2][0][0] = intx;
- vertices[2][0][1] = inty;
- vertices[2][0][2] = 0.0f;
- vertices[2][0][3] = 1.0f - texa;
- vertices[2][0][4] = 1.0f;
-
- vertices[2][1][0] = oppx;
- vertices[2][1][1] = oppy;
- vertices[2][1][2] = 0.0f;
- vertices[2][1][3] = 0.0f;
- vertices[2][1][4] = 1.0f - texb;
-
- vertices[2][2][0] = refx;
- vertices[2][2][1] = refy;
- vertices[2][2][2] = texb;
- vertices[2][2][3] = 0.0f;
- vertices[2][2][4] = 1.0f;
-
- pageCount[2] = 3;
-
- // Generate vertices and texture co-ordinates for the next page.
- vertices[3][0][0] = intx;
- vertices[3][0][1] = inty;
- vertices[3][0][2] = 1.0f;
- vertices[3][0][3] = 1.0f - texa;
- vertices[3][0][4] = 1.0f;
-
- vertices[3][1][0] = refx;
- vertices[3][1][1] = refy;
- vertices[3][1][2] = 1.0f - texb;
- vertices[3][1][3] = 0.0f;
- vertices[3][1][4] = 1.0f;
-
- vertices[3][2][0] = pageWidth;
- vertices[3][2][1] = 0.0f;
- vertices[3][2][2] = 1.0f;
- vertices[3][2][3] = 0.0f;
- vertices[3][2][4] = 1.0f - texb;
-
- pageCount[3] = 3;
-
- // Set page 1's vertices to clip off pixels we don't need to draw.
- vertices[1][0][0] = 0.0f;
- vertices[1][0][1] = 0.0f;
- vertices[1][0][2] = 0.0f;
- vertices[1][0][3] = 0.0f;
- vertices[1][0][4] = 1.0f;
-
- vertices[1][1][0] = pageWidth - d;
- vertices[1][1][1] = 0.0f;
- vertices[1][1][2] = 1.0f - texb;
- vertices[1][1][3] = 0.0f;
- vertices[1][1][4] = texb;
-
- vertices[1][2][0] = intx;
- vertices[1][2][1] = inty;
- vertices[1][2][2] = 1.0f;
- vertices[1][2][3] = 1.0f - texa;
- vertices[1][2][4] = 0.0f;
-
- vertices[1][3][0] = pageWidth;
- vertices[1][3][1] = pageHeight;
- vertices[1][3][2] = 1.0f;
- vertices[1][3][3] = 1.0f;
- vertices[1][3][4] = 0.0f;
-
- vertices[1][4][0] = 0.0f;
- vertices[1][4][1] = pageHeight;
- vertices[1][4][2] = 0.0f;
- vertices[1][4][3] = 1.0f;
- vertices[1][4][4] = 1.0f;
-
- pageCount[1] = 5;
- } else {
- // Generate similar trapezoids. Find the intersection with
- // the top of the page at y == pageHeight.
- qreal intx = refx + (pageHeight * cosAngle) / sinAngle;
- qreal inty = pageHeight;
-
- // Get the distance between the intersection and the right of the page.
- qreal e = pageWidth - intx;
-
- // Find the opposite trapezoid corners to "ref" and "int".
- qreal opprefx = refx + d * cosAngle2;
- qreal opprefy = refy + d * sinAngle2;
- qreal oppintx = intx + e * cosAngle2;
- qreal oppinty = inty + e * sinAngle2;
-
- // Generate vertices and texture co-ordinates for the back page.
- qreal texa = e / pageWidth;
- qreal texb = d / pageWidth;
- vertices[2][0][0] = intx;
- vertices[2][0][1] = inty;
- vertices[2][0][2] = texa;
- vertices[2][0][3] = 1.0f;
- vertices[2][0][4] = 1.0f;
-
- vertices[2][1][0] = oppintx;
- vertices[2][1][1] = oppinty;
- vertices[2][1][2] = 0.0f;
- vertices[2][1][3] = 1.0f;
- vertices[2][1][4] = 1.0f - texa;
-
- vertices[2][2][0] = opprefx;
- vertices[2][2][1] = opprefy;
- vertices[2][2][2] = 0.0f;
- vertices[2][2][3] = 0.0f;
- vertices[2][2][4] = 1.0f - texb;
-
- vertices[2][3][0] = refx;
- vertices[2][3][1] = refy;
- vertices[2][3][2] = texb;
- vertices[2][3][3] = 0.0f;
- vertices[2][3][4] = 1.0f;
-
- pageCount[2] = 4;
-
- // Generate vertices and texture co-ordinates for the next page.
- vertices[3][0][0] = intx;
- vertices[3][0][1] = inty;
- vertices[3][0][2] = 1.0f - texa;
- vertices[3][0][3] = 1.0f;
- vertices[3][0][4] = 1.0f;
-
- vertices[3][1][0] = refx;
- vertices[3][1][1] = refy;
- vertices[3][1][2] = 1.0f - texb;
- vertices[3][1][3] = 0.0f;
- vertices[3][1][4] = 1.0f;
-
- vertices[3][2][0] = pageWidth;
- vertices[3][2][1] = 0.0f;
- vertices[3][2][2] = 1.0f;
- vertices[3][2][3] = 0.0f;
- vertices[3][2][4] = 1.0f - texb;
-
- vertices[3][3][0] = pageWidth;
- vertices[3][3][1] = pageHeight;
- vertices[3][3][2] = 1.0f;
- vertices[3][3][3] = 1.0f;
- vertices[3][3][4] = 1.0f - texa;
-
- pageCount[3] = 4;
-
- // Set page 1's vertices to clip off pixels we don't need to draw.
- vertices[1][0][0] = 0.0f;
- vertices[1][0][1] = 0.0f;
- vertices[1][0][2] = 0.0f;
- vertices[1][0][3] = 0.0f;
- vertices[1][0][4] = 1.0f;
-
- vertices[1][1][0] = pageWidth - d;
- vertices[1][1][1] = 0.0f;
- vertices[1][1][2] = 1.0f - texb;
- vertices[1][1][3] = 0.0f;
- vertices[1][1][4] = texb;
-
- vertices[1][2][0] = pageWidth - e;
- vertices[1][2][1] = pageHeight;
- vertices[1][2][2] = 1.0f - texa;
- vertices[1][2][3] = 1.0f;
- vertices[1][2][4] = texa;
-
- vertices[1][3][0] = 0.0f;
- vertices[1][3][1] = pageHeight;
- vertices[1][3][2] = 0.0f;
- vertices[1][3][3] = 1.0f;
- vertices[1][3][4] = 1.0f;
-
- pageCount[1] = 4;
- }
-}
-
-QT_END_NAMESPACE
diff --git a/demos/qt3d/pageflip/pageflipmath_p.h b/demos/qt3d/pageflip/pageflipmath_p.h
deleted file mode 100644
index 21280b05..00000000
--- a/demos/qt3d/pageflip/pageflipmath_p.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef PAGEFLIPMATH_P_H
-#define PAGEFLIPMATH_P_H
-
-#include <QtOpenGL/qgl.h>
-
-QT_BEGIN_NAMESPACE
-
-class PageFlipMath
-{
-public:
- PageFlipMath();
- ~PageFlipMath();
-
- enum StartCorner
- {
- BottomRight,
- TopRight,
- BottomLeft,
- TopLeft,
- BottomLeftOnePage,
- TopLeftOnePage,
- VerticalBottomRight,
- VerticalTopRight,
- VerticalBottomLeft,
- VerticalTopLeft
- };
-
- // Corner to start flipping from.
- StartCorner startCorner() const { return m_startCorner; }
- void setStartCorner(StartCorner value) { m_startCorner = value; }
-
- // Rectangle to display the main page (usually the one on the right).
- QRect pageRect() const { return m_pageRect; }
- void setPageRect(const QRect& rect) { m_pageRect = rect; }
-
- // Show the reverse of the right-hand page on the back when
- // flipping pages. That is, the user will essentially see
- // the texture on the front of the page "through" it in reverse
- // while it is being flipped.
- bool showPageReverse() const { return m_showPageReverse; }
- void setShowPageReverse(bool value) { m_showPageReverse = value; }
-
- // Get the vertex array pointer.
- const GLfloat *vertexArray() const { return vertices[0][0]; }
-
- // Get the vertex array stride in bytes.
- int stride() const { return 5 * sizeof(GLfloat); }
-
- // Draw a specific page.
- void drawPage(int page) const;
-
- // Draw the outline of a page as a set of lines.
- void drawOutline(int page) const;
-
- // Compute the frame at position t (0...1) in the animation.
- void compute(qreal t);
-
-private:
- StartCorner m_startCorner;
- QRect m_pageRect;
- bool m_showPageReverse;
-
- // Vertex array: up to 4 pages, with up to 5 vertices per page,
- // and 5 components (2D position, 2D texcoord, 1D gradient control)
- // per vertex. The gradient control value is interpolated between
- // 0 and 1 - it is 1 at the fold point and 0 on the side of the page
- // opposite the fold point. Shaders can use this to extract a color
- // value from a gradient texture to blend with the page texture.
- GLfloat vertices[4][5][5];
-
- // Number of vertices for drawing the triangle fan for each page.
- int pageCount[4];
-
- void flip(qreal pageWidth, qreal pageHeight, qreal t);
-};
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/demos/qt3d/pageflip/qqpage1.png b/demos/qt3d/pageflip/qqpage1.png
deleted file mode 100644
index 8abf37d9..00000000
--- a/demos/qt3d/pageflip/qqpage1.png
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/pageflip/qqpage2.png b/demos/qt3d/pageflip/qqpage2.png
deleted file mode 100644
index afd1b047..00000000
--- a/demos/qt3d/pageflip/qqpage2.png
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/pageflip/qqpage3.png b/demos/qt3d/pageflip/qqpage3.png
deleted file mode 100644
index fa2a85a0..00000000
--- a/demos/qt3d/pageflip/qqpage3.png
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/pageflip/qqpage4.png b/demos/qt3d/pageflip/qqpage4.png
deleted file mode 100644
index 0a6ba7b0..00000000
--- a/demos/qt3d/pageflip/qqpage4.png
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/pageflip/qt3d.ico b/demos/qt3d/pageflip/qt3d.ico
deleted file mode 100644
index e6442baf..00000000
--- a/demos/qt3d/pageflip/qt3d.ico
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/pageflip/qt3d.png b/demos/qt3d/pageflip/qt3d.png
deleted file mode 100644
index 21ec0176..00000000
--- a/demos/qt3d/pageflip/qt3d.png
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/photobrowser3d/buttons.cpp b/demos/qt3d/photobrowser3d/buttons.cpp
deleted file mode 100644
index 16373e65..00000000
--- a/demos/qt3d/photobrowser3d/buttons.cpp
+++ /dev/null
@@ -1,134 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "buttons.h"
-#include "qglpainter.h"
-
-Buttons::Buttons(QObject *parent, QGLMaterialCollection *palette)
- : QGLSceneNode(parent)
-{
- setObjectName("Buttons");
- setPalette(palette);
- setOption(QGLSceneNode::CullBoundingBox, false);
-
- m_left = new QGLSceneNode(this);
- m_left->setObjectName("Left Button");
- m_right = new QGLSceneNode(this);
- m_right->setObjectName("Right Button");
-
- QGLMaterial *mat = new QGLMaterial;
- QImage im(":/controls/arrows-left.png");
- m_size = im.size();
- QGLTexture2D *tex = new QGLTexture2D(mat);
- tex->setImage(im);
- mat->setTexture(tex);
-
- setMaterial(mat);
- setEffect(QGL::FlatReplaceTexture2D);
-
- QGeometryData data;
- QSize f = im.size() / 2;
- QVector2D a(-f.width(), -f.height());
- QVector2D b(f.width(), -f.height());
- QVector2D c(f.width(), f.height());
- QVector2D d(-f.width(), f.height());
- QVector2D ta(0, 1);
- QVector2D tb(1, 1);
- QVector2D tc(1, 0);
- QVector2D td(0, 0);
- data.appendVertex(a, b, c, d);
- data.appendTexCoord(ta, tb, tc, td);
- data.appendIndices(0, 1, 2);
- data.appendIndices(0, 2, 3);
-
- // the right hand arrow geometry is same as above, flipped X <-> -X
- data.appendGeometry(data);
- data.texCoord(4).setX(1);
- data.texCoord(5).setX(0);
- data.texCoord(6).setX(0);
- data.texCoord(7).setX(1);
- data.appendIndices(4, 5, 6);
- data.appendIndices(4, 6, 7);
-
- m_left->setGeometry(data);
- m_left->setCount(6);
- m_left->setOption(QGLSceneNode::CullBoundingBox, false);
-
- m_right->setGeometry(data);
- m_right->setStart(6);
- m_right->setCount(6);
- m_left->setOption(QGLSceneNode::CullBoundingBox, false);
-}
-
-void Buttons::draw(QGLPainter *painter)
-{
- painter->projectionMatrix().push();
- painter->modelViewMatrix().push();
-
- QRect rect = painter->currentSurface()->viewportRect();
- QMatrix4x4 projm;
- projm.ortho(rect);
- painter->projectionMatrix() = projm;
- painter->modelViewMatrix().setToIdentity();
-
- if (m_left->position().isNull())
- {
- QVector2D pos(m_size.width() / 2, rect.height() - m_size.height() / 2);
- m_left->setPosition(pos);
- pos.setX(rect.width() - (m_size.width() / 2));
- m_right->setPosition(pos);
- }
-
- glDisable(GL_DEPTH_TEST);
-
- QGLSceneNode::draw(painter);
-
- glEnable(GL_DEPTH_TEST);
-
- painter->projectionMatrix().pop();
- painter->modelViewMatrix().pop();
-}
-
-void Buttons::clearPositions()
-{
- m_left->setPosition(QVector3D());
- m_right->setPosition(QVector3D());
-}
diff --git a/demos/qt3d/photobrowser3d/buttons.h b/demos/qt3d/photobrowser3d/buttons.h
deleted file mode 100644
index 1d0155c2..00000000
--- a/demos/qt3d/photobrowser3d/buttons.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef BUTTONS_H
-#define BUTTONS_H
-
-#include "qglscenenode.h"
-
-#include <Qt>
-
-class Buttons : public QGLSceneNode
-{
- Q_OBJECT
-public:
- explicit Buttons(QObject *parent, QGLMaterialCollection *palette);
- void draw(QGLPainter *painter);
- void clearPositions();
-private:
- QGLSceneNode *m_left;
- QGLSceneNode *m_right;
- QSize m_size;
-};
-
-#endif // BUTTONS_H
diff --git a/demos/qt3d/photobrowser3d/bytereader.cpp b/demos/qt3d/photobrowser3d/bytereader.cpp
deleted file mode 100644
index 317c3ab3..00000000
--- a/demos/qt3d/photobrowser3d/bytereader.cpp
+++ /dev/null
@@ -1,158 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "bytereader.h"
-#include "thumbnailableimage.h"
-
-#include <QByteArray>
-#include <QThread>
-#include <QImage>
-#include <QImageReader>
-#include <QUrl>
-#include <QFile>
-#include <QCoreApplication>
-
-ByteReader::ByteReader()
-{
- m_stop = 0;
- m_loading = 0;
-}
-
-void ByteReader::loadFile(const ThumbnailableImage &image)
-{
- if (!m_stop)
- {
- m_loading.ref();
-
- // FIXME: actually handle remote files
- QUrl url = image.url();
- QString fn = url.toLocalFile();
- int pos = fn.lastIndexOf('.');
- QString ext;
- if (pos != -1)
- ext = fn.mid(pos).toUpper();
- if (ext.isEmpty() ||
- !QImageReader::supportedImageFormats().contains(ext.toLocal8Bit()))
- ext = QString();
- QImage im;
- QFile f(fn);
- QString errorMessage;
- if (f.open(QIODevice::ReadOnly))
- {
- QByteArray bytes;
- while (!f.atEnd() & !m_stop)
- {
- bytes.append(f.read(1024));
- QCoreApplication::processEvents();
- }
- im = ext.isEmpty() ? QImage::fromData(bytes)
- : QImage::fromData(bytes, qPrintable(ext));
- }
- else
- {
- errorMessage = tr("Could not read: %1").arg(url.toString());
- }
-
- QCoreApplication::processEvents();
- if (!m_stop)
- {
- if (im.isNull())
- {
- im = QImage(QSize(128, 128), QImage::Format_ARGB32);
- im.fill(qRgba(0, 30, 50, 64));
- QPainter ptr;
- ptr.begin(&im);
- ptr.setBackgroundMode(Qt::TransparentMode);
- if (errorMessage.isEmpty())
- errorMessage = tr("Could not load: %1").arg(url.toString());
- ptr.setPen(QColor("orange"));
- ptr.drawText(im.rect(), Qt::AlignCenter, errorMessage);
- ptr.end();
- }
- else
- {
- // TODO: Fix size limit
- // This arbitrary size limit is really a debugging/development thing
- // In a real program once you had loaded the full image, the photo-
- // viewer would allow zooming and panning all around in the image
- // so loading a 2896 pixel × 1944 pixel photo would make sense even
- // on a small screen. For now work with fairly cruddy image quality.
- // Probably the fix is to have a separate load call that re-fetches
- // the full image on a zoom
- QSize workSize(1024, 768);
- Qt::TransformationMode mode = Qt::SmoothTransformation;
- if (QThread::idealThreadCount() < 2)
- {
- workSize = workSize / 2;
- mode = Qt::FastTransformation;
- }
- if (im.size().width() > workSize.width() || im.size().height() > workSize.height())
- im = im.scaled(workSize, Qt::KeepAspectRatio, mode);
- }
-
- Q_ASSERT(!im.isNull());
- ThumbnailableImage result(image);
- result.setData(im);
-
- // it would be nice to incur the cost of setThumbnailed() on the image
- // at this point - in the background thread. Trouble is the atlas is
- // constantly being accessed by the draw loop and to do anything about
- // that would mean locking the GUI thread...
-
- Q_ASSERT(!result.isNull());
-
- emit imageLoaded(result);
- }
-
- m_loading.deref();
- }
-
- if (m_stop)
- emit stopped();
-
-}
-
-void ByteReader::stop()
-{
- m_stop.ref();
- if (!m_loading)
- emit stopped();
-}
diff --git a/demos/qt3d/photobrowser3d/bytereader.h b/demos/qt3d/photobrowser3d/bytereader.h
deleted file mode 100644
index c790b823..00000000
--- a/demos/qt3d/photobrowser3d/bytereader.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef BYTEREADER_H
-#define BYTEREADER_H
-
-#include <QObject>
-
-QT_BEGIN_NAMESPACE
-class QUrl;
-QT_END_NAMESPACE
-
-class ThumbnailableImage;
-
-class ByteReader : public QObject
-{
- Q_OBJECT
-public:
- ByteReader();
-signals:
- void imageLoaded(const ThumbnailableImage &image);
- void stopped();
-public slots:
- void loadFile(const ThumbnailableImage &url);
- void stop();
-private:
- QAtomicInt m_stop;
- QAtomicInt m_loading;
-};
-
-#endif // BYTEREADER_H
diff --git a/demos/qt3d/photobrowser3d/filescanner.cpp b/demos/qt3d/photobrowser3d/filescanner.cpp
deleted file mode 100644
index 01c4c19e..00000000
--- a/demos/qt3d/photobrowser3d/filescanner.cpp
+++ /dev/null
@@ -1,127 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "filescanner.h"
-
-#include <QTime>
-#include <QFileInfo>
-#include <QStringList>
-#include <QSet>
-#include <QDir>
-#include <QCoreApplication>
-#include <QImageReader>
-#include <QDebug>
-
-FileScanner::FileScanner(QObject *parent)
- : QThread(parent)
-{
- m_stop = 0;
-}
-
-FileScanner::~FileScanner()
-{
- // nothing to do here
-}
-
-void FileScanner::stop()
-{
- m_stop.ref();
-}
-
-void FileScanner::run()
-{
- scan();
-}
-
-void FileScanner::scan()
-{
- QStringList queue;
- queue.append(m_url.path());
- QSet<QString> loopProtect;
- int count = 0;
- while (queue.size() > 0 && !m_stop && count < 300)
- {
- QString path = queue.takeFirst();
- QFileInfo u(path);
- if (u.isSymLink())
- {
- path = u.symLinkTarget();
- u = QFileInfo(path);
- }
- if (u.isDir())
- {
- if (!loopProtect.contains(path))
- {
- loopProtect.insert(path);
- QDir dir(path);
- QStringList entries = dir.entryList();
- QStringList::const_iterator it = entries.constBegin();
- for ( ; it != entries.constEnd(); ++it)
- {
- // ignore hidden files, system directories
- if ((*it).startsWith("."))
- continue;
- queue.append(dir.absoluteFilePath(*it));
- }
- }
- }
- else
- {
- if (u.isFile() && u.isReadable())
- {
- // small optimization: if the file has a suffix, check if that
- // is known as an image format before sending to loader
- QString ext = u.suffix().toLower();
- if (ext.isEmpty() ||
- QImageReader::supportedImageFormats().contains(ext.toLocal8Bit()))
- {
- QUrl url2;
- url2.setScheme("file");
- url2.setPath(u.absoluteFilePath());
- emit imageUrl(url2);
- ++count;
- }
- }
- }
- QCoreApplication::processEvents();
- QThread::yieldCurrentThread();
- }
-}
diff --git a/demos/qt3d/photobrowser3d/filescanner.h b/demos/qt3d/photobrowser3d/filescanner.h
deleted file mode 100644
index 0431b54b..00000000
--- a/demos/qt3d/photobrowser3d/filescanner.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef FILESCANNER_H
-#define FILESCANNER_H
-
-#include <QThread>
-#include <QUrl>
-#include <QDebug>
-
-class FileScanner : public QThread
-{
- Q_OBJECT
-public:
- explicit FileScanner(QObject *parent = 0);
- ~FileScanner();
-
- // INVARIANT: never get called when the thread is running
- void setBaseUrl(const QUrl &url)
- {
- Q_ASSERT(!isRunning());
- m_url = url;
- }
-
-signals:
- void imageUrl(const QUrl &url);
-
-public slots:
- void stop();
- void scan();
-
-protected:
- void run();
-
- QUrl m_url;
- QAtomicInt m_stop;
-private:
-
-};
-
-#endif // FILESCANNER_H
diff --git a/demos/qt3d/photobrowser3d/imagedisplay.cpp b/demos/qt3d/photobrowser3d/imagedisplay.cpp
deleted file mode 100644
index a39cfa02..00000000
--- a/demos/qt3d/photobrowser3d/imagedisplay.cpp
+++ /dev/null
@@ -1,224 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "imagedisplay.h"
-#include "thumbnailableimage.h"
-#include "thumbnailnode.h"
-#include "thumbnaileffect.h"
-#include "qglbuilder.h"
-#include "qglcube.h"
-#include "imagemanager.h"
-#include "qatlas.h"
-#include "qglshaderprogrameffect.h"
-#include "qphotobrowser3dscene.h"
-#include "photobrowser3dview.h"
-
-#include <QApplication>
-#include <QChildEvent>
-#include <QUrl>
-#include <QImage>
-
-static inline QImage qMakeFrameImage()
-{
- QImage frm(QSize(128, 128), QImage::Format_ARGB32);
- frm.fill(qRgba(8, 8, 8, 255)); // dark grey frame
- QPainter ptr;
- ptr.begin(&frm);
- QRect r(8, 8, 112, 112);
- ptr.setBackgroundMode(Qt::TransparentMode);
- ptr.fillRect(r, QColor(0, 30, 50, 64));
- ptr.setPen(QColor("orange"));
- ptr.drawText(frm.rect(), Qt::AlignCenter, "Loading...");
- ptr.end();
- return frm;
-}
-
-static inline void qAddPane(QSizeF size, QGeometryData *data)
-{
- Q_ASSERT(data);
- QSizeF f = size / 2.0f;
- QVector2D a(-f.width(), -f.height());
- QVector2D b(f.width(), -f.height());
- QVector2D c(f.width(), f.height());
- QVector2D d(-f.width(), f.height());
- QVector2D ta(0.0f, 0.0f);
- QVector2D tb(1.0f, 0.0f);
- QVector2D tc(1.0f, 1.0f);
- QVector2D td(0.0f, 1.0f);
- int k = data->count();
- data->appendVertex(a, b, c, d);
- data->appendTexCoord(ta, tb, tc, td);
- data->appendIndices(k, k+1, k+2);
- data->appendIndices(k, k+2, k+3);
-}
-
-ImageDisplay::ImageDisplay(QObject *parent, QGLMaterialCollection *materials, qreal wallSize)
- : QGLSceneNode(parent)
- , m_wall(0)
- , m_frames(0)
- , m_currentWall(0)
- , m_currentFrame(0)
- , m_imageSetToDefault(false)
- , m_count(0)
- , m_size(wallSize)
- , m_frameSize((m_size * 3.0f) / 4.0f)
- , m_maxImages(500)
- , m_frameLoadingMaterial(-1)
-{
- // the real values will get poked in here by the atlas
- m_atlasPlaceHolder.append(QVector2D(), QVector2D(), QVector2D(), QVector2D());
-
- setObjectName("ImageDisplay");
- setPalette(materials);
-
- // the frames lie in Z = 0, the wall is set back and lies in
- // the plane Z = (m_size / -4.0)
-
- // build the wall
- qAddPane(QSize(m_size, m_size), &m_wallGeometry);
- m_wall = new QGLSceneNode(this);
- m_wall->setObjectName("Wall");
- m_wall->setPalette(materials);
- m_currentWall = new QGLSceneNode(m_wall);
- m_currentWall->setObjectName("wall 0");
- m_currentWall->setGeometry(m_wallGeometry);
- m_currentWall->setCount(m_wallGeometry.indexCount());
- m_wall->setPosition(QVector3D(0.0f, 0.0f, m_size / -4.0));
-
- // paint the wall
- m_wall->setEffect(QGL::FlatReplaceTexture2D);
- QGLMaterial *mat = new QGLMaterial();
- QGLTexture2D *tex = new QGLTexture2D(mat);
- tex->setImage(QImage(":/res/images/girder.png"));
- mat->setTexture(tex);
- mat->setObjectName("girder material");
- m_wall->setMaterial(mat);
-
- // build the frames
- qAddPane(QSize(m_frameSize, m_frameSize), &m_frameGeometry);
- m_frameGeometry.appendTexCoordArray(m_atlasPlaceHolder, QGL::TextureCoord1);
- m_frames = new QGLSceneNode(this);
- m_frames->setObjectName("Frames");
- m_currentFrame = new ThumbnailNode(m_frames);
- m_currentFrame->setObjectName("frame 0");
- m_currentFrame->setGeometry(m_frameGeometry);
- m_currentFrame->setCount(m_frameGeometry.indexCount());
-
- // use the frames geometry to put the atlas data into
- QAtlas *atlas = QAtlas::instance();
- atlas->setGeometry(m_frameGeometry);
-
- // generally the frames use the thumbnail material & effect
- m_effect = new ThumbnailEffect;
- m_frames->setUserEffect(m_effect);
- m_frames->setEffectEnabled(true);
- m_frames->setMaterial(atlas->material());
-
- // unless they're loading, in which case use the "loading" image
- m_frameImage = qMakeFrameImage();
- mat = new QGLMaterial();
- tex = new QGLTexture2D(mat);
- tex->setHorizontalWrap(QGL::Clamp);
- tex->setImage(m_frameImage);
- mat->setTexture(tex);
- mat->setObjectName("loading image material - default");
- m_frameLoadingMaterial = materials->addMaterial(mat);
- m_currentFrame->setMaterialIndex(m_frameLoadingMaterial);
-
- // make the frames pickable
- PhotoBrowser3DView *view = qobject_cast<PhotoBrowser3DView*>(parent);
- view->scene()->mainNode()->addNode(m_frames);
-
- m_imageSetToDefault = true;
-}
-
-ImageDisplay::~ImageDisplay()
-{
- delete m_effect;
-}
-
-void ImageDisplay::addThumbnailNode(const QUrl &image)
-{
- Q_ASSERT(QThread::currentThread() == thread());
- ImageManager *manager = qobject_cast<ImageManager*>(sender());
- if (!m_imageSetToDefault)
- {
- QVector3D p = m_currentFrame->position();
- p.setX(p.x() - m_size);
- int start = m_frameGeometry.indexCount();
- qAddPane(QSize(m_frameSize, m_frameSize), &m_frameGeometry);
- int count = m_frameGeometry.indexCount() - start;
- m_frameGeometry.appendTexCoordArray(m_atlasPlaceHolder, QGL::TextureCoord1);
- m_currentFrame = new ThumbnailNode(m_frames);
- QString name = QLatin1String("frame %1");
- name.arg(m_count);
- m_currentFrame->setObjectName(name);
- m_currentFrame->setPosition(p);
- m_currentFrame->setStart(start);
- m_currentFrame->setCount(count);
- m_currentFrame->setGeometry(m_frameGeometry);
- m_currentFrame->setMaterialIndex(m_frameLoadingMaterial);
-
- QGLSceneNode *s = m_currentWall->clone(m_wall);
- name = QLatin1String("wall %1");
- name.arg(m_count);
- s->setObjectName(name);
- p = s->position();
- p.setX(p.x() - m_size);
- s->setPosition(p);
- m_currentWall = s;
- }
- m_currentFrame->setUrl(image);
- if (manager)
- {
- connect(m_currentFrame, SIGNAL(imageRequired(ThumbnailableImage)),
- manager, SIGNAL(deployLoader(ThumbnailableImage)));
- connect(manager, SIGNAL(imageReady(ThumbnailableImage)),
- m_currentFrame, SLOT(setImage(ThumbnailableImage)));
- }
- PhotoBrowser3DView *view = qobject_cast<PhotoBrowser3DView*>(parent());
- Q_ASSERT(view);
- connect(m_currentFrame, SIGNAL(nodeChanged()), view, SLOT(update()));
-
- m_imageSetToDefault = false;
- emit framesChanged();
- ++m_count;
-}
diff --git a/demos/qt3d/photobrowser3d/imagedisplay.h b/demos/qt3d/photobrowser3d/imagedisplay.h
deleted file mode 100644
index b0d7a56d..00000000
--- a/demos/qt3d/photobrowser3d/imagedisplay.h
+++ /dev/null
@@ -1,88 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef IMAGEDISPLAY_H
-#define IMAGEDISPLAY_H
-
-#include "qglscenenode.h"
-#include "qglmaterialcollection.h"
-
-#include <QString>
-
-QT_BEGIN_NAMESPACE
-class QGLBuilder;
-class QGLTexture2D;
-class QGLPainter;
-QT_END_NAMESPACE
-
-class ThumbnailNode;
-
-class ImageDisplay : public QGLSceneNode
-{
- Q_OBJECT
-public:
- ImageDisplay(QObject *parent, QGLMaterialCollection *materials, qreal wallSize = 4.0);
- ~ImageDisplay();
- int maxImages() const { return m_maxImages; }
- void setMaxImages(int max) { m_maxImages = max; }
-signals:
- void framesChanged();
-public slots:
- void addThumbnailNode(const QUrl &url);
-private:
- QGLSceneNode *m_wall;
- QGLSceneNode *m_frames;
- QGLSceneNode *m_currentWall;
- ThumbnailNode *m_currentFrame;
- QGLAbstractEffect *m_effect;
- bool m_imageSetToDefault;
- int m_count;
- qreal m_size;
- qreal m_frameSize;
- int m_maxImages;
- QImage m_frameImage;
- int m_frameLoadingMaterial;
- QGeometryData m_frameGeometry;
- QGeometryData m_wallGeometry;
- QVector2DArray m_atlasPlaceHolder;
-};
-
-#endif // IMAGEDISPLAY_H
diff --git a/demos/qt3d/photobrowser3d/imageloader.cpp b/demos/qt3d/photobrowser3d/imageloader.cpp
deleted file mode 100644
index a8d58978..00000000
--- a/demos/qt3d/photobrowser3d/imageloader.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "imageloader.h"
-#include "imagemanager.h"
-#include "bytereader.h"
-
-#include <QFileInfo>
-#include <QTime>
-#include <QDir>
-#include <QStringList>
-#include <QPixmap>
-#include <QPainter>
-#include <QBuffer>
-#include <QImageReader>
-#include <QMutex>
-#include <QMutexLocker>
-#include <QTimer>
-
-ImageLoader::ImageLoader()
-{
- m_stop = 0;
-}
-
-ImageLoader::~ImageLoader()
-{
- // nothing to do here
-}
-
-ThumbnailableImage ImageLoader::image() const
-{
- return m_image;
-}
-
-void ImageLoader::setImage(const ThumbnailableImage &image)
-{
- m_image = image;
- if (!m_stop && isRunning())
- emit readRequired(image);
-}
-
-void ImageLoader::stop()
-{
- m_stop.ref();
- emit stopLoading();
-}
-
-void ImageLoader::queueInitialImage()
-{
- emit readRequired(m_image);
-}
-
-void ImageLoader::unusedTimeout()
-{
- emit unused();
-}
-
-void ImageLoader::run()
-{
- ByteReader reader;
- connect(this, SIGNAL(readRequired(ThumbnailableImage)),
- &reader, SLOT(loadFile(ThumbnailableImage)));
- connect(&reader, SIGNAL(imageLoaded(ThumbnailableImage)),
- this, SIGNAL(imageLoaded(ThumbnailableImage)));
-
- connect(this, SIGNAL(stopLoading()), &reader, SLOT(stop()));
- connect(&reader, SIGNAL(stopped()), this, SLOT(quit()));
-
- QTimer timer;
- connect(&timer, SIGNAL(timeout()), this, SLOT(unusedTimeout()));
- timer.start(2 * 60 * 1000);
-
- if (!m_image.isNull())
- QTimer::singleShot(0, this, SLOT(queueInitialImage()));
-
- exec();
-}
diff --git a/demos/qt3d/photobrowser3d/imageloader.h b/demos/qt3d/photobrowser3d/imageloader.h
deleted file mode 100644
index f8f23ac4..00000000
--- a/demos/qt3d/photobrowser3d/imageloader.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef IMAGELOADER_H
-#define IMAGELOADER_H
-
-#include <QThread>
-#include <QUrl>
-#include <QMutex>
-#include <QAtomicInt>
-
-#include "thumbnailableimage.h"
-
-class ImageManager;
-class ByteReader;
-
-class ImageLoader : public QThread
-{
- Q_OBJECT
-public:
- ImageLoader();
- ~ImageLoader();
- ThumbnailableImage image() const;
- void setImage(const ThumbnailableImage &image);
-signals:
- void imageLoaded(const ThumbnailableImage &image);
- void stopLoading();
- void readRequired(const ThumbnailableImage &image);
- void thumbnailRequired(const ThumbnailableImage &image);
- void thumbnailDone(const ThumbnailableImage &image);
- void unused();
-public slots:
- void stop();
-protected:
- void run();
-private slots:
- void queueInitialImage();
- void unusedTimeout();
-private:
- ThumbnailableImage m_image;
- QAtomicInt m_stop;
- ByteReader *m_reader;
-};
-
-#endif // IMAGELOADER_H
diff --git a/demos/qt3d/photobrowser3d/imagemanager.cpp b/demos/qt3d/photobrowser3d/imagemanager.cpp
deleted file mode 100644
index 6f2ec5bc..00000000
--- a/demos/qt3d/photobrowser3d/imagemanager.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "imagemanager.h"
-#include "qatlas.h"
-#include "filescanner.h"
-#include "threadpool.h"
-
-#include <QTime>
-#include <QTimer>
-#include <QDir>
-
-ImageManager::ImageManager()
-{
-}
-
-ImageManager::~ImageManager()
-{
-}
-
-// INVARIANT: only ever called before the run() function is started
-// therefore no need for synchronized url
-void ImageManager::setImageBaseUrl(const QUrl &url)
-{
- Q_ASSERT(!isRunning());
- m_url = url;
-}
-
-/*!
- Stop the running threads if any, then sit waiting in the event loop
- for a quit call.
-*/
-void ImageManager::stop()
-{
- emit stopAll();
-}
-
-void ImageManager::scanForFiles()
-{
- // TODO: In a real app there would be a way to detect new files arriving
- // and trigger a rescan to pick these new files up. Here we just scan
- // once and then destroy the scanner, to save on resources.
-
-#ifndef QT_USE_TEST_IMAGES
- // TODO: If the amount of files is large and the app is quit early the
- // scanner could still be going when the threadpool quits. For now
- // assume its ok...
- FileScanner *scanner = new FileScanner;
- scanner->setBaseUrl(m_url);
- connect(scanner, SIGNAL(imageUrl(QUrl)), this, SIGNAL(imageUrl(QUrl)));
- connect(scanner, SIGNAL(finished()), scanner, SLOT(deleteLater()));
- connect(this, SIGNAL(stopAll()), scanner, SLOT(stop()));
- scanner->start();
-#else
- QDir testImages(":/pictures");
- QStringList pics = testImages.entryList();
- for (int i = 0; i < pics.size(); ++i)
- {
- QUrl url;
- url.setScheme("file");
- url.setPath(testImages.filePath(pics.at(i)));
- emit imageUrl(url);
- }
- qDebug() << "== test images loaded ==";
-#endif
-}
-
-void ImageManager::quit()
-{
- QThread::quit();
-}
-
-void ImageManager::run()
-{
- if (m_url.scheme() != "file")
- {
- qWarning("URL scheme %s not yet supported", qPrintable(m_url.scheme()));
- return;
- }
-
- // execute once in the event loop below
- QTimer::singleShot(0, this, SLOT(scanForFiles()));
-
-#ifndef QT_NO_THREADED_FILE_LOAD
- ThreadPool pool;
-
- connect(this, SIGNAL(deployLoader(ThumbnailableImage)),
- &pool, SLOT(deployLoader(ThumbnailableImage)));
-
- connect(this, SIGNAL(stopAll()), &pool, SLOT(stop()));
- connect(&pool, SIGNAL(stopped()), this, SLOT(quit()));
-#endif
-
- exec();
-}
diff --git a/demos/qt3d/photobrowser3d/imagemanager.h b/demos/qt3d/photobrowser3d/imagemanager.h
deleted file mode 100644
index 412f590a..00000000
--- a/demos/qt3d/photobrowser3d/imagemanager.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef IMAGEMANAGER_H
-#define IMAGEMANAGER_H
-
-#include <QThread>
-#include <QUrl>
-#include <QImage>
-#include <QMutex>
-
-#include "thumbnailableimage.h"
-
-class Launcher;
-
-class ImageManager : public QThread
-{
- Q_OBJECT
-public:
- ImageManager();
- ~ImageManager();
- QUrl imageBaseUrl() const { return m_url; }
- void setImageBaseUrl(const QUrl &url);
-public slots:
- void stop();
- void quit();
-signals:
- void imageUrl(const QUrl &);
- void imageReady(const ThumbnailableImage &);
- void deployLoader(const ThumbnailableImage &);
- void stopAll();
-protected:
- void run();
-private slots:
- void scanForFiles();
-private:
- QUrl m_url;
-};
-
-#endif // IMAGEMANAGER_H
diff --git a/demos/qt3d/photobrowser3d/images/P1000223.JPG b/demos/qt3d/photobrowser3d/images/P1000223.JPG
deleted file mode 100644
index 48edfbc2..00000000
--- a/demos/qt3d/photobrowser3d/images/P1000223.JPG
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/photobrowser3d/images/P1000228.JPG b/demos/qt3d/photobrowser3d/images/P1000228.JPG
deleted file mode 100644
index 2797b6df..00000000
--- a/demos/qt3d/photobrowser3d/images/P1000228.JPG
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/photobrowser3d/images/P1000472.JPG b/demos/qt3d/photobrowser3d/images/P1000472.JPG
deleted file mode 100644
index 067afdd4..00000000
--- a/demos/qt3d/photobrowser3d/images/P1000472.JPG
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/photobrowser3d/images/arrows-left.png b/demos/qt3d/photobrowser3d/images/arrows-left.png
deleted file mode 100644
index 791f2c6b..00000000
--- a/demos/qt3d/photobrowser3d/images/arrows-left.png
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/photobrowser3d/images/arrows.xcf b/demos/qt3d/photobrowser3d/images/arrows.xcf
deleted file mode 100644
index 302bcd6e..00000000
--- a/demos/qt3d/photobrowser3d/images/arrows.xcf
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/photobrowser3d/images/default_sky_base.xcf b/demos/qt3d/photobrowser3d/images/default_sky_base.xcf
deleted file mode 100644
index 050812f7..00000000
--- a/demos/qt3d/photobrowser3d/images/default_sky_base.xcf
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/photobrowser3d/images/default_sky_down.png b/demos/qt3d/photobrowser3d/images/default_sky_down.png
deleted file mode 100644
index 685c28c4..00000000
--- a/demos/qt3d/photobrowser3d/images/default_sky_down.png
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/photobrowser3d/images/default_sky_east.png b/demos/qt3d/photobrowser3d/images/default_sky_east.png
deleted file mode 100644
index f6463abf..00000000
--- a/demos/qt3d/photobrowser3d/images/default_sky_east.png
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/photobrowser3d/images/default_sky_north.png b/demos/qt3d/photobrowser3d/images/default_sky_north.png
deleted file mode 100644
index 153b833c..00000000
--- a/demos/qt3d/photobrowser3d/images/default_sky_north.png
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/photobrowser3d/images/default_sky_south.png b/demos/qt3d/photobrowser3d/images/default_sky_south.png
deleted file mode 100644
index b3b01321..00000000
--- a/demos/qt3d/photobrowser3d/images/default_sky_south.png
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/photobrowser3d/images/default_sky_up.png b/demos/qt3d/photobrowser3d/images/default_sky_up.png
deleted file mode 100644
index 3d4d6233..00000000
--- a/demos/qt3d/photobrowser3d/images/default_sky_up.png
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/photobrowser3d/images/default_sky_west.png b/demos/qt3d/photobrowser3d/images/default_sky_west.png
deleted file mode 100644
index 14325371..00000000
--- a/demos/qt3d/photobrowser3d/images/default_sky_west.png
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/photobrowser3d/images/girder.png b/demos/qt3d/photobrowser3d/images/girder.png
deleted file mode 100644
index f9b6c4dc..00000000
--- a/demos/qt3d/photobrowser3d/images/girder.png
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/photobrowser3d/launcher.cpp b/demos/qt3d/photobrowser3d/launcher.cpp
deleted file mode 100644
index 6d90636b..00000000
--- a/demos/qt3d/photobrowser3d/launcher.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "launcher.h"
-#include "imageloader.h"
-#include "imagemanager.h"
-
-#include <QSemaphore>
-#include <QTime>
-#include <QFileInfo>
-#include <QDir>
-#include <QStringList>
-#include <QSet>
-#include <QDebug>
-
-Launcher::Launcher(ImageManager *manager)
- : m_manager(manager)
- , m_stop(false)
-{
- Q_ASSERT(m_manager);
-}
-
-void Launcher::run()
-{
- if (m_url.isEmpty())
- {
- qWarning("Launcher::run - empty URL!");
- return;
- }
- if (m_url.scheme() != QLatin1String("file"))
- {
- qWarning("URL scheme %s not yet supported", qPrintable(m_url.scheme()));
- return;
- }
- QStringList queue;
- queue.append(m_url.path());
- QSet<QString> loopProtect;
- while (queue.size() > 0 && !m_stop)
- {
- QString path = queue.takeFirst();
- QFileInfo u(path);
- if (u.isSymLink())
- path = u.symLinkTarget();
- if (u.isDir())
- {
- if (!loopProtect.contains(path))
- {
- loopProtect.insert(path);
- QDir dir(path);
- QStringList entries = dir.entryList();
- QStringList::const_iterator it = entries.constBegin();
- for ( ; it != entries.constEnd(); ++it)
- {
- // ignore hidden files, system directories
- if ((*it).startsWith(QLatin1Char('.')))
- continue;
- queue.append(dir.absoluteFilePath(*it));
- }
- }
- }
- else
- {
- if (u.isFile() && u.isReadable())
- {
- // do no checking here for file extensions etc - just
- // forward any readable file found under the pictures
- // directory to the QImage loader, and let it sort out
- // if the thing can be loaded as an image.
- QUrl url2;
- url2.setScheme(QLatin1String("file"));
- url2.setPath(u.absoluteFilePath());
- m_manager->acquire();
- emit imageUrl(url2);
- }
- }
- }
-}
diff --git a/demos/qt3d/photobrowser3d/main.cpp b/demos/qt3d/photobrowser3d/main.cpp
deleted file mode 100644
index c26a9c54..00000000
--- a/demos/qt3d/photobrowser3d/main.cpp
+++ /dev/null
@@ -1,83 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtGui/QApplication>
-#include <QtCore/QThread>
-#include "qgltexture2d.h"
-#include "photobrowser3dview.h"
-
-int main(int argc, char *argv[])
-{
-#ifdef Q_OS_SYMBIAN
- QGLTexture2D::setMaxImageSize(256,256);
-#endif
-
- Q_INIT_RESOURCE(photobrowser3d);
-
- QApplication app(argc, argv);
-
- // for QSettings
- QCoreApplication::setOrganizationName("Nokia");
- QCoreApplication::setOrganizationDomain("nokia.com");
- QCoreApplication::setApplicationName("photobrowser3d");
-
- int result = 0;
- {
- PhotoBrowser3DView view;
-
-#ifdef Q_OS_SYMBIAN
- view.setAttribute(Qt::WA_LockLandscapeOrientation, true);
- view.showFullScreen();
-#else
- if (view.stereoType() != QGLView::RedCyanAnaglyph)
- view.camera()->setEyeSeparation(0.3f);
- if (QApplication::arguments().contains(QLatin1String("-maximize")))
- view.showMaximized();
- else if (QApplication::arguments().contains(QLatin1String("-fullscreen")))
- view.showFullScreen();
- else
- view.show();
-#endif
-
- result = app.exec();
- }
- return result;
-}
diff --git a/demos/qt3d/photobrowser3d/pancontroller.cpp b/demos/qt3d/photobrowser3d/pancontroller.cpp
deleted file mode 100644
index 1ed5639b..00000000
--- a/demos/qt3d/photobrowser3d/pancontroller.cpp
+++ /dev/null
@@ -1,244 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "pancontroller.h"
-#include "qglview.h"
-#include "qglcamera.h"
-#include "photobrowser3dview.h"
-
-#include <qmath.h>
-
-#include <QtGlobal>
-#include <QTime>
-
-class PanControllerPrivate
-{
-public:
- PanControllerPrivate()
- : speed(0.0f)
- , angle(0.0f)
- , arrowDirection(Qt::NoArrow)
- , view(0)
- , maxSpeed(4.0f)
- , defaultDistance(0.0f)
- , panDistance(0.0f)
- , panViewAngle(M_PI / 4.0f) // 45 degrees in radians
- , animating(false)
- , elapsed(0.0f)
- {
- panTime.start();
- }
-
- void calculateValues();
-
- qreal speed;
- qreal angle;
- Qt::ArrowType arrowDirection;
- QGLView *view;
- QTime panTime;
- qreal maxSpeed;
- qreal defaultDistance;
- qreal panDistance;
- qreal panViewAngle;
- bool animating;
- qreal elapsed;
-};
-
-PanController::PanController(QObject *parent)
- : QObject(parent)
- , d(new PanControllerPrivate)
-{
- QGLView *v = qobject_cast<QGLView*>(parent);
- if (v)
- d->view = v;
-}
-
-PanController::~PanController()
-{
- delete d;
-}
-
-qreal PanController::defaultDistance() const
-{
- return d->defaultDistance;
-}
-
-void PanController::setDefaultDistance(qreal dist)
-{
- d->defaultDistance = dist;
-}
-
-qreal PanController::panDistance() const
-{
- return d->panDistance;
-}
-
-void PanController::setPanDistance(qreal dist)
-{
- d->panDistance = dist;
-}
-
-qreal PanController::panViewAngle() const
-{
- return d->panViewAngle;
-}
-
-void PanController::setPanViewAngle(qreal angle)
-{
- d->panViewAngle = angle;
-}
-
-void PanController::setMaxSpeed(qreal maxSpeed)
-{
- d->maxSpeed = maxSpeed;
-}
-
-qreal PanController::maxSpeed() const
-{
- return d->maxSpeed;
-}
-
-void PanController::setSpeed(qreal speed)
-{
- qreal t = d->panTime.restart();
- if (d->speed != speed)
- {
- d->speed = speed;
- d->angle = speed * d->panViewAngle;
- if (!qIsNull(d->speed))
- d->animating = true;
- d->elapsed += t;
- d->calculateValues();
- emit speedChanged();
- }
-}
-
-qreal PanController::speed() const
-{
- return d->speed;
-}
-
-void PanController::pan()
-{
- if (d->animating)
- {
- qreal t = d->panTime.restart();
- d->elapsed += t;
- // dont recalculate every single time
- // 30ms frame time == 33fps - more than enough
- if (d->elapsed > 30)
- d->calculateValues();
-
- PhotoBrowser3DView *view = qobject_cast<PhotoBrowser3DView*>(parent());
- Q_ASSERT(view);
- view->update();
- }
-}
-
-void PanControllerPrivate::calculateValues()
-{
- if (view && animating)
- {
- QGLCamera *cam = view->camera();
- Q_ASSERT(cam);
-
- QVector3D c = cam->center();
- QVector3D e = cam->eye();
-
- if (qFuzzyIsNull(speed))
- {
- c.setX(e.x());
- e.setZ(defaultDistance);
- }
- else
- {
- // as speed goes from 0 -> 1, eye moves closer to z=0 plane
- e.setZ(defaultDistance - (speed * (defaultDistance - panDistance)));
-
- // the view angle is a direct function of the speed see setSpeed() above
- // and as view angle increases we look further along the x-axis
- qreal opp = (e.z() - c.z()) * qTan(angle);
-
- // velocity along the x axis is controlled by speed (a value from 0 -> 1
- // which is a modifier for the maxSpeed, a constant). the velocity gives
- // us the incremental change in x for this unit time
- qreal dx = (speed * maxSpeed * elapsed);
-
- if (arrowDirection == Qt::LeftArrow)
- {
- e.setX(e.x() - dx);
- c.setX(e.x() - opp);
- }
- else if (arrowDirection == Qt::RightArrow)
- {
- e.setX(e.x() + dx);
- c.setX(e.x() + opp);
- }
- }
- cam->setEye(e);
- cam->setCenter(c);
- }
- elapsed = 0;
- if (qIsNull(speed))
- animating = false;
-}
-
-Qt::ArrowType PanController::direction() const
-{
- return d->arrowDirection;
-}
-
-void PanController::setDirection(Qt::ArrowType arrow)
-{
- Q_ASSERT(arrow == Qt::LeftArrow || arrow == Qt::RightArrow);
- d->arrowDirection = arrow;
-}
-
-QGLView *PanController::view() const
-{
- return d->view;
-}
-
-void PanController::setView(QGLView *view)
-{
- d->view = view;
-}
-
diff --git a/demos/qt3d/photobrowser3d/pancontroller.h b/demos/qt3d/photobrowser3d/pancontroller.h
deleted file mode 100644
index b6e938ab..00000000
--- a/demos/qt3d/photobrowser3d/pancontroller.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef PANCONTROLLER_H
-#define PANCONTROLLER_H
-
-#include <QObject>
-#include <Qt>
-
-QT_BEGIN_NAMESPACE
-class QGLView;
-QT_END_NAMESPACE
-
-class PanControllerPrivate;
-
-class PanController : public QObject
-{
- Q_OBJECT
- Q_PROPERTY(qreal speed READ speed WRITE setSpeed NOTIFY speedChanged)
-public:
- explicit PanController(QObject *parent = 0);
- ~PanController();
-
- qreal defaultDistance() const;
- void setDefaultDistance(qreal d);
-
- qreal panDistance() const;
- void setPanDistance(qreal d);
-
- qreal panViewAngle() const;
- void setPanViewAngle(qreal angle);
-
- qreal maxSpeed() const;
- void setMaxSpeed(qreal maxSpeed);
-
- qreal speed() const;
- void setSpeed(qreal speed);
-
- Qt::ArrowType direction() const;
- void setDirection(Qt::ArrowType arrow);
-
- QGLView *view() const;
- void setView(QGLView *view);
-
- void pan();
-
-signals:
- void speedChanged();
-
-private:
- PanControllerPrivate *d;
-};
-
-#endif // PANCONTROLLER_H
diff --git a/demos/qt3d/photobrowser3d/photobrowser.rc b/demos/qt3d/photobrowser3d/photobrowser.rc
deleted file mode 100644
index b40ecdc1..00000000
--- a/demos/qt3d/photobrowser3d/photobrowser.rc
+++ /dev/null
@@ -1 +0,0 @@
-IDI_ICON1 ICON DISCARDABLE "qt3d.ico"
diff --git a/demos/qt3d/photobrowser3d/photobrowser3d.desktop b/demos/qt3d/photobrowser3d/photobrowser3d.desktop
deleted file mode 100644
index 6c4085d5..00000000
--- a/demos/qt3d/photobrowser3d/photobrowser3d.desktop
+++ /dev/null
@@ -1,7 +0,0 @@
-[Desktop Entry]
-Type=Application
-Name=Photobrowser 3D
-Icon=/usr/share/icons/hicolor/80x80/apps/qt3d.png
-Exec=/usr/bin/invoker --type=e -s /usr/bin/photobrowser3d -fullscreen
-OnlyShowIn=X-MeeGo;
-X-MeeGo-Logical-Id=qtn_comm_appname_photobrowser3d
diff --git a/demos/qt3d/photobrowser3d/photobrowser3d.pro b/demos/qt3d/photobrowser3d/photobrowser3d.pro
deleted file mode 100644
index 8830bb88..00000000
--- a/demos/qt3d/photobrowser3d/photobrowser3d.pro
+++ /dev/null
@@ -1,71 +0,0 @@
-TEMPLATE = app
-TARGET = photobrowser3d
-CONFIG += qt warn_on
-
-CONFIG += qt3d_deploy_pkg
-include(../../../pkg.pri)
-
-SOURCES += main.cpp\
- photobrowser3dview.cpp \
- imagedisplay.cpp \
- skybox.cpp \
- imagemanager.cpp \
- imageloader.cpp \
- qfocusadaptor.cpp \
- thumbnailableimage.cpp \
- qatlas.cpp \
- thumbnailnode.cpp \
- thumbnaileffect.cpp \
- filescanner.cpp \
- bytereader.cpp \
- threadpool.cpp \
- buttons.cpp \
- qphotobrowser3dscene.cpp \
- pancontroller.cpp
-
-HEADERS += photobrowser3dview.h \
- imagedisplay.h \
- skybox.h \
- imagemanager.h \
- imageloader.h \
- qfocusadaptor.h \
- thumbnailableimage.h \
- qatlas.h \
- thumbnailnode.h \
- thumbnaileffect.h \
- filescanner.h \
- bytereader.h \
- threadpool.h \
- buttons.h \
- qphotobrowser3dscene.h \
- pancontroller.h
-
-# Uncomment this line to force all file loading is done in the gui thread
-# instead of a background thread - useful for debugging.
-# DEFINES += QT_NO_THREADED_FILE_LOAD
-
-# Uncomment this to use test images instead of scanning the file-system for
-# pictures. The test images are stored in in-memory resources "files".
-# DEFINES += QT_USE_TEST_IMAGES
-
-RESOURCES += \
- photobrowser3d.qrc
-
-OTHER_FILES += \
- shaders/replace_texture.fsh \
- shaders/replace_texture.vsh
-
-symbian {
-# symbian-abld|symbian-sbsv2 {
-# # ro-section in photobrowser3d can exceed default allocated space, so move rw-section a little further
-# QMAKE_LFLAGS.ARMCC += --rw-base 0x800000
-# QMAKE_LFLAGS.GCCE += -Tdata 0xC00000
-# }
- TARGET.EPOCHEAPSIZE = 0x80000 0x8000000
-}
-
-OTHER_FILES += \
- photobrowser.rc \
- photobrowser3d.desktop
-
-RC_FILE = photobrowser.rc
diff --git a/demos/qt3d/photobrowser3d/photobrowser3d.qrc b/demos/qt3d/photobrowser3d/photobrowser3d.qrc
deleted file mode 100644
index 4d310bd8..00000000
--- a/demos/qt3d/photobrowser3d/photobrowser3d.qrc
+++ /dev/null
@@ -1,23 +0,0 @@
-<RCC>
- <qresource prefix="/res">
- <file alias="down.png">images/default_sky_down.png</file>
- <file alias="west.png">images/default_sky_east.png</file>
- <file alias="north.png">images/default_sky_north.png</file>
- <file alias="south.png">images/default_sky_south.png</file>
- <file alias="up.png">images/default_sky_up.png</file>
- <file alias="east.png">images/default_sky_west.png</file>
- <file>images/girder.png</file>
- </qresource>
- <qresource prefix="/shaders">
- <file alias="replace_texture.fsh">shaders/replace_texture.fsh</file>
- <file alias="replace_texture.vsh">shaders/replace_texture.vsh</file>
- </qresource>
- <qresource prefix="/pictures">
- <file alias="im1.jpg">images/P1000223.JPG</file>
- <file alias="im2.jpg">images/P1000228.JPG</file>
- <file alias="im3.jpg">images/P1000472.JPG</file>
- </qresource>
- <qresource prefix="/controls">
- <file alias="arrows-left.png">images/arrows-left.png</file>
- </qresource>
-</RCC>
diff --git a/demos/qt3d/photobrowser3d/photobrowser3dview.cpp b/demos/qt3d/photobrowser3d/photobrowser3dview.cpp
deleted file mode 100644
index 4227832b..00000000
--- a/demos/qt3d/photobrowser3d/photobrowser3dview.cpp
+++ /dev/null
@@ -1,446 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "photobrowser3dview.h"
-#include "imagemanager.h"
-#include "imagedisplay.h"
-#include "skybox.h"
-#include "qglpicknode.h"
-#include "qfocusadaptor.h"
-#include "thumbnailableimage.h"
-#include "qatlas.h"
-#include "filescanner.h"
-#include "buttons.h"
-#include "qphotobrowser3dscene.h"
-#include "pancontroller.h"
-#include "thumbnailnode.h"
-
-#include <QApplication>
-#include <QDesktopWidget>
-#include <QWheelEvent>
-#include <QDir>
-#include <QTimer>
-#include <QTime>
-#include <QStateMachine>
-#include <QState>
-#include <QFinalState>
-#include <QSignalTransition>
-#include <QPropertyAnimation>
-
-PhotoBrowser3DView::PhotoBrowser3DView()
- : QGLView()
- , m_scene(0)
- , m_display(0)
- , m_images(0)
- , m_buttons(0)
- , m_skybox(0)
- , m_palette(new QGLMaterialCollection(this))
- , m_state(0)
- , m_app(0)
- , m_zoomed(0)
- , m_browse(0)
- , m_pan(0)
- , m_fa(0)
- , m_pc(0)
- , m_pickableDirty(true)
- , m_done(false)
- , m_closing(false)
-{
- setOption(QGLView::ObjectPicking, true);
- // setOption(QGLView::ShowPicking, true);
- //setOption(QGLView::CameraNavigation, false);
-
- qRegisterMetaType<ThumbnailableImage>("ThumbnailableImage");
-
- QString path = ":/res";
- int ix = qApp->arguments().indexOf("--skybox");
- if (ix != -1)
- {
- if (qApp->arguments().size() > ix+1)
- path = qApp->arguments().at(ix+1);
- else
- qWarning("Expected path/to/skybox/files after \"--skybox\" switch\n");
- }
-
- m_displaySize = 4.0;
- m_scene = new QPhotoBrowser3DScene(this);
- m_buttons = new Buttons(this, m_palette);
- m_scene->mainNode()->addNode(m_buttons);
- m_scene->setPickable(true);
- m_skybox = new SkyBox(this, path);
- m_display = new ImageDisplay(this, m_palette, m_displaySize);
-
- setupStates();
-
- // make sure this only gets created in the GUI thread
- QAtlas::instance();
-
- QTimer::singleShot(0, this, SLOT(initialise()));
-}
-
-PhotoBrowser3DView::~PhotoBrowser3DView()
-{
- // nothing to be done here
-}
-
-void PhotoBrowser3DView::setupStates()
-{
- m_state = new QStateMachine(this);
- m_app = new QState;
- m_zoomed = new QState(m_app);
- m_browse = new QState(m_app);
- m_pan = new QState(m_app);
- m_app->setInitialState(m_browse);
- m_state->addState(m_app);
- QFinalState *end_state = new QFinalState;
- m_app->addTransition(this, SIGNAL(done()), end_state);
- m_state->addState(end_state);
- connect(m_state, SIGNAL(finished()), this, SLOT(close()));
-
- m_fa = new QFocusAdaptor(this);
- m_browse->assignProperty(m_fa, "progress", 0.0);
- m_zoomed->assignProperty(m_fa, "progress", 1.0);
-
- m_pc = new PanController(this);
- m_pc->setMaxSpeed(m_displaySize / 1000.0f);
- m_browse->assignProperty(m_pc, "speed", 0.0);
- m_pan->assignProperty(m_pc, "speed", 1.0);
-
- m_state->setObjectName("StateMachine");
- m_app->setObjectName("Application");
- m_zoomed->setObjectName("Zoomed");
- m_browse->setObjectName("Browse");
- m_pan->setObjectName("Pan");
- end_state->setObjectName("EndState");
-
- QSignalTransition *transition = m_browse->addTransition(this, SIGNAL(zoom()), m_zoomed);
- QPropertyAnimation *a = new QPropertyAnimation(m_fa, "progress");
- a->setDuration(500);
- a->setEasingCurve(QEasingCurve::OutQuad);
- transition->addAnimation(a);
-
- transition = m_zoomed->addTransition(this, SIGNAL(zoom()), m_browse);
- a = new QPropertyAnimation(m_fa, "progress");
- a->setDuration(500);
- a->setEasingCurve(QEasingCurve::InQuad);
- transition->addAnimation(a);
-
- transition = m_browse->addTransition(this, SIGNAL(pan()), m_pan);
- a = new QPropertyAnimation(m_pc, "speed");
- a->setDuration(500);
- a->setEasingCurve(QEasingCurve::OutQuad);
- transition->addAnimation(a);
-
- transition = m_pan->addTransition(this, SIGNAL(pan()), m_browse);
- a = new QPropertyAnimation(m_pc, "speed");
- a->setDuration(500);
- a->setEasingCurve(QEasingCurve::InQuad);
- transition->addAnimation(a);
-
- m_state->setInitialState(m_app);
- m_state->start();
-}
-
-void PhotoBrowser3DView::initialise()
-{
- QString path = QDir::home().absoluteFilePath("Pictures");
- int ix = qApp->arguments().indexOf("--pictures");
- if (ix != -1)
- {
- if (qApp->arguments().size() > ix+1)
- path = qApp->arguments().at(ix+1);
- else
- qWarning("Expected /path/to/image/files after \"--pictures\" switch\n");
- }
-
- QUrl url;
- url.setScheme("file");
- url.setPath(path);
-
- bool atLeastOneImageFound = false;
- QFileInfo fi(path);
- if (fi.exists() && fi.isDir())
- {
- QDir pics(path);
- QStringList entries = pics.entryList(QDir::Files);
- for (int i = 0; i < entries.size() && !atLeastOneImageFound; ++i)
- {
- QImage im(pics.filePath(entries.at(i)));
- if (!im.isNull())
- atLeastOneImageFound = true;
- }
- }
- if (!atLeastOneImageFound)
- {
- qWarning("No pictures directory found at %s\n"
- "using test images", qPrintable(path));
-
- url.setPath(":/pictures");
- }
-
-#ifdef QT_NO_THREADED_FILE_LOAD
- nonThreadedFileLoad(url);
-#else
- initialiseImageManager(url);
-#endif
-}
-
-void PhotoBrowser3DView::initialiseImageManager(const QUrl &url)
-{
- m_images = new ImageManager;
-
- connect(m_images, SIGNAL(imageUrl(QUrl)), m_display, SLOT(addThumbnailNode(QUrl)));
- connect(m_images, SIGNAL(finished()), this, SLOT(waitForExit()));
-
- connect(m_display, SIGNAL(framesChanged()), this, SLOT(pickableDirty()));
- connect(m_display, SIGNAL(framesChanged()), this, SLOT(update()));
-
- m_images->setImageBaseUrl(url);
- QThread::Priority p = QThread::idealThreadCount() < 2 ?
- QThread::IdlePriority : QThread::NormalPriority;
- m_images->start(p);
-}
-
-void PhotoBrowser3DView::nonThreadedFileLoad(const QUrl &url)
-{
-#if defined(QT_USE_TEST_IMAGES)
- Q_UNUSED(url);
- QDir testImages(":/pictures");
- QStringList pics = testImages.entryList();
- for (int i = 0; i < pics.size(); ++i)
- {
- QUrl url;
- url.setScheme("file");
- url.setPath(testImages.filePath(pics.at(i)));
- m_display->addThumbnailNode(url);
- }
- pickableDirty();
-#else
- FileScanner *scanner = new FileScanner(this);
- scanner->setBaseUrl(url);
- QTimer::singleShot(0, scanner, SLOT(scan()));
- connect(scanner, SIGNAL(imageUrl(QUrl)), m_display, SLOT(addThumbnailNode(QUrl)));
-#endif
-}
-
-void PhotoBrowser3DView::wheelEvent(QWheelEvent *e)
-{
- e->accept();
- QVector3D viewVec = camera()->eye() - camera()->center();
- qreal zoomMag = viewVec.length();
- qreal inc = float(e->delta()) / 50.0f;
- if (!qFuzzyIsNull(inc))
- {
- zoomMag += inc;
- if (zoomMag < 2.0f)
- zoomMag = 2.0f;
- QRay3D viewLine(camera()->center(), viewVec.normalized());
- camera()->setEye(viewLine.point(zoomMag));
- update();
- }
-}
-
-void PhotoBrowser3DView::keyPressEvent(QKeyEvent *e)
-{
- if (e->key() == Qt::Key_Q)
- {
- m_done = true;
- emit done();
- }
- else if (e->key() == Qt::Key_Right)
- {
- m_pc->setDirection(Qt::RightArrow);
- emit pan();
- }
- else if (e->key() == Qt::Key_Left)
- {
- m_pc->setDirection(Qt::LeftArrow);
- emit pan();
- }
- else if (e->key() == Qt::Key_Up || e->key() == Qt::Key_Down)
- {
- QVector3D viewVec = camera()->eye() - camera()->center();
- qreal zoomMag = viewVec.length();
- zoomMag += (e->key() == Qt::Key_Up) ? -0.5f : 0.5f;
- if (zoomMag < 5.0f)
- zoomMag = 5.0f;
- QRay3D viewLine(camera()->center(), viewVec.normalized());
- camera()->setEye(viewLine.point(zoomMag));
- update();
- }
- else
- {
- QGLView::keyPressEvent(e);
- }
-}
-
-void PhotoBrowser3DView::waitForExit()
-{
- QThread::yieldCurrentThread();
- m_images->wait();
- m_images->deleteLater();
- m_images = 0;
- if (m_closing)
- {
- if (!m_done)
- {
- emit done();
- m_done = true;
- }
- }
-}
-
-void PhotoBrowser3DView::closeEvent(QCloseEvent *e)
-{
- if (m_images)
- {
- e->ignore();
- m_images->stop();
-
- // this was a request to close the main window, so we are closing up shop
- // set this flag to indicate that when the image manager stops done event
- // should be signalled to the state machine, resulting in close
- m_closing = true;
- }
- else
- {
- e->accept();
- }
-}
-
-void PhotoBrowser3DView::mousePressEvent(QMouseEvent *e)
-{
- Q_UNUSED(e);
- registerPickableNodes();
- QGLView::mousePressEvent(e);
-}
-
-void PhotoBrowser3DView::initializeGL(QGLPainter *painter)
-{
- Q_UNUSED(painter);
- QAtlas::instance()->initialize(painter);
- camera()->setEye(QVector3D(0.0f, 0.0f, 4.0f * m_displaySize));
- registerPickableNodes();
- qreal q = camera()->eye().z();
- qreal r = qBound(camera()->nearPlane(), q / 2.0f, camera()->nearPlane() * 3.0f);
- m_pc->setDefaultDistance(q);
- m_pc->setPanDistance(r);
-}
-
-void PhotoBrowser3DView::earlyPaintGL(QGLPainter *painter)
-{
- Q_UNUSED(painter);
-
- if (!painter->isPicking())
- {
- QAtlas::instance()->paint(painter);
- }
-
- if (!m_done)
- m_pc->pan();
-
- painter->setClearColor(Qt::blue);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-}
-
-void PhotoBrowser3DView::paintGL(QGLPainter *painter)
-{
- if (!m_done)
- {
- glEnable(GL_BLEND);
- m_skybox->draw(painter);
- m_display->draw(painter);
- m_buttons->draw(painter);
- }
-}
-
-void PhotoBrowser3DView::resizeGL(int w, int h)
-{
- Q_UNUSED(w);
- Q_UNUSED(h);
- m_buttons->clearPositions();
- m_updateRequired = true;
-}
-
-void PhotoBrowser3DView::zoomImage()
-{
- QGLPickNode *pn = qobject_cast<QGLPickNode*>(sender());
- Q_ASSERT(pn);
- QGLSceneNode *n = pn->target();
- m_fa->setTarget(n);
- emit zoom();
-}
-
-void PhotoBrowser3DView::goPan()
-{
- QGLPickNode *pn = qobject_cast<QGLPickNode*>(sender());
- Q_ASSERT(pn);
- QGLSceneNode *n = pn->target();
- m_pc->setDirection(n->objectName() == "Left Button" ? Qt::LeftArrow : Qt::RightArrow);
- emit pan();
-}
-
-void PhotoBrowser3DView::pickableDirty()
-{
- m_pickableDirty = true;
-}
-
-void PhotoBrowser3DView::registerPickableNodes()
-{
- if (m_pickableDirty)
- {
- m_scene->generatePickNodes();
- QList<QGLPickNode*> pickList = m_scene->pickNodes();
- QList<QGLPickNode*>::const_iterator it = pickList.constBegin();
- for ( ; it != pickList.constEnd(); ++it)
- {
- QGLPickNode *pn = *it;
- pn->disconnect(this);
- ThumbnailNode *node = qobject_cast<ThumbnailNode*>(pn->target());
- if (node)
- QObject::connect(pn, SIGNAL(clicked()), this, SLOT(zoomImage()));
- else
- QObject::connect(pn, SIGNAL(clicked()), this, SLOT(goPan()));
- registerObject(pn->id(), pn);
- }
- m_pickableDirty = false;
- }
-}
diff --git a/demos/qt3d/photobrowser3d/photobrowser3dview.h b/demos/qt3d/photobrowser3d/photobrowser3dview.h
deleted file mode 100644
index 50443c31..00000000
--- a/demos/qt3d/photobrowser3d/photobrowser3dview.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef PHOTOBROWSER3DVIEW_H
-#define PHOTOBROWSER3DVIEW_H
-
-#include "qglview.h"
-
-QT_BEGIN_NAMESPACE
-class QGLMaterialCollection;
-class QGLSceneNode;
-class QState;
-class QStateMachine;
-QT_END_NAMESPACE
-
-
-class SkyBox;
-class ImageDisplay;
-class ImageManager;
-class QAtlas;
-class Buttons;
-class QPhotoBrowser3DScene;
-class PanController;
-class QFocusAdaptor;
-
-class PhotoBrowser3DView : public QGLView
-{
- Q_OBJECT
-public:
- PhotoBrowser3DView();
- ~PhotoBrowser3DView();
- void initializeGL(QGLPainter *);
- QPhotoBrowser3DScene *scene() { return m_scene; }
-signals:
- void done();
- void zoom();
- void pan();
-protected:
- void earlyPaintGL(QGLPainter *);
- void paintGL(QGLPainter *);
- void resizeGL(int w, int h);
- void wheelEvent(QWheelEvent *e);
- void keyPressEvent(QKeyEvent *e);
- void closeEvent(QCloseEvent *e);
- void mousePressEvent(QMouseEvent *e);
-private slots:
- void initialise();
- void zoomImage();
- void pickableDirty();
- void waitForExit();
- void goPan();
-private:
- void registerPickableNodes();
- void setupStates();
- void nonThreadedFileLoad(const QUrl &url);
- void initialiseImageManager(const QUrl &url);
-
- QPhotoBrowser3DScene *m_scene;
- ImageDisplay *m_display;
- ImageManager *m_images;
- Buttons *m_buttons;
- SkyBox *m_skybox;
- QGLMaterialCollection *m_palette;
- QStateMachine *m_state;
- QState *m_app;
- QState *m_zoomed;
- QState *m_browse;
- QState *m_pan;
- QFocusAdaptor *m_fa;
- PanController *m_pc;
- bool m_pickableDirty;
- qreal m_displaySize;
- bool m_done;
- bool m_closing;
- bool m_updateRequired;
-};
-
-#endif // PHOTOBROWSER3DVIEW_H
diff --git a/demos/qt3d/photobrowser3d/qatlas.cpp b/demos/qt3d/photobrowser3d/qatlas.cpp
deleted file mode 100644
index 24c9b6a3..00000000
--- a/demos/qt3d/photobrowser3d/qatlas.cpp
+++ /dev/null
@@ -1,188 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qatlas.h"
-#include "qareaallocator.h"
-#include "qgltexture2d.h"
-#include "qglpainter.h"
-#include "qgeometrydata.h"
-#include "qglmaterial.h"
-#include "qglpainter.h"
-#include "qglframebufferobjectsurface.h"
-#include "qglbuilder.h"
-
-#include <QImage>
-#include <QThread>
-#include <QGLFramebufferObject>
-#include <QGLFramebufferObjectFormat>
-#include <QCoreApplication>
-
-#ifndef GL_MULTISAMPLE
-#define GL_MULTISAMPLE 0x809D
-#endif
-
-QAtlas::QAtlas()
- : m_size(1024, 1024)
- , m_data(0)
- , m_renderTarget(0)
- , m_allocator(new QSimpleAreaAllocator(m_size))
- , m_tex(0)
- , m_material(new QGLMaterial)
- , m_initialized(false)
- , m_count(0)
-{
-}
-
-QAtlas::~QAtlas()
-{
- delete m_data;
- delete m_renderTarget;
- delete m_allocator;
-}
-
-void QAtlas::initialize(QGLPainter *painter)
-{
- Q_UNUSED(painter);
- if (!m_initialized)
- {
- m_data = new QGLFramebufferObject(m_size);
- m_renderTarget = new QGLFramebufferObjectSurface(m_data);
- m_tex = QGLTexture2D::fromTextureId(m_data->texture(), m_size);
- m_material->setTexture(m_tex, 1);
- m_material->setObjectName("Atlas material");
- m_initialized = true;
- }
-}
-
-void QAtlas::paint(QGLPainter *painter)
-{
- Q_ASSERT(QThread::currentThread() == qApp->thread());
-
- if (m_allocationQueue.isEmpty() || painter->isPicking())
- return;
-
- glDisable(GL_DEPTH_TEST);
-
- painter->pushSurface(m_renderTarget);
- painter->setStandardEffect(QGL::FlatReplaceTexture2D);
- painter->projectionMatrix().push();
- painter->modelViewMatrix().push();
- QRect rect = painter->currentSurface()->viewportRect();
- QMatrix4x4 proj;
- proj.ortho(rect);
- painter->projectionMatrix() = proj;
- painter->modelViewMatrix().setToIdentity();
-
- painter->update();
-
- QAtlasEntry entry = m_allocationQueue.takeFirst();
-
- QRect a = entry.rect;
- QImage image = entry.image;
-
- if (a.left() == 0 && a.top() == 0) // first one - paint fill color
- {
- painter->setClearColor(Qt::red);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- }
-
- QGLTexture2D t;
- t.setImage(image);
- t.bind();
- QVector3D va(a.left(), a.bottom()+1, 0);
- QVector3D vb(a.right()+1, a.bottom()+1, 0);
- QVector3D vc(a.right()+1, a.top(), 0);
- QVector3D vd(a.left(), a.top(), 0);
- QVector2D ta(0.0f, 0.0f);
- QVector2D tb(1.0f, 0.0f);
- QVector2D tc(1.0f, 1.0f);
- QVector2D td(0.0f, 1.0f);
- QGeometryData quad;
- quad.setBufferStrategy(QGeometryData::KeepClientData);
- quad.appendVertex(va, vb, vc, vd);
- quad.appendTexCoord(ta, tb, tc, td);
- quad.appendIndices(0, 1, 2);
- quad.appendIndices(0, 2, 3);
- quad.draw(painter, 0, 6);
-
- painter->popSurface();
-
- glEnable(GL_DEPTH_TEST);
-}
-
-QRect QAtlas::allocate(const QSize &size, const QImage &image, const QGL::IndexArray &indices)
-{
- Q_ASSERT(QThread::currentThread() == qApp->thread());
-
- QRect a = m_allocator->allocate(size);
- if (a.isEmpty())
- {
- qWarning("QAtlas::allocate: overflowed");
- return a;
- }
-
- m_allocationQueue.append(QAtlasEntry(image, a));
- ++m_count;
-
- QRectF af(a);
- QSizeF szf(m_size);
- float l = af.left() / szf.width();
- float r = af.right() / szf.width();
- float t = 1.0f - (af.top() / szf.height());
- float b = 1.0f - (af.bottom() / szf.height());
- m_geometry.texCoord(indices.at(0), QGL::TextureCoord1) = QVector2D(l, b);
- m_geometry.texCoord(indices.at(1), QGL::TextureCoord1) = QVector2D(r, b);
- m_geometry.texCoord(indices.at(2), QGL::TextureCoord1) = QVector2D(r, t);
- m_geometry.texCoord(indices.at(5), QGL::TextureCoord1) = QVector2D(l, t);
- return a;
-}
-
-void QAtlas::release(QRect frame)
-{
- m_allocator->release(frame);
-}
-
-Q_GLOBAL_STATIC(QAtlas, atlasInstance);
-
-QAtlas *QAtlas::instance()
-{
- return atlasInstance();
-}
diff --git a/demos/qt3d/photobrowser3d/qatlas.h b/demos/qt3d/photobrowser3d/qatlas.h
deleted file mode 100644
index 33b5b542..00000000
--- a/demos/qt3d/photobrowser3d/qatlas.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QATLAS_H
-#define QATLAS_H
-
-#include <QSize>
-
-#include "qarray.h"
-#include "qgeometrydata.h"
-
-QT_BEGIN_NAMESPACE
-class QAreaAllocator;
-class QGLTexture2D;
-class QGLMaterial;
-class QGeometryData;
-class QGLFramebufferObject;
-class QGLFramebufferObjectSurface;
-QT_END_NAMESPACE
-
-struct QAtlasEntry
-{
- QAtlasEntry(QImage i, QRect r) : image(i), rect(r) {}
- QImage image;
- QRect rect;
-};
-
-class QAtlas
-{
-public:
- QAtlas();
- ~QAtlas();
-
- QAreaAllocator *allocator() const { return m_allocator; }
- void setAllocator(QAreaAllocator *allocator) { m_allocator = allocator; }
-
- QRect allocate(const QSize &size, const QImage &image, const QGL::IndexArray &indices);
-
- void initialize(QGLPainter *painter);
- void paint(QGLPainter *painter);
-
- void release(QRect frame);
-
- void setGeometry(QGeometryData geometry) { m_geometry = geometry; }
- QGeometryData geometry() { return m_geometry; }
-
- QGLMaterial *material() { return m_material; }
-
- QList<QAtlasEntry> allocationQueue() const { return m_allocationQueue; }
-
- static QAtlas *instance();
-
-private:
- QSize m_size;
- QGLFramebufferObject *m_data;
- QGLFramebufferObjectSurface *m_renderTarget;
- QAreaAllocator *m_allocator;
- QGLTexture2D *m_tex;
- QGLMaterial *m_material;
- QGeometryData m_geometry;
- bool m_initialized;
- QList<QAtlasEntry> m_allocationQueue;
- int m_count;
-};
-
-#endif // QATLAS_H
diff --git a/demos/qt3d/photobrowser3d/qfocusadaptor.cpp b/demos/qt3d/photobrowser3d/qfocusadaptor.cpp
deleted file mode 100644
index 64e93c61..00000000
--- a/demos/qt3d/photobrowser3d/qfocusadaptor.cpp
+++ /dev/null
@@ -1,187 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qfocusadaptor.h"
-#include "qglscenenode.h"
-#include "qglview.h"
-#include "qglcamera.h"
-#include "thumbnailnode.h"
-
-class QFocusAdaptorPrivate
-{
-public:
- QFocusAdaptorPrivate()
- : progress(0.0)
- , reset(true)
- , target(0)
- , view(0)
- {}
- qreal progress;
- QVector3D targetEye;
- QVector3D targetCenter;
- QVector3D sourceEye;
- QVector3D sourceCenter;
- bool reset;
- QGLSceneNode *target;
- QGLView *view;
-};
-
-QFocusAdaptor::QFocusAdaptor(QObject *parent)
- : QObject(parent)
- , d(new QFocusAdaptorPrivate)
-{
- QGLView *v = qobject_cast<QGLView*>(parent);
- if (v)
- d->view = v;
-}
-
-QFocusAdaptor::~QFocusAdaptor()
-{
- delete d;
-}
-
-qreal QFocusAdaptor::progress() const
-{
- return d->progress;
-}
-
-void QFocusAdaptor::setProgress(qreal progress)
-{
- if (d->progress != progress)
- {
- d->progress = progress;
- calculateValues();
- emit progressChanged();
- }
-}
-
-QGLView *QFocusAdaptor::view() const
-{
- return d->view;
-}
-
-void QFocusAdaptor::setView(QGLView *view)
-{
- d->view = view;
- d->reset = true;
-}
-
-QGLSceneNode *QFocusAdaptor::target() const
-{
- return d->target;
-}
-
-void QFocusAdaptor::setTarget(QGLSceneNode *target)
-{
- if (d->target != target)
- {
- d->target = target;
- d->reset = true;
- }
-}
-
-void QFocusAdaptor::calculateValues()
-{
- if (d->target && d->view)
- {
- QGLCamera *cam = d->view->camera();
- Q_ASSERT(cam);
- if (d->reset)
- {
- QGeometryData data = d->target->geometry();
- if (data.count() == 0 || d->target->count() == 0)
- {
- qWarning("Could not setup focus animation");
- return;
- }
- // assume that the first triangle referenced by this node is the one
- // you want to focus on - works for simple rects and like cases
- QGL::IndexArray ixs = data.indices();
- QVector3D a = data.vertexAt(ixs.at(d->target->start()));
- QVector3D b = data.vertexAt(ixs.at(d->target->start() + 1));
- QVector3D c = data.vertexAt(ixs.at(d->target->start() + 2));
-
- // assumes that first triangle is facing the camera
- QVector3D toCam = QVector3D::normal(a, b, c);
-
- // wont work very well if the target is not axis-aligned
- // find the distance q for the eye to be away from this object
- // in order that it is a tight fit in the viewport
- QGeometryData g = d->target->geometry();
- QGL::IndexArray inxs = g.indices();
- QBox3D box;
- for (int i = d->target->start(); i < (d->target->start() + d->target->count()); ++i)
- box.unite(g.vertexAt(inxs.at(i)));
- QVector3D sz = box.size();
-
- qreal nearDist = cam->nearPlane();
-
- QSizeF v = cam->viewSize();
-
- qreal vh = d->view->rect().height();
- qreal vw = d->view->rect().width();
- if (!qFuzzyIsNull(vw - vh))
- {
- qreal asp = vh / vw;
- if (vh > vw)
- v.setHeight(v.height() * asp);
- else
- v.setWidth(v.width() / asp);
- }
-
- qreal qh = (nearDist * sz.y()) / v.height();
- qreal qw = (nearDist * sz.x()) / v.width();
-
- qreal q = qMax(qh, qw);
- q = qMax(q, qreal(nearDist * 1.05));
-
- d->sourceCenter = cam->center();
- d->sourceEye = cam->eye();
-
- d->targetCenter = d->target->position();
- d->targetEye = d->targetCenter + (toCam * q);
-
- d->reset = false;
- }
- cam->setCenter(d->sourceCenter + ((d->targetCenter - d->sourceCenter) * d->progress));
- cam->setEye(d->sourceEye + ((d->targetEye - d->sourceEye) * d->progress));
- }
-}
diff --git a/demos/qt3d/photobrowser3d/qfocusadaptor.h b/demos/qt3d/photobrowser3d/qfocusadaptor.h
deleted file mode 100644
index 8d0fe895..00000000
--- a/demos/qt3d/photobrowser3d/qfocusadaptor.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QFOCUSADAPTOR_H
-#define QFOCUSADAPTOR_H
-
-#include <QObject>
-
-QT_BEGIN_NAMESPACE
-class QGLView;
-class QGLSceneNode;
-QT_END_NAMESPACE
-
-class QFocusAdaptorPrivate;
-
-class QFocusAdaptor : public QObject
-{
- Q_OBJECT
- Q_PROPERTY(qreal progress READ progress WRITE setProgress NOTIFY progressChanged)
-public:
- explicit QFocusAdaptor(QObject *parent = 0);
- ~QFocusAdaptor();
-
- qreal progress() const;
- void setProgress(qreal progress);
-
- QGLView *view() const;
- void setView(QGLView *view);
-
- QGLSceneNode *target() const;
- void setTarget(QGLSceneNode *target);
-
-signals:
- void progressChanged();
-
-public slots:
-
-private:
- void calculateValues();
-
- QFocusAdaptorPrivate *d;
-};
-
-#endif // QFOCUSADAPTOR_H
diff --git a/demos/qt3d/photobrowser3d/qphotobrowser3dscene.cpp b/demos/qt3d/photobrowser3d/qphotobrowser3dscene.cpp
deleted file mode 100644
index e05e7d46..00000000
--- a/demos/qt3d/photobrowser3d/qphotobrowser3dscene.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qphotobrowser3dscene.h"
-#include "qglscenenode.h"
-
-QPhotoBrowser3DScene::QPhotoBrowser3DScene(QObject *parent)
- : QGLAbstractScene(parent)
- , m_rootNode(new QGLSceneNode(this))
-{
-}
-
-QList<QObject *> QPhotoBrowser3DScene::objects() const
-{
- QList<QGLSceneNode *> children = m_rootNode->allChildren();
- QList<QObject *> objects;
- for (int index = 0; index < children.size(); ++index)
- objects.append(children.at(index));
- return objects;
-}
diff --git a/demos/qt3d/photobrowser3d/qphotobrowser3dscene.h b/demos/qt3d/photobrowser3d/qphotobrowser3dscene.h
deleted file mode 100644
index 73eb7159..00000000
--- a/demos/qt3d/photobrowser3d/qphotobrowser3dscene.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QFRAMESSCENE_H
-#define QFRAMESSCENE_H
-
-#include "qglabstractscene.h"
-
-QT_BEGIN_NAMESPACE
-class QGLSceneNode;
-QT_END_NAMESPACE
-
-class QPhotoBrowser3DScene : public QGLAbstractScene
-{
- Q_OBJECT
-public:
- explicit QPhotoBrowser3DScene(QObject *parent = 0);
- virtual QList<QObject *> objects() const;
- QGLSceneNode *mainNode() const { return m_rootNode; }
-private:
- QGLSceneNode *m_rootNode;
-};
-
-#endif // QFRAMESSCENE_H
diff --git a/demos/qt3d/photobrowser3d/qt3d.ico b/demos/qt3d/photobrowser3d/qt3d.ico
deleted file mode 100644
index e6442baf..00000000
--- a/demos/qt3d/photobrowser3d/qt3d.ico
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/photobrowser3d/qt3d.png b/demos/qt3d/photobrowser3d/qt3d.png
deleted file mode 100644
index 21ec0176..00000000
--- a/demos/qt3d/photobrowser3d/qt3d.png
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/photobrowser3d/shaders/replace_texture.fsh b/demos/qt3d/photobrowser3d/shaders/replace_texture.fsh
deleted file mode 100644
index bb5e6107..00000000
--- a/demos/qt3d/photobrowser3d/shaders/replace_texture.fsh
+++ /dev/null
@@ -1,54 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-// This is equivilent to GL_REPLACE
-varying highp vec4 qt_TexCoord0;
-uniform bool picking;
-uniform mediump vec4 color;
-uniform sampler2D texture;
-
-void main(void)
-{
- if (picking)
- gl_FragColor = color;
- else
- gl_FragColor = texture2D(texture, qt_TexCoord0.st);
-}
diff --git a/demos/qt3d/photobrowser3d/shaders/replace_texture.vsh b/demos/qt3d/photobrowser3d/shaders/replace_texture.vsh
deleted file mode 100644
index 02a14fc5..00000000
--- a/demos/qt3d/photobrowser3d/shaders/replace_texture.vsh
+++ /dev/null
@@ -1,58 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-attribute highp vec4 vertex;
-attribute highp vec4 texcoord;
-attribute highp vec4 thumbcoord;
-
-uniform highp mat4 matrix;
-uniform bool thumb;
-
-varying highp vec4 qt_TexCoord0;
-
-void main(void)
-{
- if (thumb)
- qt_TexCoord0 = thumbcoord;
- else
- qt_TexCoord0 = texcoord;
- gl_Position = matrix * vertex;
-}
diff --git a/demos/qt3d/photobrowser3d/skybox.cpp b/demos/qt3d/photobrowser3d/skybox.cpp
deleted file mode 100644
index 3162a76d..00000000
--- a/demos/qt3d/photobrowser3d/skybox.cpp
+++ /dev/null
@@ -1,223 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "skybox.h"
-#include "qglbuilder.h"
-#include "qglcube.h"
-#include "qglpainter.h"
-#include "qglview.h"
-
-#include <QDir>
-#include <QFileInfo>
-
-SkyBox::SkyBox(QGLView *view, const QString &imagePath)
- : m_scene(0)
- , m_view(view)
- , m_camera(new QGLCamera(this))
-{
- m_camera->setEye(QVector3D());
- m_camera->setNearPlane(0.3f);
- m_camera->setViewSize(QSizeF(0.3f, 0.3f));
-
- QGLBuilder builder;
- builder.newSection(QGL::Faceted);
- QVector3D blb(-1.0, -1.0, -1.0);
- QVector3D blf(-1.0, -1.0, 1.0);
- QVector3D tlf(-1.0, 1.0, 1.0);
- QVector3D tlb(-1.0, 1.0, -1.0);
- QVector3D brb(1.0, -1.0, -1.0);
- QVector3D brf(1.0, -1.0, 1.0);
- QVector3D trf(1.0, 1.0, 1.0);
- QVector3D trb(1.0, 1.0, -1.0);
- QVector2D bl(0.0f, 0.0f);
- QVector2D br(1.0f, 0.0f);
- QVector2D tr(1.0f, 1.0f);
- QVector2D tl(0.0f, 1.0f);
- {
- QGeometryData q; // left
- builder.currentNode()->setObjectName("left");
- q.appendVertex(blf, blb, tlb, tlf);
- q.appendTexCoord(bl, br, tr, tl);
- builder.addQuads(q);
- m_faces[0] = builder.currentNode();
- m_faces[0]->setMaterial(new QGLMaterial);
- }
- {
- builder.newNode(); // top
- builder.currentNode()->setObjectName("top");
- QGeometryData q;
- q.appendVertex(trf, tlf, tlb, trb);
- q.appendTexCoord(bl, br, tr, tl);
- builder.addQuads(q);
- m_faces[1] = builder.currentNode();
- m_faces[1]->setMaterial(new QGLMaterial);
- }
- {
- builder.newNode(); // right
- builder.currentNode()->setObjectName("right");
- QGeometryData q;
- q.appendVertex(brb, brf, trf, trb);
- q.appendTexCoord(bl, br, tr, tl);
- builder.addQuads(q);
- m_faces[2] = builder.currentNode();
- m_faces[2]->setMaterial(new QGLMaterial);
- }
- {
- builder.newNode(); // bottom
- builder.currentNode()->setObjectName("bottom");
- QGeometryData q;
- q.appendVertex(brb, blb, blf, brf);
- q.appendTexCoord(bl, br, tr, tl);
- builder.addQuads(q);
- m_faces[3] = builder.currentNode();
- m_faces[3]->setMaterial(new QGLMaterial);
- }
- {
- builder.newNode(); // front
- builder.currentNode()->setObjectName("front");
- QGeometryData q;
- q.appendVertex(brf, blf, tlf, trf);
- q.appendTexCoord(bl, br, tr, tl);
- builder.addQuads(q);
- m_faces[4] = builder.currentNode();
- m_faces[4]->setMaterial(new QGLMaterial);
- }
- {
- builder.newNode(); // back
- builder.currentNode()->setObjectName("back");
- QGeometryData q;
- q.appendVertex(blb, brb, trb, tlb);
- q.appendTexCoord(bl, br, tr, tl);
- builder.addQuads(q);
- m_faces[5] = builder.currentNode();
- m_faces[5]->setMaterial(new QGLMaterial);
- }
- m_scene = builder.finalizedSceneNode();
- m_scene->setObjectName("SkyboxList");
- m_scene->setEffect(QGL::FlatReplaceTexture2D);
- m_scene->setEffectEnabled(true);
- m_scene->setParent(this);
-
- QString resourceBase = QLatin1String(":/");
- setImagePath(imagePath.isEmpty() ? resourceBase : imagePath);
-}
-
-
-void SkyBox::setImagePath(const QString &imagePath)
-{
- static QStringList expected2;
- static QStringList expected;
-
- if (expected.isEmpty())
- expected << QLatin1String("east") << QLatin1String("up") << QLatin1String("west")
- << QLatin1String("down") << QLatin1String("south") << QLatin1String("north");
- if (expected2.isEmpty())
- expected2 << QLatin1String("right") << QLatin1String("top") << QLatin1String("left")
- << QLatin1String("bottom") << QLatin1String("front") << QLatin1String("back");
- if (imagePath != m_imagePath)
- {
- m_imagePath = imagePath;
- QStringList notFound = expected;
- QFileInfo info(m_imagePath);
- if (info.exists() && info.isDir())
- {
- QDir imDir(imagePath);
- QFileInfoList files = imDir.entryInfoList(QDir::Files);
- QFileInfoList::const_iterator it = files.constBegin();
- for ( ; it != files.constEnd() && notFound.size() > 0; ++it)
- {
- QFileInfo ent = *it;
- QString tok = ent.baseName().toLower();
- int ix = 0;
- for ( ; ix < 6; ++ix)
- if (tok.contains(expected.at(ix)))
- break;
- if (ix == 6)
- {
- ix = 0;
- for ( ; ix < 6; ++ix)
- if (tok.contains(expected2.at(ix)))
- break;
- }
- if (ix != 6)
- {
- notFound.removeOne(expected.at(ix));
- QUrl url;
- url.setScheme("file");
- url.setPath(ent.absoluteFilePath());
- m_faces[ix]->material()->setTextureUrl(url);
- m_faces[ix]->material()->texture()->setHorizontalWrap(QGL::ClampToEdge);
- m_faces[ix]->material()->texture()->setVerticalWrap(QGL::ClampToEdge);
- }
- }
- if (notFound.size() > 2)
- {
- qWarning("Could not load textures for");
- for (int i = 0; i < notFound.size(); ++i)
- qWarning("\t%s", qPrintable(notFound.at(i)));
- }
- }
- else
- {
- qWarning("SkyBox::setImagePath: Not an existing directory %s",
- qPrintable(m_imagePath));
- }
- }
-}
-
-void SkyBox::draw(QGLPainter *painter) const
-{
- painter->modelViewMatrix().push();
- painter->modelViewMatrix().setToIdentity();
-
- QGLCamera *cam = m_view->camera();
- m_camera->setCenter(-cam->eye());
- painter->setCamera(m_camera);
-
- glDisable(GL_DEPTH_TEST);
-
- m_scene->draw(painter);
-
- glEnable(GL_DEPTH_TEST);
-
- painter->setCamera(cam);
- painter->modelViewMatrix().pop();
-}
diff --git a/demos/qt3d/photobrowser3d/skybox.h b/demos/qt3d/photobrowser3d/skybox.h
deleted file mode 100644
index 79b17219..00000000
--- a/demos/qt3d/photobrowser3d/skybox.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef SKYBOX_H
-#define SKYBOX_H
-
-#include <QString>
-#include <QObject>
-
-QT_BEGIN_NAMESPACE
-class QGLBuilder;
-class QGLSceneNode;
-class QGLPainter;
-class QGLView;
-class QGLCamera;
-QT_END_NAMESPACE
-
-class SkyBox : public QObject
-{
- Q_OBJECT
-public:
- SkyBox(QGLView *view, const QString &imagePath = QString());
- QString imagePath() const { return m_imagePath; }
- void setImagePath(const QString &imagePath);
- void draw(QGLPainter *painter) const;
-private:
- QGLSceneNode *m_scene;
- QString m_imagePath;
- QGLSceneNode *m_faces[6];
- QGLView *m_view;
- QGLCamera *m_camera;
-};
-
-#endif // SKYBOX_H
diff --git a/demos/qt3d/photobrowser3d/threadpool.cpp b/demos/qt3d/photobrowser3d/threadpool.cpp
deleted file mode 100644
index 01517d59..00000000
--- a/demos/qt3d/photobrowser3d/threadpool.cpp
+++ /dev/null
@@ -1,135 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "threadpool.h"
-#include "imageloader.h"
-#include "imagemanager.h"
-
-#include <QSemaphore>
-
-ThreadPool::ThreadPool()
-{
- m_threadPoolSize = QThread::idealThreadCount();
- if (m_threadPoolSize < 2)
- m_threadPoolSize = 2;
- m_stop = 0;
-}
-
-ThreadPool::~ThreadPool()
-{
- Q_ASSERT(m_allWorkers.size() == 0);
-}
-
-void ThreadPool::deployLoader(const ThumbnailableImage &image)
-{
- // INVARIANT: this critical section is only ever executed from its
- // own thread via queued signals - thus access to it is serialized
- Q_ASSERT(QThread::currentThread() == thread());
-
- if (m_stop)
- return;
-
- ImageManager *manager = qobject_cast<ImageManager*>(sender());
- Q_ASSERT(manager);
-
- ImageLoader *loader = 0;
- if (m_freeWorkers.size() > 0)
- loader = m_freeWorkers.takeFirst();
-
- if (loader)
- {
- loader->setImage(image);
- }
- else
- {
- if (m_allWorkers.size() < m_threadPoolSize)
- {
- loader = new ImageLoader;
- m_allWorkers.append(loader);
- loader->setImage(image);
- connect(loader, SIGNAL(imageLoaded(ThumbnailableImage)), manager,
- SIGNAL(imageReady(ThumbnailableImage)));
- connect(loader, SIGNAL(imageLoaded(ThumbnailableImage)), this,
- SLOT(retrieveLoader()));
- connect(loader, SIGNAL(finished()), this, SLOT(closeLoader()));
- connect(this, SIGNAL(stopAll()), loader, SLOT(stop()));
- loader->start();
- }
- else
- {
- m_workList.append(image);
- }
- }
-}
-
-void ThreadPool::retrieveLoader()
-{
- ImageLoader *loader = qobject_cast<ImageLoader*>(sender());
- Q_ASSERT(loader);
- if (!m_stop)
- {
- if (!m_workList.isEmpty())
- loader->setImage(m_workList.takeFirst());
- else
- m_freeWorkers.append(loader);
- }
-}
-
-void ThreadPool::stop()
-{
- m_stop.ref();
- if (m_allWorkers.isEmpty())
- emit stopped();
- else
- emit stopAll();
-}
-
-void ThreadPool::closeLoader()
-{
- ImageLoader *loader = qobject_cast<ImageLoader*>(sender());
- Q_ASSERT(loader);
- m_allWorkers.removeOne(loader);
- loader->deleteLater();
- if (m_allWorkers.isEmpty() && m_stop)
- {
- emit stopped();
- }
-}
diff --git a/demos/qt3d/photobrowser3d/threadpool.h b/demos/qt3d/photobrowser3d/threadpool.h
deleted file mode 100644
index ff13b2b1..00000000
--- a/demos/qt3d/photobrowser3d/threadpool.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef LOADINGJOB_H
-#define LOADINGJOB_H
-
-#include <QObject>
-#include <QAtomicInt>
-#include <QList>
-#include <QUrl>
-
-#include "thumbnailableimage.h"
-
-class ImageLoader;
-
-class ThreadPool : public QObject
-{
- Q_OBJECT
-public:
- ThreadPool();
- ~ThreadPool();
-
-signals:
- void stopped();
- void stopAll();
-
-public slots:
- void deployLoader(const ThumbnailableImage &url);
- void stop();
-
-private slots:
- void retrieveLoader();
- void closeLoader();
-
-private:
- QList<ImageLoader*> m_freeWorkers;
- QList<ImageLoader*> m_allWorkers;
- QList<ThumbnailableImage> m_workList;
- QAtomicInt m_stop;
- int m_threadPoolSize;
-};
-
-#endif // LOADINGJOB_H
diff --git a/demos/qt3d/photobrowser3d/thumbnailableimage.cpp b/demos/qt3d/photobrowser3d/thumbnailableimage.cpp
deleted file mode 100644
index 970d31c4..00000000
--- a/demos/qt3d/photobrowser3d/thumbnailableimage.cpp
+++ /dev/null
@@ -1,302 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "thumbnailableimage.h"
-#include "qareaallocator.h"
-#include "qgltexture2d.h"
-#include "qglmaterial.h"
-#include "qatlas.h"
-
-#include <QUrl>
-
-class ThumbnailableImagePrivate
-{
-public:
- ThumbnailableImagePrivate();
- ~ThumbnailableImagePrivate();
-
- ThumbnailableImagePrivate *clone() const
- {
- ThumbnailableImagePrivate *temp = new ThumbnailableImagePrivate;
- temp->thumbnailed = thumbnailed;
- temp->pending = pending;
- temp->url = url;
- temp->data = data;
- temp->tex = tex;
- temp->mat = mat;
- temp->frame = frame;
- temp->scale = scale;
- temp->indices = indices;
- return temp;
- }
-
- QBasicAtomicInt ref;
-
- bool thumbnailed;
- bool pending;
- QUrl url;
- QImage data;
- QGLTexture2D *tex;
- QGLMaterial *mat;
- QRect frame;
- qreal scale;
- QGL::IndexArray indices;
-};
-
-ThumbnailableImagePrivate::ThumbnailableImagePrivate()
- : thumbnailed(false)
- , pending(false)
- , tex(0)
- , mat(0)
- , scale(15.0f)
-{
- ref = 0;
-}
-
-ThumbnailableImagePrivate::~ThumbnailableImagePrivate()
-{
-}
-
-ThumbnailableImage::ThumbnailableImage()
- : d(0)
-{
-}
-
-/*!
- Construct ThumbnailableImage as a copy of \a other
-*/
-ThumbnailableImage::ThumbnailableImage(const ThumbnailableImage &other)
- : d(other.d)
-{
- if (d)
- d->ref.ref();
-}
-
-/*!
- Destroys this ThumbnailableImage recovering any resources.
-*/
-ThumbnailableImage::~ThumbnailableImage()
-{
- if (d && !d->ref.deref())
- delete d;
-}
-
-/*!
- Assigns this ThumbnailableImage to be a copy of \a other.
-*/
-ThumbnailableImage &ThumbnailableImage::operator=(const ThumbnailableImage &other)
-{
- if (d != other.d)
- {
- if (d && !d->ref.deref())
- delete d;
- d = other.d;
- if (d)
- d->ref.ref();
- }
- return *this;
-}
-
-void ThumbnailableImage::setThumbnailed(bool enable)
-{
- detach();
- if (enable != d->thumbnailed && !d->data.isNull())
- {
- if (enable)
- {
- if (d->frame.isNull())
- {
- Q_ASSERT(!d->data.isNull());
- QSize sz = (QSizeF(d->data.size()) / d->scale).toSize();
- QAtlas *atlas = QAtlas::instance();
- d->frame = atlas->allocate(sz, d->data, d->indices);
- d->pending = true;
- }
- }
- if (!d->pending)
- d->thumbnailed = enable;
- }
-}
-
-bool ThumbnailableImage::isThumbnailed() const
-{
- bool result = false;
- if (d)
- {
- if (d->pending)
- {
- QList<QAtlasEntry> queue = QAtlas::instance()->allocationQueue();
- int i = 0;
- for ( ; i < queue.count(); ++i)
- if (d->frame == queue.at(i).rect)
- break;
- if (i == queue.count())
- {
- d->pending = false;
- d->thumbnailed = true;
- }
- }
- result = d->thumbnailed;
- }
- return result;
-}
-
-QImage ThumbnailableImage::data() const
-{
- QImage result;
- if (d)
- result = d->data;
- return result;
-}
-
-void ThumbnailableImage::setData(QImage data)
-{
- detach();
- d->data = data;
-}
-
-QUrl ThumbnailableImage::url() const
-{
- QUrl result;
- if (d)
- result = d->url;
- return result;
-}
-
-void ThumbnailableImage::setUrl(const QUrl &url)
-{
- detach();
- d->url = url;
-}
-
-QRectF ThumbnailableImage::frame() const
-{
- QRectF result;
- if (d)
- result = d->frame;
- return result;
-}
-
-qreal ThumbnailableImage::scale() const
-{
- qreal result = 0.0f;
- if (d)
- result = d->scale;
- return result;
-}
-
-void ThumbnailableImage::minimize()
-{
- if (!d)
- return;
- detach();
- if (!isMinimized())
- {
- if (d->thumbnailed)
- {
- // If thumbnailed, I don't really need the full size image
- d->data = QImage();
- }
- else
- {
- // If not thumbnailed, I don't need the atlas resources
- QAtlas *atlas = QAtlas::instance();
- atlas->release(d->frame);
- d->frame = QRect();
- }
- }
-}
-
-bool ThumbnailableImage::isMinimized() const
-{
- bool result = true;
- if (d)
- result = (d->thumbnailed) ? (d->data.isNull()) : (d->frame.isNull());
- return result;
-}
-
-void ThumbnailableImage::setIndices(const QGL::IndexArray &indices)
-{
- detach();
- d->indices = indices;
-}
-
-QGL::IndexArray ThumbnailableImage::indices() const
-{
- QGL::IndexArray result;
- if (d)
- result = d->indices;
- return result;
-}
-
-/*!
- \internal
- You know what this is for. No user serviceable parts below here.
-*/
-void ThumbnailableImage::detach()
-{
- if (!d) // lazy creation of data block
- {
- d = new ThumbnailableImagePrivate;
- d->ref.ref();
- }
- else
- {
- if (d->ref > 1) // being shared, must detach
- {
- ThumbnailableImagePrivate *temp = d->clone();
- d->ref.deref();
- d = temp;
- d->ref.ref();
- }
- }
-}
-
-#ifndef QT_NO_DEBUG_STREAM
-QDebug operator<<(QDebug dbg, const ThumbnailableImage &image)
-{
- dbg << "ThumbnailableImage" << image.url() << "size:" << image.data().size() <<
- "minimized:" << image.isMinimized() << "-- thumbnailed:" << image.isThumbnailed()
- << "-- null:" << image.isNull() << "-- image loaded:" << (!image.data().isNull())
- << "-- index count:" << image.indices().count();
- return dbg;
-}
-#endif
diff --git a/demos/qt3d/photobrowser3d/thumbnailableimage.h b/demos/qt3d/photobrowser3d/thumbnailableimage.h
deleted file mode 100644
index 2f5b5b98..00000000
--- a/demos/qt3d/photobrowser3d/thumbnailableimage.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef THUMBNAILABLEIMAGE_H
-#define THUMBNAILABLEIMAGE_H
-
-#include <QRectF>
-#include <QMetaType>
-
-#include "qarray.h"
-#include "qgeometrydata.h"
-
-QT_BEGIN_NAMESPACE
-class QImage;
-class QGLPainter;
-QT_END_NAMESPACE
-
-class ThumbnailableImagePrivate;
-
-class ThumbnailableImage
-{
-public:
- ThumbnailableImage();
- ThumbnailableImage(const ThumbnailableImage&);
- ~ThumbnailableImage();
-
- ThumbnailableImage &operator=(const ThumbnailableImage &);
-
- void setThumbnailed(bool enable);
- bool isThumbnailed() const;
-
- QImage data() const;
- void setData(QImage data);
-
- QUrl url() const;
- void setUrl(const QUrl &url);
-
- QRectF frame() const;
- qreal scale() const;
-
- void minimize();
- bool isMinimized() const;
-
- QGL::IndexArray indices() const;
- void setIndices(const QGL::IndexArray &indices);
-
- bool isNull() const { return d == 0; }
-
- ThumbnailableImagePrivate *priv() const { return d; } /// debug = remove me
-
-private:
- void detach();
-
- ThumbnailableImagePrivate *d;
-};
-
-Q_DECLARE_METATYPE(ThumbnailableImage);
-
-#ifndef QT_NO_DEBUG_STREAM
-QDebug operator<<(QDebug dbg, const ThumbnailableImage &image);
-#endif
-
-#endif // THUMBNAILABLEIMAGE_H
diff --git a/demos/qt3d/photobrowser3d/thumbnaileffect.cpp b/demos/qt3d/photobrowser3d/thumbnaileffect.cpp
deleted file mode 100644
index 927bf8b7..00000000
--- a/demos/qt3d/photobrowser3d/thumbnaileffect.cpp
+++ /dev/null
@@ -1,186 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "thumbnaileffect.h"
-
-#include <QtOpenGL/qglshaderprogram.h>
-
-class ThumbnailEffectPrivate
-{
-public:
- ThumbnailEffectPrivate()
- : program(0)
- , matrixUniform(-1)
- , thumbnailUniform(-1)
- , thumbnail(false)
- , thumbnailUpdateRequired(false)
- {
- }
- ~ThumbnailEffectPrivate() { delete program; }
-
- QGLShaderProgram *program;
- int matrixUniform;
- int thumbnailUniform;
- int colorUniform;
- int pickingUniform;
- // true if we render a thumbnail, false do the large size
- bool thumbnail;
- bool thumbnailUpdateRequired;
-};
-
-/*!
- Constructs a new flat texture effect.
-*/
-ThumbnailEffect::ThumbnailEffect()
- : d(new ThumbnailEffectPrivate)
-{
-}
-
-/*!
- Destroys this flat texture effect.
-*/
-ThumbnailEffect::~ThumbnailEffect()
-{
- delete d;
-}
-
-/*!
- \reimp
-*/
-QList<QGL::VertexAttribute> ThumbnailEffect::requiredFields() const
-{
- QList<QGL::VertexAttribute> fields;
- fields += QGL::Position;
- fields += QGL::TextureCoord0;
- fields += QGL::TextureCoord1;
- return fields;
-}
-
-/*!
- \reimp
-*/
-void ThumbnailEffect::setActive(QGLPainter *painter, bool flag)
-{
- Q_UNUSED(painter);
- if (!d->program) {
- if (!flag)
- return;
- d->program = new QGLShaderProgram();
- d->program->addShaderFromSourceFile(QGLShader::Vertex, ":/shaders/replace_texture.vsh");
- d->program->addShaderFromSourceFile(QGLShader::Fragment, ":/shaders/replace_texture.fsh");
- d->program->bindAttributeLocation("vertex", QGL::Position);
- d->program->bindAttributeLocation("texcoord", QGL::TextureCoord0);
- d->program->bindAttributeLocation("thumbcoord", QGL::TextureCoord1);
- if (!d->program->link()) {
- qWarning("ThumbnailEffect::setActive(): could not link shader d->program");
- delete d->program;
- d->program = 0;
- return;
- }
- d->matrixUniform = d->program->uniformLocation("matrix");
- d->thumbnailUniform = d->program->uniformLocation("thumb");
- d->colorUniform = d->program->uniformLocation("color");
- d->pickingUniform = d->program->uniformLocation("picking");
- d->program->bind();
- d->program->setUniformValue("texture", 0);
- d->program->enableAttributeArray(QGL::Position);
- d->program->enableAttributeArray(QGL::TextureCoord0);
- d->program->enableAttributeArray(QGL::TextureCoord1);
- } else if (flag) {
- d->matrixUniform = d->program->uniformLocation("matrix");
- d->program->bind();
- d->program->setUniformValue("texture", 0);
- d->program->enableAttributeArray(QGL::Position);
- d->program->enableAttributeArray(QGL::TextureCoord0);
- d->program->enableAttributeArray(QGL::TextureCoord1);
- } else {
- d->program->disableAttributeArray(QGL::Position);
- d->program->disableAttributeArray(QGL::TextureCoord0);
- d->program->disableAttributeArray(QGL::TextureCoord1);
- d->program->release();
- }
-}
-
-/*!
- \reimp
-*/
-void ThumbnailEffect::update
- (QGLPainter *painter, QGLPainter::Updates updates)
-{
- Q_ASSERT(d->program);
- if ((updates & QGLPainter::UpdateMatrices) != 0)
- {
- d->program->setUniformValue(d->matrixUniform,
- painter->combinedMatrix());
- }
- if ((updates & QGLPainter::UpdateColor) != 0) {
- d->program->setUniformValue(d->pickingUniform, painter->isPicking());
- if (painter->isPicking())
- d->program->setUniformValue(d->colorUniform, painter->pickColor());
- else
- d->program->setUniformValue(d->colorUniform, Qt::green);
- }
- if (d->thumbnailUpdateRequired)
- {
- d->program->setUniformValue(d->thumbnailUniform, d->thumbnail);
- d->thumbnailUpdateRequired = false;
- }
-}
-
-bool ThumbnailEffect::supportsPicking() const
-{
- return true;
-}
-
-
-void ThumbnailEffect::setThumbnail(bool enable)
-{
- if (d->thumbnail != enable)
- {
- d->thumbnailUpdateRequired = true;
- d->thumbnail = enable;
- }
-}
-
-bool ThumbnailEffect::thumbnail() const
-{
- return d->thumbnail;
-}
diff --git a/demos/qt3d/photobrowser3d/thumbnaileffect.h b/demos/qt3d/photobrowser3d/thumbnaileffect.h
deleted file mode 100644
index 488887de..00000000
--- a/demos/qt3d/photobrowser3d/thumbnaileffect.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QGLFLATTEXTUREEFFECT_H
-#define QGLFLATTEXTUREEFFECT_H
-
-#include "qglabstracteffect.h"
-#include <QtCore/qscopedpointer.h>
-
-class ThumbnailEffectPrivate;
-
-class ThumbnailEffect : public QGLAbstractEffect
-{
-public:
- ThumbnailEffect();
- virtual ~ThumbnailEffect();
-
- QList<QGL::VertexAttribute> requiredFields() const;
- void setActive(QGLPainter *painter, bool flag);
- void update(QGLPainter *painter, QGLPainter::Updates updates);
- bool supportsPicking() const;
-
- void setThumbnail(bool enable);
- bool thumbnail() const;
-
- QString name() const { return QLatin1String("ThumbnailEffect"); }
-
-private:
- ThumbnailEffectPrivate *d;
-};
-
-#endif
diff --git a/demos/qt3d/photobrowser3d/thumbnailnode.cpp b/demos/qt3d/photobrowser3d/thumbnailnode.cpp
deleted file mode 100644
index f80bec8c..00000000
--- a/demos/qt3d/photobrowser3d/thumbnailnode.cpp
+++ /dev/null
@@ -1,281 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "thumbnailnode.h"
-#include "qglpainter.h"
-#include "thumbnaileffect.h"
-#include "imagemanager.h"
-#include "qatlas.h"
-#include "qglrendersequencer.h"
-#include "qglpicknode.h"
-#include "qlogicalvertex.h"
-
-#include <QMatrix4x4>
-#include <QTimer>
-
-ThumbnailNode::ThumbnailNode(QObject *parent)
- : QGLSceneNode(parent)
- , m_thresholdSquared(20.0f * 20.0f)
- , m_defaultMaterial(-1)
- , m_loading(false)
- , m_full(0)
- , m_manager(0)
- , m_lastDistance(ThumbnailNode::Unknown)
-{
- setPalette(new QGLMaterialCollection(this));
-}
-
-ThumbnailNode::~ThumbnailNode()
-{
- delete m_full;
-}
-
-void ThumbnailNode::setUrl(const QUrl &url)
-{
- m_url = url;
- m_image = ThumbnailableImage();
- m_image.setUrl(m_url);
- QGL::IndexArray inxs = geometry().indices();
- m_image.setIndices(inxs.mid(start(), count()));
-}
-
-void ThumbnailNode::setupLoading()
-{
- if (!m_loading && !m_url.isEmpty() && m_image.data().isNull())
- {
- m_loading = true;
-#ifdef QT_NO_THREADED_FILE_LOAD
- ThumbnailableImage image;
- image.setUrl(m_url);
- QImage im(m_url.toLocalFile());
- if (im.isNull())
- qDebug() << "ThumbnailNode::setupLoading: could not load image:"
- << m_url.toLocalFile();
- if (im.size().width() > 1024 || im.size().height() > 768)
- im = im.scaled(QSize(1024, 768), Qt::KeepAspectRatio,
- Qt::SmoothTransformation);
- image.setData(im);
- setImage(image);
-#else
- if (m_manager)
- // reconnect the signal we disconnnected in setImage() below
- connect(m_manager, SIGNAL(imageReady(ThumbnailableImage)),
- this, SLOT(setImage(ThumbnailableImage)));
- emit imageRequired(m_image);
- setMaterialIndex(m_defaultMaterial);
-#endif
- }
-}
-
-void ThumbnailNode::createFullNode()
-{
- m_full = new QGLSceneNode;
- m_full->setPosition(position());
- m_full->setGeometry(geometry());
- m_full->setStart(start());
- m_full->setCount(count());
- m_full->setPalette(palette());
- m_full->setMaterialIndex(m_defaultMaterial);
-}
-
-void ThumbnailNode::destroyFullNode()
-{
- if (!m_full)
- return;
- QGLMaterial *mat = m_full->material();
- if (m_full->materialIndex() != m_defaultMaterial)
- m_full->palette()->removeMaterial(mat);
- delete m_full;
- m_full = 0;
-}
-
-void ThumbnailNode::loadFullImage()
-{
- if (!m_full)
- createFullNode();
- Q_CHECK_PTR(m_full);
- // if we have a valid image, and the full node still has the
- // default material, switch to a new material which displays
- // the full size image
- if (!m_image.data().isNull() &&
- m_full->materialIndex() == m_defaultMaterial)
- {
- QGLMaterial *mat = new QGLMaterial;
- QGLTexture2D *tex = new QGLTexture2D;
- tex->setImage(m_image.data());
- mat->setTexture(tex);
- mat->setObjectName(m_image.url().path());
- int ix = palette()->addMaterial(mat);
- m_full->setMaterialIndex(ix);
- mat->setParent(m_full);
- }
-}
-
-void ThumbnailNode::drawGeometry(QGLPainter *painter)
-{
- QGLSceneNode::drawGeometry(painter);
-}
-
-void ThumbnailNode::draw(QGLPainter *painter)
-{
- QGLSceneNode *p = qobject_cast<QGLSceneNode*>(parent());
- Q_ASSERT_X(p && p->userEffect() && (!hasEffect()),
- "ThumbnailNode::draw", "Should only inherit parents ThumbnailEffect");
-
- ThumbnailEffect *effect = static_cast<ThumbnailEffect*>(p->userEffect());
- Q_ASSERT_X(effect && effect->name() == QLatin1String("ThumbnailEffect"),
- "ThumbnailNode::draw", "Can only be drawn with custom ThumbnailEffect");
-
- if (m_defaultMaterial == -1)
- m_defaultMaterial = materialIndex();
-
- QMatrix4x4 m = painter->modelViewMatrix().top();
- QVector3D pos = m.map(position());
- qreal magSquared = pos.lengthSquared();
-
- Distance distance = Unknown;
-
- if (magSquared > (4.0f * m_thresholdSquared))
- distance = VeryFar;
- else if (magSquared > (2.0f * m_thresholdSquared))
- distance = Far;
- else if (magSquared > m_thresholdSquared)
- distance = Middle;
- else
- distance = Near;
-
- if (true) // distance != m_lastDistance)
- {
- m_lastDistance = distance;
- m_image.setThumbnailed(m_lastDistance > Near);
- switch (distance)
- {
- case Unknown:
- case Near:
- setupLoading();
- loadFullImage();
- break;
- case Middle:
- setupLoading();
- loadFullImage();
- break;
- case Far:
- setupLoading();
- break;
- case VeryFar:
- destroyFullNode();
- break;
- }
- }
-
- effect->setThumbnail(m_image.isThumbnailed());
- if (m_image.isThumbnailed() || !m_full)
- {
- QGLSceneNode::draw(painter);
- }
- else
- {
- if (m_image.data().isNull())
- m_full->setMaterialIndex(m_defaultMaterial);
- if (pickNode() && painter->isPicking())
- painter->setObjectPickId(pickNode()->id());
- m_full->draw(painter);
- }
-
-}
-
-void ThumbnailNode::setImage(const ThumbnailableImage &image)
-{
- Q_ASSERT(QThread::currentThread() == thread());
- Q_ASSERT(!image.isNull());
-
- // the manager will be (potentially) loading a number of images, but
- // we only want our one, so just check this is our order
- if (m_url != image.url())
- return;
-
- // ok we got the right one, stop listening to the manager
- if (sender())
- {
- m_manager = sender();
- m_manager->disconnect(this, SLOT(setImage(ThumbnailableImage)));
- }
-
- // ok maybe we got what we asked for but in the meantime we decided
- // we did not want it anymore
- if (!m_loading)
- return;
-
- // the indices we are about to set will index this thumbnail image
- // into the image that its atlas is based on via the texture coords
- // that the atlas is using - those texture coords must be in the
- // same geometry that this node is referencing, so that they will
- // arrive at the vertex shader at the same time - ie they are all
- // matched in the data arrays in the geometry object
- //Q_ASSERT(QAtlas::instance()->geometry() == geometry());
-
- m_image = image;
- Q_ASSERT(!m_image.data().isNull());
-
- // configure the placeholder for the actual image size
- // this makes a photo of 1024 x 768 display on approx 3.0 x 2.8 pane
- // add salt to taste
- //QSizeF f = QSizeF(m_image.data().size()) / 600.0f;
- QSizeF f = QSizeF(m_image.data().size());
- f.scale(1.6, 1.2, Qt::KeepAspectRatio);
- QVector3D a(-f.width(), -f.height(), 0.0f);
- QVector3D b(f.width(), -f.height(), 0.0f);
- QVector3D c(f.width(), f.height(), 0.0f);
- QVector3D d(-f.width(), f.height(), 0.0f);
- int k = start();
- Q_ASSERT(count() == 6);
- QGeometryData g = geometry();
- QGL::IndexArray inxs = g.indices();
- g.vertex(inxs.at(k)) = a;
- g.vertex(inxs.at(k+1)) = b;
- g.vertex(inxs.at(k+2)) = c;
- g.vertex(inxs.at(k+5)) = d;
-
- setMaterialIndex(-1);
- m_loading = false;
-
- emit nodeChanged();
-}
diff --git a/demos/qt3d/photobrowser3d/thumbnailnode.h b/demos/qt3d/photobrowser3d/thumbnailnode.h
deleted file mode 100644
index c05da591..00000000
--- a/demos/qt3d/photobrowser3d/thumbnailnode.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef THUMBNAILNODE_H
-#define THUMBNAILNODE_H
-
-#include "qglscenenode.h"
-#include "thumbnailableimage.h"
-
-#include <QtCore/qmath.h>
-#include <QUrl>
-
-class ThumbnailNode : public QGLSceneNode
-{
- Q_OBJECT
-public:
- enum Distance
- {
- Unknown,
- Near,
- Middle,
- Far,
- VeryFar
- };
-
- explicit ThumbnailNode(QObject *parent = 0);
- ~ThumbnailNode();
- QUrl url() const { return m_url; }
- void setUrl(const QUrl &url);
- void setThreshold(qreal threshold) { m_thresholdSquared = threshold * threshold; }
- qreal threshold() const { return qSqrt(m_thresholdSquared); }
- void draw(QGLPainter *painter);
- void drawGeometry(QGLPainter *painter);
- ThumbnailableImage image() const { return m_image; }
-signals:
- void imageRequired(const ThumbnailableImage &);
- void nodeChanged();
-public slots:
- void setImage(const ThumbnailableImage &image);
-private:
- void createFullNode();
- void destroyFullNode();
- void setupLoading();
- void setupThumbnailing();
- void loadFullImage();
-
- ThumbnailableImage m_image;
- qreal m_thresholdSquared;
- int m_defaultMaterial;
- QUrl m_url;
- bool m_loading;
- QGLSceneNode *m_full;
- QSizeF m_max;
- QObject *m_manager;
- Distance m_lastDistance;
-};
-
-#endif // THUMBNAILNODE_H
diff --git a/demos/qt3d/qt3d.pro b/demos/qt3d/qt3d.pro
deleted file mode 100644
index 90e858a3..00000000
--- a/demos/qt3d/qt3d.pro
+++ /dev/null
@@ -1,2 +0,0 @@
-TEMPLATE = subdirs
-SUBDIRS = teaservice shapes pageflip cubehouse photobrowser3d
diff --git a/demos/qt3d/qt3d.svg b/demos/qt3d/qt3d.svg
deleted file mode 100644
index 4b25ec50..00000000
--- a/demos/qt3d/qt3d.svg
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0"?>
-<!-- Converted with SVG Converter - Version 0.9.5 (Compiled Mon May 30 09:08:51 2011) - Copyright (C) 2011 Nokia -->
-<svg xmlns="http://www.w3.org/2000/svg" width="287" version="1.1" height="286" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="tiny" id="svg2">
- <defs id="defs4">
- <linearGradient id="linearGradient4309">
- <stop offset="0" style="stop-color:#d4f301;stop-opacity:1;" id="stop4311"/>
- <stop offset="1" style="stop-color:#d4f301;stop-opacity:0;" id="stop4313"/>
- </linearGradient>
- <linearGradient gradientTransform="matrix(1.0104795,0,0,1.004441,23.387309,76.758859)" id="linearGradient3730-2" y1="131.35715" y2="156.39526" x1="23.626827" gradientUnits="userSpaceOnUse" x2="303.57144">
- <stop offset="0" style="stop-color:#038d30;stop-opacity:1;" id="stop3726-7"/>
- <stop offset="1" style="stop-color:#038d30;stop-opacity:0;" id="stop3728-1"/>
- </linearGradient>
- <linearGradient id="linearGradient3724-7">
- <stop offset="0" style="stop-color:#038d30;stop-opacity:1;" id="stop3726-7"/>
- <stop offset="1" style="stop-color:#038d30;stop-opacity:0;" id="stop3728-1"/>
- </linearGradient>
- <linearGradient id="linearGradient4315" y1="62.920685" y2="62.920685" x1="72.492188" gradientUnits="userSpaceOnUse" x2="165.83203">
- <stop offset="0" style="stop-color:#d4f301;stop-opacity:1;" id="stop4311"/>
- <stop offset="1" style="stop-color:#d4f301;stop-opacity:0;" id="stop4313"/>
- </linearGradient>
- </defs>
- <metadata id="metadata7"/>
- <g id="layer1" transform="translate(-25.071424,-77.933617)">
- <path style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#d4f301;stroke-width:8.85648727;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" id="path3722" d="M 149.39285,339.37194 C 118.29002,338.06386 93.410274,329.21846 78.267585,314.08502 66.239667,302.06444 58.159936,285.11057 54.818135,264.88047 c -1.962614,-11.881 -2.442596,-20.11519 -2.455216,-42.1199 -0.01051,-18.36712 0.160997,-23.0644 1.239861,-33.95521 2.529982,-25.53941 11.482605,-46.43472 25.677112,-59.93007 16.042727,-15.25252 39.462148,-23.21337 72.203768,-24.54383 6.77105,-0.27512 31.97542,0.38686 41.46813,1.08915 17.85829,1.32123 29.86273,4.01251 41.92069,9.39824 16.71724,7.46685 28.60768,18.52238 36.44553,33.88638 5.7477,11.26691 9.34961,23.29707 11.69339,39.05536 2.22754,14.97664 2.81073,44.00559 1.22086,60.77114 -2.76934,29.20404 -10.704,50.36949 -24.19378,64.53629 -8.65346,9.08774 -21.29946,16.39504 -35.37578,20.44137 -13.11053,3.76868 -25.14568,5.0858 -52.44498,5.73944 -13.81368,0.33078 -17.4242,0.35023 -22.82487,0.12311 l 0,0 z"/>
- <rect width="236.93414" x="49.282932" y="102.78797" rx="95.84404" ry="92.255867" height="239.43414" style="opacity:0;fill:none;stroke:#008000;stroke-width:3.29858350999999980;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" id="rect2852"/>
- <rect width="175" x="28.571428" y="19.214285" rx="95.84404" ry="92.255867" height="206.07143" style="opacity:0;fill:#b94b4b;fill-opacity:1;stroke:#05d105;stroke-width:4.147;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" id="rect3704" transform="translate(25.071424,77.933617)"/>
- <image width="172.71428" x="86.571419" y="214.50505" height="93.14286" xlink:href="data:image/png;base64,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 " id="image3149"/>
- <image width="156.57143" x="89.857132" y="140.67836" height="65.897751" id="image3075" xlink:href="data:image/png;base64,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 "/>
- <rect width="285.97864" x="26.028843" y="78.512794" rx="0" height="284.96848" ry="0" style="fill:#000000;fill-opacity:1;stroke:none;opacity:0" id="rect2995"/>
- </g>
- <g id="layer2"/>
-</svg>
diff --git a/demos/qt3d/shapes/qt3d.ico b/demos/qt3d/shapes/qt3d.ico
deleted file mode 100644
index e6442baf..00000000
--- a/demos/qt3d/shapes/qt3d.ico
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/shapes/qt3d.png b/demos/qt3d/shapes/qt3d.png
deleted file mode 100644
index 21ec0176..00000000
--- a/demos/qt3d/shapes/qt3d.png
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/shapes/shapes.cpp b/demos/qt3d/shapes/shapes.cpp
deleted file mode 100644
index 7871d2e2..00000000
--- a/demos/qt3d/shapes/shapes.cpp
+++ /dev/null
@@ -1,430 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "qglpainter.h"
-#include "qglbuilder.h"
-#include "qglcube.h"
-#include "qglteapot.h"
-#include "qglcamera.h"
-#include "qgltexture2d.h"
-#include "qglsubsurface.h"
-#include <QApplication>
-#include <QImage>
-#include <QPainter>
-#include <QDebug>
-
-class ShapesWidget : public QGLWidget
-{
- Q_OBJECT
-public:
- ShapesWidget(QWidget *parent = 0);
- ~ShapesWidget();
-
-protected:
- void initializeGL();
- void paintGL();
-
-private:
- void paintPoints(QGLPainter *painter, const QRect& rect);
- void paintLines(QGLPainter *painter, const QRect& rect);
- void paintLineStrip(QGLPainter *painter, const QRect& rect);
- void paintLineLoop(QGLPainter *painter, const QRect& rect);
- void paintTriangles(QGLPainter *painter, const QRect& rect);
- void paintTriangleStrip(QGLPainter *painter, const QRect& rect);
- void paintTriangleFan(QGLPainter *painter, const QRect& rect);
- void paintCube(QGLPainter *painter, const QRect& rect);
- void paintTeapot(QGLPainter *painter, const QRect& rect);
- void drawText(QGLPainter *painter, const QRect& posn, const QString& str);
-
- static QVector2DArray basicPoints(const QRect& rect);
-
- QGLCamera camera;
- QGLSceneNode *scene;
- QGLSceneNode *cube;
- QGLSceneNode *teapot;
- QGLLightModel oneSidedModel;
- QGLLightModel twoSidedModel;
-};
-
-ShapesWidget::ShapesWidget(QWidget *parent)
- : QGLWidget(parent)
-{
- setWindowTitle(tr("GL Primitive Shapes"));
- oneSidedModel.setModel(QGLLightModel::OneSided);
- twoSidedModel.setModel(QGLLightModel::TwoSided);
-}
-
-ShapesWidget::~ShapesWidget()
-{
- delete scene;
-}
-
-void ShapesWidget::initializeGL()
-{
- QGLPainter painter(this);
-
- painter.setLightModel(&twoSidedModel);
- painter.setFaceColor(QGL::FrontFaces, QColor(170, 202, 0));
- painter.setFaceColor(QGL::BackFaces, QColor(202, 170, 0));
-
- QGLBuilder builder;
- builder << QGL::Faceted << QGLCube();
- cube = builder.currentNode();
- builder << QGL::Smooth << QGLTeapot();
- teapot = builder.currentNode();
- scene = builder.finalizedSceneNode();
-}
-
-void ShapesWidget::paintGL()
-{
- QGLPainter painter(this);
-
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- glDisable(GL_DEPTH_TEST);
-
- QMatrix4x4 projm;
- projm.ortho(rect());
- painter.projectionMatrix() = projm;
- painter.modelViewMatrix().setToIdentity();
-
- QRect wrect = rect();
- int boxw = wrect.width() / 3;
- int boxh = wrect.height() / 3;
-
- paintLines(&painter, QRect(0, 0, boxw, boxh));
- paintLineStrip(&painter, QRect(boxw, 0, boxw, boxh));
- paintLineLoop(&painter, QRect(boxw * 2, 0, boxw, boxh));
- paintTriangles(&painter, QRect(0, boxh, boxw, boxh));
- paintTriangleStrip(&painter, QRect(boxw, boxh, boxw, boxh));
- paintTriangleFan(&painter, QRect(boxw * 2, boxh, boxw, boxh));
- paintPoints(&painter, QRect(0, boxh * 2, boxw, boxh));
-
- glEnable(GL_DEPTH_TEST);
-
- paintCube(&painter, QRect(boxw, boxh * 2, boxw, boxh));
- paintTeapot(&painter, QRect(boxw * 2, boxh * 2, boxw, boxh));
-}
-
-QVector2DArray ShapesWidget::basicPoints(const QRect& rect)
-{
- QVector2DArray vertices;
- int step = qMin(rect.width() / 6, rect.height() / 6);
- int midx = rect.x() + rect.width() / 2;
- int midy = rect.y() + rect.height() / 2;
- vertices.append(midx - step * 2, midy - step);
- vertices.append(midx + step, midy - step * 2);
- vertices.append(midx, midy - step);
- vertices.append(midx + step * 2 + step / 2, midy - step / 2);
- vertices.append(midx - step, midy);
- vertices.append(midx + step * 2, midy + step);
- vertices.append(midx - step, midy + step);
- vertices.append(midx + step * 2, midy);
- return vertices;
-}
-
-void ShapesWidget::paintPoints(QGLPainter *painter, const QRect& rect)
-{
- painter->setStandardEffect(QGL::FlatColor);
- painter->setColor(QColor(170, 202, 0));
-
- painter->clearAttributes();
- painter->setVertexAttribute(QGL::Position, basicPoints(rect));
- painter->draw(QGL::Points, 8);
-
- drawText(painter, rect, tr("Points"));
-}
-
-void ShapesWidget::paintLines(QGLPainter *painter, const QRect& rect)
-{
- painter->clearAttributes();
- painter->setVertexAttribute(QGL::Position, basicPoints(rect));
- painter->draw(QGL::Lines, 8);
-
- drawText(painter, rect, tr("Lines"));
-}
-
-void ShapesWidget::paintLineStrip(QGLPainter *painter, const QRect& rect)
-{
- painter->clearAttributes();
- painter->setVertexAttribute(QGL::Position, basicPoints(rect));
- painter->draw(QGL::LineStrip, 8);
-
- drawText(painter, rect, tr("Line strip"));
-}
-
-void ShapesWidget::paintLineLoop(QGLPainter *painter, const QRect& rect)
-{
- painter->clearAttributes();
- painter->setVertexAttribute(QGL::Position, basicPoints(rect));
- painter->draw(QGL::LineLoop, 8);
-
- drawText(painter, rect, tr("Line loop"));
-}
-
-void ShapesWidget::paintTriangles(QGLPainter *painter, const QRect& rect)
-{
- painter->setStandardEffect(QGL::LitMaterial);
-
- QVector2DArray vertices;
- QVector3DArray normals;
- int step = qMin(rect.width() / 8, rect.height() / 8);
- int midx = rect.x() + rect.width() / 2;
- int midy = rect.y() + rect.height() / 2;
-
- vertices.append(midx - step * 3, midy);
- vertices.append(midx - step * 3, midy + step * 2);
- vertices.append(midx - step, midy + step * 2);
-
- normals.append(0.0f, 0.0f, 1.0f);
- normals.append(0.0f, 0.0f, 1.0f);
- normals.append(0.0f, 0.0f, 1.0f);
-
- vertices.append(midx - step * 2, midy - step);
- vertices.append(midx + step / 2, midy + step * 2);
- vertices.append(midx + step * 3, midy - step);
-
- normals.append(0.0f, 0.0f, 1.0f);
- normals.append(0.0f, 0.0f, 1.0f);
- normals.append(0.0f, 0.0f, 1.0f);
-
- painter->clearAttributes();
- painter->setVertexAttribute(QGL::Position, vertices);
- painter->setVertexAttribute(QGL::Normal, normals);
- painter->draw(QGL::Triangles, 6);
-
- drawText(painter, rect, tr("Triangles"));
-}
-
-void ShapesWidget::paintTriangleStrip(QGLPainter *painter, const QRect& rect)
-{
- painter->setStandardEffect(QGL::LitMaterial);
-
- QVector2DArray vertices;
- QVector3DArray normals;
- int step = qMin(rect.width() / 8, rect.height() / 8);
- int midx = rect.x() + rect.width() / 2;
- int midy = rect.y() + rect.height() / 2;
-
- vertices.append(midx - step * 3, midy - step * 2);
- vertices.append(midx - step * 3, midy + step);
- vertices.append(midx - step, midy - step * 2);
- vertices.append(midx, midy + step);
- vertices.append(midx + step, midy - step * 2);
- vertices.append(midx + step * 2, midy + step * 2);
-
- normals.append(0.0f, 0.0f, 1.0f);
- normals.append(0.0f, 0.0f, 1.0f);
- normals.append(0.0f, 0.0f, 1.0f);
- normals.append(0.0f, 0.0f, 1.0f);
- normals.append(0.0f, 0.0f, 1.0f);
- normals.append(0.0f, 0.0f, 1.0f);
-
- painter->clearAttributes();
- painter->setVertexAttribute(QGL::Position, vertices);
- painter->setVertexAttribute(QGL::Normal, normals);
- painter->draw(QGL::TriangleStrip, 6);
-
- // Overpaint some lines to show the triangle boundaries.
- painter->clearAttributes();
- painter->setStandardEffect(QGL::FlatColor);
- painter->setColor(QColor(202, 170, 0));
- painter->setVertexAttribute(QGL::Position, vertices);
- painter->draw(QGL::LineStrip, 4, 1);
-
- drawText(painter, rect, tr("Triangle strip"));
-}
-
-void ShapesWidget::paintTriangleFan(QGLPainter *painter, const QRect& rect)
-{
- painter->setStandardEffect(QGL::LitMaterial);
-
- QVector2DArray vertices;
- QVector3DArray normals;
- int step = qMin(rect.width() / 8, rect.height() / 8);
- int midx = rect.x() + rect.width() / 2;
- int midy = rect.y() + rect.height() / 2;
-
- vertices.append(midx - step, midy + step);
- vertices.append(midx + step * 2, midy + step * 2);
- vertices.append(midx + step * 2, midy);
- vertices.append(midx + step, midy - step);
- vertices.append(midx - step, midy - step * 2);
-
- normals.append(0.0f, 0.0f, 1.0f);
- normals.append(0.0f, 0.0f, 1.0f);
- normals.append(0.0f, 0.0f, 1.0f);
- normals.append(0.0f, 0.0f, 1.0f);
- normals.append(0.0f, 0.0f, 1.0f);
-
- painter->clearAttributes();
- painter->setVertexAttribute(QGL::Position, vertices);
- painter->setVertexAttribute(QGL::Normal, normals);
- painter->draw(QGL::TriangleFan, 5);
-
- // Overpaint some lines to show the triangle boundaries.
- painter->clearAttributes();
- painter->setStandardEffect(QGL::FlatColor);
- painter->setColor(QColor(202, 170, 0));
- static ushort const indices[] = {0, 2, 0, 3};
- painter->setVertexAttribute(QGL::Position, vertices);
- painter->draw(QGL::Lines, indices, 4);
-
- drawText(painter, rect, tr("Triangle fan"));
-}
-
-void ShapesWidget::paintCube(QGLPainter *painter, const QRect& rect)
-{
- painter->setStandardEffect(QGL::LitMaterial);
-
- painter->projectionMatrix().push();
- painter->modelViewMatrix().push();
-
- QGLSubsurface surface(painter->currentSurface(), rect);
- painter->pushSurface(&surface);
-
- painter->setCamera(&camera);
- painter->modelViewMatrix().rotate(45.0f, 1.0f, 1.0f, 1.0f);
-
- cube->draw(painter);
-
- painter->projectionMatrix().pop();
- painter->modelViewMatrix().pop();
-
- painter->popSurface();
-
- drawText(painter, rect, tr("Cube"));
-}
-
-void ShapesWidget::paintTeapot(QGLPainter *painter, const QRect& rect)
-{
- painter->setStandardEffect(QGL::LitMaterial);
-
- painter->projectionMatrix().push();
- painter->modelViewMatrix().push();
-
- QGLSubsurface surface(painter->currentSurface(), rect);
- painter->pushSurface(&surface);
-
- painter->setCamera(&camera);
-
- // Need a one-sided lighting model for the teapot.
- painter->setLightModel(&oneSidedModel);
-
- teapot->draw(painter);
-
- painter->setLightModel(&twoSidedModel);
-
- painter->projectionMatrix().pop();
- painter->modelViewMatrix().pop();
-
- painter->popSurface();
-
- drawText(painter, rect, tr("Teapot"));
-}
-
-// Draw text centered on the bottom of the "posn" rectangle.
-void ShapesWidget::drawText
- (QGLPainter *painter, const QRect& posn, const QString& str)
-{
- QFontMetrics metrics = fontMetrics();
- QRect rect = metrics.boundingRect(str);
- rect.adjust(0, 0, 1, 1);
-
- QFont f = font();
-
- QImage image(rect.size(), QImage::Format_ARGB32);
- image.fill(0);
- QPainter p2(&image);
- p2.setFont(f);
- p2.setPen(Qt::white);
- p2.drawText(-rect.x(), metrics.ascent(), str);
- p2.end();
-
- QGLTexture2D texture;
- texture.setImage(image);
-
- int x = posn.x() + (posn.width() - rect.width()) / 2;
- int y = posn.y() + posn.height() - metrics.ascent() - metrics.descent();
- y -= 10;
-
- QVector2DArray vertices;
- vertices.append(x + rect.x(), y + metrics.ascent());
- vertices.append(x + rect.x(), y - metrics.descent());
- vertices.append(x + rect.x() + rect.width(), y - metrics.descent());
- vertices.append(x + rect.x() + rect.width(), y + metrics.ascent());
-
- QVector2DArray texCoord;
- texCoord.append(0.0f, 0.0f);
- texCoord.append(0.0f, 1.0f);
- texCoord.append(1.0f, 1.0f);
- texCoord.append(1.0f, 0.0f);
-
- painter->clearAttributes();
- painter->setStandardEffect(QGL::FlatReplaceTexture2D);
- texture.bind();
- painter->setVertexAttribute(QGL::Position, vertices);
- painter->setVertexAttribute(QGL::TextureCoord0, texCoord);
- painter->draw(QGL::TriangleFan, 4);
- painter->setStandardEffect(QGL::FlatColor);
- glBindTexture(GL_TEXTURE_2D, 0);
-}
-
-int main(int argc, char *argv[])
-{
- QApplication app(argc, argv);
- ShapesWidget w;
-
-#ifdef Q_OS_SYMBIAN
- w.setAttribute(Qt::WA_LockLandscapeOrientation, true);
- w.showFullScreen();
-#else
- if (QApplication::arguments().contains(QLatin1String("-maximize")))
- w.showMaximized();
- else if (QApplication::arguments().contains(QLatin1String("-fullscreen")))
- w.showFullScreen();
- else
- w.show();
-#endif
- return app.exec();
-}
-
-#include "shapes.moc"
diff --git a/demos/qt3d/shapes/shapes.desktop b/demos/qt3d/shapes/shapes.desktop
deleted file mode 100644
index 9880fbfb..00000000
--- a/demos/qt3d/shapes/shapes.desktop
+++ /dev/null
@@ -1,7 +0,0 @@
-[Desktop Entry]
-Type=Application
-Name=shapes
-Icon=/usr/share/icons/hicolor/80x80/apps/qt3d.png
-Exec=/usr/bin/invoker --type=e -s /usr/bin/shapes -fullscreen
-OnlyShowIn=X-MeeGo;
-X-MeeGo-Logical-Id=qtn_comm_appname_shapes
diff --git a/demos/qt3d/shapes/shapes.pro b/demos/qt3d/shapes/shapes.pro
deleted file mode 100644
index 3d6be070..00000000
--- a/demos/qt3d/shapes/shapes.pro
+++ /dev/null
@@ -1,14 +0,0 @@
-TEMPLATE = app
-TARGET = shapes
-CONFIG += qt warn_on
-
-CONFIG += qt3d_deploy_pkg
-include(../../../pkg.pri)
-
-SOURCES = shapes.cpp
-
-OTHER_FILES += \
- shapes.rc \
- shapes.desktop
-
-RC_FILE = shapes.rc
diff --git a/demos/qt3d/shapes/shapes.rc b/demos/qt3d/shapes/shapes.rc
deleted file mode 100644
index b40ecdc1..00000000
--- a/demos/qt3d/shapes/shapes.rc
+++ /dev/null
@@ -1 +0,0 @@
-IDI_ICON1 ICON DISCARDABLE "qt3d.ico"
diff --git a/demos/qt3d/teaservice/README b/demos/qt3d/teaservice/README
deleted file mode 100644
index d7d71a61..00000000
--- a/demos/qt3d/teaservice/README
+++ /dev/null
@@ -1,7 +0,0 @@
-
-This example demonstrates a view with multiple scene objects, plus material
-parameters. It shows a teapot, two teacups, and two teaspoons.
-
-The model source data came from "http://www.sjbaker.org/teapot/teaset.tgz".
-
-Note: the teacups have no bottoms in the original source data.
diff --git a/demos/qt3d/teaservice/meshobject.cpp b/demos/qt3d/teaservice/meshobject.cpp
deleted file mode 100644
index f2ef5242..00000000
--- a/demos/qt3d/teaservice/meshobject.cpp
+++ /dev/null
@@ -1,155 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "meshobject.h"
-#include "qglview.h"
-
-MeshObject::MeshObject(QGLSceneNode *meshObject, QObject *parent)
- : QObject(parent)
-{
- m_mesh = 0;
- m_meshObject = meshObject;
- m_scale = 1.0f;
- m_rotationAngle = 0.0f;
- m_effect = 0;
- m_objectId = -1;
- m_hovering = false;
- m_material = 0;
- m_hoverMaterial = 0;
-}
-
-MeshObject::MeshObject(QGLAbstractScene *scene, QObject *parent)
- : QObject(parent)
-{
- scene->setParent(this);
- m_mesh = 0;
- m_meshObject = scene->mainNode();
- m_scale = 1.0f;
- m_rotationAngle = 0.0f;
- m_effect = 0;
- m_objectId = -1;
- m_hovering = false;
- m_material = 0;
- m_hoverMaterial = 0;
-}
-
-MeshObject::~MeshObject()
-{
- delete m_mesh;
-}
-
-void MeshObject::initialize(QGLView *view, QGLPainter *painter)
-{
- Q_UNUSED(painter);
- if (m_objectId != -1)
- view->registerObject(m_objectId, this);
-}
-
-void MeshObject::draw(QGLPainter *painter)
-{
- // Position the model at its designated position, scale, and orientation.
- painter->modelViewMatrix().push();
- painter->modelViewMatrix().translate(m_position);
- if (m_scale != 1.0f)
- painter->modelViewMatrix().scale(m_scale);
- if (m_rotationAngle != 0.0f)
- painter->modelViewMatrix().rotate(m_rotationAngle, m_rotationVector);
-
- // Apply the material and effect to the painter.
- QGLMaterial *material;
- if (m_hovering)
- material = m_hoverMaterial;
- else
- material = m_material;
- painter->setColor(material->diffuseColor());
- painter->setFaceMaterial(QGL::AllFaces, material);
- if (m_effect)
- painter->setUserEffect(m_effect);
- else
- painter->setStandardEffect(QGL::LitMaterial);
-
- // Mark the object for object picking purposes.
- int prevObjectId = painter->objectPickId();
- if (m_objectId != -1)
- painter->setObjectPickId(m_objectId);
-
- // Draw the geometry mesh.
- if (m_meshObject)
- m_meshObject->draw(painter);
- else
- m_mesh->draw(painter);
-
- // Turn off the user effect, if present.
- if (m_effect)
- painter->setStandardEffect(QGL::LitMaterial);
-
- // Revert to the previous object identifier.
- painter->setObjectPickId(prevObjectId);
-
- // Restore the modelview matrix.
- painter->modelViewMatrix().pop();
-}
-
-bool MeshObject::event(QEvent *e)
-{
- // Convert the raw event into a signal representing the user's action.
- if (e->type() == QEvent::MouseButtonPress) {
- QMouseEvent *me = (QMouseEvent *)e;
- if (me->button() == Qt::LeftButton)
- emit pressed();
- } else if (e->type() == QEvent::MouseButtonRelease) {
- QMouseEvent *me = (QMouseEvent *)e;
- if (me->button() == Qt::LeftButton) {
- emit released();
- if (me->x() >= 0) // Positive: inside object, Negative: outside.
- emit clicked();
- }
- } else if (e->type() == QEvent::MouseButtonDblClick) {
- emit doubleClicked();
- } else if (e->type() == QEvent::Enter) {
- m_hovering = true;
- emit hoverChanged();
- } else if (e->type() == QEvent::Leave) {
- m_hovering = false;
- emit hoverChanged();
- }
- return QObject::event(e);
-}
diff --git a/demos/qt3d/teaservice/meshobject.h b/demos/qt3d/teaservice/meshobject.h
deleted file mode 100644
index 15b62f05..00000000
--- a/demos/qt3d/teaservice/meshobject.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef MESHOBJECT_H
-#define MESHOBJECT_H
-
-#include <QtCore/qobject.h>
-#include <QtGui/qevent.h>
-
-#include "qglpainter.h"
-#include "qglabstractscene.h"
-
-QT_BEGIN_NAMESPACE
-class QGLView;
-class QGLSceneNode;
-QT_END_NAMESPACE
-
-class MeshObject : public QObject
-{
- Q_OBJECT
-public:
- explicit MeshObject(QGLSceneNode *meshObject, QObject *parent=0);
- explicit MeshObject(QGLAbstractScene *scene, QObject *parent=0);
- virtual ~MeshObject();
-
- QVector3D position() const { return m_position; }
- void setPosition(const QVector3D& value) { m_position = value; }
-
- qreal scale() const { return m_scale; }
- void setScale(qreal value) { m_scale = value; }
-
- qreal rotationAngle() const { return m_rotationAngle; }
- void setRotationAngle(qreal value) { m_rotationAngle = value; }
-
- QVector3D rotationVector() const { return m_rotationVector; }
- void setRotationVector(const QVector3D& value) { m_rotationVector = value; }
-
- QGLMaterial *material() const { return m_material; }
- void setMaterial(QGLMaterial *value)
- { m_material = value; m_hoverMaterial = value; }
-
- QGLMaterial *hoverMaterial() const { return m_hoverMaterial; }
- void setHoverMaterial(QGLMaterial *value) { m_hoverMaterial = value; }
-
- QGLAbstractEffect *effect() const { return m_effect; }
- void setEffect(QGLAbstractEffect *value) { m_effect = value; }
-
- int objectId() const { return m_objectId; }
- void setObjectId(int id) { m_objectId = id; }
-
- void initialize(QGLView *view, QGLPainter *painter);
- void draw(QGLPainter *painter);
-
-signals:
- void pressed();
- void released();
- void clicked();
- void doubleClicked();
- void hoverChanged();
-
-protected:
- bool event(QEvent *e);
-
-private:
- QGLSceneNode *m_mesh;
- QGLSceneNode *m_meshObject;
- QGLAbstractScene *m_scene;
- QVector3D m_position;
- qreal m_scale;
- qreal m_rotationAngle;
- QVector3D m_rotationVector;
- QGLMaterial *m_material;
- QGLMaterial *m_hoverMaterial;
- QGLAbstractEffect *m_effect;
- int m_objectId;
- bool m_hovering;
-};
-
-#endif
diff --git a/demos/qt3d/teaservice/per_pixel_lighting.fsh b/demos/qt3d/teaservice/per_pixel_lighting.fsh
deleted file mode 100644
index d97a0461..00000000
--- a/demos/qt3d/teaservice/per_pixel_lighting.fsh
+++ /dev/null
@@ -1,112 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-// Per-pixel lighting - fragment shader side.
-
-struct qt_MaterialParameters {
- mediump vec4 emission;
- mediump vec4 ambient;
- mediump vec4 diffuse;
- mediump vec4 specular;
- mediump float shininess;
-};
-uniform qt_MaterialParameters qt_Material;
-
-struct qt_SingleLightParameters {
- mediump vec4 position;
- mediump vec3 spotDirection;
- mediump float spotExponent;
- mediump float spotCutoff;
- mediump float spotCosCutoff;
- mediump float constantAttenuation;
- mediump float linearAttenuation;
- mediump float quadraticAttenuation;
-};
-uniform qt_SingleLightParameters qt_Light;
-
-varying mediump vec3 qNormal;
-varying mediump vec3 qLightDirection;
-varying mediump vec3 qHalfVector;
-varying mediump vec3 qVertexToLight;
-varying mediump vec4 qAmbient;
-varying mediump vec4 qDiffuse;
-
-vec4 qLightPixel(vec4 ambient, vec4 diffuse)
-{
- float angle, spot;
- vec4 color;
- vec4 component;
- vec3 normal = normalize(qNormal);
-
- // Start with the ambient color.
- color = ambient;
-
- // Determine the cosine of the angle between the normal and the
- // vector from the vertex to the light.
- angle = max(dot(normal, qLightDirection), 0.0);
-
- // Calculate the diffuse light components.
- component = angle * diffuse;
-
- // Calculate the specular light components.
- if (angle != 0.0) {
- angle = max(dot(normal, qHalfVector), 0.0);
- component += pow(angle, qt_Material.shininess) * qt_Material.specular;
- }
-
- // Apply the spotlight angle and exponent.
- if (qt_Light.spotCutoff != 180.0) {
- spot = max(dot(normalize(qVertexToLight),
- normalize(qt_Light.spotDirection)), 0.0);
- if (spot < qt_Light.spotCosCutoff)
- spot = 0.0;
- else
- spot = pow(spot, qt_Light.spotExponent);
- component *= spot;
- }
-
- return clamp(color + component, 0.0, 1.0);
-}
-
-void main(void)
-{
- gl_FragColor = qLightPixel(qAmbient, qDiffuse);
-}
diff --git a/demos/qt3d/teaservice/per_pixel_lighting.vsh b/demos/qt3d/teaservice/per_pixel_lighting.vsh
deleted file mode 100644
index d5157840..00000000
--- a/demos/qt3d/teaservice/per_pixel_lighting.vsh
+++ /dev/null
@@ -1,96 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-// Per-pixel lighting - vertex shader side.
-
-attribute highp vec4 qt_Vertex;
-attribute mediump vec3 qt_Normal;
-uniform mediump mat4 qt_ModelViewMatrix;
-uniform mediump mat4 qt_ModelViewProjectionMatrix;
-uniform mediump mat3 qt_NormalMatrix;
-
-struct qt_MaterialParameters {
- mediump vec4 emission;
- mediump vec4 ambient;
- mediump vec4 diffuse;
- mediump vec4 specular;
- mediump float shininess;
-};
-uniform qt_MaterialParameters qt_Material;
-
-struct qt_SingleLightParameters {
- mediump vec4 position;
- mediump vec3 spotDirection;
- mediump float spotExponent;
- mediump float spotCutoff;
- mediump float spotCosCutoff;
- mediump float constantAttenuation;
- mediump float linearAttenuation;
- mediump float quadraticAttenuation;
-};
-uniform qt_SingleLightParameters qt_Light;
-
-varying mediump vec4 qAmbient;
-varying mediump vec4 qDiffuse;
-varying mediump vec3 qNormal;
-varying mediump vec3 qLightDirection;
-varying mediump vec3 qHalfVector;
-varying mediump vec3 qVertexToLight;
-
-void qLightVertex(vec4 vertex, vec3 normal)
-{
- vec3 toEye;
- qNormal = normal;
- qAmbient = qt_Material.emission + qt_Material.ambient;
- qDiffuse = qt_Material.diffuse;
- qLightDirection = normalize(qt_Light.position.xyz);
- toEye = vec3(0, 0, 1);
- qHalfVector = normalize(qLightDirection + toEye);
- qVertexToLight = vertex.xyz - qt_Light.position.xyz;
-}
-
-void main(void)
-{
- gl_Position = qt_ModelViewProjectionMatrix * qt_Vertex;
- vec4 vertex = qt_ModelViewMatrix * qt_Vertex;
- vec3 normal = normalize(qt_NormalMatrix * qt_Normal);
- qLightVertex(vertex, normal);
-}
diff --git a/demos/qt3d/teaservice/perpixeleffect.cpp b/demos/qt3d/teaservice/perpixeleffect.cpp
deleted file mode 100644
index fc3a4260..00000000
--- a/demos/qt3d/teaservice/perpixeleffect.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "perpixeleffect.h"
-
-PerPixelEffect::PerPixelEffect()
-{
- setVertexShaderFromFile(":per_pixel_lighting.vsh");
- setFragmentShaderFromFile(":per_pixel_lighting.fsh");
-}
-
-PerPixelEffect::~PerPixelEffect()
-{
-}
diff --git a/demos/qt3d/teaservice/perpixeleffect.h b/demos/qt3d/teaservice/perpixeleffect.h
deleted file mode 100644
index dd265f2a..00000000
--- a/demos/qt3d/teaservice/perpixeleffect.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef PERPIXELEFFECT_H
-#define PERPIXELEFFECT_H
-
-#include "qglshaderprogrameffect.h"
-
-class PerPixelEffectPrivate;
-class QGLShader;
-
-class PerPixelEffect : public QGLShaderProgramEffect
-{
- Q_DISABLE_COPY(PerPixelEffect);
-public:
- PerPixelEffect();
- virtual ~PerPixelEffect();
-};
-
-#endif
diff --git a/demos/qt3d/teaservice/qt3d.ico b/demos/qt3d/teaservice/qt3d.ico
deleted file mode 100644
index e6442baf..00000000
--- a/demos/qt3d/teaservice/qt3d.ico
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/teaservice/qt3d.png b/demos/qt3d/teaservice/qt3d.png
deleted file mode 100644
index 21ec0176..00000000
--- a/demos/qt3d/teaservice/qt3d.png
+++ /dev/null
Binary files differ
diff --git a/demos/qt3d/teaservice/sceneobject.cpp b/demos/qt3d/teaservice/sceneobject.cpp
deleted file mode 100644
index 0c7ec4ed..00000000
--- a/demos/qt3d/teaservice/sceneobject.cpp
+++ /dev/null
@@ -1,72 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "sceneobject.h"
-#include "meshobject.h"
-
-SceneObject::SceneObject(QObject *parent)
- : QObject(parent)
-{
-}
-
-SceneObject::~SceneObject()
-{
-}
-
-void SceneObject::initialize(QGLView *view, QGLPainter *painter)
-{
- // Initialize all of the mesh objects that we have as children.
- foreach (QObject *obj, children()) {
- MeshObject *meshobj = qobject_cast<MeshObject *>(obj);
- if (meshobj)
- meshobj->initialize(view, painter);
- }
-}
-
-void SceneObject::draw(QGLPainter *painter)
-{
- // Draw all of the mesh objects that we have as children.
- foreach (QObject *obj, children()) {
- MeshObject *meshobj = qobject_cast<MeshObject *>(obj);
- if (meshobj)
- meshobj->draw(painter);
- }
-}
diff --git a/demos/qt3d/teaservice/sceneobject.h b/demos/qt3d/teaservice/sceneobject.h
deleted file mode 100644
index 0e3a3323..00000000
--- a/demos/qt3d/teaservice/sceneobject.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef SCENEOBJECT_H
-#define SCENEOBJECT_H
-
-#include <QtCore/qobject.h>
-#include "qglpainter.h"
-
-QT_BEGIN_NAMESPACE
-class QGLView;
-QT_END_NAMESPACE
-
-class SceneObject : public QObject
-{
- Q_OBJECT
-public:
- explicit SceneObject(QObject *parent=0);
- virtual ~SceneObject();
-
- virtual void initialize(QGLView *view, QGLPainter *painter);
- virtual void draw(QGLPainter *painter);
-};
-
-#endif
diff --git a/demos/qt3d/teaservice/teacup.txt b/demos/qt3d/teaservice/teacup.txt
deleted file mode 100644
index f4dde3ef..00000000
--- a/demos/qt3d/teaservice/teacup.txt
+++ /dev/null
@@ -1,280 +0,0 @@
-26
-1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
-4,17,18,19,8,20,21,22,12,23,24,25,16,26,27,28
-19,29,30,31,22,32,33,34,25,35,36,37,28,38,39,40
-31,41,42,1,34,43,44,5,37,45,46,9,40,47,48,13
-13,14,15,16,49,50,51,52,53,54,55,56,57,58,59,60
-16,26,27,28,52,61,62,63,56,64,65,66,60,67,68,69
-28,38,39,40,63,70,71,72,66,73,74,75,69,76,77,78
-40,47,48,13,72,79,80,49,75,81,82,53,78,83,84,57
-193,194,195,196,197,198,199,200,201,202,203,204,1,2,3,4
-196,205,206,207,200,208,209,210,204,211,212,213,4,17,18,19
-207,214,215,216,210,217,218,219,213,220,221,222,19,29,30,31
-216,223,224,193,219,225,226,197,222,227,228,201,31,41,42,1
-229,230,231,28,232,233,234,235,236,237,238,239,240,241,242,243
-28,244,245,229,235,246,247,232,239,248,249,236,243,250,251,240
-57,58,59,60,85,86,87,88,89,90,91,92,93,94,95,96
-60,67,68,69,88,97,98,99,92,100,101,102,96,103,104,105
-69,76,77,78,99,106,107,108,102,109,110,111,105,112,113,114
-78,83,84,57,108,115,116,85,111,117,118,89,114,119,120,93
-93,94,95,96,121,122,123,124,125,126,127,128,129,130,131,132
-96,103,104,105,124,133,134,135,128,136,137,138,132,139,140,141
-105,112,113,114,135,142,143,144,138,145,146,147,141,148,149,150
-114,119,120,93,144,151,152,121,147,153,154,125,150,155,156,129
-129,130,131,132,157,158,159,160,161,162,163,164,165,166,167,168
-132,139,140,141,160,169,170,171,164,172,173,174,168,175,176,177
-141,148,149,150,171,178,179,180,174,181,182,183,177,184,185,186
-150,155,156,129,180,187,188,157,183,189,190,161,186,191,192,165
-251
-0.409091,0.772727,0.0
-0.409091,0.772727,-0.229091
-0.229091,0.772727,-0.409091
-0.0,0.772727,-0.409091
-0.409091,0.886364,0.0
-0.409091,0.886364,-0.229091
-0.229091,0.886364,-0.409091
-0.0,0.886364,-0.409091
-0.454545,0.886364,0.0
-0.454545,0.886364,-0.254545
-0.254545,0.886364,-0.454545
-0.0,0.886364,-0.454545
-0.454545,0.772727,0.0
-0.454545,0.772727,-0.254545
-0.254545,0.772727,-0.454545
-0.0,0.772727,-0.454545
--0.229091,0.772727,-0.409091
--0.409091,0.772727,-0.229091
--0.409091,0.772727,0.0
--0.229091,0.886364,-0.409091
--0.409091,0.886364,-0.229091
--0.409091,0.886364,0.0
--0.254545,0.886364,-0.454545
--0.454545,0.886364,-0.254545
--0.454545,0.886364,0.0
--0.254545,0.772727,-0.454545
--0.454545,0.772727,-0.254545
--0.454545,0.772727,0.0
--0.409091,0.772727,0.229091
--0.229091,0.772727,0.409091
-0.0,0.772727,0.409091
--0.409091,0.886364,0.229091
--0.229091,0.886364,0.409091
-0.0,0.886364,0.409091
--0.454545,0.886364,0.254545
--0.254545,0.886364,0.454545
-0.0,0.886364,0.454545
--0.454545,0.772727,0.254545
--0.254545,0.772727,0.454545
-0.0,0.772727,0.454545
-0.229091,0.772727,0.409091
-0.409091,0.772727,0.229091
-0.229091,0.886364,0.409091
-0.409091,0.886364,0.229091
-0.254545,0.886364,0.454545
-0.454545,0.886364,0.254545
-0.254545,0.772727,0.454545
-0.454545,0.772727,0.254545
-0.454545,0.545455,0.0
-0.454545,0.545455,-0.254545
-0.254545,0.545455,-0.454545
-0.0,0.545455,-0.454545
-0.454545,0.272727,0.0
-0.454545,0.272727,-0.254545
-0.254545,0.272727,-0.454545
-0.0,0.272727,-0.454545
-0.318182,0.0454545,0.0
-0.318182,0.0454545,-0.178182
-0.178182,0.0454545,-0.318182
-0.0,0.0454545,-0.318182
--0.254545,0.545455,-0.454545
--0.454545,0.545455,-0.254545
--0.454545,0.545455,0.0
--0.254545,0.272727,-0.454545
--0.454545,0.272727,-0.254545
--0.454545,0.272727,0.0
--0.178182,0.0454545,-0.318182
--0.318182,0.0454545,-0.178182
--0.318182,0.0454545,0.0
--0.454545,0.545455,0.254545
--0.254545,0.545455,0.454545
-0.0,0.545455,0.454545
--0.454545,0.272727,0.254545
--0.254545,0.272727,0.454545
-0.0,0.272727,0.454545
--0.318182,0.0454545,0.178182
--0.178182,0.0454545,0.318182
-0.0,0.0454545,0.318182
-0.254545,0.545455,0.454545
-0.454545,0.545455,0.254545
-0.254545,0.272727,0.454545
-0.454545,0.272727,0.254545
-0.178182,0.0454545,0.318182
-0.318182,0.0454545,0.178182
-0.545455,0.0454545,0.0
-0.545455,0.0454545,-0.305455
-0.305455,0.0454545,-0.545455
-0.0,0.0454545,-0.545455
-0.727273,0.136364,0.0
-0.727273,0.136364,-0.407273
-0.407273,0.136364,-0.727273
-0.0,0.136364,-0.727273
-0.909091,0.136364,0.0
-0.909091,0.136364,-0.509091
-0.509091,0.136364,-0.909091
-0.0,0.136364,-0.909091
--0.305455,0.0454545,-0.545455
--0.545455,0.0454545,-0.305455
--0.545455,0.0454545,0.0
--0.407273,0.136364,-0.727273
--0.727273,0.136364,-0.407273
--0.727273,0.136364,0.0
--0.509091,0.136364,-0.909091
--0.909091,0.136364,-0.509091
--0.909091,0.136364,0.0
--0.545455,0.0454545,0.305455
--0.305455,0.0454545,0.545455
-0.0,0.0454545,0.545455
--0.727273,0.136364,0.407273
--0.407273,0.136364,0.727273
-0.0,0.136364,0.727273
--0.909091,0.136364,0.509091
--0.509091,0.136364,0.909091
-0.0,0.136364,0.909091
-0.305455,0.0454545,0.545455
-0.545455,0.0454545,0.305455
-0.407273,0.136364,0.727273
-0.727273,0.136364,0.407273
-0.509091,0.136364,0.909091
-0.909091,0.136364,0.509091
-1.0,0.136364,0.0
-1.0,0.136364,-0.56
-0.56,0.136364,-1.0
-0.0,0.136364,-1.0
-1.0,0.0909091,0.0
-1.0,0.0909091,-0.56
-0.56,0.0909091,-1.0
-0.0,0.0909091,-1.0
-0.909091,0.0909091,0.0
-0.909091,0.0909091,-0.509091
-0.509091,0.0909091,-0.909091
-0.0,0.0909091,-0.909091
--0.56,0.136364,-1.0
--1.0,0.136364,-0.56
--1.0,0.136364,0.0
--0.56,0.0909091,-1.0
--1.0,0.0909091,-0.56
--1.0,0.0909091,0.0
--0.509091,0.0909091,-0.909091
--0.909091,0.0909091,-0.509091
--0.909091,0.0909091,0.0
--1.0,0.136364,0.56
--0.56,0.136364,1.0
-0.0,0.136364,1.0
--1.0,0.0909091,0.56
--0.56,0.0909091,1.0
-0.0,0.0909091,1.0
--0.909091,0.0909091,0.509091
--0.509091,0.0909091,0.909091
-0.0,0.0909091,0.909091
-0.56,0.136364,1.0
-1.0,0.136364,0.56
-0.56,0.0909091,1.0
-1.0,0.0909091,0.56
-0.509091,0.0909091,0.909091
-0.909091,0.0909091,0.509091
-0.727273,0.0909091,0.0
-0.727273,0.0909091,-0.407273
-0.407273,0.0909091,-0.727273
-0.0,0.0909091,-0.727273
-0.545455,0.0,0.0
-0.545455,0.0,-0.305455
-0.305455,0.0,-0.545455
-0.0,0.0,-0.545455
-0.318182,0.0,0.0
-0.318182,0.0,-0.178182
-0.178182,0.0,-0.318182
-0.0,0.0,-0.318182
--0.407273,0.0909091,-0.727273
--0.727273,0.0909091,-0.407273
--0.727273,0.0909091,0.0
--0.305455,0.0,-0.545455
--0.545455,0.0,-0.305455
--0.545455,0.0,0.0
--0.178182,0.0,-0.318182
--0.318182,0.0,-0.178182
--0.318182,0.0,0.0
--0.727273,0.0909091,0.407273
--0.407273,0.0909091,0.727273
-0.0,0.0909091,0.727273
--0.545455,0.0,0.305455
--0.305455,0.0,0.545455
-0.0,0.0,0.545455
--0.318182,0.0,0.178182
--0.178182,0.0,0.318182
-0.0,0.0,0.318182
-0.407273,0.0909091,0.727273
-0.727273,0.0909091,0.407273
-0.305455,0.0,0.545455
-0.545455,0.0,0.305455
-0.178182,0.0,0.318182
-0.318182,0.0,0.178182
-0.272727,0.0454545,0.0
-0.272727,0.0454545,-0.152727
-0.152727,0.0454545,-0.272727
-0.0,0.0454545,-0.272727
-0.409091,0.272727,0.0
-0.409091,0.272727,-0.229091
-0.229091,0.272727,-0.409091
-0.0,0.272727,-0.409091
-0.409091,0.545455,0.0
-0.409091,0.545455,-0.229091
-0.229091,0.545455,-0.409091
-0.0,0.545455,-0.409091
--0.152727,0.0454545,-0.272727
--0.272727,0.0454545,-0.152727
--0.272727,0.0454545,0.0
--0.229091,0.272727,-0.409091
--0.409091,0.272727,-0.229091
--0.409091,0.272727,0.0
--0.229091,0.545455,-0.409091
--0.409091,0.545455,-0.229091
--0.409091,0.545455,0.0
--0.272727,0.0454545,0.152727
--0.152727,0.0454545,0.272727
-0.0,0.0454545,0.272727
--0.409091,0.272727,0.229091
--0.229091,0.272727,0.409091
-0.0,0.272727,0.409091
--0.409091,0.545455,0.229091
--0.229091,0.545455,0.409091
-0.0,0.545455,0.409091
-0.152727,0.0454545,0.272727
-0.272727,0.0454545,0.152727
-0.229091,0.272727,0.409091
-0.409091,0.272727,0.229091
-0.229091,0.545455,0.409091
-0.409091,0.545455,0.229091
--0.454545,0.704545,0.0
--0.454545,0.704545,-0.0454545
--0.454545,0.772727,-0.0454545
--0.772727,0.863636,0.0
--0.772727,0.863636,-0.0454545
--0.818182,0.954545,-0.0454545
--0.818182,0.954545,0.0
--0.772727,0.522727,0.0
--0.772727,0.522727,-0.0454545
--0.909091,0.477273,-0.0454545
--0.909091,0.477273,0.0
--0.409091,0.363636,0.0
--0.409091,0.363636,-0.0454545
--0.409091,0.295455,-0.0454545
--0.409091,0.295455,0.0
--0.454545,0.772727,0.0454545
--0.454545,0.704545,0.0454545
--0.818182,0.954545,0.0454545
--0.772727,0.863636,0.0454545
--0.909091,0.477273,0.0454545
--0.772727,0.522727,0.0454545
--0.409091,0.295455,0.0454545
--0.409091,0.363636,0.0454545
-# reverse-patches
diff --git a/demos/qt3d/teaservice/teaservice.cpp b/demos/qt3d/teaservice/teaservice.cpp
deleted file mode 100644
index 3423916e..00000000
--- a/demos/qt3d/teaservice/teaservice.cpp
+++ /dev/null
@@ -1,386 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtQuick3D module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QApplication>
-#include <QMainWindow>
-#include <QMenu>
-#include <QMenuBar>
-#include <QKeyEvent>
-#include <QAction>
-#include <QDebug>
-#include "qglview.h"
-#include "meshobject.h"
-#include "sceneobject.h"
-#include "qglteapot.h"
-#include "qglbuilder.h"
-#include "perpixeleffect.h"
-
-enum {
- ObjTeapot,
- ObjTeacup1,
- ObjTeacup2,
- ObjTeaspoon1,
- ObjTeaspoon2
-};
-
-class Teapot : public MeshObject
-{
- Q_OBJECT
-public:
- Teapot(QObject *parent=0);
- ~Teapot() {}
-};
-
-static QGLSceneNode *createTeapot(QObject *parent)
-{
- QGLBuilder builder;
- builder << QGLTeapot();
- QGLSceneNode *n = builder.finalizedSceneNode();
- n->setParent(parent);
- return n;
-}
-
-Teapot::Teapot(QObject *parent)
- : MeshObject(createTeapot(parent), parent)
-{
-}
-
-class Teacup : public MeshObject
-{
- Q_OBJECT
-public:
- Teacup(QObject *parent=0);
- ~Teacup() {}
-};
-
-static QGLAbstractScene *loadBezier(const QString& fileName)
-{
- QGLAbstractScene *scene;
- scene = QGLAbstractScene::loadScene(fileName, QLatin1String("bezier"));
- if (!scene)
- qFatal("Could not load %s, probably plugin could not be found",
- fileName.toLatin1().constData());
- return scene;
-}
-
-Teacup::Teacup(QObject *parent)
- : MeshObject(loadBezier(QLatin1String(":/teacup.txt")), parent)
-{
-}
-
-class Teaspoon : public MeshObject
-{
- Q_OBJECT
-public:
- Teaspoon(QObject *parent=0);
- ~Teaspoon() {}
-};
-
-Teaspoon::Teaspoon(QObject *parent)
- : MeshObject(loadBezier(QLatin1String(":/teaspoon.txt")), parent)
-{
-}
-
-class TeaService : public QObject
-{
- Q_OBJECT
-public:
- TeaService(QObject *parent=0);
- ~TeaService();
-
- SceneObject *service;
-
- Teapot *teapot;
- Teacup *teacup1;
- Teacup *teacup2;
- Teaspoon *teaspoon1;
- Teaspoon *teaspoon2;
- PerPixelEffect *lighting;
-
- void changeMaterials(bool perPixel);
-
-signals:
- void changed();
-
-private slots:
- void teapotClicked();
- void teacup1Clicked();
- void teacup2Clicked();
- void teaspoon1Clicked();
- void teaspoon2Clicked();
-
-private:
- QGLMaterial *china;
- QGLMaterial *chinaHighlight;
- QGLMaterial *metal;
- QGLMaterial *metalHighlight;
-};
-
-TeaService::TeaService(QObject *parent)
- : QObject(parent)
-{
- china = new QGLMaterial(this);
- china->setAmbientColor(QColor(192, 150, 128));
- china->setSpecularColor(QColor(60, 60, 60));
- china->setShininess(128);
-
- chinaHighlight = new QGLMaterial(this);
- chinaHighlight->setAmbientColor(QColor(255, 192, 0));
- chinaHighlight->setSpecularColor(QColor(60, 60, 0));
- chinaHighlight->setShininess(128);
-
- metal = new QGLMaterial(this);
- metal->setAmbientColor(QColor(255, 255, 255));
- metal->setDiffuseColor(QColor(150, 150, 150));
- metal->setSpecularColor(QColor(255, 255, 255));
- metal->setShininess(128);
-
- metalHighlight = new QGLMaterial(this);
- metalHighlight->setAmbientColor(QColor(255, 255, 96));
- metalHighlight->setDiffuseColor(QColor(150, 150, 96));
- metalHighlight->setSpecularColor(QColor(255, 255, 255));
- metalHighlight->setShininess(128);
-
- service = new SceneObject(this);
- teapot = new Teapot(service);
- teacup1 = new Teacup(service);
- teacup2 = new Teacup(service);
- teacup1->setPosition(QVector3D(-2.3f, -0.75f, 0.0f));
- teacup2->setRotationAngle(180);
- teacup2->setRotationVector(QVector3D(0, 1, 0));
- teacup2->setPosition(QVector3D(2.3f, -0.75f, 0.0f));
- teaspoon1 = new Teaspoon(service);
- teaspoon2 = new Teaspoon(service);
- teaspoon1->setRotationAngle(275);
- teaspoon1->setRotationVector(QVector3D(1, 0, 0));
- teaspoon1->setPosition(QVector3D(-1.7f, -0.58f, 0.0f));
- teaspoon2->setRotationAngle(275);
- teaspoon2->setRotationVector(QVector3D(1, 0, 0));
- teaspoon2->setPosition(QVector3D(1.7f, -0.58f, 0.0f));
-
- teapot->setObjectId(ObjTeapot);
- teacup1->setObjectId(ObjTeacup1);
- teacup2->setObjectId(ObjTeacup2);
- teaspoon1->setObjectId(ObjTeaspoon1);
- teaspoon2->setObjectId(ObjTeaspoon2);
-
- lighting = new PerPixelEffect();
- changeMaterials(false);
-
- connect(teapot, SIGNAL(hoverChanged()), this, SIGNAL(changed()));
- connect(teacup1, SIGNAL(hoverChanged()), this, SIGNAL(changed()));
- connect(teacup2, SIGNAL(hoverChanged()), this, SIGNAL(changed()));
- connect(teaspoon1, SIGNAL(hoverChanged()), this, SIGNAL(changed()));
- connect(teaspoon2, SIGNAL(hoverChanged()), this, SIGNAL(changed()));
-
- connect(teapot, SIGNAL(clicked()), this, SLOT(teapotClicked()));
- connect(teacup1, SIGNAL(clicked()), this, SLOT(teacup1Clicked()));
- connect(teacup2, SIGNAL(clicked()), this, SLOT(teacup2Clicked()));
- connect(teaspoon1, SIGNAL(clicked()), this, SLOT(teaspoon1Clicked()));
- connect(teaspoon2, SIGNAL(clicked()), this, SLOT(teaspoon2Clicked()));
-}
-
-TeaService::~TeaService()
-{
- delete lighting;
-}
-
-void TeaService::changeMaterials(bool perPixel)
-{
- teapot->setMaterial(china);
- teapot->setHoverMaterial(chinaHighlight);
- teacup1->setMaterial(china);
- teacup1->setHoverMaterial(chinaHighlight);
- teacup2->setMaterial(china);
- teacup2->setHoverMaterial(chinaHighlight);
- if (perPixel) {
- teapot->setEffect(lighting);
- teacup1->setEffect(lighting);
- teacup2->setEffect(lighting);
- } else
- {
- teapot->setEffect(0);
- teacup1->setEffect(0);
- teacup2->setEffect(0);
- }
-
- teaspoon1->setMaterial(metal);
- teaspoon1->setHoverMaterial(metalHighlight);
- teaspoon2->setMaterial(metal);
- teaspoon2->setHoverMaterial(metalHighlight);
- if (perPixel) {
- teaspoon1->setEffect(lighting);
- teaspoon2->setEffect(lighting);
- } else
- {
- teaspoon1->setEffect(0);
- teaspoon2->setEffect(0);
- }
-}
-
-void TeaService::teapotClicked()
-{
- qDebug("teapot clicked");
-}
-
-void TeaService::teacup1Clicked()
-{
- qDebug("teacup1 clicked");
-}
-
-void TeaService::teacup2Clicked()
-{
- qDebug("teacup2 clicked");
-}
-
-void TeaService::teaspoon1Clicked()
-{
- qDebug("teaspoon1 clicked");
-}
-
-void TeaService::teaspoon2Clicked()
-{
- qDebug("teaspoon2 clicked");
-}
-
-class TeaServiceView : public QGLView
-{
- Q_OBJECT
-public:
- TeaServiceView(QWidget *parent=0);
-
-public slots:
- void standardLighting();
- void perPixelLighting();
-
-protected:
- void initializeGL(QGLPainter *painter);
- void paintGL(QGLPainter *painter);
- void keyPressEvent(QKeyEvent *e);
-
-private:
- TeaService *teaService;
-};
-
-TeaServiceView::TeaServiceView(QWidget *parent)
- : QGLView(parent)
-{
- teaService = new TeaService(this);
-
- setOption(QGLView::ObjectPicking, true);
-
- connect(teaService, SIGNAL(changed()), this, SLOT(updateGL()));
-}
-
-void TeaServiceView::initializeGL(QGLPainter *painter)
-{
- teaService->service->initialize(this, painter);
-}
-
-void TeaServiceView::paintGL(QGLPainter *painter)
-{
- teaService->service->draw(painter);
-}
-
-void TeaServiceView::standardLighting()
-{
- teaService->changeMaterials(false);
- updateGL();
-}
-
-void TeaServiceView::perPixelLighting()
-{
- teaService->changeMaterials(true);
- updateGL();
-}
-
-void TeaServiceView::keyPressEvent(QKeyEvent *e)
-{
- if (e->key() == Qt::Key_Tab) {
- // The Tab key turns the ShowPicking option on and off,
- // which helps show what the pick buffer looks like.
- setOption(QGLView::ShowPicking, ((options() & QGLView::ShowPicking) == 0));
- updateGL();
- }
- QGLView::keyPressEvent(e);
-}
-
-int main(int argc, char *argv[])
-{
- QApplication app(argc, argv);
- QMainWindow mainw;
- mainw.setMinimumSize(850, 480);
- mainw.setWindowTitle(QLatin1String("Tea Service"));
-
- TeaServiceView view;
- mainw.setCentralWidget(&view);
- view.setFocus();
-
- view.camera()->setEye(QVector3D(0, 3, 10));
-
- QMenu *menu = mainw.menuBar()->addMenu(QLatin1String("Effects"));
-
- QAction *standardLighting = new QAction(QLatin1String("Standard lighting"), &mainw);
- menu->addAction(standardLighting);
- QObject::connect(standardLighting, SIGNAL(triggered()), &view, SLOT(standardLighting()));
-
- QAction *perPixelLighting = new QAction(QLatin1String("Per-pixel lighting"), &mainw);
- menu->addAction(perPixelLighting);
- QObject::connect(perPixelLighting, SIGNAL(triggered()), &view, SLOT(perPixelLighting()));
-
- menu->addSeparator();
-
- QAction *exitAction = new QAction(QLatin1String("E&xit"), &mainw);
- menu->addAction(exitAction);
- QObject::connect(exitAction, SIGNAL(triggered()), &app, SLOT(quit()));
-
-#ifdef Q_OS_SYMBIAN
- mainw.setAttribute(Qt::WA_LockLandscapeOrientation, true);
- mainw.showFullScreen();
-#endif
-
- view.updateGL();
- mainw.update();
- mainw.show();
- return app.exec();
-}
-
-#include "teaservice.moc"
diff --git a/demos/qt3d/teaservice/teaservice.desktop b/demos/qt3d/teaservice/teaservice.desktop
deleted file mode 100644
index eee50a74..00000000
--- a/demos/qt3d/teaservice/teaservice.desktop
+++ /dev/null
@@ -1,7 +0,0 @@
-[Desktop Entry]
-Type=Application
-Name=Tea Service
-Icon=/usr/share/icons/hicolor/80x80/apps/qt3d.png
-Exec=/usr/bin/invoker --type=e -s /usr/bin/teaservice -fullscreen
-OnlyShowIn=X-MeeGo;
-X-MeeGo-Logical-Id=qtn_comm_appname_teaservice
diff --git a/demos/qt3d/teaservice/teaservice.pro b/demos/qt3d/teaservice/teaservice.pro
deleted file mode 100644
index 94968531..00000000
--- a/demos/qt3d/teaservice/teaservice.pro
+++ /dev/null
@@ -1,17 +0,0 @@
-TEMPLATE = app
-TARGET = teaservice
-CONFIG += qt warn_on
-
-CONFIG += qt3d_deploy_pkg
-include(../../../pkg.pri)
-
-SOURCES = teaservice.cpp meshobject.cpp sceneobject.cpp perpixeleffect.cpp
-HEADERS = meshobject.h sceneobject.h perpixeleffect.h
-RESOURCES = teaservice.qrc
-
-OTHER_FILES += \
- teaservice.rc \
- teaservice.desktop
-
-RC_FILE = teaservice.rc
-
diff --git a/demos/qt3d/teaservice/teaservice.qrc b/demos/qt3d/teaservice/teaservice.qrc
deleted file mode 100644
index ab55d88c..00000000
--- a/demos/qt3d/teaservice/teaservice.qrc
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE RCC><RCC version="1.0">
-<qresource>
- <file>per_pixel_lighting.vsh</file>
- <file>per_pixel_lighting.fsh</file>
- <file>teacup.txt</file>
- <file>teaspoon.txt</file>
-</qresource>
-</RCC>
diff --git a/demos/qt3d/teaservice/teaservice.rc b/demos/qt3d/teaservice/teaservice.rc
deleted file mode 100644
index b40ecdc1..00000000
--- a/demos/qt3d/teaservice/teaservice.rc
+++ /dev/null
@@ -1 +0,0 @@
-IDI_ICON1 ICON DISCARDABLE "qt3d.ico"
diff --git a/demos/qt3d/teaservice/teaspoon.txt b/demos/qt3d/teaservice/teaspoon.txt
deleted file mode 100644
index 3c6a1b74..00000000
--- a/demos/qt3d/teaservice/teaspoon.txt
+++ /dev/null
@@ -1,275 +0,0 @@
-16
-1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
-17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32
-33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48
-49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64
-65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80
-81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96
-97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112
-113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128
-129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144
-145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160
-161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176
-177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192
-193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208
-209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224
-225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240
-241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256
-256
--0.000107143,0.205357,0.0
-0.0,0.196429,-0.0178571
-0.0,0.196429,-0.0178571
-0.000107143,0.205357,0.0
--0.0535714,0.205357,0.0
--0.0222714,0.178571,-0.0534286
-0.0222714,0.178571,-0.0534286
-0.0535714,0.205357,0.0
--0.107143,0.0952429,-0.0178571
--0.0446429,0.0952429,-0.0892857
-0.0446429,0.0952429,-0.0892857
-0.107143,0.0952429,-0.0178571
--0.107143,0.0,-0.0178571
--0.0446429,0.0,-0.0892857
-0.0446429,0.0,-0.0892857
-0.107143,0.0,-0.0178571
-0.000107143,0.205357,0.0
-0.000135714,0.207589,0.00446429
-0.000157143,0.216518,0.00446429
-0.000125,0.214286,0.0
-0.0535714,0.205357,0.0
-0.0613964,0.212054,0.0133571
-0.0714286,0.220982,0.015625
-0.0625,0.214286,0.0
-0.107143,0.0952429,-0.0178571
-0.122768,0.0952429,0.0
-0.142857,0.0952429,0.00446429
-0.125,0.0952429,-0.0178571
-0.107143,0.0,-0.0178571
-0.122768,0.0,0.0
-0.142857,0.0,0.00446429
-0.125,0.0,-0.0178571
-0.000125,0.214286,0.0
-0.0,0.205357,-0.0178571
-0.0,0.205357,-0.0178571
--0.000125,0.214286,0.0
-0.0625,0.214286,0.0
-0.0267857,0.1875,-0.0625
--0.0267857,0.1875,-0.0625
--0.0625,0.214286,0.0
-0.125,0.0952429,-0.0178571
-0.0535714,0.0952429,-0.107143
--0.0535714,0.0952429,-0.107143
--0.125,0.0952429,-0.0178571
-0.125,0.0,-0.0178571
-0.0535714,0.0,-0.107143
--0.0535714,0.0,-0.107143
--0.125,0.0,-0.0178571
--0.000125,0.214286,0.0
--0.000157143,0.216518,0.00446429
--0.000135714,0.207589,0.00446429
--0.000107143,0.205357,0.0
--0.0625,0.214286,0.0
--0.0714286,0.220982,0.015625
--0.0613964,0.212054,0.0133571
--0.0535714,0.205357,0.0
--0.125,0.0952429,-0.0178571
--0.142857,0.0952429,0.00446429
--0.122768,0.0952429,0.0
--0.107143,0.0952429,-0.0178571
--0.125,0.0,-0.0178571
--0.142857,0.0,0.00446429
--0.122768,0.0,0.0
--0.107143,0.0,-0.0178571
--0.107143,0.0,-0.0178571
--0.0446429,0.0,-0.0892857
-0.0446429,0.0,-0.0892857
-0.107143,0.0,-0.0178571
--0.107143,-0.142857,-0.0178571
--0.0446429,-0.142857,-0.0892857
-0.0446429,-0.142857,-0.0892857
-0.107143,-0.142857,-0.0178571
--0.0133929,-0.160714,0.0386893
--0.00557857,-0.160714,0.0386893
-0.00557857,-0.160714,0.0386893
-0.0133929,-0.160714,0.0386893
--0.0133929,-0.25,0.0535714
--0.00557857,-0.25,0.0535714
-0.00557857,-0.25,0.0535714
-0.0133929,-0.25,0.0535714
-0.107143,0.0,-0.0178571
-0.122768,0.0,0.0
-0.142857,0.0,0.00446429
-0.125,0.0,-0.0178571
-0.107143,-0.142857,-0.0178571
-0.122768,-0.142857,0.0
-0.142857,-0.142857,0.00446429
-0.125,-0.142857,-0.0178571
-0.0133929,-0.160714,0.0386893
-0.0153464,-0.160714,0.0386893
-0.0178571,-0.160714,0.0314357
-0.015625,-0.160714,0.0297607
-0.0133929,-0.25,0.0535714
-0.0153464,-0.25,0.0535714
-0.0178571,-0.25,0.0463179
-0.015625,-0.25,0.0446429
-0.125,0.0,-0.0178571
-0.0535714,0.0,-0.107143
--0.0535714,0.0,-0.107143
--0.125,0.0,-0.0178571
-0.125,-0.142857,-0.0178571
-0.0535714,-0.142857,-0.107143
--0.0535714,-0.142857,-0.107143
--0.125,-0.142857,-0.0178571
-0.015625,-0.160714,0.0297607
-0.00669643,-0.160714,0.0230643
--0.00781071,-0.160714,0.0208321
--0.015625,-0.160714,0.0297607
-0.015625,-0.25,0.0446429
-0.00669643,-0.25,0.0379464
--0.00781071,-0.25,0.0357143
--0.015625,-0.25,0.0446429
--0.125,0.0,-0.0178571
--0.142857,0.0,0.00446429
--0.122768,0.0,0.0
--0.107143,0.0,-0.0178571
--0.125,-0.142857,-0.0178571
--0.142857,-0.142857,0.00446429
--0.122768,-0.142857,0.0
--0.107143,-0.142857,-0.0178571
--0.015625,-0.160714,0.0297607
--0.0175786,-0.160714,0.0319929
--0.0153464,-0.160714,0.0386893
--0.0133929,-0.160714,0.0386893
--0.015625,-0.25,0.0446429
--0.0175786,-0.25,0.046875
--0.0153464,-0.25,0.0535714
--0.0133929,-0.25,0.0535714
--0.0133929,-0.25,0.0535714
--0.00557857,-0.25,0.0535714
-0.00557857,-0.25,0.0535714
-0.0133929,-0.25,0.0535714
--0.0133929,-0.46425,0.0892857
--0.00557857,-0.46425,0.0892857
-0.00557857,-0.46425,0.0892857
-0.0133929,-0.46425,0.0892857
--0.0446429,-0.678571,0.0535714
--0.00892857,-0.678571,0.0625
-0.00892857,-0.678571,0.0625
-0.0446429,-0.678571,0.0535714
--0.0446429,-0.857143,0.0357143
--0.00892857,-0.857143,0.0446429
-0.00892857,-0.857143,0.0446429
-0.0446429,-0.857143,0.0357143
-0.0133929,-0.25,0.0535714
-0.0153464,-0.25,0.0535714
-0.0178571,-0.25,0.0463179
-0.015625,-0.25,0.0446429
-0.0133929,-0.46425,0.0892857
-0.0153464,-0.464286,0.0892857
-0.0178571,-0.46425,0.0820321
-0.015625,-0.46425,0.0803571
-0.0446429,-0.678571,0.0535714
-0.0535714,-0.678571,0.0513393
-0.0535714,-0.678571,0.0334821
-0.0446429,-0.678571,0.0357143
-0.0446429,-0.857143,0.0357143
-0.0535714,-0.857143,0.0334821
-0.0535714,-0.857143,0.015625
-0.0446429,-0.857143,0.0178571
-0.015625,-0.25,0.0446429
-0.00669643,-0.25,0.0379464
--0.00781071,-0.25,0.0357143
--0.015625,-0.25,0.0446429
-0.015625,-0.46425,0.0803571
-0.00669643,-0.464286,0.0736607
--0.00781071,-0.46425,0.0714286
--0.015625,-0.46425,0.0803571
-0.0446429,-0.678571,0.0357143
-0.00892857,-0.678571,0.0446429
--0.00892857,-0.678571,0.0446429
--0.0446429,-0.678571,0.0357143
-0.0446429,-0.857143,0.0178571
-0.00892857,-0.857143,0.0267857
--0.00892857,-0.857143,0.0267857
--0.0446429,-0.857143,0.0178571
--0.015625,-0.25,0.0446429
--0.0175786,-0.25,0.046875
--0.0153464,-0.25,0.0535714
--0.0133929,-0.25,0.0535714
--0.015625,-0.46425,0.0803571
--0.0175786,-0.464286,0.0825893
--0.0153464,-0.464286,0.0892857
--0.0133929,-0.46425,0.0892857
--0.0446429,-0.678571,0.0357143
--0.0535714,-0.678571,0.0334821
--0.0535714,-0.678571,0.0513393
--0.0446429,-0.678571,0.0535714
--0.0446429,-0.857143,0.0178571
--0.0535714,-0.857143,0.015625
--0.0535714,-0.857143,0.0334821
--0.0446429,-0.857143,0.0357143
--0.0446429,-0.857143,0.0357143
--0.00892857,-0.857143,0.0446429
-0.00892857,-0.857143,0.0446429
-0.0446429,-0.857143,0.0357143
--0.0446429,-0.928571,0.0285714
--0.00892857,-0.928571,0.0375
-0.00892857,-0.928571,0.0375
-0.0446429,-0.928571,0.0285714
--0.0539286,-0.999643,0.0178571
-0.000357143,-0.999643,0.0178571
-0.0,-0.999643,0.0178571
-0.0535714,-0.999643,0.0178571
--0.000357143,-1,0.0178571
-0.000357143,-1,0.0178571
-0.0,-1,0.0178571
-0.0,-1,0.0178571
-0.0446429,-0.857143,0.0357143
-0.0535714,-0.857143,0.0334821
-0.0535714,-0.857143,0.015625
-0.0446429,-0.857143,0.0178571
-0.0446429,-0.928571,0.0285714
-0.0535714,-0.928571,0.0263393
-0.0535714,-0.928571,0.00848214
-0.0446429,-0.928571,0.0107143
-0.0535714,-0.999643,0.0178571
-0.0669643,-0.999643,0.0178571
-0.0673214,-0.999643,0.0
-0.0539286,-0.999643,0.0
-0.0,-1,0.0178571
-0.0,-1,0.0178571
-0.000357143,-1,0.0
-0.000357143,-1,0.0
-0.0446429,-0.857143,0.0178571
-0.00892857,-0.857143,0.0267857
--0.00892857,-0.857143,0.0267857
--0.0446429,-0.857143,0.0178571
-0.0446429,-0.928571,0.0107143
-0.00892857,-0.928571,0.0196429
--0.00892857,-0.928571,0.0196429
--0.0446429,-0.928571,0.0107143
-0.0539286,-0.999643,0.0
-0.000357143,-0.999643,0.0
--0.000357143,-0.999643,0.0
--0.0539286,-0.999643,0.0
-0.000357143,-1,0.0
-0.000357143,-1,0.0
--0.000357143,-1,0.0
--0.000357143,-1,0.0
--0.0446429,-0.857143,0.0178571
--0.0535714,-0.857143,0.015625
--0.0535714,-0.857143,0.0334821
--0.0446429,-0.857143,0.0357143
--0.0446429,-0.928571,0.0107143
--0.0535714,-0.928571,0.00848214
--0.0535714,-0.928571,0.0263393
--0.0446429,-0.928571,0.0285714
--0.0539286,-0.999643,0.0
--0.0673214,-0.999643,0.0
--0.0675,-0.999643,0.0178571
--0.0539286,-0.999643,0.0178571
--0.000357143,-1,0.0
--0.000357143,-1,0.0
--0.000535714,-1,0.0178571
--0.000357143,-1,0.0178571
-# reverse-patches