OpenCoverage

qquickgroupgoal.cpp

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/particles/qquickgroupgoal.cpp
Source codeSwitch to Preprocessed file
LineSourceCount
1/****************************************************************************-
2**-
3** Copyright (C) 2016 The Qt Company Ltd.-
4** Contact: https://www.qt.io/licensing/-
5**-
6** This file is part of the QtQuick 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 The Qt Company. For licensing terms-
14** and conditions see https://www.qt.io/terms-conditions. For further-
15** information use the contact form at https://www.qt.io/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 3 as published by the Free Software-
20** Foundation and appearing in the file LICENSE.LGPL3 included in the-
21** packaging of this file. Please review the following information to-
22** ensure the GNU Lesser General Public License version 3 requirements-
23** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.-
24**-
25** GNU General Public License Usage-
26** Alternatively, this file may be used under the terms of the GNU-
27** General Public License version 2.0 or (at your option) the GNU General-
28** Public license version 3 or any later version approved by the KDE Free-
29** Qt Foundation. The licenses are as published by the Free Software-
30** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3-
31** included in the packaging of this file. Please review the following-
32** information to ensure the GNU General Public License requirements will-
33** be met: https://www.gnu.org/licenses/gpl-2.0.html and-
34** https://www.gnu.org/licenses/gpl-3.0.html.-
35**-
36** $QT_END_LICENSE$-
37**-
38****************************************************************************/-
39-
40#include "qquickgroupgoal_p.h"-
41#include <private/qquickspriteengine_p.h>-
42#include <private/qquicksprite_p.h>-
43#include "qquickimageparticle_p.h"-
44#include <QDebug>-
45-
46QT_BEGIN_NAMESPACE-
47-
48/*!-
49 \qmltype GroupGoal-
50 \instantiates QQuickGroupGoalAffector-
51 \inqmlmodule QtQuick.Particles-
52 \ingroup qtquick-particles-
53 \inherits Affector-
54 \brief For changing the state of a group of a particle.-
55-
56*/-
57/*!-
58 \qmlproperty string QtQuick.Particles::GroupGoal::goalState-
59-
60 The name of the group which the affected particles should move to.-
61-
62 Groups can have defined durations and transitions between them, setting goalState-
63 will cause it to disregard any path weightings (including 0) and head down the path-
64 which will reach the goalState quickest. It will pass through intermediate groups-
65 on that path for their respective durations.-
66*/-
67/*!-
68 \qmlproperty bool QtQuick.Particles::GroupGoal::jump-
69-
70 If true, affected particles will jump directly to the target group instead of taking the-
71 shortest valid path to get there. They will also not finish their current state,-
72 but immediately move to the beginning of the goal state.-
73-
74 Default is false.-
75*/-
76-
77QQuickGroupGoalAffector::QQuickGroupGoalAffector(QQuickItem *parent) :-
78 QQuickParticleAffector(parent), m_jump(false)-
79{-
80 m_ignoresTime = true;-
81}
executed 8 times by 2 tests: end of block
Executed by:
  • tst_examples
  • tst_qquickgroupgoal
8
82-
83void QQuickGroupGoalAffector::setGoalState(const QString &arg)-
84{-
85 if (m_goalState != arg) {
m_goalState != argDescription
TRUEevaluated 6 times by 1 test
Evaluated by:
  • tst_examples
FALSEevaluated 2 times by 1 test
Evaluated by:
  • tst_qquickgroupgoal
2-6
86 m_goalState = arg;-
87 emit goalStateChanged(arg);-
88 }
executed 6 times by 1 test: end of block
Executed by:
  • tst_examples
6
89}
executed 8 times by 2 tests: end of block
Executed by:
  • tst_examples
  • tst_qquickgroupgoal
8
90-
91bool QQuickGroupGoalAffector::affectParticle(QQuickParticleData *d, qreal dt)-
92{-
93 Q_UNUSED(dt);-
94 QQuickStochasticEngine *engine = m_system->stateEngine;-
95 bool notUsingEngine = false;-
96 if (!engine)
!engineDescription
TRUEevaluated 1328 times by 1 test
Evaluated by:
  • tst_qquickgroupgoal
FALSEnever evaluated
0-1328
97 notUsingEngine = true;
executed 1328 times by 1 test: notUsingEngine = true;
Executed by:
  • tst_qquickgroupgoal
1328
98-
99 int index = d->systemIndex;-
100 int goalIdx = m_system->groupIds[m_goalState];-
101 if (notUsingEngine){//no stochastic states defined. So cut out the engine
notUsingEngineDescription
TRUEevaluated 1328 times by 1 test
Evaluated by:
  • tst_qquickgroupgoal
FALSEnever evaluated
0-1328
102 //TODO: It's possible to move to a group that is intermediate and not used by painters or emitters - but right now that will redirect to the default group-
103 m_system->moveGroups(d, goalIdx);-
104 return true;
executed 1328 times by 1 test: return true;
Executed by:
  • tst_qquickgroupgoal
1328
105 }else if (engine->curState(index) != goalIdx){
engine->curSta...ex) != goalIdxDescription
TRUEnever evaluated
FALSEnever evaluated
0
106 engine->setGoal(goalIdx, index, m_jump);-
107 return true;
never executed: return true;
0
108 }-
109 return false;
never executed: return false;
0
110}-
111-
112QT_END_NAMESPACE-
113-
114#include "moc_qquickgroupgoal_p.cpp"-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.0