diff options
author | Gareth Stockwell <gareth.stockwell@accenture.com> | 2011-12-15 13:14:24 +0000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-12-22 02:29:16 +0100 |
commit | febe3984003dcd9313ae451ee2cc23ac15630977 (patch) | |
tree | 69cc574086538d5decaffa237f5c5beeb93107ef /examples/video/qmlvideofx/qml | |
parent | f33731fe5a265bad8cfbe6a0c83d3d3806d730f8 (diff) |
Add qmlvideo and qmlvideofx examples
Based on code imported from master branch of QtMobility repo,
ported to Qt Quick 2.
Task-number: QTBUG-23118
Change-Id: Ifd297de0e595c675ff1a8e3218d91b03629295b9
Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
Diffstat (limited to 'examples/video/qmlvideofx/qml')
38 files changed, 3409 insertions, 0 deletions
diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/Button.qml b/examples/video/qmlvideofx/qml/qmlvideofx/Button.qml new file mode 100644 index 000000000..7b101dd60 --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/Button.qml @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Rectangle { + id: root + color: textColor + radius: 0.25 * height + + property string text + property color bgColor: "white" + property color bgColorSelected: "red" + property color textColor: "black" + property alias enabled: mouseArea.enabled + + signal clicked + + Rectangle { + anchors { fill: parent; margins: 1 } + color: mouseArea.pressed ? bgColorSelected : bgColor + radius: 0.25 * height + + Text { + id: text + anchors.centerIn: parent + text: root.text + font.pixelSize: 0.5 * parent.height + color: mouseArea.pressed ? bgColor : textColor + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + + MouseArea { + id: mouseArea + anchors.fill: parent + onClicked: { + root.clicked() + } + } + } +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/Content.qml b/examples/video/qmlvideofx/qml/qmlvideofx/Content.qml new file mode 100644 index 000000000..7e1a69f90 --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/Content.qml @@ -0,0 +1,153 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Rectangle { + id: root + color: "black" + property alias effect: effectLoader.item + property alias gripSize: divider.gripSize + property string effectSource + property real volume: 0.5 + + signal videoFramePainted + + Divider { + id: divider + visible: false + z: 1.0 + onValueChanged: updateDivider() + } + + ShaderEffectSource { + id: theSource + smooth: true + hideSource: true + } + + Loader { + id: contentLoader + } + + Loader { + id: effectLoader + source: effectSource + } + + Connections { + id: videoFramePaintedConnection + onFramePainted: { + if (performanceLoader.item) + root.videoFramePainted() + } + ignoreUnknownSignals: true + } + + onEffectSourceChanged: { + console.log("[qmlvideofx] Content.onEffectSourceChanged " + effectSource) + effectLoader.source = effectSource + effectLoader.item.parent = root + effectLoader.item.targetWidth = root.width + effectLoader.item.targetHeight = root.height + updateSource() + effectLoader.item.source = theSource + divider.visible = effectLoader.item.supportsDivider + updateDivider() + } + + function init() { + console.log("[qmlvideofx] Content.init") + openImage("qrc:/images/qt-logo.png") + root.effectSource = "EffectPassThrough.qml" + } + + function updateDivider() { + if (effectLoader.item && effectLoader.item.supportsDivider) + effectLoader.item.dividerValue = divider.value + } + + function updateSource() { + console.log("[qmlvideofx] Content.updateSource") + if (contentLoader.item) { + contentLoader.item.parent = root + contentLoader.item.anchors.fill = root + theSource.sourceItem = contentLoader.item + if (effectLoader.item) + effectLoader.item.anchors.fill = contentLoader.item + } + } + + function openImage(path) { + console.log("[qmlvideofx] Content.openImage \"" + path + "\"") + stop() + contentLoader.source = "ContentImage.qml" + videoFramePaintedConnection.target = null + contentLoader.item.source = path + updateSource() + } + + function openVideo(path) { + console.log("[qmlvideofx] Content.openVideo \"" + path + "\"") + stop() + contentLoader.source = "ContentVideo.qml" + videoFramePaintedConnection.target = contentLoader.item + contentLoader.item.mediaSource = path + contentLoader.item.volume = volume + contentLoader.item.play() + updateSource() + } + + function openCamera() { + console.log("[qmlvideofx] Content.openCamera") + stop() + contentLoader.source = "ContentCamera.qml" + videoFramePaintedConnection.target = contentLoader.item + updateSource() + } + + function stop() { + console.log("[qmlvideofx] Content.stop") + if (contentLoader.source == "ContentVideo.qml") + contentLoader.item.stop() + theSource.sourceItem = null + } +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/ContentCamera.qml b/examples/video/qmlvideofx/qml/qmlvideofx/ContentCamera.qml new file mode 100644 index 000000000..c9b7d6ea3 --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/ContentCamera.qml @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtMultimedia 4.0 + +VideoOutput { + source: camera + + Camera { + id: camera + } +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/ContentImage.qml b/examples/video/qmlvideofx/qml/qmlvideofx/ContentImage.qml new file mode 100644 index 000000000..f3cb9c02c --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/ContentImage.qml @@ -0,0 +1,46 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Image { + smooth: true +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/ContentVideo.qml b/examples/video/qmlvideofx/qml/qmlvideofx/ContentVideo.qml new file mode 100644 index 000000000..29ea9587d --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/ContentVideo.qml @@ -0,0 +1,58 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtMultimedia 4.0 + +VideoOutput { + source: mediaPlayer + property alias mediaSource: mediaPlayer.source + property alias volume: mediaPlayer.volume + + MediaPlayer { + id: mediaPlayer + playing: true + volume: 0.5 + } + + function play() { mediaPlayer.play() } + function stop() { mediaPlayer.stop() } +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/DisableScreenSaver.qml b/examples/video/qmlvideofx/qml/qmlvideofx/DisableScreenSaver.qml new file mode 100644 index 000000000..a6ac75442 --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/DisableScreenSaver.qml @@ -0,0 +1,50 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtMobility.systeminfo 1.1 + +Item { + ScreenSaver { + screenSaverInhibited: true + } +} + diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/Divider.qml b/examples/video/qmlvideofx/qml/qmlvideofx/Divider.qml new file mode 100644 index 000000000..cab806629 --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/Divider.qml @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Rectangle { + id: root + anchors.fill: parent + color: "transparent" + property alias value: grip.value + property alias lineWidth: line.width + property alias gripSize: grip.width + + Rectangle { + id: grip + property real value: 0.5 + x: (value * parent.width) - width/2 + anchors.top: parent.top + width: 20 + height: width + radius: width/2 + color: "red" + + MouseArea { + anchors.fill: parent + + drag { + target: grip + axis: Drag.XAxis + minimumX: -parent.width/2 + maximumX: root.width - parent.width/2 + } + + onPositionChanged: { + if (drag.active) + updatePosition() + } + + onReleased: { + updatePosition() + } + + function updatePosition() { + value = (grip.x + grip.width/2) / grip.parent.width + } + } + } + + Rectangle { + id: line + anchors { top: parent.top; bottom: parent.bottom } + x: value * parent.width - (width / 2) + width: 2 + color: "red" + } +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/Effect.qml b/examples/video/qmlvideofx/qml/qmlvideofx/Effect.qml new file mode 100644 index 000000000..9a9f598a7 --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/Effect.qml @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +ShaderEffect { + property variant source + property int numParameters: 0 + property bool supportsDivider: false + property real targetWidth: 0 + property real targetHeight: 0 + property string fragmentShaderFilename + property string vertexShaderFilename + + QtObject { + id: d + property string fragmentShaderCommon: " + #ifdef GL_ES + precision mediump float; + #else + # define lowp + # define mediump + # define highp + #endif // GL_ES + " + } + + // The following is a workaround for the fact that ShaderEffect + // doesn't provide a way for shader programs to be read from a file, + // rather than being inline in the QML file + + onFragmentShaderFilenameChanged: + fragmentShader = d.fragmentShaderCommon + fileReader.readFile(fragmentShaderFilename) + onVertexShaderFilenameChanged: + vertexShader = fileReader.readFile(vertexShaderFilename) +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/EffectBillboard.qml b/examples/video/qmlvideofx/qml/qmlvideofx/EffectBillboard.qml new file mode 100644 index 000000000..d0583206b --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/EffectBillboard.qml @@ -0,0 +1,57 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + // Constant properties which must be supported by every effect + property int numParameters: 1 + property bool supportsDivider: true + + property real param1Value: 0.5 + property real dividerValue: 0.5 + property real grid: 10.0 * param1Value + + property real step_x: 0.0015625 + property real step_y: targetHeight ? (step_x * targetWidth / targetHeight) : 0.0 + + fragmentShaderFilename: "shaders/billboard.fsh" +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/EffectBlackAndWhite.qml b/examples/video/qmlvideofx/qml/qmlvideofx/EffectBlackAndWhite.qml new file mode 100644 index 000000000..7009cb4e2 --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/EffectBlackAndWhite.qml @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + // Constant properties which must be supported by every effect + property int numParameters: 1 + property bool supportsDivider: true + + property real param1Value: 0.5 + property real dividerValue: 0.5 + + fragmentShaderFilename: "shaders/blackandwhite.fsh" +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/EffectEmboss.qml b/examples/video/qmlvideofx/qml/qmlvideofx/EffectEmboss.qml new file mode 100644 index 000000000..3426d78d9 --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/EffectEmboss.qml @@ -0,0 +1,52 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + // Constant properties which must be supported by every effect + property int numParameters: 0 + property bool supportsDivider: true + + property real dividerValue: 0.5 + + fragmentShaderFilename: "shaders/emboss.fsh" +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/EffectGaussianBlur.qml b/examples/video/qmlvideofx/qml/qmlvideofx/EffectGaussianBlur.qml new file mode 100644 index 000000000..5610365a7 --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/EffectGaussianBlur.qml @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +// Based on http://www.geeks3d.com/20100909/shader-library-gaussian-blur-post-processing-filter-in-glsl/ + +import QtQuick 2.0 + +Item { +id: root + property alias targetWidth: verticalShader.targetWidth + property alias targetHeight: verticalShader.targetHeight + property alias source: verticalShader.source + + // Constant properties which must be supported by every effect + property int numParameters: 1 + property bool supportsDivider: true + + property real param1Value: 0.5 + property real dividerValue: 0.5 + + Effect { + id: verticalShader + anchors.fill: parent + property real dividerValue: parent.dividerValue + property real blurSize: 4.0 * parent.param1Value / targetHeight + fragmentShaderFilename: "shaders/gaussianblur_v.fsh" + } + + Effect { + id: horizontalShader + anchors.fill: parent + property real dividerValue: parent.dividerValue + property real blurSize: 4.0 * parent.param1Value / targetWidth + fragmentShaderFilename: "shaders/gaussianblur_h.fsh" + source: horizontalShaderSource + + ShaderEffectSource { + id: horizontalShaderSource + sourceItem: verticalShader + smooth: true + hideSource: true + } + } +} + diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/EffectGlow.qml b/examples/video/qmlvideofx/qml/qmlvideofx/EffectGlow.qml new file mode 100644 index 000000000..bb7321619 --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/EffectGlow.qml @@ -0,0 +1,52 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + // Constant properties which must be supported by every effect + property int numParameters: 0 + property bool supportsDivider: true + + property real dividerValue: 0.5 + + fragmentShaderFilename: "shaders/glow.fsh" +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/EffectIsolate.qml b/examples/video/qmlvideofx/qml/qmlvideofx/EffectIsolate.qml new file mode 100644 index 000000000..d51287752 --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/EffectIsolate.qml @@ -0,0 +1,57 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + // Constant properties which must be supported by every effect + property int numParameters: 2 + property bool supportsDivider: true + + property real param1Value: 0.5 + property real param2Value: 0.5 + property real dividerValue: 0.5 + + property real targetHue: 360.0 * param1Value + property real windowWidth: 60.0 * param2Value + + fragmentShaderFilename: "shaders/isolate.fsh" +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/EffectMagnify.qml b/examples/video/qmlvideofx/qml/qmlvideofx/EffectMagnify.qml new file mode 100644 index 000000000..a5ad4b73a --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/EffectMagnify.qml @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + id: root + + // Constant properties which must be supported by every effect + property int numParameters: 2 + property bool supportsDivider: false + + property real param1Value: 0.5 + property real radius: 200 * param1Value + + property real param2Value: 0.5 + property real diffractionIndex: param2Value + + property real posX: -1 + property real posY: -1 + + onTargetWidthChanged: if (posX == -1) posX = targetWidth / 2 + onTargetHeightChanged: if (posY == -1) posY = targetHeight / 2 + + fragmentShaderFilename: "shaders/magnify.fsh" + + MouseArea { + anchors.fill: parent + onPositionChanged: { root.posX = mouse.x; root.posY = root.targetHeight - mouse.y } + } +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/EffectPageCurl.qml b/examples/video/qmlvideofx/qml/qmlvideofx/EffectPageCurl.qml new file mode 100644 index 000000000..9a7335faf --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/EffectPageCurl.qml @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + // Constant properties which must be supported by every effect + property int numParameters: 1 + property bool supportsDivider: false + + property real param1Value: 0.5 + property real dividerValue: 0.5 + + property real curlExtent: 1.0 - param1Value + + fragmentShaderFilename: "shaders/pagecurl.fsh" +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/EffectPassThrough.qml b/examples/video/qmlvideofx/qml/qmlvideofx/EffectPassThrough.qml new file mode 100644 index 000000000..c9a081a7e --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/EffectPassThrough.qml @@ -0,0 +1,46 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/EffectPixelate.qml b/examples/video/qmlvideofx/qml/qmlvideofx/EffectPixelate.qml new file mode 100644 index 000000000..1890ee052 --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/EffectPixelate.qml @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + // Constant properties which must be supported by every effect + property int numParameters: 1 + property bool supportsDivider: true + + property real param1Value: 0.5 + property real dividerValue: 0.5 + + property real granularity: param1Value * 20 + + fragmentShaderFilename: "shaders/pixelate.fsh" +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/EffectPosterize.qml b/examples/video/qmlvideofx/qml/qmlvideofx/EffectPosterize.qml new file mode 100644 index 000000000..358369237 --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/EffectPosterize.qml @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + // Constant properties which must be supported by every effect + property int numParameters: 1 + property bool supportsDivider: true + + property real param1Value: 0.5 + property real dividerValue: 0.5 + + property real gamma: param1Value + property real numColors: 8.0 + + fragmentShaderFilename: "shaders/posterize.fsh" +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/EffectRipple.qml b/examples/video/qmlvideofx/qml/qmlvideofx/EffectRipple.qml new file mode 100644 index 000000000..12ed139fd --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/EffectRipple.qml @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + // Constant properties which must be supported by every effect + property int numParameters: 2 + property bool supportsDivider: true + + property real param1Value: 0.5 + property real param2Value: 0.5 + property real dividerValue: 0.5 + + property real time: 0 + + NumberAnimation on time { loops: Animation.Infinite; from: 0; to: Math.PI * 2; duration: 600 } + + property real amplitude: param1Value * 0.03 + property real n: param2Value * 7 + + fragmentShaderFilename: "shaders/ripple.fsh" +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/EffectSelectionPanel.qml b/examples/video/qmlvideofx/qml/qmlvideofx/EffectSelectionPanel.qml new file mode 100644 index 000000000..70c56db00 --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/EffectSelectionPanel.qml @@ -0,0 +1,154 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ +import QtQuick 2.0 + +Rectangle { + id: root + property int itemHeight: 25 + property string effectSource: "" + + signal clicked + + QtObject { + id: d + property Item selectedItem + } + + ListModel { + id: sources + ListElement { name: "No effect"; source: "EffectPassThrough.qml" } + ListElement { name: "Billboard"; source: "EffectBillboard.qml" } + ListElement { name: "Black & white"; source: "EffectBlackAndWhite.qml" } + ListElement { name: "Blur"; source: "EffectGaussianBlur.qml" } + ListElement { name: "Edge detection"; source: "EffectSobelEdgeDetection1.qml" } + //ListElement { name: "Edge detection (Sobel, #2)"; source: "EffectSobelEdgeDetection2.qml" } + ListElement { name: "Emboss"; source: "EffectEmboss.qml" } + ListElement { name: "Glow"; source: "EffectGlow.qml" } + ListElement { name: "Isolate"; source: "EffectIsolate.qml" } + ListElement { name: "Magnify"; source: "EffectMagnify.qml" } + ListElement { name: "Page curl"; source: "EffectPageCurl.qml" } + ListElement { name: "Pixelate"; source: "EffectPixelate.qml" } + ListElement { name: "Posterize"; source: "EffectPosterize.qml" } + ListElement { name: "Ripple"; source: "EffectRipple.qml" } + ListElement { name: "Sepia"; source: "EffectSepia.qml" } + ListElement { name: "Sharpen"; source: "EffectSharpen.qml" } + ListElement { name: "Shockwave"; source: "EffectShockwave.qml" } + ListElement { name: "Tilt shift"; source: "EffectTiltShift.qml" } + ListElement { name: "Toon"; source: "EffectToon.qml" } + ListElement { name: "Warhol"; source: "EffectWarhol.qml" } + ListElement { name: "Wobble"; source: "EffectWobble.qml" } + ListElement { name: "Vignette"; source: "EffectVignette.qml" } + } + + Component { + id: sourceDelegate + Item { + id: sourceDelegateItem + width: root.width + height: itemHeight + + Button { + id: sourceSelectorItem + anchors.centerIn: parent + width: 0.9 * parent.width + height: 0.8 * itemHeight + text: name + onClicked: { + if (d.selectedItem) + d.selectedItem.state = "baseState" + d.selectedItem = sourceDelegateItem + d.selectedItem.state = "selected" + effectSource = source + root.clicked() + } + } + + states: [ + State { + name: "selected" + PropertyChanges { + target: sourceSelectorItem + bgColor: "#ff8888" + } + } + ] + + Component.onCompleted: { + if (name == "No effect") { + state = "selected" + d.selectedItem = sourceDelegateItem + } + } + + transitions: [ + Transition { + from: "*" + to: "*" + ColorAnimation { + properties: "color" + easing.type: Easing.OutQuart + duration: 500 + } + } + ] + } + } + + Flickable { + anchors.fill: parent + contentHeight: (itemHeight * sources.count) + layout.anchors.topMargin + layout.spacing + clip: true + + Column { + id: layout + + anchors { + fill: parent + topMargin: 10 + } + + Repeater { + model: sources + delegate: sourceDelegate + } + } + } +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/EffectSepia.qml b/examples/video/qmlvideofx/qml/qmlvideofx/EffectSepia.qml new file mode 100644 index 000000000..13958940f --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/EffectSepia.qml @@ -0,0 +1,52 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + // Constant properties which must be supported by every effect + property int numParameters: 0 + property bool supportsDivider: true + + property real dividerValue: 0.5 + + fragmentShaderFilename: "shaders/sepia.fsh" +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/EffectSharpen.qml b/examples/video/qmlvideofx/qml/qmlvideofx/EffectSharpen.qml new file mode 100644 index 000000000..c5a8659a0 --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/EffectSharpen.qml @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + // Constant properties which must be supported by every effect + property int numParameters: 1 + property bool supportsDivider: true + + property real param1Value: 0.5 + property real dividerValue: 0.5 + + property real amount: 18.0 * param1Value + + fragmentShaderFilename: "shaders/sharpen.fsh" +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/EffectShockwave.qml b/examples/video/qmlvideofx/qml/qmlvideofx/EffectShockwave.qml new file mode 100644 index 000000000..ac12cb9b6 --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/EffectShockwave.qml @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + id: root + + // Constant properties which must be supported by every effect + property int numParameters: 1 + property bool supportsDivider: true + + property real param1Value: 0.5 + property real dividerValue: 0.5 + + property real granularity: param1Value * 20 + + property real centerX + property real centerY + property real time + + SequentialAnimation { + running: true + loops: Animation.Infinite + ScriptAction { + script: { + centerX = Math.random() + centerY = Math.random() + } + } + NumberAnimation { + target: root + property: "time" + from: 0 + to: 1 + duration: 1000 + } + } + + property real weight: param1Value + + fragmentShaderFilename: "shaders/shockwave.fsh" +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/EffectSobelEdgeDetection1.qml b/examples/video/qmlvideofx/qml/qmlvideofx/EffectSobelEdgeDetection1.qml new file mode 100644 index 000000000..e95737931 --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/EffectSobelEdgeDetection1.qml @@ -0,0 +1,58 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + // Constant properties which must be supported by every effect + property int numParameters: 1 + property bool supportsDivider: true + + property real param1Value: 0.5 + property real dividerValue: 0.5 + + property real mixLevel: param1Value + property real targetSize: 250 - (200 * param1Value) // TODO: fix ... + property real resS: targetSize + property real resT: targetSize + + fragmentShaderFilename: "shaders/sobeledgedetection1.fsh" +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/EffectSobelEdgeDetection2.qml b/examples/video/qmlvideofx/qml/qmlvideofx/EffectSobelEdgeDetection2.qml new file mode 100644 index 000000000..5061b2852 --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/EffectSobelEdgeDetection2.qml @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + // Constant properties which must be supported by every effect + property int numParameters: 1 + property bool supportsDivider: true + + property real param1Value: 0.5 + property real dividerValue: 0.5 + + property real weight: param1Value + + fragmentShaderFilename: "shaders/sobeledgedetection2.fsh" +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/EffectTiltShift.qml b/examples/video/qmlvideofx/qml/qmlvideofx/EffectTiltShift.qml new file mode 100644 index 000000000..8a81ec55d --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/EffectTiltShift.qml @@ -0,0 +1,52 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + // Constant properties which must be supported by every effect + property int numParameters: 0 + property bool supportsDivider: true + + property real dividerValue: 0.5 + + fragmentShaderFilename: "shaders/tiltshift.fsh" +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/EffectToon.qml b/examples/video/qmlvideofx/qml/qmlvideofx/EffectToon.qml new file mode 100644 index 000000000..9b8235c82 --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/EffectToon.qml @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + // Constant properties which must be supported by every effect + property int numParameters: 1 + property bool supportsDivider: true + + property real param1Value: 0.5 + property real dividerValue: 0.5 + + property real threshold: param1Value + property real targetSize: 250 - (200 * param1Value) // TODO: fix ... + property real resS: targetSize + property real resT: targetSize + + // TODO + property real magTol: 0.3 + property real quantize: 8.0 + + fragmentShaderFilename: "shaders/toon.fsh" +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/EffectVignette.qml b/examples/video/qmlvideofx/qml/qmlvideofx/EffectVignette.qml new file mode 100644 index 000000000..65b099d4e --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/EffectVignette.qml @@ -0,0 +1,52 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + // Constant properties which must be supported by every effect + property int numParameters: 0 + property bool supportsDivider: true + + property real dividerValue: 0.5 + + fragmentShaderFilename: "shaders/vignette.fsh" +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/EffectWarhol.qml b/examples/video/qmlvideofx/qml/qmlvideofx/EffectWarhol.qml new file mode 100644 index 000000000..39ddc4e93 --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/EffectWarhol.qml @@ -0,0 +1,52 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + // Constant properties which must be supported by every effect + property int numParameters: 0 + property bool supportsDivider: true + + property real dividerValue: 0.5 + + fragmentShaderFilename: "shaders/warhol.fsh" +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/EffectWobble.qml b/examples/video/qmlvideofx/qml/qmlvideofx/EffectWobble.qml new file mode 100644 index 000000000..d1b7491bd --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/EffectWobble.qml @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Effect { + // Constant properties which must be supported by every effect + property int numParameters: 1 + property bool supportsDivider: true + + property real param1Value: 0.5 + property real dividerValue: 0.5 + + property real amplitude: param1Value * 0.05 + property real frequency: 20 + property real time: 0 + + NumberAnimation on time { loops: Animation.Infinite; from: 0; to: Math.PI * 2; duration: 600 } + + fragmentShaderFilename: "shaders/wobble.fsh" +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/FileBrowser.qml b/examples/video/qmlvideofx/qml/qmlvideofx/FileBrowser.qml new file mode 100644 index 000000000..84157ea3b --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/FileBrowser.qml @@ -0,0 +1,354 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 +import Qt.labs.folderlistmodel 1.0 + +Rectangle { + id: root + color: "white" + property bool showFocusHighlight: false + property variant folders: folders1 + property variant view: view1 + property alias folder: folders1.folder + property color textColor: "black" + + signal openFile(string path) + + FolderListModel { + id: folders1 + folder: folder + } + + FolderListModel { + id: folders2 + folder: folder + } + + SystemPalette { + id: palette + } + + Component { + id: folderDelegate + + Rectangle { + id: wrapper + function launch() { + if (folders.isFolder(index)) + down(filePath); + else + root.openFile(filePath); + } + width: root.width + height: 52 + color: "transparent" + + Rectangle { + id: highlight; visible: false + anchors.fill: parent + color: palette.highlight + gradient: Gradient { + GradientStop { id: t1; position: 0.0; color: palette.highlight } + GradientStop { id: t2; position: 1.0; color: Qt.lighter(palette.highlight) } + } + } + + Item { + width: 48; height: 48 + Image { + source: "qrc:/images/folder.png" + anchors.centerIn: parent + visible: folders.isFolder(index) + } + } + + Text { + id: nameText + anchors.fill: parent; verticalAlignment: Text.AlignVCenter + text: fileName + anchors.leftMargin: 54 + font.pixelSize: 32 + color: (wrapper.ListView.isCurrentItem && root.showFocusHighlight) ? palette.highlightedText : textColor + elide: Text.ElideRight + } + + MouseArea { + id: mouseRegion + anchors.fill: parent + onPressed: { + root.showFocusHighlight = false; + wrapper.ListView.view.currentIndex = index; + } + onClicked: { if (folders == wrapper.ListView.view.model) launch() } + } + + states: [ + State { + name: "pressed" + when: mouseRegion.pressed + PropertyChanges { target: highlight; visible: true } + PropertyChanges { target: nameText; color: palette.highlightedText } + } + ] + } + } + + Rectangle { + id: cancelButton + width: 100 + height: titleBar.height - 7 + color: "black" + anchors { bottom: parent.bottom; horizontalCenter: parent.horizontalCenter } + + Text { + anchors { fill: parent; margins: 4 } + text: "Cancel" + color: "white" + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + font.pixelSize: 20 + } + + MouseArea { + anchors.fill: parent + onClicked: root.openFile("") + } + } + + ListView { + id: view1 + anchors.top: titleBar.bottom + anchors.bottom: cancelButton.top + x: 0 + width: parent.width + model: folders1 + delegate: folderDelegate + highlight: Rectangle { + color: palette.highlight + visible: root.showFocusHighlight && view1.count != 0 + gradient: Gradient { + GradientStop { id: t1; position: 0.0; color: palette.highlight } + GradientStop { id: t2; position: 1.0; color: Qt.lighter(palette.highlight) } + } + width: view1.currentItem == null ? 0 : view1.currentItem.width + } + highlightMoveSpeed: 1000 + pressDelay: 100 + focus: true + state: "current" + states: [ + State { + name: "current" + PropertyChanges { target: view1; x: 0 } + }, + State { + name: "exitLeft" + PropertyChanges { target: view1; x: -root.width } + }, + State { + name: "exitRight" + PropertyChanges { target: view1; x: root.width } + } + ] + transitions: [ + Transition { + to: "current" + SequentialAnimation { + NumberAnimation { properties: "x"; duration: 250 } + } + }, + Transition { + NumberAnimation { properties: "x"; duration: 250 } + NumberAnimation { properties: "x"; duration: 250 } + } + ] + Keys.onPressed: root.keyPressed(event.key) + } + + ListView { + id: view2 + anchors.top: titleBar.bottom + anchors.bottom: parent.bottom + x: parent.width + width: parent.width + model: folders2 + delegate: folderDelegate + highlight: Rectangle { + color: palette.highlight + visible: root.showFocusHighlight && view2.count != 0 + gradient: Gradient { + GradientStop { id: t1; position: 0.0; color: palette.highlight } + GradientStop { id: t2; position: 1.0; color: Qt.lighter(palette.highlight) } + } + width: view1.currentItem == null ? 0 : view1.currentItem.width + } + highlightMoveSpeed: 1000 + pressDelay: 100 + states: [ + State { + name: "current" + PropertyChanges { target: view2; x: 0 } + }, + State { + name: "exitLeft" + PropertyChanges { target: view2; x: -root.width } + }, + State { + name: "exitRight" + PropertyChanges { target: view2; x: root.width } + } + ] + transitions: [ + Transition { + to: "current" + SequentialAnimation { + NumberAnimation { properties: "x"; duration: 250 } + } + }, + Transition { + NumberAnimation { properties: "x"; duration: 250 } + } + ] + Keys.onPressed: root.keyPressed(event.key) + } + + Keys.onPressed: { + root.keyPressed(event.key); + if (event.key == Qt.Key_Return || event.key == Qt.Key_Select || event.key == Qt.Key_Right) { + view.currentItem.launch(); + event.accepted = true; + } else if (event.key == Qt.Key_Left) { + up(); + } + } + + BorderImage { + source: "qrc:/images/titlebar.sci"; + width: parent.width; + height: 52 + y: -7 + id: titleBar + + Rectangle { + id: upButton + width: 48 + height: titleBar.height - 7 + color: "transparent" + Image { anchors.centerIn: parent; source: "qrc:/images/up.png" } + MouseArea { id: upRegion; anchors.centerIn: parent + width: 56 + height: 56 + onClicked: if (folders.parentFolder != "") up() + } + states: [ + State { + name: "pressed" + when: upRegion.pressed + PropertyChanges { target: upButton; color: palette.highlight } + } + ] + } + + Rectangle { + color: "gray" + x: 48 + width: 1 + height: 44 + } + + Text { + anchors.left: upButton.right; anchors.right: parent.right; height: parent.height + anchors.leftMargin: 4; anchors.rightMargin: 4 + text: folders.folder + color: "white" + elide: Text.ElideLeft; horizontalAlignment: Text.AlignRight; verticalAlignment: Text.AlignVCenter + font.pixelSize: 32 + } + } + + function down(path) { + if (folders == folders1) { + view = view2 + folders = folders2; + view1.state = "exitLeft"; + } else { + view = view1 + folders = folders1; + view2.state = "exitLeft"; + } + view.x = root.width; + view.state = "current"; + view.focus = true; + folders.folder = path; + } + + function up() { + var path = folders.parentFolder; + if (folders == folders1) { + view = view2 + folders = folders2; + view1.state = "exitRight"; + } else { + view = view1 + folders = folders1; + view2.state = "exitRight"; + } + view.x = -root.width; + view.state = "current"; + view.focus = true; + folders.folder = path; + } + + function keyPressed(key) { + switch (key) { + case Qt.Key_Up: + case Qt.Key_Down: + case Qt.Key_Left: + case Qt.Key_Right: + root.showFocusHighlight = true; + break; + default: + // do nothing + break; + } + } +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/FileOpen.qml b/examples/video/qmlvideofx/qml/qmlvideofx/FileOpen.qml new file mode 100644 index 000000000..19f239197 --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/FileOpen.qml @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Rectangle { + id: root + color: "white" + property int buttonHeight: 35 + + signal openImage + signal openVideo + signal openCamera + signal close + + Rectangle { + anchors { + topMargin: 10 + bottomMargin: 10 + top: parent.top; + bottom: parent.bottom; + horizontalCenter: parent.horizontalCenter + } + width: 0.9 * parent.width + color: "transparent" + + Column { + anchors.fill: parent + spacing: 5 + Button { + text: "Open image" + height: buttonHeight + width: parent.width + onClicked: root.openImage() + } + Button { + text: "Open video" + height: buttonHeight + width: parent.width + onClicked: root.openVideo() + } + Button { + text: "Start camera" + height: buttonHeight + width: parent.width + onClicked: root.openCamera() + } + Button { + text: "Reset" + height: buttonHeight + width: parent.width + onClicked: root.close() + } + } + } +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/HintedMouseArea.qml b/examples/video/qmlvideofx/qml/qmlvideofx/HintedMouseArea.qml new file mode 100644 index 000000000..7b54705fa --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/HintedMouseArea.qml @@ -0,0 +1,113 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +// Mouse area which flashes to indicate its location on the screen + +import QtQuick 2.0 + +MouseArea { + property alias hintColor: hintRect.color + property bool hintEnabled: true + + Rectangle { + id: hintRect + anchors.fill: parent + color: "yellow" + opacity: 0 + + states: [ + State { + name: "high" + PropertyChanges { + target: hintRect + opacity: 0.8 + } + }, + State { + name: "low" + PropertyChanges { + target: hintRect + opacity: 0.4 + } + } + ] + + transitions: [ + Transition { + from: "low" + to: "high" + SequentialAnimation { + NumberAnimation { + properties: "opacity" + easing.type: Easing.InOutSine + duration: 500 + } + ScriptAction { script: hintRect.state = "low" } + } + }, + Transition { + from: "*" + to: "low" + SequentialAnimation { + NumberAnimation { + properties: "opacity" + easing.type: Easing.InOutSine + duration: 500 + } + ScriptAction { script: hintRect.state = "high" } + } + }, + Transition { + from: "*" + to: "baseState" + NumberAnimation { + properties: "opacity" + easing.type: Easing.InOutSine + duration: 500 + } + } + ] + } + + onHintEnabledChanged: hintRect.state = hintEnabled ? "low" : "baseState" + + Component.onCompleted: hintRect.state = "low" +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/ParameterPanel.qml b/examples/video/qmlvideofx/qml/qmlvideofx/ParameterPanel.qml new file mode 100644 index 000000000..43e245bf6 --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/ParameterPanel.qml @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Rectangle { + id: root + color: "transparent" + height: numParameters * sliderHeight + (numParameters + 1) * spacing + visible: numParameters > 0 + property color lineColor: "black" + property int numParameters: 1 + property alias param1Value: slider1.value + property alias param2Value: slider2.value + property bool enabled: true + property real gripSize: 25 + property real spacing: 10 + property real sliderHeight: 40 + + Slider { + id: slider1 + color: "white" + enabled: parent.enabled + gripSize: root.gripSize + height: sliderHeight + visible: enabled + anchors { + left: parent.left + right: parent.right + bottom: (root.numParameters == 1) ? root.bottom : slider2.top + margins: root.spacing + } + } + + Slider { + id: slider2 + color: "white" + enabled: parent.enabled && root.numParameters >= 2 + gripSize: root.gripSize + height: sliderHeight + visible: enabled + anchors { + left: parent.left + right: parent.right + bottom: root.bottom + margins: root.spacing + } + } +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/Slider.qml b/examples/video/qmlvideofx/qml/qmlvideofx/Slider.qml new file mode 100644 index 000000000..c19a9df3b --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/Slider.qml @@ -0,0 +1,106 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Rectangle { + id: root + color: "white" + radius: 5 + property alias value: grip.value + property color lineColor: "black" + property alias gripSize: grip.width + property alias enabled: mouseArea.enabled + + Rectangle { + anchors { left: parent.left; right: parent.right; verticalCenter: parent.verticalCenter } + height: 3 + color: displayedColor() + + Rectangle { + anchors { fill: parent; margins: 1 } + color: root.color + } + } + + Rectangle { + id: grip + property real value: 0.5 + x: (value * parent.width) - width/2 + anchors.verticalCenter: parent.verticalCenter + width: 20 + height: width + radius: width/2 + color: displayedColor() + + MouseArea { + id: mouseArea + anchors.fill: parent + drag { + target: grip + axis: Drag.XAxis + minimumX: -parent.width/2 + maximumX: root.width - parent.width/2 + } + onPositionChanged: { + if (drag.active) + updatePosition() + } + onReleased: { + updatePosition() + } + function updatePosition() { + value = (grip.x + grip.width/2) / grip.parent.width + } + } + + Rectangle { + anchors { fill: parent; margins: 1 } + radius: width/2 + color: root.color + } + } + + function displayedColor() { + var tint = Qt.rgba(color.r, color.g, color.b, 0.25) + return enabled ? lineColor : Qt.tint(color, tint) + } +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/main-largescreen.qml b/examples/video/qmlvideofx/qml/qmlvideofx/main-largescreen.qml new file mode 100644 index 000000000..0c24d0dc2 --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/main-largescreen.qml @@ -0,0 +1,205 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Rectangle { + id: root + width: 900 + height: 600 + color: "grey" + property string fileName + property alias volume: content.volume + property bool perfMonitorsLogging: false + property bool perfMonitorsVisible: false + + QtObject { + id: d + property string openFileType + } + + Rectangle { + id: inner + anchors.fill: parent + color: "grey" + + Content { + id: content + anchors { + top: parent.top + left: parent.left + margins: 5 + } + width: 600 + height: 600 + } + + Loader { + id: performanceLoader + function init() { + console.log("[qmlvideofx] performanceLoader.init logging " + root.perfMonitorsLogging + " visible " + root.perfMonitorsVisible) + var enabled = root.perfMonitorsLogging || root.perfMonitorsVisible + source = enabled ? "../performancemonitor/PerformanceItem.qml" : "" + } + onLoaded: { + item.parent = content + item.anchors.top = content.top + item.anchors.left = content.left + item.anchors.right = content.right + item.height = 100 + item.anchors.margins = 5 + item.logging = root.perfMonitorsLogging + item.displayed = root.perfMonitorsVisible + item.init() + } + } + + ParameterPanel { + id: parameterPanel + enabled: numParameters >= 1 + numParameters: content.effect ? content.effect.numParameters : 0 + anchors { + top: content.bottom + left: parent.left + bottom: parent.bottom + } + width: content.width + onParam1ValueChanged: updateParameters() + } + + EffectSelectionPanel { + id: effectSelectionPanel + anchors { + top: parent.top + left: content.right + right: parent.right + margins: 5 + } + height: 420 + itemHeight: 40 + onEffectSourceChanged: { + content.effectSource = effectSource + updateParameters() + } + } + + FileOpen { + id: fileOpen + anchors { + top: effectSelectionPanel.bottom + left: content.right + right: parent.right + bottom: parent.bottom + margins: 5 + } + buttonHeight: 32 + } + } + + Loader { + id: fileBrowserLoader + } + + Component.onCompleted: { + fileOpen.openImage.connect(openImage) + fileOpen.openVideo.connect(openVideo) + fileOpen.openCamera.connect(openCamera) + fileOpen.close.connect(close) + } + + function init() { + console.log("[qmlvideofx] main.init") + content.init() + performanceLoader.init() + if (fileName != "") { + d.openFileType = "video" + openFile(fileName) + } + } + + function qmlFramePainted() { + if (performanceLoader.item) + performanceLoader.item.qmlFramePainted() + } + + function updateParameters() { + if (content.effect.numParameters >= 1) + content.effect.param1Value = parameterPanel.param1Value + } + + function openImage() { + d.openFileType = "image" + showFileBrowser("../../images") + } + + function openVideo() { + d.openFileType = "video" + showFileBrowser("../../videos") + } + + function openCamera() { + content.openCamera() + } + + function close() { + content.openImage("qrc:/images/qt-logo.png") + } + + function showFileBrowser(path) { + fileBrowserLoader.source = "FileBrowser.qml" + fileBrowserLoader.item.parent = root + fileBrowserLoader.item.anchors.fill = root + fileBrowserLoader.item.openFile.connect(root.openFile) + fileBrowserLoader.item.folder = path + inner.visible = false + } + + function openFile(path) { + fileBrowserLoader.source = "" + if (path != "") { + if (d.openFileType == "image") + content.openImage(path) + else if (d.openFileType == "video") + content.openVideo(path) + } + inner.visible = true + } +} diff --git a/examples/video/qmlvideofx/qml/qmlvideofx/main-smallscreen.qml b/examples/video/qmlvideofx/qml/qmlvideofx/main-smallscreen.qml new file mode 100644 index 000000000..922c57d85 --- /dev/null +++ b/examples/video/qmlvideofx/qml/qmlvideofx/main-smallscreen.qml @@ -0,0 +1,416 @@ +/**************************************************************************** +** +** 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 Qt Mobility Components. +** +** $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$ +** +****************************************************************************/ + +import QtQuick 2.0 + +Rectangle { + id: root + width: 640 + height: 360 + color: "grey" + property string fileName + property alias volume: content.volume + property bool perfMonitorsLogging: false + property bool perfMonitorsVisible: false + + QtObject { + id: d + property string openFileType + } + + // Create ScreenSaver element via Loader, so this app will still run if the + // SystemInfo module is not available + Loader { + source: "DisableScreenSaver.qml" + } + + Loader { + id: performanceLoader + function init() { + console.log("[qmlvideofx] performanceLoader.init logging " + root.perfMonitorsLogging + " visible " + root.perfMonitorsVisible) + var enabled = root.perfMonitorsLogging || root.perfMonitorsVisible + source = enabled ? "../performancemonitor/PerformanceItem.qml" : "" + } + onLoaded: { + item.parent = root + item.anchors.fill = root + item.logging = root.perfMonitorsLogging + item.displayed = root.perfMonitorsVisible + item.init() + } + } + + Rectangle { + id: inner + anchors.fill: parent + color: "grey" + + Content { + id: content + anchors.fill: parent + gripSize: 40 + onVideoFramePainted: performanceLoader.item.videoFramePainted() + } + + ParameterPanel { + id: parameterPanel + + anchors { + left: parent.left; + right: parent.right; + margins: 10 + } + numParameters: content.effect.numParameters + y: parent.height + opacity: 0.75 + gripSize: 40 + + states: [ + State { + name: "shown" + PropertyChanges { + target: parameterPanel + y: parent.height - (parameterPanel.height + 10) + } + } + ] + + transitions: [ + Transition { + from: "*" + to: "*" + NumberAnimation { + properties: "y" + easing.type: Easing.OutQuart + duration: 500 + } + } + ] + + enabled: content.effect.numParameters >= 1 && effectSelectionPanel.state != "shown" + state: enabled ? "shown" : "baseState" + onParam1ValueChanged: updateParameters() + onParam2ValueChanged: updateParameters() + } + + EffectSelectionPanel { + id: effectSelectionPanel + anchors { + top: parent.top; + bottom: parameterPanel.top; + margins: 10 + } + x: parent.width + width: parent.width - 40 + opacity: 0.75 + radius: 20 + itemHeight: 50 + + states: [ + State { + name: "shown" + PropertyChanges { + target: effectSelectionPanel + x: 20 + } + } + ] + + transitions: [ + Transition { + from: "*" + to: "*" + NumberAnimation { + properties: "x" + easing.type: Easing.OutQuart + duration: 500 + } + } + ] + + onEffectSourceChanged: { + content.effectSource = effectSource + parameterPanel.numParameters = content.effect.numParameters + updateParameters() + } + + onClicked: state = "baseState" + } + + Rectangle { + id: fileOpenContainer + anchors { + top: parent.top + bottom: parameterPanel.top + margins: 10 + } + x: -width + width: parent.width - 40 + color: "transparent" + + Column { + anchors.fill: parent + + FileOpen { + id: fileOpen + color: "transparent" + width: parent.width + height: 200 + opacity: 0.75 + radius: 20 + buttonHeight: 40 + } + + MouseArea { + width: parent.width + height: 250 + onClicked: fileOpenContainer.state = "baseState" + } + } + + states: [ + State { + name: "shown" + PropertyChanges { + target: fileOpenContainer + x: 20 + } + } + ] + + transitions: [ + Transition { + from: "*" + to: "*" + NumberAnimation { + properties: "x" + easing.type: Easing.OutQuart + duration: 500 + } + } + ] + } + + Rectangle { + id: splashScreen + anchors { + horizontalCenter: parent.horizontalCenter + verticalCenter: parent.verticalCenter + } + width: 300 + height: 200 + radius: 0.1 * height + color: "white" + opacity: 0.9 + border { color: "black"; width: 2 } + + Text { + anchors { + fill: parent + margins: 5 + } + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + font.pixelSize: 24 + text: "Tap on left side to switch between sources.\n\nTap on right side to switch between effects." + wrapMode: Text.WordWrap + } + + MouseArea { + anchors.fill: parent + onClicked: parent.state = "hidden" + } + + states: [ + State { + name: "hidden" + PropertyChanges { + target: splashScreen + opacity: 0.0 + } + } + ] + + transitions: [ + Transition { + from: "*" + to: "*" + NumberAnimation { + properties: "opacity" + easing.type: Easing.OutQuart + duration: 500 + } + } + ] + } + + HintedMouseArea { + id: fileOpenMouseArea + anchors { + left: parent.left; + top: parent.top; + bottom: parameterPanel.top; + topMargin: 75 + } + width: 100 + onClicked: { + fileOpenMouseArea.hintEnabled = false + effectSelectionPanelMouseArea.hintEnabled = false + splashScreen.state = "hidden" + fileOpenContainer.state = "shown" + } + enabled: (fileOpenContainer.state != "shown" && effectSelectionPanel.state != "shown") + } + + HintedMouseArea { + id: effectSelectionPanelMouseArea + anchors { + right: parent.right; + top: parent.top; + bottom: parameterPanel.top; + topMargin: 75 + } + width: 100 + onClicked: { + fileOpenMouseArea.hintEnabled = false + effectSelectionPanelMouseArea.hintEnabled = false + splashScreen.state = "hidden" + effectSelectionPanel.state = "shown" + } + enabled: (fileOpenContainer.state != "shown" && effectSelectionPanel.state != "shown") + } + + Image { + source: "qrc:/images/close.png" + + anchors { + top: parent.top + right: parent.right + margins: 5 + } + + MouseArea { + anchors.fill: parent + onClicked: Qt.quit() + } + } + } + + Component.onCompleted: { + fileOpen.openImage.connect(openImage) + fileOpen.openVideo.connect(openVideo) + fileOpen.openCamera.connect(openCamera) + fileOpen.close.connect(close) + } + + Loader { + id: fileBrowserLoader + } + + // Called from main() once root properties have been set + function init() { + console.log("[qmlvideofx] main.init") + content.init() + performanceLoader.init() + if (fileName != "") { + fileOpenMouseArea.hintEnabled = false + effectSelectionPanelMouseArea.hintEnabled = false + splashScreen.state = "hidden" + d.openFileType = "video" + openFile(fileName) + } + } + + function qmlFramePainted() { + if (performanceLoader.item) + performanceLoader.item.qmlFramePainted() + } + + function updateParameters() { + if (content.effect.numParameters >= 1) + content.effect.param1Value = parameterPanel.param1Value + if (content.effect.numParameters >= 2) + content.effect.param2Value = parameterPanel.param2Value + } + + function openImage() { + fileOpenContainer.state = "baseState" + d.openFileType = "image" + showFileBrowser("../../images") + } + + function openVideo() { + fileOpenContainer.state = "baseState" + d.openFileType = "video" + showFileBrowser("../../videos") + } + + function openCamera() { + fileOpenContainer.state = "baseState" + content.openCamera() + } + + function close() { + fileOpenContainer.state = "baseState" + content.openImage("qrc:/images/qt-logo.png") + } + + function showFileBrowser(path) { + content.stop() + fileBrowserLoader.source = "FileBrowser.qml" + fileBrowserLoader.item.parent = root + fileBrowserLoader.item.anchors.fill = root + fileBrowserLoader.item.openFile.connect(root.openFile) + fileBrowserLoader.item.folder = path + inner.visible = false + } + + function openFile(path) { + fileBrowserLoader.source = "" + if (path != "") { + if (d.openFileType == "image") + content.openImage(path) + else if (d.openFileType == "video") + content.openVideo(path) + } + inner.visible = true + } +} |