-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFader.cpp
More file actions
101 lines (92 loc) · 2.06 KB
/
Copy pathFader.cpp
File metadata and controls
101 lines (92 loc) · 2.06 KB
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
#include "Fader.h"
#include "QTimerEvent"
#include "QPainter"
CFader::CFader(QWidget *parent) :
QWidget(parent)
{
//setAttribute( Qt::WA_DeleteOnClose);
timerID = -1;
delta=0;
mode = FADE_OUT;
Speed = 24;
}
void CFader::FadeOut(QWidget* fadingOutWidget)
{
this->outWidget = fadingOutWidget;
alpha = 0;
delta = Speed;
mode = FADE_OUT;
show();
timerID = startTimer(30);
}
void CFader::FadeIn(QWidget* fadingInWidget)
{
this->inWidget = fadingInWidget;
show();
inWidget->show();
mode = FADE_IN;
delta = -Speed;
timerID = startTimer(30);
}
void CFader::CrossFade(QWidget* fadingOutWidget,QWidget* fadingInWidget)
{
this->outWidget = fadingOutWidget;
this->inWidget = fadingInWidget;
mode = FADE_CROSS;
delta = Speed;
show();
timerID = startTimer(30);
}
void CFader::timerEvent(QTimerEvent *event)
{
if(event->timerId() ==timerID)
{
update();
alpha += delta;
switch(mode)
{
case FADE_OUT:
if (alpha > 255)
{
alpha=255;
killTimer(timerID);
FadingDone();
outWidget->hide();
close();
}
break;
case FADE_IN:
if (alpha <0)
{
alpha=0;
killTimer(timerID);
FadingDone();
close();
}
break;
case FADE_CROSS:
if (alpha > 255)
{
alpha=255;
delta = -Speed;
outWidget->hide();
inWidget->show();
}
else if (alpha <0)
{
alpha=0;
killTimer(timerID);
FadingDone();
close();
}
break;
}
}
}
void CFader::paintEvent(QPaintEvent *)
{
QPainter painter(this);
QColor semiTransparentColor = fadeColor;
semiTransparentColor.setAlpha(alpha);
painter.fillRect(rect(), semiTransparentColor);
}