OpenCoverage

qquickspritegoal.cpp

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/particles/qquickspritegoal.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 "qquickspritegoal_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 SpriteGoal-
50 \instantiates QQuickSpriteGoalAffector-
51 \inqmlmodule QtQuick.Particles-
52 \ingroup qtquick-images-sprites-
53 \inherits Affector-
54 \brief For changing the state of a sprite particle.-
55-
56*/-
57/*!-
58 \qmlproperty string QtQuick.Particles::SpriteGoal::goalState-
59-
60 The name of the Sprite which the affected particles should move to.-
61-
62 Sprite states 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 states-
65 on that path.-
66*/-
67/*!-
68 \qmlproperty bool QtQuick.Particles::SpriteGoal::jump-
69-
70 If true, affected sprites will jump directly to the goal state 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/*!-
77 \qmlproperty bool QtQuick.Particles::SpriteGoal::systemStates-
78-
79 deprecated, use GroupGoal instead-
80*/-
81-
82QQuickSpriteGoalAffector::QQuickSpriteGoalAffector(QQuickItem *parent) :-
83 QQuickParticleAffector(parent),-
84 m_goalIdx(-1),-
85 m_lastEngine(nullptr),-
86 m_jump(false),-
87 m_systemStates(false),-
88 m_notUsingEngine(false)-
89{-
90 m_ignoresTime = true;-
91}
executed 16 times by 2 tests: end of block
Executed by:
  • tst_examples
  • tst_qquickspritegoal
16
92-
93void QQuickSpriteGoalAffector::updateStateIndex(QQuickStochasticEngine* e)-
94{-
95 if (m_systemStates){
m_systemStatesDescription
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • tst_qquickspritegoal
0-2
96 m_goalIdx = m_system->groupIds[m_goalState];-
97 }else{
never executed: end of block
0
98 m_lastEngine = e;-
99 for (int i=0; i<e->stateCount(); i++){
i<e->stateCount()Description
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tst_qquickspritegoal
FALSEnever evaluated
0-4
100 if (e->state(i)->name() == m_goalState){
e->state(i)->n...== m_goalStateDescription
TRUEevaluated 2 times by 1 test
Evaluated by:
  • tst_qquickspritegoal
FALSEevaluated 2 times by 1 test
Evaluated by:
  • tst_qquickspritegoal
2
101 m_goalIdx = i;-
102 return;
executed 2 times by 1 test: return;
Executed by:
  • tst_qquickspritegoal
2
103 }-
104 }
executed 2 times by 1 test: end of block
Executed by:
  • tst_qquickspritegoal
2
105 m_goalIdx = -1;//Can't find it-
106 }
never executed: end of block
0
107}-
108-
109void QQuickSpriteGoalAffector::setGoalState(const QString &arg)-
110{-
111 if (m_goalState != arg) {
m_goalState != argDescription
TRUEevaluated 16 times by 2 tests
Evaluated by:
  • tst_examples
  • tst_qquickspritegoal
FALSEnever evaluated
0-16
112 m_goalState = arg;-
113 emit goalStateChanged(arg);-
114 if (m_goalState.isEmpty())
m_goalState.isEmpty()Description
TRUEnever evaluated
FALSEevaluated 16 times by 2 tests
Evaluated by:
  • tst_examples
  • tst_qquickspritegoal
0-16
115 m_goalIdx = -1;
never executed: m_goalIdx = -1;
0
116 else-
117 m_goalIdx = -2;
executed 16 times by 2 tests: m_goalIdx = -2;
Executed by:
  • tst_examples
  • tst_qquickspritegoal
16
118 }-
119}
executed 16 times by 2 tests: end of block
Executed by:
  • tst_examples
  • tst_qquickspritegoal
16
120-
121bool QQuickSpriteGoalAffector::affectParticle(QQuickParticleData *d, qreal dt)-
122{-
123 Q_UNUSED(dt);-
124 QQuickStochasticEngine *engine = nullptr;-
125 if (!m_systemStates){
!m_systemStatesDescription
TRUEevaluated 22348 times by 1 test
Evaluated by:
  • tst_qquickspritegoal
FALSEnever evaluated
0-22348
126 //TODO: Affect all engines-
127 foreach (QQuickParticlePainter *p, m_system->groupData[d->groupId]->painters)
_container_.controlDescription
TRUEevaluated 22348 times by 1 test
Evaluated by:
  • tst_qquickspritegoal
FALSEevaluated 22348 times by 1 test
Evaluated by:
  • tst_qquickspritegoal
_container_.controlDescription
TRUEevaluated 44696 times by 1 test
Evaluated by:
  • tst_qquickspritegoal
FALSEnever evaluated
_container_.i != _container_.eDescription
TRUEevaluated 22348 times by 1 test
Evaluated by:
  • tst_qquickspritegoal
FALSEevaluated 22348 times by 1 test
Evaluated by:
  • tst_qquickspritegoal
0-44696
128 if (qobject_cast<QQuickImageParticle*>(p))
qobject_cast<Q...eParticle*>(p)Description
TRUEevaluated 22348 times by 1 test
Evaluated by:
  • tst_qquickspritegoal
FALSEnever evaluated
0-22348
129 engine = qobject_cast<QQuickImageParticle*>(p)->spriteEngine();
executed 22348 times by 1 test: engine = qobject_cast<QQuickImageParticle*>(p)->spriteEngine();
Executed by:
  • tst_qquickspritegoal
22348
130 }else{
executed 22348 times by 1 test: end of block
Executed by:
  • tst_qquickspritegoal
22348
131 engine = m_system->stateEngine;-
132 if (!engine)
!engineDescription
TRUEnever evaluated
FALSEnever evaluated
0
133 m_notUsingEngine = true;
never executed: m_notUsingEngine = true;
0
134 }
never executed: end of block
0
135 if (!engine && !m_notUsingEngine)
!engineDescription
TRUEnever evaluated
FALSEevaluated 22348 times by 1 test
Evaluated by:
  • tst_qquickspritegoal
!m_notUsingEngineDescription
TRUEnever evaluated
FALSEnever evaluated
0-22348
136 return false;
never executed: return false;
0
137-
138 if (m_goalIdx == -2 || engine != m_lastEngine)
m_goalIdx == -2Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • tst_qquickspritegoal
FALSEevaluated 22346 times by 1 test
Evaluated by:
  • tst_qquickspritegoal
engine != m_lastEngineDescription
TRUEnever evaluated
FALSEevaluated 22346 times by 1 test
Evaluated by:
  • tst_qquickspritegoal
0-22346
139 updateStateIndex(engine);
executed 2 times by 1 test: updateStateIndex(engine);
Executed by:
  • tst_qquickspritegoal
2
140 int index = d->index;-
141 if (m_systemStates)
m_systemStatesDescription
TRUEnever evaluated
FALSEevaluated 22348 times by 1 test
Evaluated by:
  • tst_qquickspritegoal
0-22348
142 index = d->systemIndex;
never executed: index = d->systemIndex;
0
143 if (m_notUsingEngine){//systemStates && no stochastic states defined. So cut out the engine
m_notUsingEngineDescription
TRUEnever evaluated
FALSEevaluated 22348 times by 1 test
Evaluated by:
  • tst_qquickspritegoal
0-22348
144 //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-
145 m_system->moveGroups(d, m_goalIdx);-
146 }else if (engine->curState(index) != m_goalIdx){
never executed: end of block
engine->curSta...) != m_goalIdxDescription
TRUEevaluated 1200 times by 1 test
Evaluated by:
  • tst_qquickspritegoal
FALSEevaluated 21148 times by 1 test
Evaluated by:
  • tst_qquickspritegoal
0-21148
147 engine->setGoal(m_goalIdx, index, m_jump);-
148 return true; //Doesn't affect particle data, but necessary for onceOff
executed 1200 times by 1 test: return true;
Executed by:
  • tst_qquickspritegoal
1200
149 }-
150 return false;
executed 21148 times by 1 test: return false;
Executed by:
  • tst_qquickspritegoal
21148
151}-
152-
153QT_END_NAMESPACE-
154-
155#include "moc_qquickspritegoal_p.cpp"-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.0