PhoenixProgress
1.2.4
Library of progress bar
Toggle main menu visibility
Loading...
Searching...
No Matches
ProgressTime.cpp
Go to the documentation of this file.
1
/***************************************
2
Auteur : Pierre Aubert
3
Mail : pierre.aubert@lapp.in2p3.fr
4
Licence : CeCILL-C
5
****************************************/
6
7
#include "phoenix_color.h"
8
#include "phoenix_system.h"
9
#include "
ProgressTime.h
"
10
11
13
15
ProgressTime::ProgressTime
(){
16
initialisationProgressTime
(0,
'='
,
'>'
,
' '
);
17
}
18
20
26
ProgressTime::ProgressTime
(
size_t
nbSteps,
char
chPlein,
char
chMiddle,
char
chEnd){
27
initialisationProgressTime
(nbSteps, chPlein, chMiddle, chEnd);
28
}
29
31
33
ProgressTime::ProgressTime
(
const
ProgressTime
& other){
34
p_buffer
= NULL;
35
copyProgressTime
(other);
36
}
37
39
ProgressTime::~ProgressTime
(){
40
if
(
p_buffer
!= NULL){
41
delete
[]
p_buffer
;
42
}
43
}
44
46
void
ProgressTime::start
(){
47
p_startTime
= clock();
48
p_iCurrent
= 0;
49
p_oldAvancement
= 0;
50
p_avancement
= 0;
51
p_secondesRestantes
= 0;
52
p_oldTempsRestant
= 0;
53
}
54
56
void
ProgressTime::print
(){
57
++
p_iCurrent
;
58
p_avancement
= (
p_iCurrent
*
p_sizeBarr
)/
p_nbSteps
;
59
p_tempsRestant
= (clock_t)(((clock() -
p_startTime
)*((clock_t)(
p_nbSteps
-
p_iCurrent
)))/((clock_t)
p_iCurrent
));
60
if
(
p_oldAvancement
!=
p_avancement
||
p_oldTempsRestant
!=
p_tempsRestant
){
61
p_pourcent
= (
p_iCurrent
*100)/
p_nbSteps
;
62
//on efface la ligne de la console où il y a la barre de chargement
63
clear
();
64
std::cerr <<
"\r"
<<
p_buffer
<<
"\r\r\r\r"
;
65
//on affiche la barre de chargement
66
feelbuffer
(
p_avancement
);
67
p_secondesRestantes
=
p_tempsRestant
/CLOCKS_PER_SEC;
68
std::cerr <<
"["
<<
p_buffer
<<
"|"
<<
p_pourcent
<<
"%] "
<<
p_secondesRestantes
<<
"s"
;
69
//on met old_taille à jour
70
p_oldAvancement
=
p_avancement
;
71
p_oldTempsRestant
=
p_tempsRestant
;
72
}
73
}
74
76
void
ProgressTime::finish
(){
77
clear
();
78
std::cerr <<
"\r"
<<
p_buffer
<<
"\r\r\r\r"
;
79
feelbuffer
(
p_sizeBarr
);
80
std::cerr <<
"["
<<
p_buffer
<<
"|"
<<
p_pourcent
<<
"%] "
<<
p_secondesRestantes
<<
"s"
;
81
std::cerr << std::endl;
82
}
83
85
87
void
ProgressTime::setNbSteps
(
size_t
nbSteps){
88
p_nbSteps
= nbSteps;
89
}
90
92
94
void
ProgressTime::setChPlein
(
char
chPlein){
95
p_chPlein
= chPlein;
96
}
97
99
101
void
ProgressTime::setChMiddle
(
char
chMiddle){
102
p_chMiddle
= chMiddle;
103
}
104
106
108
void
ProgressTime::setChEnd
(
char
chEnd){
109
p_chEnd
= chEnd;
110
}
111
113
116
ProgressTime
&
ProgressTime::operator =
(
const
ProgressTime
& other){
117
copyProgressTime
(other);
118
return
*
this
;
119
}
120
122
124
void
ProgressTime::copyProgressTime
(
const
ProgressTime
& other){
125
if
(
p_buffer
!= NULL){
126
delete
[]
p_buffer
;
127
}
128
p_buffer
=
new
char
[other.
p_sizeBarr
+ 1];
//on pense au caractère \0
129
p_startTime
= other.
p_startTime
;
130
p_tempsRestant
= other.
p_tempsRestant
;
131
p_nbSteps
= other.
p_nbSteps
;
132
p_iCurrent
= other.
p_iCurrent
;
133
p_avancement
= other.
p_avancement
;
134
p_oldAvancement
= other.
p_oldAvancement
;
135
p_secondesRestantes
= other.
p_secondesRestantes
;
136
p_oldTempsRestant
= other.
p_oldTempsRestant
;
137
p_consoleWidth
= other.
p_consoleWidth
;
138
p_pourcent
= other.
p_pourcent
;
139
p_sizeBarr
= other.
p_sizeBarr
;
140
p_chPlein
= other.
p_chPlein
;
141
p_chMiddle
= other.
p_chMiddle
;
142
p_chEnd
= other.
p_chEnd
;
143
144
p_buffer
[
p_sizeBarr
] =
'\0'
;
145
}
146
148
153
void
ProgressTime::initialisationProgressTime
(
size_t
nbSteps,
char
chPlein,
char
chMiddle,
char
chEnd){
154
p_nbSteps
= nbSteps;
155
p_chPlein
= chPlein;
156
p_chMiddle
= chMiddle;
157
p_chEnd
= chEnd;
158
start
();
159
p_consoleWidth
= phoenix_getNbColTerminal();
160
p_sizeBarr
= (3u*
p_consoleWidth
)/4u;
//on prend 3/4 de la taille de la console
161
p_buffer
=
new
char
[
p_sizeBarr
+ 1u];
162
}
163
165
167
void
ProgressTime::feelbuffer
(
unsigned
int
taille){
168
if
(taille <=
p_sizeBarr
){
169
for
(
unsigned
int
i(0); i < taille; ++i){
170
p_buffer
[i] =
p_chPlein
;
171
}
172
p_buffer
[taille] =
p_chMiddle
;
173
}
174
for
(
unsigned
int
i(taille + 1); i <=
p_sizeBarr
; ++i){
175
p_buffer
[i] =
p_chEnd
;
176
}
177
p_buffer
[
p_sizeBarr
] =
'\0'
;
178
}
179
181
void
ProgressTime::clear
(){
182
for
(
unsigned
int
i(0); i <
p_sizeBarr
; ++i){
183
p_buffer
[i] =
'\r'
;
184
}
185
p_buffer
[
p_sizeBarr
] =
'\0'
;
186
}
187
ProgressTime.h
ProgressTime::p_sizeBarr
unsigned int p_sizeBarr
Definition
ProgressTime.h:50
ProgressTime::setChPlein
void setChPlein(char chPlein)
init le caractère de remplissage
Definition
ProgressTime.cpp:94
ProgressTime::p_oldAvancement
unsigned int p_oldAvancement
Definition
ProgressTime.h:45
ProgressTime::p_chPlein
char p_chPlein
Character used to fill the progress bar.
Definition
ProgressTime.h:53
ProgressTime::operator=
ProgressTime & operator=(const ProgressTime &other)
Opérateur = de ProgressTime.
Definition
ProgressTime.cpp:116
ProgressTime::p_chMiddle
char p_chMiddle
Character at the end of the progress bar.
Definition
ProgressTime.h:55
ProgressTime::setNbSteps
void setNbSteps(size_t nbSteps)
fonction qui initialise le nombre d'étapes à faire
Definition
ProgressTime.cpp:87
ProgressTime::copyProgressTime
void copyProgressTime(const ProgressTime &other)
fonction de copie de ProgressTime
Definition
ProgressTime.cpp:124
ProgressTime::print
void print()
fonction qui affiche la ProgressTime
Definition
ProgressTime.cpp:56
ProgressTime::p_consoleWidth
unsigned int p_consoleWidth
Definition
ProgressTime.h:48
ProgressTime::setChMiddle
void setChMiddle(char chMiddle)
init le charactère au bout de la ligne de remplissage
Definition
ProgressTime.cpp:101
ProgressTime::p_iCurrent
size_t p_iCurrent
Definition
ProgressTime.h:43
ProgressTime::p_startTime
clock_t p_startTime
Definition
ProgressTime.h:40
ProgressTime::p_tempsRestant
clock_t p_tempsRestant
Definition
ProgressTime.h:41
ProgressTime::~ProgressTime
virtual ~ProgressTime()
destructeur de ProgressTime
Definition
ProgressTime.cpp:39
ProgressTime::p_secondesRestantes
unsigned int p_secondesRestantes
Definition
ProgressTime.h:46
ProgressTime::p_oldTempsRestant
clock_t p_oldTempsRestant
Definition
ProgressTime.h:47
ProgressTime::setChEnd
void setChEnd(char chEnd)
init le charactère de remplissage de la barre vide
Definition
ProgressTime.cpp:108
ProgressTime::initialisationProgressTime
void initialisationProgressTime(size_t nbSteps, char chPlein, char chMiddle, char chEnd)
fonction d'initialisation de ProgressTime
Definition
ProgressTime.cpp:153
ProgressTime::clear
void clear()
fonction qui efface la barre de chargement
Definition
ProgressTime.cpp:181
ProgressTime::p_chEnd
char p_chEnd
Character which fills the progress bar.
Definition
ProgressTime.h:57
ProgressTime::ProgressTime
ProgressTime()
Constructeur par défaut de ProgressTime.
Definition
ProgressTime.cpp:15
ProgressTime::p_avancement
unsigned int p_avancement
Definition
ProgressTime.h:44
ProgressTime::feelbuffer
void feelbuffer(unsigned int taille)
affiche la barre de chargement
Definition
ProgressTime.cpp:167
ProgressTime::p_pourcent
unsigned int p_pourcent
Definition
ProgressTime.h:49
ProgressTime::p_nbSteps
size_t p_nbSteps
Definition
ProgressTime.h:42
ProgressTime::finish
void finish()
affiche la barre de chargement finie
Definition
ProgressTime.cpp:76
ProgressTime::start
void start()
fonction qui démarre le chronomètre de la ProgressTime
Definition
ProgressTime.cpp:46
ProgressTime::p_buffer
char * p_buffer
Drawing buffer.
Definition
ProgressTime.h:59
src
ProgressTime.cpp
Generated by
1.17.0