Update shadereffects example to new guidelines
authorAlan Alpert <alan.alpert@nokia.com>
Fri, 2 Mar 2012 04:16:55 +0000 (14:16 +1000)
committerQt by Nokia <qt-info@nokia.com>
Fri, 9 Mar 2012 10:03:23 +0000 (11:03 +0100)
Change-Id: Ifa4f06cbf990a2f3fd1c46a3c4fda02b5c42d15b
Reviewed-by: Yann Bodson <yann.bodson@nokia.com>
examples/quick/shadereffects/main.cpp [new file with mode: 0644]
examples/quick/shadereffects/shadereffects.pro [new file with mode: 0644]
examples/quick/shadereffects/shadereffects.qml
examples/quick/shadereffects/shadereffects.qmlproject [new file with mode: 0644]

diff --git a/examples/quick/shadereffects/main.cpp b/examples/quick/shadereffects/main.cpp
new file mode 100644 (file)
index 0000000..c28d2c8
--- /dev/null
@@ -0,0 +1,41 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+**     the names of its contributors may be used to endorse or promote
+**     products derived from this software without specific prior written
+**     permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "../../shared/shared.h"
+DECLARATIVE_EXAMPLE_MAIN(shadereffects)
diff --git a/examples/quick/shadereffects/shadereffects.pro b/examples/quick/shadereffects/shadereffects.pro
new file mode 100644 (file)
index 0000000..04ac62b
--- /dev/null
@@ -0,0 +1,10 @@
+TEMPLATE = app
+
+QT += quick declarative
+SOURCES += main.cpp
+
+target.path = $$[QT_INSTALL_EXAMPLES]/qtdeclarative/quick/shadereffects
+qml.files = shadereffects.qml content
+qml.path = $$[QT_INSTALL_EXAMPLES]/qtdeclarative/quick/shadereffects
+INSTALLS += target qml
+
index b820c81..b76c960 100644 (file)
@@ -42,7 +42,7 @@
 import QtQuick 2.0
 import "content"
 
-Image {
+Rectangle {
     width: 320
     height: 480
 /*!
@@ -54,261 +54,261 @@ Image {
     This example demonstrates a couple of visual effects that you can perform
     with shaders in QtQuick 2.0
 */
-    source: "../snake/content/pics/background.png"
-
-    Flickable {
-        anchors.fill: parent
-        contentWidth: 640
-        contentHeight: 360
+    property color col: "lightsteelblue"
+    gradient: Gradient {
+        GradientStop { position: 0.0; color: Qt.tint(col, "#20FFFFFF") }
+        GradientStop { position: 0.1; color: Qt.tint(col, "#20AAAAAA") }
+        GradientStop { position: 0.9; color: Qt.tint(col, "#20666666") }
+        GradientStop { position: 1.0; color: Qt.tint(col, "#20000000") }
+    }
 
-        ShaderEffectSource {
-            id: theSource
-            sourceItem: theItem
-            smooth: true
-        }
+    ShaderEffectSource {
+        id: theSource
+        sourceItem: theItem
+        smooth: true
+    }
 
-        function saturate(x) {
-            return Math.min(Math.max(x, 0), 1)
-        }
+    function saturate(x) {
+        return Math.min(Math.max(x, 0), 1)
+    }
 
-        function sliderToColor(x) {
-            return Qt.rgba(saturate(Math.max(2 - 6 * x, 6 * x - 4)),
-                            saturate(Math.min(6 * x, 4 - 6 * x)),
-                            saturate(Math.min(6 * x - 2, 6 - 6 * x)))
-        }
+    function sliderToColor(x) {
+        return Qt.rgba(saturate(Math.max(2 - 6 * x, 6 * x - 4)),
+                        saturate(Math.min(6 * x, 4 - 6 * x)),
+                        saturate(Math.min(6 * x - 2, 6 - 6 * x)))
+    }
 
-        Grid {
-            anchors.centerIn: parent
-            columns: 3
+    Grid {
+        anchors.centerIn: parent
+        columns: 2
 
-            Item {
-                id: theItem
-                width: 180
-                height: 180
-                ListView {
-                    anchors.centerIn: parent
-                    width: 160
-                    height: 140
-                    clip: true
-                    snapMode: ListView.SnapOneItem
-                    model: VisualItemModel {
-                        Text {
-                            width: 160
-                            height: 140
-                            horizontalAlignment: Text.AlignHCenter
-                            verticalAlignment: Text.AlignVCenter
-                            font.pixelSize: 120
-                            font.family: "Times"
-                            color: "blue"
-                            text: "Qt"
-                        }
-                        Image {
-                            width: 160
-                            height: 140
-                            source: "content/qt-logo.png"
-                            smooth: true
-                        }
-                        Image {
-                            width: 160
-                            height: 140
-                            source: "content/face-smile.png"
-                            smooth: true
-                        }
+        Item {
+            id: theItem
+            width: 160
+            height: 160
+            ListView {
+                anchors.centerIn: parent
+                width: 160
+                height: 140
+                clip: true
+                snapMode: ListView.SnapOneItem
+                model: VisualItemModel {
+                    Text {
+                        width: 160
+                        height: 140
+                        horizontalAlignment: Text.AlignHCenter
+                        verticalAlignment: Text.AlignVCenter
+                        font.pixelSize: 120
+                        font.family: "Times"
+                        color: "blue"
+                        text: "Qt"
+                    }
+                    Image {
+                        width: 160
+                        height: 140
+                        source: "content/qt-logo.png"
+                        smooth: true
+                    }
+                    Image {
+                        width: 160
+                        height: 140
+                        source: "content/face-smile.png"
+                        smooth: true
                     }
                 }
             }
-            ShaderEffect {
-                width: 180
-                height: 180
-                property variant source: theSource
-                property real amplitude: 0.04 * wobbleSlider.value
-                property real frequency: 20
-                property real time: 0
-                NumberAnimation on time { loops: Animation.Infinite; from: 0; to: Math.PI * 2; duration: 600 }
-                fragmentShader:
-                    "uniform lowp float qt_Opacity;" +
-                    "uniform highp float amplitude;" +
-                    "uniform highp float frequency;" +
-                    "uniform highp float time;" +
-                    "uniform sampler2D source;" +
-                    "varying highp vec2 qt_TexCoord0;" +
-                    "void main() {" +
-                    "    highp vec2 p = sin(time + frequency * qt_TexCoord0);" +
-                    "    gl_FragColor = texture2D(source, qt_TexCoord0 + amplitude * vec2(p.y, -p.x)) * qt_Opacity;" +
-                    "}"
-                Slider {
-                    id: wobbleSlider
-                    anchors.left: parent.left
-                    anchors.right: parent.right
-                    anchors.bottom: parent.bottom
-                    height: 40
-                }
+        }
+        ShaderEffect {
+            width: 160
+            height: 160
+            property variant source: theSource
+            property real amplitude: 0.04 * wobbleSlider.value
+            property real frequency: 20
+            property real time: 0
+            NumberAnimation on time { loops: Animation.Infinite; from: 0; to: Math.PI * 2; duration: 600 }
+            fragmentShader:
+                "uniform lowp float qt_Opacity;" +
+                "uniform highp float amplitude;" +
+                "uniform highp float frequency;" +
+                "uniform highp float time;" +
+                "uniform sampler2D source;" +
+                "varying highp vec2 qt_TexCoord0;" +
+                "void main() {" +
+                "    highp vec2 p = sin(time + frequency * qt_TexCoord0);" +
+                "    gl_FragColor = texture2D(source, qt_TexCoord0 + amplitude * vec2(p.y, -p.x)) * qt_Opacity;" +
+                "}"
+            Slider {
+                id: wobbleSlider
+                anchors.left: parent.left
+                anchors.right: parent.right
+                anchors.bottom: parent.bottom
+                height: 40
             }
-            ShaderEffect {
-                width: 180
-                height: 180
-                property variant source: theSource
-                property variant shadow: ShaderEffectSource {
-                    smooth: true
-                    sourceItem: ShaderEffect {
-                        width: theItem.width
-                        height: theItem.height
-                        property variant delta: Qt.size(0.0, 1.0 / height)
-                        property variant source: ShaderEffectSource {
-                            smooth: true
-                            sourceItem: ShaderEffect {
-                                width: theItem.width
-                                height: theItem.height
-                                property variant delta: Qt.size(1.0 / width, 0.0)
-                                property variant source: theSource
-                                fragmentShader: "
-                                    uniform lowp float qt_Opacity;
-                                    uniform sampler2D source;
-                                    uniform highp vec2 delta;
-                                    varying highp vec2 qt_TexCoord0;
-                                    void main() {
-                                        gl_FragColor =(0.0538 * texture2D(source, qt_TexCoord0 - 3.182 * delta)
-                                                     + 0.3229 * texture2D(source, qt_TexCoord0 - 1.364 * delta)
-                                                     + 0.2466 * texture2D(source, qt_TexCoord0)
-                                                     + 0.3229 * texture2D(source, qt_TexCoord0 + 1.364 * delta)
-                                                     + 0.0538 * texture2D(source, qt_TexCoord0 + 3.182 * delta)) * qt_Opacity;
-                                    }"
-                            }
+        }
+        ShaderEffect {
+            width: 160
+            height: 160
+            property variant source: theSource
+            property variant shadow: ShaderEffectSource {
+                smooth: true
+                sourceItem: ShaderEffect {
+                    width: theItem.width
+                    height: theItem.height
+                    property variant delta: Qt.size(0.0, 1.0 / height)
+                    property variant source: ShaderEffectSource {
+                        smooth: true
+                        sourceItem: ShaderEffect {
+                            width: theItem.width
+                            height: theItem.height
+                            property variant delta: Qt.size(1.0 / width, 0.0)
+                            property variant source: theSource
+                            fragmentShader: "
+                                uniform lowp float qt_Opacity;
+                                uniform sampler2D source;
+                                uniform highp vec2 delta;
+                                varying highp vec2 qt_TexCoord0;
+                                void main() {
+                                    gl_FragColor =(0.0538 * texture2D(source, qt_TexCoord0 - 3.182 * delta)
+                                                 + 0.3229 * texture2D(source, qt_TexCoord0 - 1.364 * delta)
+                                                 + 0.2466 * texture2D(source, qt_TexCoord0)
+                                                 + 0.3229 * texture2D(source, qt_TexCoord0 + 1.364 * delta)
+                                                 + 0.0538 * texture2D(source, qt_TexCoord0 + 3.182 * delta)) * qt_Opacity;
+                                }"
                         }
-                        fragmentShader: "
-                            uniform lowp float qt_Opacity;
-                            uniform sampler2D source;
-                            uniform highp vec2 delta;
-                            varying highp vec2 qt_TexCoord0;
-                            void main() {
-                                gl_FragColor =(0.0538 * texture2D(source, qt_TexCoord0 - 3.182 * delta)
-                                             + 0.3229 * texture2D(source, qt_TexCoord0 - 1.364 * delta)
-                                             + 0.2466 * texture2D(source, qt_TexCoord0)
-                                             + 0.3229 * texture2D(source, qt_TexCoord0 + 1.364 * delta)
-                                             + 0.0538 * texture2D(source, qt_TexCoord0 + 3.182 * delta)) * qt_Opacity;
-                            }"
                     }
-                }
-                property real angle: 0
-                property variant offset: Qt.point(15.0 * Math.cos(angle), 15.0 * Math.sin(angle))
-                NumberAnimation on angle { loops: Animation.Infinite; from: 0; to: Math.PI * 2; duration: 6000 }
-                property variant delta: Qt.size(offset.x / width, offset.y / height)
-                property real darkness: shadowSlider.value
-                fragmentShader: "
-                    uniform lowp float qt_Opacity;
-                    uniform highp vec2 offset;
-                    uniform sampler2D source;
-                    uniform sampler2D shadow;
-                    uniform highp float darkness;
-                    uniform highp vec2 delta;
-                    varying highp vec2 qt_TexCoord0;
-                    void main() {
-                        lowp vec4 fg = texture2D(source, qt_TexCoord0);
-                        lowp vec4 bg = texture2D(shadow, qt_TexCoord0 + delta);
-                        gl_FragColor = (fg + vec4(0., 0., 0., darkness * bg.a) * (1. - fg.a)) * qt_Opacity;
-                    }"
-                Slider {
-                    id: shadowSlider
-                    anchors.left: parent.left
-                    anchors.right: parent.right
-                    anchors.bottom: parent.bottom
-                    height: 40
+                    fragmentShader: "
+                        uniform lowp float qt_Opacity;
+                        uniform sampler2D source;
+                        uniform highp vec2 delta;
+                        varying highp vec2 qt_TexCoord0;
+                        void main() {
+                            gl_FragColor =(0.0538 * texture2D(source, qt_TexCoord0 - 3.182 * delta)
+                                         + 0.3229 * texture2D(source, qt_TexCoord0 - 1.364 * delta)
+                                         + 0.2466 * texture2D(source, qt_TexCoord0)
+                                         + 0.3229 * texture2D(source, qt_TexCoord0 + 1.364 * delta)
+                                         + 0.0538 * texture2D(source, qt_TexCoord0 + 3.182 * delta)) * qt_Opacity;
+                        }"
                 }
             }
-            ShaderEffect {
-                width: 180
-                height: 180
-                property variant source: theSource
-                property variant delta: Qt.size(0.5 / width, 0.5 / height)
-                fragmentShader: "
-                    uniform sampler2D source;
-                    uniform highp vec2 delta;
-                    uniform highp float qt_Opacity;
-                    varying highp vec2 qt_TexCoord0;
-                    void main() {
-                        lowp vec4 tl = texture2D(source, qt_TexCoord0 - delta);
-                        lowp vec4 tr = texture2D(source, qt_TexCoord0 + vec2(delta.x, -delta.y));
-                        lowp vec4 bl = texture2D(source, qt_TexCoord0 - vec2(delta.x, -delta.y));
-                        lowp vec4 br = texture2D(source, qt_TexCoord0 + delta);
-                        lowp vec4 gx = (tl + bl) - (tr + br);
-                        lowp vec4 gy = (tl + tr) - (bl + br);
-                        gl_FragColor.xyz = vec3(0.);
-                        gl_FragColor.w = clamp(dot(sqrt(gx * gx + gy * gy), vec4(1.)), 0., 1.) * qt_Opacity;
-                    }"
+            property real angle: 0
+            property variant offset: Qt.point(15.0 * Math.cos(angle), 15.0 * Math.sin(angle))
+            NumberAnimation on angle { loops: Animation.Infinite; from: 0; to: Math.PI * 2; duration: 6000 }
+            property variant delta: Qt.size(offset.x / width, offset.y / height)
+            property real darkness: shadowSlider.value
+            fragmentShader: "
+                uniform lowp float qt_Opacity;
+                uniform highp vec2 offset;
+                uniform sampler2D source;
+                uniform sampler2D shadow;
+                uniform highp float darkness;
+                uniform highp vec2 delta;
+                varying highp vec2 qt_TexCoord0;
+                void main() {
+                    lowp vec4 fg = texture2D(source, qt_TexCoord0);
+                    lowp vec4 bg = texture2D(shadow, qt_TexCoord0 + delta);
+                    gl_FragColor = (fg + vec4(0., 0., 0., darkness * bg.a) * (1. - fg.a)) * qt_Opacity;
+                }"
+            Slider {
+                id: shadowSlider
+                anchors.left: parent.left
+                anchors.right: parent.right
+                anchors.bottom: parent.bottom
+                height: 40
             }
-            ShaderEffect {
-                width: 180
-                height: 180
-                property variant source: theSource
-                property color tint: sliderToColor(colorizeSlider.value)
-                fragmentShader: "
-                    uniform sampler2D source;
-                    uniform lowp vec4 tint;
-                    uniform lowp float qt_Opacity;
-                    varying highp vec2 qt_TexCoord0;
-                    void main() {
-                        lowp vec4 c = texture2D(source, qt_TexCoord0);
-                        lowp float lo = min(min(c.x, c.y), c.z);
-                        lowp float hi = max(max(c.x, c.y), c.z);
-                        gl_FragColor = qt_Opacity * vec4(mix(vec3(lo), vec3(hi), tint.xyz), c.w);
-                    }"
-                Slider {
-                    id: colorizeSlider
-                    anchors.left: parent.left
-                    anchors.right: parent.right
-                    anchors.bottom: parent.bottom
-                    height: 40
-                }
+        }
+        ShaderEffect {
+            width: 160
+            height: 160
+            property variant source: theSource
+            property variant delta: Qt.size(0.5 / width, 0.5 / height)
+            fragmentShader: "
+                uniform sampler2D source;
+                uniform highp vec2 delta;
+                uniform highp float qt_Opacity;
+                varying highp vec2 qt_TexCoord0;
+                void main() {
+                    lowp vec4 tl = texture2D(source, qt_TexCoord0 - delta);
+                    lowp vec4 tr = texture2D(source, qt_TexCoord0 + vec2(delta.x, -delta.y));
+                    lowp vec4 bl = texture2D(source, qt_TexCoord0 - vec2(delta.x, -delta.y));
+                    lowp vec4 br = texture2D(source, qt_TexCoord0 + delta);
+                    lowp vec4 gx = (tl + bl) - (tr + br);
+                    lowp vec4 gy = (tl + tr) - (bl + br);
+                    gl_FragColor.xyz = vec3(0.);
+                    gl_FragColor.w = clamp(dot(sqrt(gx * gx + gy * gy), vec4(1.)), 0., 1.) * qt_Opacity;
+                }"
+        }
+        ShaderEffect {
+            width: 160
+            height: 160
+            property variant source: theSource
+            property color tint: sliderToColor(colorizeSlider.value)
+            fragmentShader: "
+                uniform sampler2D source;
+                uniform lowp vec4 tint;
+                uniform lowp float qt_Opacity;
+                varying highp vec2 qt_TexCoord0;
+                void main() {
+                    lowp vec4 c = texture2D(source, qt_TexCoord0);
+                    lowp float lo = min(min(c.x, c.y), c.z);
+                    lowp float hi = max(max(c.x, c.y), c.z);
+                    gl_FragColor = qt_Opacity * vec4(mix(vec3(lo), vec3(hi), tint.xyz), c.w);
+                }"
+            Slider {
+                id: colorizeSlider
+                anchors.left: parent.left
+                anchors.right: parent.right
+                anchors.bottom: parent.bottom
+                height: 40
             }
-            ShaderEffect {
-                width: 180
-                height: 180
-                mesh: Qt.size(10, 10)
-                property variant source: theSource
-                property real bend: 0
-                property real minimize: 0
-                property real side: genieSlider.value
-                SequentialAnimation on bend {
-                    loops: Animation.Infinite
-                    NumberAnimation { to: 1; duration: 700; easing.type: Easing.InOutSine }
-                    PauseAnimation { duration: 1600 }
-                    NumberAnimation { to: 0; duration: 700; easing.type: Easing.InOutSine }
-                    PauseAnimation { duration: 1000 }
-                }
-                SequentialAnimation on minimize {
-                    loops: Animation.Infinite
-                    PauseAnimation { duration: 300 }
-                    NumberAnimation { to: 1; duration: 700; easing.type: Easing.InOutSine }
-                    PauseAnimation { duration: 1000 }
-                    NumberAnimation { to: 0; duration: 700; easing.type: Easing.InOutSine }
-                    PauseAnimation { duration: 1300 }
-                }
-                vertexShader: "
-                    uniform highp mat4 qt_Matrix;
-                    uniform highp float bend;
-                    uniform highp float minimize;
-                    uniform highp float side;
-                    uniform highp float width;
-                    uniform highp float height;
-                    attribute highp vec4 qt_Vertex;
-                    attribute highp vec2 qt_MultiTexCoord0;
-                    varying highp vec2 qt_TexCoord0;
-                    void main() {
-                        qt_TexCoord0 = qt_MultiTexCoord0;
-                        highp vec4 pos = qt_Vertex;
-                        pos.y = mix(qt_Vertex.y, height, minimize);
-                        highp float t = pos.y / height;
-                        t = (3. - 2. * t) * t * t;
-                        pos.x = mix(qt_Vertex.x, side * width, t * bend);
-                        gl_Position = qt_Matrix * pos;
-                    }"
-                Slider {
-                    id: genieSlider
-                    anchors.left: parent.left
-                    anchors.right: parent.right
-                    anchors.bottom: parent.bottom
-                    height: 40
-                }
+        }
+        ShaderEffect {
+            width: 160
+            height: 160
+            mesh: Qt.size(10, 10)
+            property variant source: theSource
+            property real bend: 0
+            property real minimize: 0
+            property real side: genieSlider.value
+            SequentialAnimation on bend {
+                loops: Animation.Infinite
+                NumberAnimation { to: 1; duration: 700; easing.type: Easing.InOutSine }
+                PauseAnimation { duration: 1600 }
+                NumberAnimation { to: 0; duration: 700; easing.type: Easing.InOutSine }
+                PauseAnimation { duration: 1000 }
+            }
+            SequentialAnimation on minimize {
+                loops: Animation.Infinite
+                PauseAnimation { duration: 300 }
+                NumberAnimation { to: 1; duration: 700; easing.type: Easing.InOutSine }
+                PauseAnimation { duration: 1000 }
+                NumberAnimation { to: 0; duration: 700; easing.type: Easing.InOutSine }
+                PauseAnimation { duration: 1300 }
+            }
+            vertexShader: "
+                uniform highp mat4 qt_Matrix;
+                uniform highp float bend;
+                uniform highp float minimize;
+                uniform highp float side;
+                uniform highp float width;
+                uniform highp float height;
+                attribute highp vec4 qt_Vertex;
+                attribute highp vec2 qt_MultiTexCoord0;
+                varying highp vec2 qt_TexCoord0;
+                void main() {
+                    qt_TexCoord0 = qt_MultiTexCoord0;
+                    highp vec4 pos = qt_Vertex;
+                    pos.y = mix(qt_Vertex.y, height, minimize);
+                    highp float t = pos.y / height;
+                    t = (3. - 2. * t) * t * t;
+                    pos.x = mix(qt_Vertex.x, side * width, t * bend);
+                    gl_Position = qt_Matrix * pos;
+                }"
+            Slider {
+                id: genieSlider
+                anchors.left: parent.left
+                anchors.right: parent.right
+                anchors.bottom: parent.bottom
+                height: 40
             }
         }
     }
diff --git a/examples/quick/shadereffects/shadereffects.qmlproject b/examples/quick/shadereffects/shadereffects.qmlproject
new file mode 100644 (file)
index 0000000..10191ad
--- /dev/null
@@ -0,0 +1,16 @@
+import QmlProject 1.1
+
+Project {
+    mainFile: "shadereffects.qml"
+
+    /* Include .qml, .js, and image files from current directory and subdirectories */
+    QmlFiles {
+        directory: "."
+    }
+    JavaScriptFiles {
+        directory: "."
+    }
+    ImageFiles {
+        directory: "."
+    }
+}