| Line | Source Code | Coverage |
|---|
| 1 | /**************************************************************************** | - |
| 2 | ** | - |
| 3 | ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). | - |
| 4 | ** Contact: http://www.qt-project.org/legal | - |
| 5 | ** | - |
| 6 | ** This file is part of the QtGui module of the Qt Toolkit. | - |
| 7 | ** | - |
| 8 | ** $QT_BEGIN_LICENSE:LGPL$ | - |
| 9 | ** Commercial License Usage | - |
| 10 | ** Licensees holding valid commercial Qt licenses may use this file in | - |
| 11 | ** accordance with the commercial license agreement provided with the | - |
| 12 | ** Software or, alternatively, in accordance with the terms contained in | - |
| 13 | ** a written agreement between you and Digia. For licensing terms and | - |
| 14 | ** conditions see http://qt.digia.com/licensing. For further information | - |
| 15 | ** use the contact form at http://qt.digia.com/contact-us. | - |
| 16 | ** | - |
| 17 | ** GNU Lesser General Public License Usage | - |
| 18 | ** Alternatively, this file may be used under the terms of the GNU Lesser | - |
| 19 | ** General Public License version 2.1 as published by the Free Software | - |
| 20 | ** Foundation and appearing in the file LICENSE.LGPL included in the | - |
| 21 | ** packaging of this file. Please review the following information to | - |
| 22 | ** ensure the GNU Lesser General Public License version 2.1 requirements | - |
| 23 | ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. | - |
| 24 | ** | - |
| 25 | ** In addition, as a special exception, Digia gives you certain additional | - |
| 26 | ** rights. These rights are described in the Digia Qt LGPL Exception | - |
| 27 | ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. | - |
| 28 | ** | - |
| 29 | ** GNU General Public License Usage | - |
| 30 | ** Alternatively, this file may be used under the terms of the GNU | - |
| 31 | ** General Public License version 3.0 as published by the Free Software | - |
| 32 | ** Foundation and appearing in the file LICENSE.GPL included in the | - |
| 33 | ** packaging of this file. Please review the following information to | - |
| 34 | ** ensure the GNU General Public License version 3.0 requirements will be | - |
| 35 | ** met: http://www.gnu.org/copyleft/gpl.html. | - |
| 36 | ** | - |
| 37 | ** | - |
| 38 | ** $QT_END_LICENSE$ | - |
| 39 | ** | - |
| 40 | ****************************************************************************/ | - |
| 41 | | - |
| 42 | #include "qstyleanimation_p.h" | - |
| 43 | #include <qcoreapplication.h> | - |
| 44 | #include <qwidget.h> | - |
| 45 | #include <qevent.h> | - |
| 46 | | - |
| 47 | QT_BEGIN_NAMESPACE | - |
| 48 | | - |
| 49 | QStyleAnimation::QStyleAnimation(QObject *target) : QAbstractAnimation(), | - |
| 50 | _delay(0), _duration(-1), _startTime(QTime::currentTime()) | - |
| 51 | { | - |
| 52 | if (target) { partially evaluated: target| yes Evaluation Count:2 | no Evaluation Count:0 |
| 0-2 |
| 53 | moveToThread(target->thread()); executed (the execution status of this line is deduced): moveToThread(target->thread()); | - |
| 54 | setParent(target); executed (the execution status of this line is deduced): setParent(target); | - |
| 55 | } executed: }Execution Count:2 | 2 |
| 56 | } executed: }Execution Count:2 | 2 |
| 57 | | - |
| 58 | QStyleAnimation::~QStyleAnimation() | - |
| 59 | { | - |
| 60 | } | - |
| 61 | | - |
| 62 | QObject *QStyleAnimation::target() const | - |
| 63 | { | - |
| 64 | return parent(); executed: return parent();Execution Count:51 | 51 |
| 65 | } | - |
| 66 | | - |
| 67 | int QStyleAnimation::duration() const | - |
| 68 | { | - |
| 69 | return _duration; executed: return _duration;Execution Count:33 | 33 |
| 70 | } | - |
| 71 | | - |
| 72 | void QStyleAnimation::setDuration(int duration) | - |
| 73 | { | - |
| 74 | _duration = duration; never executed (the execution status of this line is deduced): _duration = duration; | - |
| 75 | } | 0 |
| 76 | | - |
| 77 | int QStyleAnimation::delay() const | - |
| 78 | { | - |
| 79 | return _delay; never executed: return _delay; | 0 |
| 80 | } | - |
| 81 | | - |
| 82 | void QStyleAnimation::setDelay(int delay) | - |
| 83 | { | - |
| 84 | _delay = delay; never executed (the execution status of this line is deduced): _delay = delay; | - |
| 85 | } | 0 |
| 86 | | - |
| 87 | QTime QStyleAnimation::startTime() const | - |
| 88 | { | - |
| 89 | return _startTime; never executed: return _startTime; | 0 |
| 90 | } | - |
| 91 | | - |
| 92 | void QStyleAnimation::setStartTime(const QTime &time) | - |
| 93 | { | - |
| 94 | _startTime = time; never executed (the execution status of this line is deduced): _startTime = time; | - |
| 95 | } | 0 |
| 96 | | - |
| 97 | void QStyleAnimation::updateTarget() | - |
| 98 | { | - |
| 99 | QEvent event(QEvent::StyleAnimationUpdate); executed (the execution status of this line is deduced): QEvent event(QEvent::StyleAnimationUpdate); | - |
| 100 | QCoreApplication::sendEvent(target(), &event); executed (the execution status of this line is deduced): QCoreApplication::sendEvent(target(), &event); | - |
| 101 | } executed: }Execution Count:15 | 15 |
| 102 | | - |
| 103 | bool QStyleAnimation::isUpdateNeeded() const | - |
| 104 | { | - |
| 105 | return currentTime() > _delay; executed: return currentTime() > _delay;Execution Count:32 | 32 |
| 106 | } | - |
| 107 | | - |
| 108 | void QStyleAnimation::updateCurrentTime(int) | - |
| 109 | { | - |
| 110 | if (QObject *tgt = target()) { partially evaluated: QObject *tgt = target()| yes Evaluation Count:32 | no Evaluation Count:0 |
| 0-32 |
| 111 | if (tgt->isWidgetType()) { partially evaluated: tgt->isWidgetType()| yes Evaluation Count:32 | no Evaluation Count:0 |
| 0-32 |
| 112 | QWidget *widget = static_cast<QWidget *>(tgt); executed (the execution status of this line is deduced): QWidget *widget = static_cast<QWidget *>(tgt); | - |
| 113 | if (!widget->isVisible() || widget->window()->isMinimized()) partially evaluated: !widget->isVisible()| no Evaluation Count:0 | yes Evaluation Count:32 |
partially evaluated: widget->window()->isMinimized()| no Evaluation Count:0 | yes Evaluation Count:32 |
| 0-32 |
| 114 | stop(); | 0 |
| 115 | } executed: }Execution Count:32 | 32 |
| 116 | | - |
| 117 | if (isUpdateNeeded()) evaluated: isUpdateNeeded()| yes Evaluation Count:15 | yes Evaluation Count:17 |
| 15-17 |
| 118 | updateTarget(); executed: updateTarget();Execution Count:15 | 15 |
| 119 | } executed: }Execution Count:32 | 32 |
| 120 | } executed: }Execution Count:32 | 32 |
| 121 | | - |
| 122 | QProgressStyleAnimation::QProgressStyleAnimation(int speed, QObject *target) : | - |
| 123 | QStyleAnimation(target), _speed(speed), _step(-1) | - |
| 124 | { | - |
| 125 | } executed: }Execution Count:2 | 2 |
| 126 | | - |
| 127 | int QProgressStyleAnimation::animationStep() const | - |
| 128 | { | - |
| 129 | return currentTime() / (1000.0 / _speed); executed: return currentTime() / (1000.0 / _speed);Execution Count:45 | 45 |
| 130 | } | - |
| 131 | | - |
| 132 | int QProgressStyleAnimation::progressStep(int width) const | - |
| 133 | { | - |
| 134 | int step = animationStep(); never executed (the execution status of this line is deduced): int step = animationStep(); | - |
| 135 | int progress = (step * width / _speed) % width; never executed (the execution status of this line is deduced): int progress = (step * width / _speed) % width; | - |
| 136 | if (((step * width / _speed) % (2 * width)) >= width) never evaluated: ((step * width / _speed) % (2 * width)) >= width | 0 |
| 137 | progress = width - progress; never executed: progress = width - progress; | 0 |
| 138 | return progress; never executed: return progress; | 0 |
| 139 | } | - |
| 140 | | - |
| 141 | int QProgressStyleAnimation::speed() const | - |
| 142 | { | - |
| 143 | return _speed; never executed: return _speed; | 0 |
| 144 | } | - |
| 145 | | - |
| 146 | void QProgressStyleAnimation::setSpeed(int speed) | - |
| 147 | { | - |
| 148 | _speed = speed; never executed (the execution status of this line is deduced): _speed = speed; | - |
| 149 | } | 0 |
| 150 | | - |
| 151 | bool QProgressStyleAnimation::isUpdateNeeded() const | - |
| 152 | { | - |
| 153 | if (QStyleAnimation::isUpdateNeeded()) { evaluated: QStyleAnimation::isUpdateNeeded()| yes Evaluation Count:30 | yes Evaluation Count:2 |
| 2-30 |
| 154 | int current = animationStep(); executed (the execution status of this line is deduced): int current = animationStep(); | - |
| 155 | if (_step == -1 || _step != current) evaluated: _step == -1| yes Evaluation Count:1 | yes Evaluation Count:29 |
evaluated: _step != current| yes Evaluation Count:14 | yes Evaluation Count:15 |
| 1-29 |
| 156 | { | - |
| 157 | _step = current; executed (the execution status of this line is deduced): _step = current; | - |
| 158 | return true; executed: return true;Execution Count:15 | 15 |
| 159 | } | - |
| 160 | } executed: }Execution Count:15 | 15 |
| 161 | return false; executed: return false;Execution Count:17 | 17 |
| 162 | } | - |
| 163 | | - |
| 164 | QNumberStyleAnimation::QNumberStyleAnimation(QObject *target) : | - |
| 165 | QStyleAnimation(target), _start(0.0), _end(1.0), _prev(0.0) | - |
| 166 | { | - |
| 167 | setDuration(250); never executed (the execution status of this line is deduced): setDuration(250); | - |
| 168 | } | 0 |
| 169 | | - |
| 170 | qreal QNumberStyleAnimation::startValue() const | - |
| 171 | { | - |
| 172 | return _start; never executed: return _start; | 0 |
| 173 | } | - |
| 174 | | - |
| 175 | void QNumberStyleAnimation::setStartValue(qreal value) | - |
| 176 | { | - |
| 177 | _start = value; never executed (the execution status of this line is deduced): _start = value; | - |
| 178 | } | 0 |
| 179 | | - |
| 180 | qreal QNumberStyleAnimation::endValue() const | - |
| 181 | { | - |
| 182 | return _end; never executed: return _end; | 0 |
| 183 | } | - |
| 184 | | - |
| 185 | void QNumberStyleAnimation::setEndValue(qreal value) | - |
| 186 | { | - |
| 187 | _end = value; never executed (the execution status of this line is deduced): _end = value; | - |
| 188 | } | 0 |
| 189 | | - |
| 190 | qreal QNumberStyleAnimation::currentValue() const | - |
| 191 | { | - |
| 192 | qreal step = qreal(currentTime() - delay()) / (duration() - delay()); never executed (the execution status of this line is deduced): qreal step = qreal(currentTime() - delay()) / (duration() - delay()); | - |
| 193 | return _start + qMax(qreal(0), step) * (_end - _start); never executed: return _start + qMax(qreal(0), step) * (_end - _start); | 0 |
| 194 | } | - |
| 195 | | - |
| 196 | bool QNumberStyleAnimation::isUpdateNeeded() const | - |
| 197 | { | - |
| 198 | if (QStyleAnimation::isUpdateNeeded()) { never evaluated: QStyleAnimation::isUpdateNeeded() | 0 |
| 199 | qreal current = currentValue(); never executed (the execution status of this line is deduced): qreal current = currentValue(); | - |
| 200 | if (!qFuzzyCompare(_prev, current)) never evaluated: !qFuzzyCompare(_prev, current) | 0 |
| 201 | { | - |
| 202 | _prev = current; never executed (the execution status of this line is deduced): _prev = current; | - |
| 203 | return true; never executed: return true; | 0 |
| 204 | } | - |
| 205 | } | 0 |
| 206 | return false; never executed: return false; | 0 |
| 207 | } | - |
| 208 | | - |
| 209 | QBlendStyleAnimation::QBlendStyleAnimation(Type type, QObject *target) : | - |
| 210 | QStyleAnimation(target), _type(type) | - |
| 211 | { | - |
| 212 | setDuration(250); never executed (the execution status of this line is deduced): setDuration(250); | - |
| 213 | } | 0 |
| 214 | | - |
| 215 | QImage QBlendStyleAnimation::startImage() const | - |
| 216 | { | - |
| 217 | return _start; never executed: return _start; | 0 |
| 218 | } | - |
| 219 | | - |
| 220 | void QBlendStyleAnimation::setStartImage(const QImage& image) | - |
| 221 | { | - |
| 222 | _start = image; never executed (the execution status of this line is deduced): _start = image; | - |
| 223 | } | 0 |
| 224 | | - |
| 225 | QImage QBlendStyleAnimation::endImage() const | - |
| 226 | { | - |
| 227 | return _end; never executed: return _end; | 0 |
| 228 | } | - |
| 229 | | - |
| 230 | void QBlendStyleAnimation::setEndImage(const QImage& image) | - |
| 231 | { | - |
| 232 | _end = image; never executed (the execution status of this line is deduced): _end = image; | - |
| 233 | } | 0 |
| 234 | | - |
| 235 | QImage QBlendStyleAnimation::currentImage() const | - |
| 236 | { | - |
| 237 | return _current; never executed: return _current; | 0 |
| 238 | } | - |
| 239 | | - |
| 240 | /*! \internal | - |
| 241 | | - |
| 242 | A helper function to blend two images. | - |
| 243 | | - |
| 244 | The result consists of ((alpha)*startImage) + ((1-alpha)*endImage) | - |
| 245 | | - |
| 246 | */ | - |
| 247 | static QImage blendedImage(const QImage &start, const QImage &end, float alpha) | - |
| 248 | { | - |
| 249 | if (start.isNull() || end.isNull()) never evaluated: start.isNull() never evaluated: end.isNull() | 0 |
| 250 | return QImage(); never executed: return QImage(); | 0 |
| 251 | | - |
| 252 | QImage blended; never executed (the execution status of this line is deduced): QImage blended; | - |
| 253 | const int a = qRound(alpha*256); never executed (the execution status of this line is deduced): const int a = qRound(alpha*256); | - |
| 254 | const int ia = 256 - a; never executed (the execution status of this line is deduced): const int ia = 256 - a; | - |
| 255 | const int sw = start.width(); never executed (the execution status of this line is deduced): const int sw = start.width(); | - |
| 256 | const int sh = start.height(); never executed (the execution status of this line is deduced): const int sh = start.height(); | - |
| 257 | const int bpl = start.bytesPerLine(); never executed (the execution status of this line is deduced): const int bpl = start.bytesPerLine(); | - |
| 258 | switch (start.depth()) { | - |
| 259 | case 32: | - |
| 260 | { | - |
| 261 | blended = QImage(sw, sh, start.format()); never executed (the execution status of this line is deduced): blended = QImage(sw, sh, start.format()); | - |
| 262 | uchar *mixed_data = blended.bits(); never executed (the execution status of this line is deduced): uchar *mixed_data = blended.bits(); | - |
| 263 | const uchar *back_data = start.bits(); never executed (the execution status of this line is deduced): const uchar *back_data = start.bits(); | - |
| 264 | const uchar *front_data = end.bits(); never executed (the execution status of this line is deduced): const uchar *front_data = end.bits(); | - |
| 265 | for (int sy = 0; sy < sh; sy++) { | 0 |
| 266 | quint32* mixed = (quint32*)mixed_data; never executed (the execution status of this line is deduced): quint32* mixed = (quint32*)mixed_data; | - |
| 267 | const quint32* back = (const quint32*)back_data; never executed (the execution status of this line is deduced): const quint32* back = (const quint32*)back_data; | - |
| 268 | const quint32* front = (const quint32*)front_data; never executed (the execution status of this line is deduced): const quint32* front = (const quint32*)front_data; | - |
| 269 | for (int sx = 0; sx < sw; sx++) { | 0 |
| 270 | quint32 bp = back[sx]; never executed (the execution status of this line is deduced): quint32 bp = back[sx]; | - |
| 271 | quint32 fp = front[sx]; never executed (the execution status of this line is deduced): quint32 fp = front[sx]; | - |
| 272 | mixed[sx] = qRgba ((qRed(bp)*ia + qRed(fp)*a)>>8, never executed (the execution status of this line is deduced): mixed[sx] = qRgba ((qRed(bp)*ia + qRed(fp)*a)>>8, | - |
| 273 | (qGreen(bp)*ia + qGreen(fp)*a)>>8, never executed (the execution status of this line is deduced): (qGreen(bp)*ia + qGreen(fp)*a)>>8, | - |
| 274 | (qBlue(bp)*ia + qBlue(fp)*a)>>8, never executed (the execution status of this line is deduced): (qBlue(bp)*ia + qBlue(fp)*a)>>8, | - |
| 275 | (qAlpha(bp)*ia + qAlpha(fp)*a)>>8); never executed (the execution status of this line is deduced): (qAlpha(bp)*ia + qAlpha(fp)*a)>>8); | - |
| 276 | } | 0 |
| 277 | mixed_data += bpl; never executed (the execution status of this line is deduced): mixed_data += bpl; | - |
| 278 | back_data += bpl; never executed (the execution status of this line is deduced): back_data += bpl; | - |
| 279 | front_data += bpl; never executed (the execution status of this line is deduced): front_data += bpl; | - |
| 280 | } | 0 |
| 281 | } | - |
| 282 | default: | - |
| 283 | break; | 0 |
| 284 | } | - |
| 285 | return blended; never executed: return blended; | 0 |
| 286 | } | - |
| 287 | | - |
| 288 | void QBlendStyleAnimation::updateCurrentTime(int time) | - |
| 289 | { | - |
| 290 | QStyleAnimation::updateCurrentTime(time); never executed (the execution status of this line is deduced): QStyleAnimation::updateCurrentTime(time); | - |
| 291 | | - |
| 292 | float alpha = 1.0; never executed (the execution status of this line is deduced): float alpha = 1.0; | - |
| 293 | if (duration() > 0) { never evaluated: duration() > 0 | 0 |
| 294 | if (_type == Pulse) { never evaluated: _type == Pulse | 0 |
| 295 | time = time % duration() * 2; never executed (the execution status of this line is deduced): time = time % duration() * 2; | - |
| 296 | if (time > duration()) never evaluated: time > duration() | 0 |
| 297 | time = duration() * 2 - time; never executed: time = duration() * 2 - time; | 0 |
| 298 | } | 0 |
| 299 | | - |
| 300 | alpha = time / static_cast<float>(duration()); never executed (the execution status of this line is deduced): alpha = time / static_cast<float>(duration()); | - |
| 301 | | - |
| 302 | if (_type == Transition && time > duration()) { never evaluated: _type == Transition never evaluated: time > duration() | 0 |
| 303 | alpha = 1.0; never executed (the execution status of this line is deduced): alpha = 1.0; | - |
| 304 | stop(); never executed (the execution status of this line is deduced): stop(); | - |
| 305 | } | 0 |
| 306 | } else if (time > 0) { never executed: } never evaluated: time > 0 | 0 |
| 307 | stop(); never executed (the execution status of this line is deduced): stop(); | - |
| 308 | } | 0 |
| 309 | | - |
| 310 | _current = blendedImage(_start, _end, alpha); never executed (the execution status of this line is deduced): _current = blendedImage(_start, _end, alpha); | - |
| 311 | } | 0 |
| 312 | | - |
| 313 | QT_END_NAMESPACE | - |
| 314 | | - |
| | |