-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathzglAlphaAnimation.cpp
executable file
·105 lines (86 loc) · 1.86 KB
/
zglAlphaAnimation.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/*
* Copyright (C) 2010 ZiiLABS Pte Ltd
* All Rights Reserved.
*
* This software and its associated documentation may contain some
* proprietary, confidential and trade secret information of
* ZiiLABS Pte Ltd and except as provided by written agreement with
* ZiiLABS Pte Ltd
*
* a) no part may be disclosed, distributed, reproduced, transmitted,
* transcribed, stored in a retrieval system, adapted or translated
* in any form or by any means electronic, mechanical, magnetic,
* optical, chemical, manual or otherwise,
*
* and
*
* b) the recipient is not entitled to discover through reverse
* engineering or reverse compiling or other such techniques or
* processes the trade secrets contained therein or in the
* documentation.
*/
#include <stdlib.h>
#include "zglWidget.h"
#include "zglAlphaAnimation.h"
zglAlphaAnimation::zglAlphaAnimation()
{
m_from = 0.0f;
m_to = 1.0f;
}
bool zglAlphaAnimation::update(long time)
{
if (m_widget == NULL)
{
m_state = ANIM_STATE_NONE;
return false;
}
long dur = time - m_start_time - m_delay_time;
if(dur < 0)
{
return true;//Return true to make the engine continue.
}
float t = dur / float(m_dur_time);
if (dur >= m_dur_time)
{
setAlpha(1.0f, true);
m_state = ANIM_STATE_NONE;
}
else
{
float it = getValue(t);
setAlpha(it, false);
}
return true;
}
void zglAlphaAnimation::init(float from, float to)
{
m_from = from;
if (m_from < 0.0f)
m_from = 0.0f;
if (m_from > 1.0f)
m_from = 1.0f;
m_to = to;
if (m_to < 0.0f)
m_to = 0.0f;
if (m_to > 1.0f)
m_to = 1.0f;
}
void zglAlphaAnimation::setAlpha(float it, bool lastFrame)
{
float a;
int alpha;
if (lastFrame)
{
a = m_to;
}
else
{
a = it * (m_to - m_from) + m_from;
}
alpha = a * 0xff;
if (alpha < 0x00)
alpha = 0x00;
if (alpha > 0xff)
alpha = 0xff;
m_widget->setAlpha(alpha);
}