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"
}
}
|