summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/common/Logger.cpp116
-rw-r--r--src/core/common/Terminal.cpp58
-rw-r--r--src/core/common/Terminal.hpp124
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_ */
+