About
Contact
QtCreator
KDevelop
Solarized
line #s on
1
// Copyright (C) 2016 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4
#include <private/boxwhiskersanimation_p.h>
5
#include <private/boxplotanimation_p.h>
6
#include <private/boxplotchartitem_p.h>
7
#include <private/boxwhiskersdata_p.h>
8
9
10
QT_BEGIN_NAMESPACE
11
12
BoxWhiskersAnimation
::
BoxWhiskersAnimation
(
BoxWhiskers
*
box
,
BoxPlotAnimation
*
boxPlotAnimation
,
13
int
duration
,
QEasingCurve
&
curve
)
14
:
ChartAnimation
(
box
),
15
m_box
(
box
),
16
m_changeAnimation
(
false
),
17
m_boxPlotAnimation
(
boxPlotAnimation
)
18
{
19
setDuration
(
duration
);
20
setEasingCurve
(
curve
);
21
}
22
23
BoxWhiskersAnimation
::
~BoxWhiskersAnimation
()
24
{
25
if
(
m_boxPlotAnimation
)
26
m_boxPlotAnimation
->
removeBoxAnimation
(
box:
m_box
);
27
}
28
29
QVariant
BoxWhiskersAnimation
::
interpolated
(
const
QVariant
&
from
,
const
QVariant
&
to
,
qreal
progress
)
const
30
{
31
BoxWhiskersData
startData
=
qvariant_cast
<
BoxWhiskersData
>(
v:
from
);
32
BoxWhiskersData
endData
=
qvariant_cast
<
BoxWhiskersData
>(
v:
to
);
33
BoxWhiskersData
result
;
34
35
if
(
m_changeAnimation
) {
36
result
.
m_lowerExtreme
=
startData
.
m_lowerExtreme
+
progress
* (
endData
.
m_lowerExtreme
-
startData
.
m_lowerExtreme
);
37
result
.
m_lowerQuartile
=
startData
.
m_lowerQuartile
+
progress
* (
endData
.
m_lowerQuartile
-
startData
.
m_lowerQuartile
);
38
result
.
m_median
=
startData
.
m_median
+
progress
* (
endData
.
m_median
-
startData
.
m_median
);
39
result
.
m_upperQuartile
=
startData
.
m_upperQuartile
+
progress
* (
endData
.
m_upperQuartile
-
startData
.
m_upperQuartile
);
40
result
.
m_upperExtreme
=
startData
.
m_upperExtreme
+
progress
* (
endData
.
m_upperExtreme
-
startData
.
m_upperExtreme
);
41
}
else
{
42
result
.
m_lowerExtreme
=
endData
.
m_median
+
progress
* (
endData
.
m_lowerExtreme
-
endData
.
m_median
);
43
result
.
m_lowerQuartile
=
endData
.
m_median
+
progress
* (
endData
.
m_lowerQuartile
-
endData
.
m_median
);
44
result
.
m_median
=
endData
.
m_median
;
45
result
.
m_upperQuartile
=
endData
.
m_median
+
progress
* (
endData
.
m_upperQuartile
-
endData
.
m_median
);
46
result
.
m_upperExtreme
=
endData
.
m_median
+
progress
* (
endData
.
m_upperExtreme
-
endData
.
m_median
);
47
}
48
result
.
m_index
=
endData
.
m_index
;
49
result
.
m_boxItems
=
endData
.
m_boxItems
;
50
51
result
.
m_maxX
=
endData
.
m_maxX
;
52
result
.
m_minX
=
endData
.
m_minX
;
53
result
.
m_maxY
=
endData
.
m_maxY
;
54
result
.
m_minY
=
endData
.
m_minY
;
55
result
.
m_seriesIndex
=
endData
.
m_seriesIndex
;
56
result
.
m_seriesCount
=
endData
.
m_seriesCount
;
57
58
return
QVariant
::
fromValue
(
value:
result
);
59
}
60
61
void
BoxWhiskersAnimation
::
updateCurrentValue
(
const
QVariant
&
value
)
62
{
63
const
BoxWhiskersData
data
=
qvariant_cast
<
BoxWhiskersData
>(
v:
value
);
64
m_box
->
setLayout
(
data
);
65
}
66
67
void
BoxWhiskersAnimation
::
setup
(
const
BoxWhiskersData
&
startData
,
const
BoxWhiskersData
&
endData
)
68
{
69
setKeyValueAt
(
step:
0.0
,
value:
QVariant
::
fromValue
(
value:
startData
));
70
setKeyValueAt
(
step:
1.0
,
value:
QVariant
::
fromValue
(
value:
endData
));
71
}
72
73
void
BoxWhiskersAnimation
::
setEndData
(
const
BoxWhiskersData
&
endData
)
74
{
75
if
(
state
() !=
QAbstractAnimation
::
Stopped
)
76
stop
();
77
78
setEndValue
(
QVariant
::
fromValue
(
value:
endData
));
79
}
80
81
void
BoxWhiskersAnimation
::
setStartData
(
const
BoxWhiskersData
&
endData
)
82
{
83
if
(
state
() !=
QAbstractAnimation
::
Stopped
)
84
stop
();
85
86
setStartValue
(
QVariant
::
fromValue
(
value:
endData
));
87
}
88
89
QT_END_NAMESPACE
90
91
#include
"moc_boxwhiskersanimation_p.cpp"
92
Definitions
BoxWhiskersAnimation
~BoxWhiskersAnimation
interpolated
updateCurrentValue
setup
setEndData
Start learning QML with our Intro Training
Find out more