PhoenixProgress  1.0.0
Library of progress bar
Loading...
Searching...
No Matches
ProgressBarr.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 "ProgressBarr.h"
8
10
16ProgressBarr::ProgressBarr(size_t max, size_t size, char chPlein, char chMiddle, char chEnd){
17 init(max, size, chPlein, chMiddle, chEnd);
18}
19
20
22
25 p_buffer = NULL;
26 copy(progressBarr);
27}
28
31 if(p_buffer != NULL){
32 delete[] p_buffer;
33 }
34}
35
36
38
40void ProgressBarr::progress(size_t avencement){
41 size_t taille = (avencement*p_size)/p_max;
42 if(p_old_taille != taille){
43 int pourcent = (avencement*100)/p_max;
44 //on efface la ligne de la console où il y a la barre de chargement
45 clear();
46 std::cerr << "\r" << p_buffer << "\r\r\r\r";
47 //on affiche la barre de chargement
48 feelbuffer(taille);
49 std::cerr << "[" << p_buffer << "|" << pourcent << "%]";
50 //on met old_taille à jour
51 p_old_taille = taille;
52 }
53}
54
56
58size_t ProgressBarr::getMax() const{
59 return p_max;
60}
61
63
65size_t ProgressBarr::getSize() const{
66 return p_size;
67}
68
70
73 return p_chPlein;
74}
75
77
80 return p_chMiddle;
81}
82
84
87 return p_chEnd;
88}
89
91
93void ProgressBarr::setMax(size_t max){
94 p_max = max;
95}
96
98
100void ProgressBarr::setSize(size_t size){
101 p_size = size;
102}
103
105
107void ProgressBarr::setChPlein(char chPlein){
108 p_chPlein = chPlein;
109}
110
112
114void ProgressBarr::setChMiddle(char chMiddle){
115 p_chMiddle = chMiddle;
116}
117
119
121void ProgressBarr::setChEnd(char chEnd){
122 p_chEnd = chEnd;
123}
124
128 std::cout << std::endl;
129}
130
132
135 copy(progressBarr);
136 return *this;
137}
138
140
146void ProgressBarr::init(size_t max,size_t size, char chPlein, char chMiddle, char chEnd){
147 p_buffer = new char[size + 1lu];
148 p_size = size;
149 p_max = max;
150 p_chPlein = chPlein;
151 p_chMiddle = chMiddle;
152 p_chEnd = chEnd;
153 p_old_taille = 0lu;
154}
155
157
159void ProgressBarr::copy(const ProgressBarr & progressBarr){
160 if(p_buffer != NULL){
161 delete [] p_buffer;
162 }
163 p_buffer = new char[progressBarr.p_size + 1]; //on pense au caractère \0
164 p_size = progressBarr.p_size;
165 p_max = progressBarr.p_max;
166 p_chPlein = progressBarr.p_chPlein;
167 p_chMiddle = progressBarr.p_chMiddle;
168 p_chEnd = progressBarr.p_chEnd;
169 p_old_taille = progressBarr.p_old_taille;
170}
171
173
175void ProgressBarr::feelbuffer(size_t taille){
176 if(taille <= p_size){
177 for(size_t i = 0; i < taille; ++i){
178 p_buffer[i] = p_chPlein;
179 }
180 p_buffer[taille] = p_chMiddle;
181 }
182 for(size_t i = taille + 1; i < p_size; ++i){
183 p_buffer[i] = p_chEnd;
184 }
185 p_buffer[p_size] = '\0';
186}
187
190 for(size_t i = 0; i < p_size; ++i){
191 p_buffer[i] = '\r';
192 }
193 p_buffer[p_size] = '\0';
194}
195
196
size_t p_size
Maximum size of the progress bar.
void copy(const ProgressBarr &progressBarr)
fonction qui copie la barre de chargement
virtual ~ProgressBarr()
destructeur de la barre de progression
void setMax(size_t max)
init la valeur max atteinte par la barre
void setSize(size_t size)
init la taille de la barre
char getChEnd() const
retourne le charactère de remplissage de la barre vide
size_t p_old_taille
Previous size of the progress bar.
char p_chPlein
Character used to fill the progress bar.
char p_chEnd
Character which fills the progress bar.
char getChMiddle() const
retourne le charactère au bout de la ligne de remplissage
void setChMiddle(char chMiddle)
init le charactère au bout de la ligne de remplissage
void init(size_t max, size_t size, char chPlein, char chMiddle, char chEnd)
Initialisation de la barre de progression en console.
void clear()
fonction qui efface la barre de chargement
void feelbuffer(size_t taille)
affiche la barre de chargement
char * p_buffer
Drawing buffer.
void setChEnd(char chEnd)
init le charactère de remplissage de la barre vide
char p_chMiddle
Character at the end of the progress bar.
ProgressBarr(size_t max=100, size_t size=100, char chPlein='=', char chMiddle='>', char chEnd=' ')
constructeur de la barre de progression en console
char getChPlein() const
retourne le caractère de remplissage
size_t p_max
Maximum value to reach to complete charging.
size_t getSize() const
retourne la taille maximale de la barre
void finish()
affiche la barre de chargement finie
ProgressBarr & operator=(const ProgressBarr &progressBarr)
redéfinition de l'opérateur =
void setChPlein(char chPlein)
init le caractère de remplissage
size_t getMax() const
retourne la valeur max atteinte par la barre
void progress(size_t avencement)
fonction qui fait avancer (ou reculer) la barre de chargement