PhoenixProgress  1.0.0
Library of progress bar
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
18
20
26ProgressTime::ProgressTime(size_t nbSteps, char chPlein, char chMiddle, char chEnd){
27 initialisationProgressTime(nbSteps, chPlein, chMiddle, chEnd);
28}
29
31
34 p_buffer = NULL;
35 copyProgressTime(other);
36}
37
40 if(p_buffer != NULL){
41 delete [] p_buffer;
42 }
43}
44
47 p_startTime = clock();
48 p_iCurrent = 0;
50 p_avancement = 0;
53}
54
57 ++p_iCurrent;
59 p_tempsRestant = (clock_t)(((clock() - p_startTime)*((clock_t)(p_nbSteps - p_iCurrent)))/((clock_t)p_iCurrent));
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
67 p_secondesRestantes = p_tempsRestant/CLOCKS_PER_SEC;
68 std::cerr << "[" << p_buffer << "|" << p_pourcent << "%] " << p_secondesRestantes << "s";
69 //on met old_taille à jour
72 }
73}
74
77 clear();
78 std::cerr << "\r" << p_buffer << "\r\r\r\r";
80 std::cerr << "[" << p_buffer << "|" << p_pourcent << "%] " << p_secondesRestantes << "s";
81 std::cerr << std::endl;
82}
83
85
87void ProgressTime::setNbSteps(size_t nbSteps){
88 p_nbSteps = nbSteps;
89}
90
92
94void ProgressTime::setChPlein(char chPlein){
95 p_chPlein = chPlein;
96}
97
99
101void ProgressTime::setChMiddle(char chMiddle){
102 p_chMiddle = chMiddle;
103}
104
106
108void ProgressTime::setChEnd(char chEnd){
109 p_chEnd = chEnd;
110}
111
113
117 copyProgressTime(other);
118 return *this;
119}
120
122
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;
131 p_nbSteps = other.p_nbSteps;
132 p_iCurrent = other.p_iCurrent;
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
153void 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
167void 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
182 for(unsigned int i(0); i < p_sizeBarr; ++i){
183 p_buffer[i] = '\r';
184 }
185 p_buffer[p_sizeBarr] = '\0';
186}
187
unsigned int p_sizeBarr
void setChPlein(char chPlein)
init le caractère de remplissage
unsigned int p_oldAvancement
char p_chPlein
Character used to fill the progress bar.
ProgressTime & operator=(const ProgressTime &other)
Opérateur = de ProgressTime.
char p_chMiddle
Character at the end of the progress bar.
void setNbSteps(size_t nbSteps)
fonction qui initialise le nombre d'étapes à faire
void copyProgressTime(const ProgressTime &other)
fonction de copie de ProgressTime
void print()
fonction qui affiche la ProgressTime
unsigned int p_consoleWidth
void setChMiddle(char chMiddle)
init le charactère au bout de la ligne de remplissage
size_t p_iCurrent
clock_t p_startTime
clock_t p_tempsRestant
virtual ~ProgressTime()
destructeur de ProgressTime
unsigned int p_secondesRestantes
clock_t p_oldTempsRestant
void setChEnd(char chEnd)
init le charactère de remplissage de la barre vide
void initialisationProgressTime(size_t nbSteps, char chPlein, char chMiddle, char chEnd)
fonction d'initialisation de ProgressTime
void clear()
fonction qui efface la barre de chargement
char p_chEnd
Character which fills the progress bar.
ProgressTime()
Constructeur par défaut de ProgressTime.
unsigned int p_avancement
void feelbuffer(unsigned int taille)
affiche la barre de chargement
unsigned int p_pourcent
size_t p_nbSteps
void finish()
affiche la barre de chargement finie
void start()
fonction qui démarre le chronomètre de la ProgressTime
char * p_buffer
Drawing buffer.