Unity 8
 All Classes Functions Properties
SoundAmplitudeDelegate.qml
1 /*
2  * Copyright (C) 2012, 2013 Canonical, Ltd.
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; version 3.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  */
16 
17 import QtQuick 2.0
18 
19 Rectangle {
20  id: delegate
21  property real amplitude: 0
22  property int totalCount
23  property int ballIndex
24  width: {
25  var t = amplitude / 0.6
26  t = -t * (t - 2)
27  return units.gu(0.25) + units.gu(5) * t
28  }
29  visible: amplitude != 0
30  height: width
31  color: "#DD4814"
32  radius: width * 0.5
33  antialiasing: true
34  opacity: {
35  // TODO This formula has hardocded values everywhere :D
36  var t
37  var dampenAfterThisIndex = 7
38  if (ballIndex < dampenAfterThisIndex) {
39  t = (totalCount - ballIndex) / totalCount
40  return Math.pow(t, 4);
41  } else {
42  t = (totalCount - dampenAfterThisIndex) / totalCount
43  t = Math.pow(t, 4);
44  t = t * 0.7;
45  return 0.09 + t * (totalCount - ballIndex) / (totalCount - dampenAfterThisIndex)
46  }
47  }
48 
49  property double orbitRadius: ((parent.width - units.gu(6)) / 2)
50  x: -(width / 2) + (parent.width / 2) + orbitRadius * Math.sin((ballIndex / totalCount) * (2 * Math.PI))
51  y: -(height / 2) + (parent.height / 2) - orbitRadius * Math.cos((ballIndex / totalCount) * (2 * Math.PI))
52 }