Immense Particles Refactor Part C
authorAlan Alpert <alan.alpert@nokia.com>
Wed, 8 Jun 2011 03:19:56 +0000 (13:19 +1000)
committerAlan Alpert <alan.alpert@nokia.com>
Wed, 8 Jun 2011 03:28:21 +0000 (13:28 +1000)
Demos work again (also, the examples I missed).

Added an example launcher for particles.

61 files changed:
demos/declarative/flickr/content/ImageDetails.qml
demos/declarative/flickr/content/Progress.qml
demos/declarative/flickr/content/StreamView.qml
demos/declarative/flickr/content/UnifiedDelegate.qml
demos/declarative/flickr/content/images/noise.png [new file with mode: 0644]
demos/declarative/flickr/flickr.qml
demos/declarative/minehunt/MinehuntCore/Explosion.qml
demos/declarative/photoviewer/PhotoViewerCore/AlbumDelegate.qml
demos/declarative/plasmapatrol/content/BlasterHardpoint.qml
demos/declarative/plasmapatrol/content/CannonHardpoint.qml
demos/declarative/plasmapatrol/content/ChoiceBox.qml
demos/declarative/plasmapatrol/content/Cruiser.qml
demos/declarative/plasmapatrol/content/Frigate.qml
demos/declarative/plasmapatrol/content/Hardpoint.qml
demos/declarative/plasmapatrol/content/HelpScreens.qml
demos/declarative/plasmapatrol/content/LaserHardpoint.qml
demos/declarative/plasmapatrol/content/PlasmaPatrolParticles.qml
demos/declarative/plasmapatrol/content/Ship.qml
demos/declarative/plasmapatrol/content/Sloop.qml
demos/declarative/plasmapatrol/plasmapatrol.qml
demos/declarative/samegame/SamegameCore/BoomBlock.qml
demos/declarative/samegame/samegame.qml
demos/declarative/snake/content/Cookie.qml
demos/declarative/snake/content/Link.qml
examples/declarative/particles/asteroid/blackhole.qml
examples/declarative/particles/exampleslauncher.qml [new file with mode: 0644]
examples/declarative/particles/launcherContent/Button.qml [moved from examples/declarative/particles/snow/content/Button.qml with 100% similarity]
examples/declarative/particles/launcherContent/Shell.qml [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/asteroid.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/blackhole.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/blurparticles.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/close.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/dynamicemitters.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/fireballs.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/flickr.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/gridsplosion.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/layered.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/list.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/overburst.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/package.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/plain.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/plasmapatrol.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/portal.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/rainbow.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/remove.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/samegame.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/shimmer.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/smile.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/smilefactory.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/snow.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/spaceexplorer.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/spriteparticles.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/spritestateparticles.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/spritevariedparticles.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/stream.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/trails.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/turbulence.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/ultraparticles.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/icons/velocityfrommotion.png [new file with mode: 0644]
examples/declarative/particles/launcherContent/launcher.js [new file with mode: 0644]
examples/declarative/particles/snow/snow.qml

index 62c3397..46827ae 100644 (file)
@@ -40,7 +40,7 @@
 ****************************************************************************/
 
 import QtQuick 2.0
-import Qt.labs.particles 2.0
+import QtQuick.Particles 2.0
 
 Flipable {
     id: container
@@ -57,6 +57,8 @@ Flipable {
     property int rating: 2
     property variant prevScale: 1.0
 
+    property int flipDuration: 1600
+
     signal closed
 
     transform: Rotation {
@@ -137,94 +139,172 @@ Flipable {
                             slider.value = prevScale;
                         }
                         if (inBackState && bigImage.status == Image.Ready)
-                            particleBox.imageInAnim();
+                            effectBox.imageInAnim();
                     }
                     property bool inBackState: false
                     onInBackStateChanged:{
                         if(inBackState && bigImage.status == Image.Ready)
-                            particleBox.imageInAnim();
+                            effectBox.imageInAnim();
                         else if (!inBackState && bigImage.status == Image.Ready)
-                            particleBox.imageOutAnim();
+                            effectBox.imageOutAnim();
                     }
                 }
+                ShaderEffectSource{
+                    id: pictureSource
+                    sourceItem: bigImage 
+                    smooth: true
+                    //Workaround: Doesn't work below lines
+                    width: bigImage.width
+                    height: bigImage.width
+                    visible: false
+                }
+                Turbulence{//only fill visible rect
+                    id: turbulence
+                    system: imageSystem
+                    anchors.fill: parent 
+                    frequency: 100
+                    strength: 250
+                    active: false
+                }
 
                 Item{
-                    id: particleBox
+                    id: effectBox
                     width: bigImage.width * bigImage.scale
                     height: bigImage.height * bigImage.scale
                     anchors.centerIn: parent
-
                     function imageInAnim(){
-                        cp.visible = true;
-                        pixAffect.onceOff = false;
                         bigImage.visible = false;
+                        noiseIn.visible = true;
                         endEffectTimer.start();
-                        pixelEmitter.pulse(1);
                     }
                     function imageOutAnim(){
-                        cp.visible = true;
-                        pixAffect.onceOff = true;
                         bigImage.visible = false;
+                        noiseIn.visible = false;
                         turbulence.active = true;
                         endEffectTimer.start();
                         pixelEmitter.burst(2048);
                     }
                     Timer{
                         id: endEffectTimer
-                        interval: 1000
+                        interval: flipDuration
                         repeat: false
                         running: false
                         onTriggered:{
-                            bigImage.visible = true;
                             turbulence.active = false;
-                            cp.visible = false;
+                            noiseIn.visible = false;
+                            bigImage.visible = true;
                         }
                     }
-                    ParticleSystem{
-                        id: imageSystem
-                    }
-                    ColoredParticle{
-                        id: cp
-                        system: imageSystem
-                        color: "gray"
-                        alpha: 1
-                        image: "images/squareParticle.png"
-                        colorVariation: 0
-                    }
-                    Picture{
-                        id: pixAffect
-                        system: imageSystem
+                    ShaderEffectItem{
+                        id: noiseIn
                         anchors.fill: parent
-                        image: container.photoUrl;
-                        onceOff: true
-                    }
-                    Turbulence{
-                        id: turbulence
-                        system: imageSystem
-                        anchors.fill: parent 
-                        frequency: 100
-                        strength: 250
-                        active: false
+                        property real t: 0
+                        visible: false
+                        onVisibleChanged: tAnim.start()
+                        NumberAnimation{
+                            id: tAnim
+                            target: noiseIn
+                            property: "t"
+                            from: 0.0 
+                            to: 1.0
+                            duration: flipDuration
+                        }
+                        property variant source: pictureSource
+                        property variant noise: ShaderEffectSource{
+                            sourceItem:Image{
+                                source: "images/noise.png"
+                            }
+                            hideSource: true
+                            smooth: false
+                        }
+                        fragmentShader:"
+                            uniform sampler2D noise;
+                            uniform sampler2D source;
+                            uniform highp float t;
+                            uniform lowp float qt_Opacity;
+                            varying highp vec2 qt_TexCoord0;
+                            void main(){
+                                //Want to use noise2, but it always returns (0,0)?
+                                if(texture2D(noise, qt_TexCoord0).w <= t)
+                                    gl_FragColor = texture2D(source, qt_TexCoord0) * qt_Opacity;
+                                else
+                                    gl_FragColor = vec4(0.,0.,0.,0.);
+                            }
+                        "
                     }
-                    TrailEmitter{
-                        id: pixelEmitter0
-                        system: imageSystem
-                        height: parent.height
-                        particleSize: 4
-                        particleDuration: 1000
-                        particlesPerSecond: 4096
-                        speed: PointVector{x: 360; xVariation: 8; yVariation: 4}
-                        emitting: false
+                    ParticleSystem{
+                        id: imageSystem
                     }
-                    TrailEmitter{
+                    Emitter{
                         id: pixelEmitter
                         system: imageSystem
-                        anchors.fill: parent
+                        //anchors.fill: parent
+                        width: Math.min(bigImage.width * bigImage.scale, flickable.width);
+                        height: Math.min(bigImage.height * bigImage.scale, flickable.height);
+                        anchors.centerIn: parent
                         particleSize: 4
-                        particleDuration: 1000
+                        particleDuration: flipDuration
                         particlesPerSecond: 2048
                         emitting: false
                     }
+                    CustomParticle{
+                        id: blowOut
+                        system: imageSystem
+                        property real maxWidth: effectBox.width
+                        property real maxHeight: effectBox.height
+                        vertexShader:"
+                            attribute highp vec2 vPos;
+                            attribute highp vec2 vTex;
+                            attribute highp vec4 vData; //  x = time,  y = lifeSpan, z = size,  w = endSize
+                            attribute highp vec4 vVec; // x,y = constant speed,  z,w = acceleration
+                            attribute highp float r;
+
+                            uniform highp float maxWidth;
+                            uniform highp float maxHeight;
+
+                            uniform highp mat4 qt_ModelViewProjectionMatrix;
+                            uniform highp float timestamp;
+                            uniform lowp float qt_Opacity;
+
+                            varying highp vec2 fTex2;
+                            varying lowp float fFade;
+
+                            void main() {
+                                fTex2 = vec2(vPos.x / maxWidth, vPos.y / maxHeight);
+                                highp float size = vData.z;
+                                highp float endSize = vData.w;
+
+                                highp float t = (timestamp - vData.x) / vData.y;
+
+                                highp float currentSize = mix(size, endSize, t * t);
+
+                                if (t < 0. || t > 1.)
+                                currentSize = 0.;
+
+                                highp vec2 pos = vPos
+                                - currentSize / 2. + currentSize * vTex          // adjust size
+                                + vVec.xy * t * vData.y         // apply speed vector..
+                                + 0.5 * vVec.zw * pow(t * vData.y, 2.);
+
+                                gl_Position = qt_ModelViewProjectionMatrix * vec4(pos.x, pos.y, 0, 1);
+
+                                highp float fadeIn = min(t * 10., 1.);
+                                highp float fadeOut = 1. - max(0., min((t - 0.75) * 4., 1.));
+
+                                fFade = 1.0;//fadeIn * fadeOut * qt_Opacity;
+                            }
+                        "
+                        property variant pictureTexture: pictureSource
+                        fragmentShader: "
+                            uniform sampler2D pictureTexture;
+                            varying highp vec2 fTex2;
+                            varying highp float fFade;
+                            void main() {
+                                gl_FragColor = texture2D(pictureTexture, fTex2) * fFade;
+                        }"
+                    }
+
+
 
                 }
             }
@@ -268,7 +348,7 @@ Flipable {
     transitions: Transition {
         SequentialAnimation {
             PropertyAction { target: bigImage; property: "smooth"; value: false }
-            NumberAnimation { easing.type: Easing.InOutQuad; properties: "angle"; duration: 1000 }
+            NumberAnimation { easing.type: Easing.InOutQuad; properties: "angle"; duration: flipDuration }
             PropertyAction { target: bigImage; property: "smooth"; value: !flickable.movingVertically }
         }
     }
index d403fee..30142b4 100644 (file)
@@ -40,7 +40,7 @@
 ****************************************************************************/
 
 import QtQuick 2.0
-import Qt.labs.particles 2.0
+import QtQuick.Particles 2.0
 
 Item{
     id: container
@@ -59,17 +59,17 @@ Item{
         running: container.visible
         id: barSys
     }
-    ColoredParticle{
+    ImageParticle{
         color: "lightsteelblue"
         alpha: 0.1
         colorVariation: 0.05
         image: "images/particle.png"
         system: barSys
     }
-    TrailEmitter{
+    Emitter{
         y: 2; height: parent.height-4;
         x: 2; width: Math.max(parent.width * progress - 4, 0);
-        speed: AngleVector{ angleVariation: 180; magnitudeVariation: 12 }
+        speed: AngledDirection{ angleVariation: 180; magnitudeVariation: 12 }
         system: barSys
         particlesPerSecond: width;
         particleDuration: 1000
index 26a3f35..22e7d5d 100644 (file)
@@ -40,7 +40,7 @@
 ****************************************************************************/
 
 import QtQuick 2.0
-import Qt.labs.particles 2.0
+import QtQuick.Particles 2.0
 
 Item{
     id: container
@@ -52,7 +52,7 @@ Item{
         anchors.fill:parent
         overwrite: false
     }
-    DataParticle{
+    ModelParticle{
         id: mp
         fade: false
         system: sys
@@ -66,35 +66,35 @@ Item{
         }
     }
     property real emitterSpacing: parent.width/3
-    TrailEmitter{
+    Emitter{
         system: sys
         width: emitterSpacing - 64
         x: emitterSpacing*0 + 32
         y: -128
         height: 32
-        speed: PointVector{ y: (container.height + 128)/12 }
+        speed: PointDirection{ y: (container.height + 128)/12 }
         particlesPerSecond: 0.4
         particleDuration: 1000000//eventually -1 should mean a million seconds for neatness
         maxParticles: 15
     }
-    TrailEmitter{
+    Emitter{
         system: sys
         width: emitterSpacing - 64
         x: emitterSpacing*1 + 32
         y: -128
         height: 32
-        speed: PointVector{ y: (container.height + 128)/12 }
+        speed: PointDirection{ y: (container.height + 128)/12 }
         particlesPerSecond: 0.4
         particleDuration: 1000000//eventually -1 should mean a million seconds for neatness
         maxParticles: 15
     }
-    TrailEmitter{
+    Emitter{
         system: sys
         width: emitterSpacing - 64
         x: emitterSpacing*2 + 32
         y: -128
         height: 32
-        speed: PointVector{ y: (container.height + 128)/12 }
+        speed: PointDirection{ y: (container.height + 128)/12 }
         particlesPerSecond: 0.4
         particleDuration: 1000000//eventually -1 should mean a million seconds for neatness
         maxParticles: 15
index aaf4ccb..f4c9267 100644 (file)
@@ -40,7 +40,7 @@
 ****************************************************************************/
 
 import QtQuick 2.0
-import Qt.labs.particles 2.0
+import QtQuick.Particles 2.0
 
 Package {
     function photoClicked() {
diff --git a/demos/declarative/flickr/content/images/noise.png b/demos/declarative/flickr/content/images/noise.png
new file mode 100644 (file)
index 0000000..abc3c18
Binary files /dev/null and b/demos/declarative/flickr/content/images/noise.png differ
index 8543692..b7ab19d 100644 (file)
@@ -40,7 +40,7 @@
 ****************************************************************************/
 
 import QtQuick 2.0
-import Qt.labs.particles 2.0
+import QtQuick.Particles 2.0
 import "content"
 
 Item {
@@ -56,7 +56,7 @@ Item {
             id: bgParticles
             startTime: 16000
         }
-        ColoredParticle {
+        ImageParticle {
             particles: ["trail"]
             image: "content/images/particle.png"
             color: "#1A1A6F"
@@ -65,12 +65,12 @@ Item {
             blueVariation: 0.8
             system: bgParticles
         }
-        TrailEmitter {
+        Emitter {
             particle: "drops"
             width: parent.width
             particlesPerSecond: 0.5
             particleDuration: 20000
-            speed: PointVector{
+            speed: PointDirection{
                 y: {screen.height/18} 
             }
             system: bgParticles
@@ -87,7 +87,7 @@ Item {
             anchors.fill: parent
             emissionWidth: 16
             emissionHeight: 16
-            emissionShape: Ellipse{}
+            emissionShape: EllipseShape{}
         }
 
         VisualDataModel{
index 33eabf0..668d7b1 100644 (file)
@@ -40,7 +40,7 @@
 ****************************************************************************/
 
 import QtQuick 1.0
-import Qt.labs.particles 1.0
+import QtQuick.Particles 1.0
 
 Item {
     property bool explode : false
index 9fcd68b..c6b3e1b 100644 (file)
@@ -85,7 +85,7 @@ Component {
                 anchors.centerIn: parent; anchors.verticalCenterOffset: -30
                 path: Path {
                     PathAttribute { name: 'z'; value: 9999.0 }
-                    PathLine { x: 1; y: 1 }
+                    PathLineShape { x: 1; y: 1 }
                     PathAttribute { name: 'z'; value: 0.0 }
                 }
             }
index 8d36cdf..fb30cd0 100644 (file)
@@ -39,7 +39,7 @@
 **
 ****************************************************************************/
 import QtQuick 2.0
-import Qt.labs.particles 2.0
+import QtQuick.Particles 2.0
 
 Item {
     id: container
@@ -53,14 +53,14 @@ Item {
 
     width: 24
     height: 24
-    TrailEmitter{
+    Emitter{
         id: visualization
         particle: "blaster"
         system: container.system
         emitting: show
         anchors.fill: parent
-        shape: Ellipse{}
-        speed: DirectedVector{ targetX: width/2; targetY: width/2; magnitude: -1; proportionalMagnitude: true}
+        shape: EllipseShape{}
+        speed: TargetedDirection{ targetX: width/2; targetY: width/2; magnitude: -1; proportionalMagnitude: true}
         particleDuration: 1000
         particlesPerSecond: 64 
 
@@ -112,7 +112,7 @@ Item {
                 rofTimer.repeat = false;
         }
     }
-    TrailEmitter{
+    Emitter{
         id: emitter
         particle: "blaster"
         emitting: false
@@ -125,7 +125,7 @@ Item {
         particleSize: 24
         particleEndSize:16
         particleSizeVariation: 8
-        speed: DirectedVector{
+        speed: TargetedDirection{
             id: blastVector
             targetX: target.x; targetY: target.y; magnitude: 1.1; proportionalMagnitude: true
         }
index d9a307c..fd49e4d 100644 (file)
@@ -39,7 +39,7 @@
 **
 ****************************************************************************/
 import QtQuick 2.0
-import Qt.labs.particles 2.0
+import QtQuick.Particles 2.0
 
 Item {
     id: container
@@ -49,7 +49,7 @@ Item {
 
     width: 24
     height: 24
-    TrailEmitter{
+    Emitter{
         id: visualization
         particle: "cannon"
         emitting: container.show
@@ -78,7 +78,7 @@ Item {
         }
         emitter.burst(1);
     }
-    TrailEmitter{
+    Emitter{
         id: emitter
         particle: "cannon"
         emitting: false
@@ -89,7 +89,7 @@ Item {
         particlesPerSecond: 1
         particleSize: 8
         particleEndSize: 4
-        speed: DirectedVector{
+        speed: TargetedDirection{
             id: blastVector
             targetX: target.x; targetY: target.y; magnitude: 1.1; proportionalMagnitude: true
         }
index 6bdc428..1e64a76 100644 (file)
@@ -39,7 +39,7 @@
 **
 ****************************************************************************/
 import QtQuick 2.0
-import Qt.labs.particles 2.0
+import QtQuick.Particles 2.0
 
 Item{
     id: container
index 8b80733..71af0ab 100644 (file)
@@ -39,7 +39,7 @@
 **
 ****************************************************************************/
 import QtQuick 2.0
-import Qt.labs.particles 2.0
+import QtQuick.Particles 2.0
 
 Item {
     id: container
@@ -54,7 +54,7 @@ Item {
     property int gunType: 0
     width: 128
     height: 128
-    TrailEmitter{
+    Emitter{
         //TODO: Cooler would be an 'orbiting' affector
         //TODO: On the subject, opacity and size should be grouped type 'overLife' if we can cram that in the particles
         system: container.system
@@ -62,7 +62,7 @@ Item {
         anchors.centerIn: parent
         width: 64
         height: 64
-        shape: Ellipse{}
+        shape: EllipseShape{}
 
         particlesPerSecond: hp > 0 ?  hp * 1 + 20 : 0 
         particleDuration: 2400
@@ -72,13 +72,13 @@ Item {
         particleSizeVariation: 16
         particleEndSize: 16
 
-        speed: AngleVector{angleVariation:360; magnitudeVariation: 32}
+        speed: AngledDirection{angleVariation:360; magnitudeVariation: 32}
     }
-    TrailEmitter{
+    Emitter{
         system: container.system
         particle: "cruiserArmor"
         anchors.fill: parent
-        shape: Ellipse{ fill: false }
+        shape: EllipseShape{ fill: false }
         emitting: hp>0
         
         particlesPerSecond: 16
index 54f6292..f18de01 100644 (file)
@@ -39,7 +39,7 @@
 **
 ****************************************************************************/
 import QtQuick 2.0
-import Qt.labs.particles 2.0
+import QtQuick.Particles 2.0
 
 Item {
     id: container
@@ -54,7 +54,7 @@ Item {
     property int gunType: 0
     width: 128
     height: 128
-    TrailEmitter{
+    Emitter{
         system: container.system
         particle: "frigateShield"
         anchors.centerIn: parent
@@ -63,13 +63,13 @@ Item {
         particleDuration: 4800
         emitting: hp > 0
     }
-    TrailEmitter{
+    Emitter{
         system: container.system
         particle: container.shipParticle
         anchors.centerIn: parent
         width: 64 
         height: 16
-        shape: Ellipse{}
+        shape: EllipseShape{}
 
         particleSize: 16
         particleSizeVariation: 8
index 184c750..3d4edb3 100644 (file)
@@ -39,7 +39,7 @@
 **
 ****************************************************************************/
 import QtQuick 2.0
-import Qt.labs.particles 2.0
+import QtQuick.Particles 2.0
 
 Item {
     id: container
index 8896aee..7e4fb9f 100644 (file)
@@ -39,7 +39,7 @@
 **
 ****************************************************************************/
 import QtQuick 2.0
-import Qt.labs.particles 2.0
+import QtQuick.Particles 2.0
 
 SequentialLoader {
     id: hLdr
index d6d470a..3705d29 100644 (file)
@@ -39,7 +39,7 @@
 **
 ****************************************************************************/
 import QtQuick 2.0
-import Qt.labs.particles 2.0
+import QtQuick.Particles 2.0
 
 Item {
     id: container
@@ -49,14 +49,14 @@ Item {
 
     width: 24
     height: 24
-    TrailEmitter{
+    Emitter{
         id: visualization
         particle: "laser"
         system: container.system
         anchors.fill: parent
         emitting: container.show
-        shape: Ellipse{}
-        speed: DirectedVector{ targetX: width/2; targetY: width/2; magnitude: -1; proportionalMagnitude: true }
+        shape: EllipseShape{}
+        speed: TargetedDirection{ targetX: width/2; targetY: width/2; magnitude: -1; proportionalMagnitude: true }
         particleDuration: 1000
         particlesPerSecond: 64
 
@@ -84,7 +84,7 @@ Item {
         emitter.pulse(0.10);
  //       console.log("Fire box: " +  Math.min(container.width/2, target.x) + "," + Math.min(container.height/2, target.y) + " " + (Math.max(container.width/2, target.x) - Math.min(container.width/2, target.x)) + "," + (Math.max(container.height/2, target.y) - Math.min(container.height/2, target.y)));
     }
-    TrailEmitter{
+    Emitter{
         id: emitter
         particle: "laser"
         emitting: false
@@ -93,7 +93,7 @@ Item {
         width: Math.max(container.width/2, target.x) - x;
         y: Math.min(container.height/2, target.y);
         height: Math.max(container.height/2, target.y) - y;
-        shape: Line{
+        shape: LineShape{
             mirrored: (emitter.y < 0 || emitter.x < 0) && !(emitter.y < 0 && emitter.x < 0 )//I just want XOR
         }
 
@@ -103,6 +103,6 @@ Item {
         particleSize: 16
         particleEndSize: 0
 
-        speed: PointVector{xVariation: 4; yVariation: 4}
+        speed: PointDirection{xVariation: 4; yVariation: 4}
     }
 }
index 7a6fcb9..26d5f21 100644 (file)
 **
 ****************************************************************************/
 import QtQuick 2.0
-import Qt.labs.particles 2.0
+import QtQuick.Particles 2.0
 
 Item{
     property ParticleSystem sys
-    ColoredParticle{
+    ImageParticle{
         system: sys
         particles: ["default"]
         image: "pics/blur-circle3.png"
@@ -51,7 +51,7 @@ Item{
         colorVariation: 0.1
         z: 0
     }
-    ColoredParticle{
+    ImageParticle{
         system: sys
         particles: ["redTeam"]
         image: "pics/blur-circle3.png"
@@ -59,7 +59,7 @@ Item{
         colorVariation: 0.1
         z: 0
     }
-    ColoredParticle{
+    ImageParticle{
         system: sys
         particles: ["greenTeam"]
         image: "pics/blur-circle3.png"
@@ -67,7 +67,7 @@ Item{
         colorVariation: 0.1
        z: 0
     }
-    ColoredParticle{
+    ImageParticle{
         system: sys
         particles: ["blaster"]
         image: "pics/star2.png"
@@ -76,7 +76,7 @@ Item{
         colorVariation: 0.2
         z: 2
     }
-    ColoredParticle{
+    ImageParticle{
         system: sys
         particles: ["laser"]
         image: "pics/star3.png"
@@ -85,7 +85,7 @@ Item{
         colorVariation: 0.2
         z: 2
     }
-    ColoredParticle{
+    ImageParticle{
         system: sys
         particles: ["cannon"]
         image: "pics/particle.png"
@@ -93,7 +93,7 @@ Item{
         colorVariation: 0.1
         z: 2
     }
-    ColoredParticle{
+    ImageParticle{
         system: sys
         particles: ["cannonCore"]
         image: "pics/particle.png"
@@ -101,7 +101,7 @@ Item{
         colorVariation: 0.8
         z: 1
     }
-    ColoredParticle{
+    ImageParticle{
         system: sys
         particles: ["cannonWake"]
         image: "pics/star.png"
@@ -109,7 +109,7 @@ Item{
         colorVariation: 0.2
         z: 1
     }
-    ColoredParticle{
+    ImageParticle{
         system: sys
         particles: ["frigateShield"]
         image: "pics/blur-circle2.png"
@@ -119,7 +119,7 @@ Item{
         greenVariation: 0.1
         z: 3
     }
-    SpriteParticle{
+    ImageParticle{
         system: sys
         particles: ["cruiserArmor"]
         z: 1
@@ -150,7 +150,7 @@ Item{
         follow: "cannon"
         particlesPerParticlePerSecond: 64
         particleDuration: 600
-        speed: AngleVector{ angleVariation: 360; magnitude: 48}
+        speed: AngledDirection{ angleVariation: 360; magnitude: 48}
         particleSize: 16
         particleEndSize: 8
         particleSizeVariation: 2
index 0ccea94..ce8fb60 100644 (file)
@@ -39,7 +39,7 @@
 **
 ****************************************************************************/
 import QtQuick 2.0
-import Qt.labs.particles 2.0
+import QtQuick.Particles 2.0
 
 Item {
     id: me
index 1b9bce7..20b60c5 100644 (file)
@@ -39,7 +39,7 @@
 **
 ****************************************************************************/
 import QtQuick 2.0
-import Qt.labs.particles 2.0
+import QtQuick.Particles 2.0
 
 Item {
     id: container
@@ -55,19 +55,19 @@ Item {
     property int gunType: 0
     width: 128
     height: 128
-    TrailEmitter{
+    Emitter{
         id: emitter
         //TODO: Cooler would be an 'orbiting' affector
         //TODO: On the subject, opacity and size should be grouped type 'overLife' if we can cram that in the particles
         system: container.system
         particle: container.shipParticle
-        shape: Ellipse{}
+        shape: EllipseShape{}
 
         particlesPerSecond: hp > 0 ?  hp + 20 : 0 
         particleDuration: blinkInterval
         maxParticles: (maxHP + 20)
 
-        acceleration: AngleVector{angleVariation: 360; magnitude: 8}
+        acceleration: AngledDirection{angleVariation: 360; magnitude: 8}
 
         particleSize: 24
         particleEndSize: 4
index 3a7b217..c490dfd 100644 (file)
@@ -39,7 +39,7 @@
 **
 ****************************************************************************/
 import QtQuick 2.0
-import Qt.labs.particles 2.0
+import QtQuick.Particles 2.0
 import "content"
 
 Rectangle {
@@ -93,18 +93,18 @@ Rectangle {
                     id: title
                     width: root.width
                     height: 240
-                    TrailEmitter{
+                    Emitter{
                         anchors.fill: parent
                         system: particles
                         emitting: true
                         particle: "default"
                         particlesPerSecond: 1200
                         particleDuration: 1200
-                        shape: Mask{source:"content/pics/TitleText.png"}
+                        shape: MaskShape{source:"content/pics/TitleText.png"}
                         particleSize: 16
                         particleEndSize: 0
                         particleSizeVariation: 8
-                        speed: AngleVector{angleVariation:360; magnitudeVariation: 6}
+                        speed: AngledDirection{angleVariation:360; magnitudeVariation: 6}
                     }
                 }
                 Button{
index 3d11fb9..b234688 100644 (file)
@@ -40,7 +40,7 @@
 ****************************************************************************/
 
 import QtQuick 2.0
-import Qt.labs.particles 2.0
+import QtQuick.Particles 2.0
 
 Item {
     id: block
@@ -71,7 +71,7 @@ Item {
         Behavior on opacity { NumberAnimation { duration: 200 } }
         anchors.fill: parent
     }
-    TrailEmitter {
+    Emitter {
         id: particles
         system: particleSystem
         particle: { 
@@ -85,12 +85,12 @@ Item {
         }
         anchors.fill: parent
 
-        speed: DirectedVector{targetX: block.width/2; targetY: block.height/2; magnitude: -60; magnitudeVariation: 60}
-        shape: Ellipse{fill:true}
+        speed: TargetedDirection{targetX: block.width/2; targetY: block.height/2; magnitude: -60; magnitudeVariation: 60}
+        shape: EllipseShape{fill:true}
         emitting: false;
         particleDuration: 700; particleDurationVariation: 100
         particlesPerSecond: 1000
-        maxParticles: 100 //only fires 0.1s bursts (still 2x old number, ColoredParticle wants less than 16000 max though)
+        maxParticles: 100 //only fires 0.1s bursts (still 2x old number, ImageParticle wants less than 16000 max though)
         particleSize: 28
         particleEndSize: 14
     }
index 0defdee..c547e1a 100644 (file)
@@ -40,7 +40,7 @@
 ****************************************************************************/
 
 import QtQuick 2.0
-import Qt.labs.particles 2.0
+import QtQuick.Particles 2.0
 import "SamegameCore"
 import "SamegameCore/samegame.js" as Logic
 
@@ -77,7 +77,7 @@ Rectangle {
         }
         Item{
             ParticleSystem{ id: particleSystem; }
-            ColoredParticle {
+            ImageParticle {
                 system: particleSystem
                 particles: ["red"]
                 color: Qt.darker("red");//Actually want desaturated...
@@ -85,7 +85,7 @@ Rectangle {
                 colorVariation: 0.4
                 alpha: 0.1
             }
-            ColoredParticle {
+            ImageParticle {
                 system: particleSystem
                 particles: ["green"]
                 color: Qt.darker("green");//Actually want desaturated...
@@ -93,7 +93,7 @@ Rectangle {
                 colorVariation: 0.4
                 alpha: 0.1
             }
-            ColoredParticle {
+            ImageParticle {
                 system: particleSystem
                 particles: ["blue"]
                 color: Qt.darker("blue");//Actually want desaturated...
index a076978..6efed6a 100644 (file)
@@ -40,7 +40,7 @@
 ****************************************************************************/
 
 import QtQuick 1.0
-import Qt.labs.particles 1.0
+import QtQuick.Particles 1.0
 
 Item  {
     id: root
index 8c1f486..4c58c4d 100644 (file)
@@ -40,7 +40,7 @@
 ****************************************************************************/
 
 import QtQuick 1.0
-import Qt.labs.particles 1.0
+import QtQuick.Particles 1.0
 
 Item { id:link
     property bool dying: false
index f2c9d0a..1bc406b 100644 (file)
@@ -98,6 +98,7 @@ Rectangle{
         image: "content/star.png"
         color: "white"
         colorVariation: 0.1
+        alpha: 0
     }
     ImageParticle{
         id: roids
@@ -144,9 +145,11 @@ Rectangle{
 
         colorVariation: 0.2
     }
-    GravitationalSingularity{
+    PointAttractor{
         id: gs; x: root.width/2; y: root.height/2; strength: 4000000;
         system: particles
+        physics: PointAttractor.Acceleration
+        proportionalToDistance: PointAttractor.Quadratic
     }
     Kill{
         system: particles
diff --git a/examples/declarative/particles/exampleslauncher.qml b/examples/declarative/particles/exampleslauncher.qml
new file mode 100644 (file)
index 0000000..c08123c
--- /dev/null
@@ -0,0 +1,182 @@
+/****************************************************************************
+**
+** 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 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$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+import QtQuick.Particles 2.0
+import "launcherContent/launcher.js" as Util
+import "launcherContent"
+
+Rectangle{
+    color: "black"
+    width: 360
+    height: 600
+    Shell{
+        z: 1
+        id: shell
+        anchors.fill: parent
+    }
+    property string emissionMode: "Falling"
+    onEmissionModeChanged: workaround.active = true
+    VisualDataModel{//TODO: Transitions between modes
+        id: vdm
+        model: [
+            "../spaceexplorer/spaceexplorer.qml",
+            "../snow/snow.qml",
+            "../asteroid/asteroid.qml",
+            "../asteroid/blackhole.qml",
+            "../custom/blurparticles.qml",
+            "../modelparticles/bubbles.qml",
+            "../modelparticles/gridsplosion.qml",
+            "../modelparticles/package.qml",
+            "../modelparticles/stream.qml",
+            "../allsmiles/plain.qml",
+            "../allsmiles/smile.qml",
+            "../allsmiles/smilefactory.qml",
+            "../allsmiles/ultraparticles.qml",
+            "../allsmiles/spriteparticles.qml",
+            "../allsmiles/spritestateparticles.qml",
+            "../allsmiles/spritevariedparticles.qml",
+            "../trails/velocityfrommotion.qml",
+            "../trails/fireballs.qml",
+            "../trails/list.qml",
+            "../trails/portal.qml",
+            "../trails/rainbow.qml",
+            "../trails/dynamicemitters.qml",
+            "../trails/overburst.qml",
+            "../trails/layered.qml",
+            "../trails/shimmer.qml",
+            "../trails/turbulence.qml",
+            "../../../../demos/declarative/samegame/samegame.qml",
+            "../../../../demos/declarative/plasmapatrol/plasmapatrol.qml",
+            "../../../../demos/declarative/flickr/flickr.qml"
+        ]
+        delegate: Rectangle{
+            color: "white"
+            width: 96
+            height: 96
+            Image{
+                width: 72
+                height: 72
+                anchors.centerIn: parent
+                source: Util.iconFromPath(modelData)
+            }
+            Text{
+                text: Util.nameFromPath(modelData)
+                anchors.bottom: parent.bottom
+                anchors.horizontalCenter: parent.horizontalCenter
+                font.pixelSize: 8
+            }
+            MouseArea{
+                anchors.fill: parent
+                onClicked: shell.setDemo(modelData)
+            }
+        }
+    }
+    GridView{
+        anchors.fill: parent
+        anchors.bottomMargin: 128
+        model: vdm
+        visible: emissionMode == "Grid"
+        opacity: visible?1:0
+        Behavior on opacity{NumberAnimation{}}
+    }
+    ParticleSystem{ id: sys }
+    ModelParticle{
+        system: sys
+        model: vdm
+    }
+    Kill{
+        //TODO: File bug?
+        id: workaround
+        system: sys
+        active: false
+        onActiveChanged: timer.start()
+        Timer{
+            id: timer
+            interval: 32
+            running: false
+            repeat: false
+            onTriggered: workaround.active = false
+        }
+    }
+    Emitter{
+        system: sys
+        emitting: emissionMode == "Falling"
+        width: parent.width
+        particlesPerSecond: 2
+        particleDuration: 6000
+        speed: PointDirection{y:100;}
+    }
+    Emitter{
+        system: sys
+        emitting: emissionMode == "Bursting"
+        anchors.centerIn: parent
+        particlesPerSecond: 2
+        particleDuration: 6000
+        speed: AngledDirection{magnitude: 60; angleVariation: 360}
+    }
+    Emitter{
+        system: sys
+        emitting: emissionMode == "Shimmering"
+        anchors.fill: parent
+        particlesPerSecond: 4
+        particleDuration: 4000
+    }
+    Row{
+        anchors.bottom: parent.bottom
+        anchors.horizontalCenter: parent.horizontalCenter
+        Button{
+            text:"Grid"
+            onClicked: emissionMode = "Grid";
+        }
+        Button{
+            text:"Fall"
+            onClicked: emissionMode = "Falling";
+        }
+        Button{
+            text:"Burst"
+            onClicked: emissionMode = "Bursting";
+        }
+        Button{
+            text:"Shimmer"
+            onClicked: emissionMode = "Shimmering";
+        }
+    }
+}
diff --git a/examples/declarative/particles/launcherContent/Shell.qml b/examples/declarative/particles/launcherContent/Shell.qml
new file mode 100644 (file)
index 0000000..32b0cd6
--- /dev/null
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** 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 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$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+
+Loader{
+    id: ldr
+    visible: false
+    focus: visible
+    onVisibleChanged: source = ""
+    opacity: visible?1:0
+    Behavior on opacity{NumberAnimation{}}
+
+    function setDemo(str){
+        visible = true;
+        source = str;
+    }
+    Image{//TODO: Augment with PARTICLES
+        z: 1
+        source: "icons/close.png"
+        MouseArea{
+            anchors.fill: parent
+            onClicked: ldr.visible = false;
+        }
+    }
+    Rectangle{
+        z: -1
+        anchors.fill: parent
+        color:"black"
+        Text{
+            color: "white"
+            anchors.centerIn: parent
+            text: ldr.Status == Loader.Error ? "Error :(" : "Loading..."
+        }
+        MouseArea{
+            id: graball
+            anchors.fill: parent
+            onClicked:;
+        }
+    }
+}
diff --git a/examples/declarative/particles/launcherContent/icons/asteroid.png b/examples/declarative/particles/launcherContent/icons/asteroid.png
new file mode 100644 (file)
index 0000000..77480c6
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/asteroid.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/blackhole.png b/examples/declarative/particles/launcherContent/icons/blackhole.png
new file mode 100644 (file)
index 0000000..4bd8040
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/blackhole.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/blurparticles.png b/examples/declarative/particles/launcherContent/icons/blurparticles.png
new file mode 100644 (file)
index 0000000..7a247ae
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/blurparticles.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/close.png b/examples/declarative/particles/launcherContent/icons/close.png
new file mode 100644 (file)
index 0000000..c37714e
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/close.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/dynamicemitters.png b/examples/declarative/particles/launcherContent/icons/dynamicemitters.png
new file mode 100644 (file)
index 0000000..0cdef9d
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/dynamicemitters.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/fireballs.png b/examples/declarative/particles/launcherContent/icons/fireballs.png
new file mode 100644 (file)
index 0000000..39acf8b
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/fireballs.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/flickr.png b/examples/declarative/particles/launcherContent/icons/flickr.png
new file mode 100644 (file)
index 0000000..4de2650
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/flickr.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/gridsplosion.png b/examples/declarative/particles/launcherContent/icons/gridsplosion.png
new file mode 100644 (file)
index 0000000..ec75453
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/gridsplosion.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/layered.png b/examples/declarative/particles/launcherContent/icons/layered.png
new file mode 100644 (file)
index 0000000..a28e3c4
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/layered.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/list.png b/examples/declarative/particles/launcherContent/icons/list.png
new file mode 100644 (file)
index 0000000..bc13263
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/list.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/overburst.png b/examples/declarative/particles/launcherContent/icons/overburst.png
new file mode 100644 (file)
index 0000000..4ef0435
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/overburst.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/package.png b/examples/declarative/particles/launcherContent/icons/package.png
new file mode 100644 (file)
index 0000000..eba8951
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/package.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/plain.png b/examples/declarative/particles/launcherContent/icons/plain.png
new file mode 100644 (file)
index 0000000..dd51498
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/plain.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/plasmapatrol.png b/examples/declarative/particles/launcherContent/icons/plasmapatrol.png
new file mode 100644 (file)
index 0000000..fda852b
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/plasmapatrol.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/portal.png b/examples/declarative/particles/launcherContent/icons/portal.png
new file mode 100644 (file)
index 0000000..9c1f910
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/portal.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/rainbow.png b/examples/declarative/particles/launcherContent/icons/rainbow.png
new file mode 100644 (file)
index 0000000..8841ea3
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/rainbow.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/remove.png b/examples/declarative/particles/launcherContent/icons/remove.png
new file mode 100644 (file)
index 0000000..c37714e
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/remove.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/samegame.png b/examples/declarative/particles/launcherContent/icons/samegame.png
new file mode 100644 (file)
index 0000000..d006982
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/samegame.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/shimmer.png b/examples/declarative/particles/launcherContent/icons/shimmer.png
new file mode 100644 (file)
index 0000000..0ff5319
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/shimmer.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/smile.png b/examples/declarative/particles/launcherContent/icons/smile.png
new file mode 100644 (file)
index 0000000..f990e6c
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/smile.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/smilefactory.png b/examples/declarative/particles/launcherContent/icons/smilefactory.png
new file mode 100644 (file)
index 0000000..78ea527
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/smilefactory.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/snow.png b/examples/declarative/particles/launcherContent/icons/snow.png
new file mode 100644 (file)
index 0000000..d98e14b
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/snow.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/spaceexplorer.png b/examples/declarative/particles/launcherContent/icons/spaceexplorer.png
new file mode 100644 (file)
index 0000000..770584a
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/spaceexplorer.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/spriteparticles.png b/examples/declarative/particles/launcherContent/icons/spriteparticles.png
new file mode 100644 (file)
index 0000000..5603964
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/spriteparticles.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/spritestateparticles.png b/examples/declarative/particles/launcherContent/icons/spritestateparticles.png
new file mode 100644 (file)
index 0000000..dd01518
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/spritestateparticles.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/spritevariedparticles.png b/examples/declarative/particles/launcherContent/icons/spritevariedparticles.png
new file mode 100644 (file)
index 0000000..495bb6b
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/spritevariedparticles.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/stream.png b/examples/declarative/particles/launcherContent/icons/stream.png
new file mode 100644 (file)
index 0000000..a74f9a0
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/stream.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/trails.png b/examples/declarative/particles/launcherContent/icons/trails.png
new file mode 100644 (file)
index 0000000..0337ebc
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/trails.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/turbulence.png b/examples/declarative/particles/launcherContent/icons/turbulence.png
new file mode 100644 (file)
index 0000000..2b9446e
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/turbulence.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/ultraparticles.png b/examples/declarative/particles/launcherContent/icons/ultraparticles.png
new file mode 100644 (file)
index 0000000..0d87eea
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/ultraparticles.png differ
diff --git a/examples/declarative/particles/launcherContent/icons/velocityfrommotion.png b/examples/declarative/particles/launcherContent/icons/velocityfrommotion.png
new file mode 100644 (file)
index 0000000..79baa08
Binary files /dev/null and b/examples/declarative/particles/launcherContent/icons/velocityfrommotion.png differ
diff --git a/examples/declarative/particles/launcherContent/launcher.js b/examples/declarative/particles/launcherContent/launcher.js
new file mode 100644 (file)
index 0000000..e4fedd3
--- /dev/null
@@ -0,0 +1,8 @@
+function nameFromPath(path){
+    var ret = path.split('/');
+    return ret[ret.length-1].split('.')[0];
+}
+function iconFromPath(path){
+    var ret = path.split('/');
+    return "launcherContent/icons/" + ret[ret.length-1].split('.')[0] + ".png";
+}
index 2be2438..41adccf 100644 (file)
@@ -41,6 +41,7 @@
 import QtQuick 2.0
 import QtQuick.Particles 2.0
 import "content"
+import "../launcherContent" as UI
 
 Rectangle{
     width: 360
@@ -77,15 +78,15 @@ Rectangle{
     Row{
         anchors.bottom: parent.bottom
         anchors.horizontalCenter: parent.horizontalCenter
-        Button{
+        UI.Button{
             text:"dx/dt"
             onClicked: wanderer.physics = Wander.Position;
         }
-        Button{
+        UI.Button{
             text:"dv/dt"
             onClicked: wanderer.physics = Wander.Velocity;
         }
-        Button{
+        UI.Button{
             text:"da/dt"
             onClicked: wanderer.physics = Wander.Acceleration;
         }