Completed
Pull Request — master (#270)
by
unknown
03:25
created

Animation::getFunctions()   B

Complexity

Conditions 2
Paths 2

Size

Total Lines 143
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 143
rs 8.2857
c 0
b 0
f 0
cc 2
eloc 9
nc 2
nop 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
namespace eXpansion\Framework\Gui\Components;
4
5
use FML\Controls\Control;
6
use FML\Controls\Quad;
7
use FML\Script\Features\ScriptFeature;
8
use FML\Script\Script;
9
use FML\Types\ScriptFeatureable;
10
11
class Animation extends AbstractUiElement implements ScriptFeatureable
12
{
13
    const Linear = "Linear";
14
15
    const QuadIn = "QuadIn";
16
    const QuadOut = "QuadOut";
17
    const QuadInOut = "QuadInOut";
18
19
    const CubicIn = "CubicIn";
20
    const CubicOut = "CubicOut";
21
    const CubicInOut = "CubicInOut";
22
23
    const QuartIn = "QuartIn";
24
    const QuartOut = "QuartOut";
25
    const QuartInOut = "QuartInOut";
26
27
    const QuintIn = "QuintIn";
28
    const QuintOut = "QuintOut";
29
    const QuintInOut = "QuintInOut";
30
31
    const SineIn = "SineIn";
32
    const SineOut = "SineOut";
33
    const SineInOut = "SineInOut";
34
35
    const ExpIn = "ExpIn";
36
    const ExpOut = "ExpOut";
37
    const ExpInOut = "ExpInOut";
38
39
    const CircIn = "CircIn";
40
    const CircOut = "CircOut";
41
    const CircInOut = "CircInOut";
42
43
    const BackIn = "BackIn";
44
    const BackOut = "BackOut";
45
    const BackInOut = "BackInOut";
46
47
    const ElasticIn = "ElasticIn";
48
    const ElasticOut = "ElasticOut";
49
    const ElasticInOut = "ElasticInOut";
50
51
    const Elastic2In = "Elastic2In";
52
    const Elastic2Out = "Elastic2Out";
53
    const Elastic2InOut = "Elastic2InOut";
54
55
    const BounceIn = "BounceIn";
56
    const BounceOut = "BounceOut";
57
    const BounceInOut = "BounceInOut";
58
59
    protected $element;
60
    private $doAnimation = true;
61
62
63
    /**
64
     * Animation constructor.
65
     */
66
    public function __construct()
67
    {
68
69
    }
70
71
    /**
72
     * @param $control
73
     * @param $animations
74
     * @param $duration
75
     * @param $delay
76
     * @param $easing
77
     * @internal param $text
78
     */
79
    public function addAnimation($control, $animations, $duration, $delay, $easing)
80
    {
81
        if ($control instanceof Control) {
82
            $control->addClass("uiAnimation");
83
            $control->addDataAttribute("animate", $animations);
84
            $control->addDataAttribute("duration", $duration);
85
            $control->addDataAttribute("delay", $delay);
86
            $control->addDataAttribute("easing", $easing);
87
        }
88
    }
89
90
    /**
91
     * Prepare the given Script for rendering by adding the needed Labels, etc.
92
     *
93
     * @param Script $script Script to prepare
94
     * @return static
95
     */
96
    public function prepare(Script $script)
97
    {
98
        $script->addScriptFunction("exp_AnimationFunctions", $this->getFunctions());
99
100
        return $this;
101
    }
102
103
104
    public function getFunctions()
105
    {
106
        $bool = "False";
107
        if ($this->doAnimation) {
108
            $bool = "True";
109
        }
110
111
        return /** @lang textmate */
112
            <<<EOL
113
            CAnimManager::EAnimManagerEasing convertEasing(Text text) {
114
                switch (text) {
115
                    case "QuadIn":  {
116
                                    return  CAnimManager::EAnimManagerEasing::QuadIn;
117
                    }
118
                    case "QuadOut":  {
119
                                    return  CAnimManager::EAnimManagerEasing::QuadOut;
120
                    }		
121
                    case "QuadInOut": {
122
                                    return  CAnimManager::EAnimManagerEasing::QuadInOut;
123
                    }
124
                    case "CubicIn": {
125
                                    return  CAnimManager::EAnimManagerEasing::CubicIn;
126
                    }
127
                    case "CubicOut": {
128
                                    return  CAnimManager::EAnimManagerEasing::CubicOut;
129
                    }		
130
                    case "CubicInOut": {
131
                                    return  CAnimManager::EAnimManagerEasing::CubicInOut;
132
                    }
133
                    case "QuartIn":  {
134
                                    return  CAnimManager::EAnimManagerEasing::QuartIn;
135
                    }
136
                    case "QuartOut":  {
137
                                    return  CAnimManager::EAnimManagerEasing::QuartOut;
138
                    }		
139
                    case "QuartInOut":  {
140
                                    return  CAnimManager::EAnimManagerEasing::QuartInOut;
141
                    }
142
                    case "QuintIn":  {
143
                                    return  CAnimManager::EAnimManagerEasing::QuintIn;
144
                    }
145
                    case "QuintOut":  {
146
                                    return  CAnimManager::EAnimManagerEasing::QuintOut;
147
                    }		
148
                    case "QuintInOut":  {
149
                                    return  CAnimManager::EAnimManagerEasing::QuintInOut;
150
                    }
151
                    case "QuintIn":  {
152
                                    return  CAnimManager::EAnimManagerEasing::QuintIn;
153
                    }
154
                    case "QuintOut":  {
155
                                    return  CAnimManager::EAnimManagerEasing::QuintOut;
156
                    }		
157
                    case "QuintInOut":  {
158
                                    return  CAnimManager::EAnimManagerEasing::QuintInOut;
159
                    }	
160
                    case "SineIn":  {
161
                                    return  CAnimManager::EAnimManagerEasing::SineIn;
162
                    }
163
                    case "SineOut":  {
164
                                    return  CAnimManager::EAnimManagerEasing::SineOut;
165
                    }		
166
                    case "SineInOut":  {
167
                                    return  CAnimManager::EAnimManagerEasing::SineInOut;
168
                    }			 
169
                    case "ExpIn":  {
170
                                    return  CAnimManager::EAnimManagerEasing::ExpIn;
171
                    }
172
                    case "ExpOut":  {
173
                                    return  CAnimManager::EAnimManagerEasing::ExpOut;
174
                    }		
175
                    case "ExpInOut":  {
176
                                    return  CAnimManager::EAnimManagerEasing::ExpInOut;
177
                    }		            
178
                    case "CircIn":  {
179
                                    return  CAnimManager::EAnimManagerEasing::CircIn;
180
                    }
181
                    case "CircOut":  {
182
                                    return  CAnimManager::EAnimManagerEasing::CircOut;
183
                    }		
184
                    case "CircInOut":  {
185
                                    return  CAnimManager::EAnimManagerEasing::CircInOut;
186
                    }		
187
                    case "BackOut": {
188
                                    return  CAnimManager::EAnimManagerEasing::BackOut;
189
                    }
190
                    case "BackIn":  {
191
                                    return  CAnimManager::EAnimManagerEasing::BackIn;
192
                    }		
193
                    case "BackInOut":  {
194
                                    return  CAnimManager::EAnimManagerEasing::BackInOut;
195
                    }		
196
                    case "ElasticIn": {
197
                                    return  CAnimManager::EAnimManagerEasing::ElasticIn;
198
                    }
199
                    case "ElasticOut": {
200
                                    return  CAnimManager::EAnimManagerEasing::ElasticOut;
201
                    }
202
                    case "ElasticInOut": {
203
                                    return  CAnimManager::EAnimManagerEasing::ElasticInOut;
204
                    }
205
                    case "ElasticIn2": {
206
                                    return  CAnimManager::EAnimManagerEasing::ElasticIn2;
207
                    }
208
                    case "ElasticOut2": {
209
                                    return  CAnimManager::EAnimManagerEasing::ElasticOut2;
210
                    }
211
                    case "ElasticInOut2": {
212
                                    return  CAnimManager::EAnimManagerEasing::ElasticInOut2;
213
                    }		
214
                    case "BounceIn": {
215
                                    return  CAnimManager::EAnimManagerEasing::BounceIn;
216
                    }
217
                    case "BounceOut": {
218
                                    return  CAnimManager::EAnimManagerEasing::BounceOut;
219
                    }
220
                    case "BounceInOut": {
221
                                    return  CAnimManager::EAnimManagerEasing::BounceInOut;
222
                    }
223
                    
224
                }
225
                return CAnimManager::EAnimManagerEasing::Linear;
226
            }
227
228
       ***FML_OnInit***
229
       ***
230
            declare Boolean doAnimation = $bool;
231
	
232
	        if (doAnimation) {
233
                Page.GetClassChildren ("uiAnimation", Page.MainFrame, True);
234
                foreach (control in Page.GetClassChildren_Result) {
235
                    declare Text xmlString = "<elem " ^ TextLib::ReplaceChars(control.DataAttributeGet("animate"), "'", "\"") ^ "/>";
236
                    declare Integer duration = TextLib::ToInteger(control.DataAttributeGet("duration"));
237
                    declare Integer delay = TextLib::ToInteger(control.DataAttributeGet("delay"));
238
                    declare Text easing = control.DataAttributeGet("easing");
239
                    AnimMgr.Add(control, xmlString, Now + delay, duration, convertEasing(easing));	
240
                }
241
		    }
242
243
       ***                         
244
EOL;
245
246
    }
247
248
    /**
249
     * Get the Script Features
250
     *
251
     * @return ScriptFeature[]
252
     */
253
    public function getScriptFeatures()
254
    {
255
        return ScriptFeature::collect($this);
256
    }
257
258
    /**
259
     * Render the XML element
260
     *
261
     * @param \DOMDocument $domDocument DOMDocument for which the XML element should be rendered
262
     * @return \DOMElement
263
     */
264
    public function render(\DOMDocument $domDocument)
265
    {
266
        $quad = new Quad();
267
        $quad->setVisible(false);
268
269
        return $quad->render($domDocument);
270
    }
271
272
    /**
273
     * @return bool
274
     */
275
    public function isDoAnimation(): bool
276
    {
277
        return $this->doAnimation;
278
    }
279
280
    /**
281
     * @param bool $doAnimation
282
     * @return Animation
283
     */
284
    public function setDoAnimation(bool $doAnimation): Animation
285
    {
286
        $this->doAnimation = $doAnimation;
287
288
        return $this;
289
    }
290
}
291