diff options
author | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2015-01-01 17:54:21 +0100 |
---|---|---|
committer | Andreas Stöckel <andreas@somweyr.de> | 2015-01-01 17:54:21 +0100 |
commit | 684ad34cfb8e14695b436975d7da46ca6691c979 (patch) | |
tree | ab2d24810072643084c6625cd8b5a78ce6c95e2e /src/core/common | |
parent | 3bb40fec9cea187d71498d9c785c1fd15985d165 (diff) |
Moved Terminal class to own header (as Logger.cpp is quiet large now)
Diffstat (limited to 'src/core/common')
-rw-r--r-- | src/core/common/Logger.cpp | 116 | ||||
-rw-r--r-- | src/core/common/Terminal.cpp | 58 | ||||
-rw-r--r-- | src/core/common/Terminal.hpp | 124 |
3 files changed, 183 insertions, 115 deletions
diff --git a/src/core/common/Logger.cpp b/src/core/common/Logger.cpp index 73ffef7..fa4b5c8 100644 --- a/src/core/common/Logger.cpp +++ b/src/core/common/Logger.cpp @@ -20,6 +20,7 @@ #include <sstream> #include "Logger.hpp" +#include "Terminal.hpp" namespace ousia { @@ -192,121 +193,6 @@ bool ConcreteLogger::hasError() getSeverityCount(Severity::FATAL_ERROR) > 0; } -/* Class Terminal */ - -/** - * The Terminal class contains some helper functions used to interact with the - * terminal as used for colorful output when logging error messages. - * - * TODO: Disable on Windows or use corresponding API-functions for setting the - * color. - */ -class Terminal { -private: - /** - * If set to false, no control codes are generated. - */ - bool active; - -public: - /** - * ANSI color code for black. - */ - static const int BLACK = 30; - - /** - * ANSI color code for red. - */ - static const int RED = 31; - - /** - * ANSI color code for green. - */ - static const int GREEN = 32; - - /** - * ANSI color code for yellow. - */ - static const int YELLOW = 33; - - /** - * ANSI color code for blue. - */ - static const int BLUE = 34; - - /** - * ANSI color code for magenta. - */ - static const int MAGENTA = 35; - - /** - * ANSI color code for cyan. - */ - static const int CYAN = 36; - - /** - * ANSI color code for white. - */ - static const int WHITE = 37; - - /** - * Creates a new instance of the Terminal class. - * - * @param active specifies whether color codes should be generated. - */ - Terminal(bool active) : active(active) {} - - /** - * Returns a control string for switching to the given color. - * - * @param color is the color the terminal should switch to. - * @param bright specifies whether the terminal should switch to the bright - * mode. - * @return a control string to be included in the output stream. - */ - std::string color(int color, bool bright = true) const - { - if (!active) { - return std::string{}; - } - std::stringstream ss; - ss << "\x1b["; - if (bright) { - ss << "1;"; - } - ss << color << "m"; - return ss.str(); - } - - /** - * Returns a control string for switching to the bright mode. - * - * @return a control string to be included in the output stream. - */ - std::string bright() const - { - if (!active) { - return std::string{}; - } - std::stringstream ss; - ss << "\x1b[1m"; - return ss.str(); - } - - /** - * Returns a control string for switching to the default mode. - * - * @return a control string to be included in the output stream. - */ - std::string reset() const - { - if (!active) { - return std::string{}; - } - return "\x1b[0m"; - } -}; - /* Class TerminalLogger */ void TerminalLogger::processMessage(const Message &msg) diff --git a/src/core/common/Terminal.cpp b/src/core/common/Terminal.cpp new file mode 100644 index 0000000..447e595 --- /dev/null +++ b/src/core/common/Terminal.cpp @@ -0,0 +1,58 @@ +/* + Ousía + Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel + + 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 <http://www.gnu.org/licenses/>. +*/ + +#include <sstream> + +#include "Terminal.hpp" + +namespace ousia { + +std::string Terminal::color(int color, bool bright) const +{ + if (!useColor) { + return std::string{}; + } + std::stringstream ss; + ss << "\x1b["; + if (bright) { + ss << "1;"; + } + ss << color << "m"; + return ss.str(); +} + +std::string Terminal::bright() const +{ + if (!useColor) { + return std::string{}; + } + std::stringstream ss; + ss << "\x1b[1m"; + return ss.str(); +} + +std::string Terminal::reset() const +{ + if (!useColor) { + return std::string{}; + } + return "\x1b[0m"; +} + +} + diff --git a/src/core/common/Terminal.hpp b/src/core/common/Terminal.hpp new file mode 100644 index 0000000..730853d --- /dev/null +++ b/src/core/common/Terminal.hpp @@ -0,0 +1,124 @@ +/* + Ousía + Copyright (C) 2014 Benjamin Paaßen, Andreas Stöckel + + 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 <http://www.gnu.org/licenses/>. +*/ + +/** + * @file Terminal.hpp + * + * Classes for printing colored output to a terminal. + * + * @author Andreas Stöckel (astoecke@techfak.uni-bielefeld.de) + */ + +#ifndef _OUSIA_TERMINAL_HPP_ +#define _OUSIA_TERMINAL_HPP_ + +#include <string> + +namespace ousia { + +/** + * The Terminal class contains some helper functions used to interact with the + * terminal as used for colorful output when logging error messages. + * + * TODO: Disable on Windows or use corresponding API-functions for setting the + * color. + * TODO: Give output stream to terminal/use terminal as output stream + */ +class Terminal { +private: + /** + * If set to false, no control codes are generated. + */ + bool useColor; + +public: + /** + * ANSI color code for black. + */ + static const int BLACK = 30; + + /** + * ANSI color code for red. + */ + static const int RED = 31; + + /** + * ANSI color code for green. + */ + static const int GREEN = 32; + + /** + * ANSI color code for yellow. + */ + static const int YELLOW = 33; + + /** + * ANSI color code for blue. + */ + static const int BLUE = 34; + + /** + * ANSI color code for magenta. + */ + static const int MAGENTA = 35; + + /** + * ANSI color code for cyan. + */ + static const int CYAN = 36; + + /** + * ANSI color code for white. + */ + static const int WHITE = 37; + + /** + * Creates a new instance of the Terminal class. + * + * @param useColor specifies whether color codes should be generated. + */ + Terminal(bool useColor) : useColor(useColor) {} + + /** + * Returns a control string for switching to the given color. + * + * @param color is the color the terminal should switch to. + * @param bright specifies whether the terminal should switch to the bright + * mode. + * @return a control string to be included in the output stream. + */ + std::string color(int color, bool bright = true) const; + + /** + * Returns a control string for switching to the bright mode. + * + * @return a control string to be included in the output stream. + */ + std::string bright() const; + + /** + * Returns a control string for switching to the default mode. + * + * @return a control string to be included in the output stream. + */ + std::string reset() const; +}; +} + +#endif /* _OUSIA_TERMINAL_HPP_ */ + |