aboutsummaryrefslogtreecommitdiffstats
path: root/examples/quick/quickwidgets/qquickwidgetversuswindow_opengl/test.qml
blob: a7e30e8917db98e38c7f888494440870224b4659 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
// Copyright (C) 2017 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

import QtQuick
import QtQuick.Particles
import fbitem

Rectangle {
    id: root
    property alias currentText: edit.text
    property alias multisample: fbitem.multisample
    property bool translucency: false

    gradient: Gradient {
        id: grad
        GradientStop { position: 0; color: "steelblue" }
        GradientStop { position: 1; color: "black" }
    }

    onTranslucencyChanged: {
        if (translucency) {
            root.color = "transparent";
            root.gradient = null;
        } else {
            root.color = "white";
            root.gradient = grad;
        }
    }

    ParticleSystem {
        anchors.fill: parent
        running: true

        ImageParticle {
            source: "qrc:///particleresources/glowdot.png"
            alpha: 0
            colorVariation: 1
        }

        Emitter {
            anchors.fill: parent
            lifeSpan: 3000
            emitRate: 30
            size: 50
            sizeVariation: 10
            velocity: PointDirection { xVariation: 10; yVariation: 10; }
            acceleration: PointDirection {
                y: -10
                xVariation: 5
                yVariation: 5
            }
        }
    }

    Rectangle {
        y: 10
        width: parent.width / 2
        height: edit.contentHeight + 4
        anchors.horizontalCenter: parent.horizontalCenter
        border.color: "gray"
        border.width: 2
        radius: 8
        color: "lightGray"
        clip: true
        TextInput {
            id: edit
            anchors.horizontalCenter: parent.horizontalCenter
            maximumLength: 30
            focus: true
            font.pointSize: 20
        }
    }

    FbItem {
        id: fbitem
        anchors.fill: parent
        SequentialAnimation on eye.y {
            loops: Animation.Infinite
            NumberAnimation {
                from: 0
                to: 0.15
                duration: 1000
            }
            NumberAnimation {
                from: 0.15
                to: 0
                duration: 2000
            }
        }
        SequentialAnimation on eye.x {
            loops: Animation.Infinite
            NumberAnimation {
                from: 0
                to: -0.5
                duration: 3000
            }
            NumberAnimation {
                from: -0.5
                to: 0.5
                duration: 3000
                easing.type: Easing.OutQuad
            }
            NumberAnimation {
                from: 0.5
                to: 0
                duration: 1000
            }
        }
        SequentialAnimation on rotation.y {
            loops: Animation.Infinite
            NumberAnimation {
                from: 0
                to: 360
                duration: 5000
            }
            NumberAnimation {
                from: 360
                to: 0
                duration: 2500
            }
        }
        SequentialAnimation on rotation.x {
            loops: Animation.Infinite
            NumberAnimation {
                from: 0
                to: 360
                duration: 6000
            }
            NumberAnimation {
                from: 360
                to: 0
                duration: 3000
            }
        }
    }

    Text {
        id: effText
        text: edit.text
        anchors.centerIn: parent
        font.pointSize: 60
        style: Text.Outline
        styleColor: "green"
    }

    ShaderEffectSource {
        id: effSource
        sourceItem: effText
        hideSource: true
    }

    ShaderEffect {
        SequentialAnimation on scale {
            loops: Animation.Infinite
            NumberAnimation { from: 1.0; to: 2.0; duration: 1000; easing.type: Easing.InCirc }
            PauseAnimation { duration: 1000 }
            NumberAnimation { from: 2.0; to: 0.5; duration: 1000; easing.type: Easing.OutExpo }
            NumberAnimation { from: 0.5; to: 1.0; duration: 500 }
            PauseAnimation { duration: 1000 }
        }
        width: effText.width
        height: effText.height
        anchors.centerIn: parent
        property variant source: effSource
        property real amplitude: 0.002
        property real frequency: 10
        property real time: 0
        NumberAnimation on time { loops: Animation.Infinite; from: 0; to: Math.PI * 2; duration: 1000 }
        fragmentShader: "wobble.frag.qsb"
    }
}