diff options
author | Topi Reinio <topi.reinio@digia.com> | 2014-01-24 13:22:02 +0100 |
---|---|---|
committer | Topi Reiniƶ <topi.reinio@digia.com> | 2014-01-27 11:29:55 +0200 |
commit | ca01d5f9f5e960337a044be6e00de58fd4fbdb05 (patch) | |
tree | 3f2e25c5f05d5e5ba9bc44f2e5a09b86741c3fb5 /basicsuite/qt5-cinematicdemo/content/Button.qml | |
parent | 5a362f80d9da6d2d36efc127588f3c427211f98c (diff) |
Make basicsuite demos run stand-alone
This change will make the demos run standalone when built in
Qt Creator.
- Rename example directories to lowercase/non-whitespace
to avoid build & deployment problems
- Add title.txt files so titles remain displayed correctly
in the launcher
- Add a common shared source files used for the standalone
apps, and .pro-files for each example
- Remove .qmlproject files (not needed)
- Adjust documentation to match the new directory structure
Change-Id: Ib24e461952da3b2c88aab0363249115ea44ee0f2
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@digia.com>
Diffstat (limited to 'basicsuite/qt5-cinematicdemo/content/Button.qml')
-rw-r--r-- | basicsuite/qt5-cinematicdemo/content/Button.qml | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/basicsuite/qt5-cinematicdemo/content/Button.qml b/basicsuite/qt5-cinematicdemo/content/Button.qml new file mode 100644 index 0000000..c6ab643 --- /dev/null +++ b/basicsuite/qt5-cinematicdemo/content/Button.qml @@ -0,0 +1,112 @@ +import QtQuick 2.0 +import QtQuick.Particles 2.0 + +Item { + id: root + + property alias text: buttonTextItem.text + property bool effectsOn: true + signal clicked + + width: buttonBackgroundImage.width + height: buttonBackgroundImage.height + scale: mouseArea.pressed && mouseArea.containsMouse ? 0.9 : 1.0 + opacity: mouseArea.pressed && mouseArea.containsMouse ? 0.8 : 1.0 + + Behavior on scale { + NumberAnimation { duration: 150; easing.type: Easing.OutQuad } + } + Behavior on opacity { + NumberAnimation { duration: 150; easing.type: Easing.OutQuad } + } + + BorderImage { + id: buttonBackgroundImage + source: "images/button.png" + border.left: 24 + border.right: 24 + border.top: 20 + border.bottom: 20 + width: 140 + } + + // Stars effect + ParticleSystem { + id: particleSystem + anchors.fill: buttonBackgroundImage + running: root.effectsOn + ImageParticle { + source: "images/star.png" + rotationVariation: 180 + color:"#ffffff" + } + Emitter { + width: parent.width + height: 8 + emitRate: 16 + lifeSpan: 2000 + size: 32 + sizeVariation: 16 + endSize: 8 + velocity: PointDirection{ y: 20; x:-2; xVariation: 5; yVariation: 10 } + } + Turbulence { + width: parent.width + height: (parent.height / 2) + strength: 8 + } + } + + // Button background + ShaderEffectSource { + id: shaderSource + anchors.fill: buttonBackgroundImage + sourceItem: buttonBackgroundImage + hideSource: true + visible: false + } + + // Particles + ShaderEffectSource { + id: shaderSource2 + anchors.fill: particleSystem + sourceItem: particleSystem + hideSource: true + visible: false + } + + // Mask particles inside the button + ShaderEffect { + id: shaderEffectItem + anchors.fill: shaderSource + + property variant source: shaderSource + property variant source2: shaderSource2 + + fragmentShader: " + uniform sampler2D source; + uniform sampler2D source2; + uniform lowp float qt_Opacity; + varying highp vec2 qt_TexCoord0; + void main() { + lowp vec4 pix = texture2D(source, qt_TexCoord0); + lowp vec4 pix2 = texture2D(source2, qt_TexCoord0); + gl_FragColor = qt_Opacity * (pix + pix.a * pix2); + }" + } + + Text { + id: buttonTextItem + anchors.centerIn: parent + color: "#000000" + font.pixelSize: 28 + } + MouseArea { + id: mouseArea + anchors.fill: parent + anchors.margins: -16 + onClicked: { + root.clicked(); + } + } +} |