diff --git a/progressBar.cpp b/progressBar.cpp new file mode 100644 index 0000000..b8d0bc3 --- /dev/null +++ b/progressBar.cpp @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2019 Gwenhael Goavec-Merou + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include +#include "progressBar.hpp" + +ProgressBar::ProgressBar(std::string mess, int maxValue, int progressLen): + _mess(mess), _maxValue(maxValue), _progressLen(progressLen) +{ +} + +void ProgressBar::display(int value) +{ + float percent = ((float)value * 100.0f)/(float)_maxValue; + float nbEq = (percent * (float) _progressLen)/100.0f; + + fprintf(stderr, "\r%s: [", _mess.c_str()); + for (int z=0; z < nbEq; z++) { + fputc('=', stderr); + } + fprintf(stderr, "%*s", (int)(_progressLen-nbEq), ""); + fprintf(stderr, "] %3.2f%%", percent); +} +void ProgressBar::done() +{ + display(_maxValue); + fprintf(stderr, "\nDone\n"); +} diff --git a/progressBar.hpp b/progressBar.hpp new file mode 100644 index 0000000..f525d9f --- /dev/null +++ b/progressBar.hpp @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2019 Gwenhael Goavec-Merou + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef PROGRESSBARE_HPP +#define PROGRESSBARE_HPP + +#include + +class ProgressBar { + public: + ProgressBar(std::string mess, int maxValue, int progressLen); + void display(int value); + void done(); + private: + std::string _mess; + int _maxValue; + int _progressLen; +}; + +#endif