diff --git a/src/ViewTask.cpp b/src/ViewTask.cpp index 6d1e060eb..6fb535ce5 100644 --- a/src/ViewTask.cpp +++ b/src/ViewTask.cpp @@ -26,11 +26,14 @@ //////////////////////////////////////////////////////////////////////////////// #include +#include #include #include #include #include +extern Context context; + //////////////////////////////////////////////////////////////////////////////// ViewTask::ViewTask () : _width (0) @@ -204,10 +207,10 @@ std::string ViewTask::render (std::vector & data, std::vector & seque std::string extra = std::string (_extra_padding, ' '); std::string intra = std::string (_intra_padding, ' '); - std::string extra_odd = _extra_odd.colorize (extra); - std::string extra_even = _extra_even.colorize (extra); - std::string intra_odd = _intra_odd.colorize (intra); - std::string intra_even = _intra_even.colorize (intra); + std::string extra_odd = context.color () ? _extra_odd.colorize (extra) : extra; + std::string extra_even = context.color () ? _extra_even.colorize (extra) : extra; + std::string intra_odd = context.color () ? _intra_odd.colorize (intra) : intra; + std::string intra_even = context.color () ? _intra_even.colorize (intra) : intra; for (int i = 0; i < max_lines; ++i) { @@ -249,8 +252,12 @@ std::string ViewTask::render (std::vector & data, std::vector & seque // Alternate rows based on |s % 2| bool odd = (s % 2) ? true : false; - Color row_color = odd ? _odd : _even; - row_color.blend (rule_color); + Color row_color; + if (context.color ()) + { + row_color = odd ? _odd : _even; + row_color.blend (rule_color); + } for (int c = 0; c < _columns.size (); ++c) { diff --git a/src/ViewText.cpp b/src/ViewText.cpp index 6e14d4afb..a920046e3 100644 --- a/src/ViewText.cpp +++ b/src/ViewText.cpp @@ -26,11 +26,14 @@ //////////////////////////////////////////////////////////////////////////////// #include +#include #include #include #include #include +extern Context context; + //////////////////////////////////////////////////////////////////////////////// ViewText::ViewText () : _width (0) @@ -64,7 +67,8 @@ void ViewText::set (int row, int col, const std::string& value, Color color) { _data[row][col] = value; - if (color.nontrivial ()) + if (color.nontrivial () && + ! context.color ()) _color[row][col] = color; } @@ -74,7 +78,8 @@ void ViewText::set (int row, int col, int value, Color color) std::string string_value = format (value); _data[row][col] = string_value; - if (color.nontrivial ()) + if (color.nontrivial () && + ! context.color ()) _color[row][col] = color; } @@ -84,7 +89,8 @@ void ViewText::set (int row, int col, float value, int width, int precision, Col std::string string_value = format ((float)value, width, precision); _data[row][col] = string_value; - if (color.nontrivial ()) + if (color.nontrivial () && + ! context.color ()) _color[row][col] = color; } @@ -179,10 +185,10 @@ std::string ViewText::render () std::string extra = std::string (_extra_padding, ' '); std::string intra = std::string (_intra_padding, ' '); - std::string extra_odd = _extra_odd.colorize (extra); - std::string extra_even = _extra_even.colorize (extra); - std::string intra_odd = _intra_odd.colorize (intra); - std::string intra_even = _intra_even.colorize (intra); + std::string extra_odd = context.color () ? _extra_odd.colorize (extra) : extra; + std::string extra_even = context.color () ? _extra_even.colorize (extra) : extra; + std::string intra_odd = context.color () ? _intra_odd.colorize (intra) : intra; + std::string intra_even = context.color () ? _intra_even.colorize (intra) : intra; for (int i = 0; i < max_lines; ++i) { @@ -228,8 +234,11 @@ std::string ViewText::render () Color cell_color; for (int col = 0; col < _columns.size (); ++col) { - cell_color = row_color; - cell_color.blend (_color[row][col]); + if (context.color ()) + { + cell_color = row_color; + cell_color.blend (_color[row][col]); + } cells.push_back (std::vector ()); _columns[col]->render (cells[col], _data[row][col], widths[col], cell_color); @@ -256,10 +265,15 @@ std::string ViewText::render () out += cells[col][i]; else { - cell_color = row_color; - cell_color.blend (_color[row][col]); + if (context.color ()) + { + cell_color = row_color; + cell_color.blend (_color[row][col]); - out += cell_color.colorize (std::string (widths[col], ' ')); + out += cell_color.colorize (std::string (widths[col], ' ')); + } + else + out += std::string (widths[col], ' '); } } diff --git a/src/rules.cpp b/src/rules.cpp index 8fb35e778..96ad06ca6 100644 --- a/src/rules.cpp +++ b/src/rules.cpp @@ -257,7 +257,8 @@ static void colorizeRecurring (Task& task, const std::string& rule, Color& c) void autoColorize (Task& task, Color& c) { // The special tag 'nocolor' overrides all auto and specific colorization. - if (task.hasTag ("nocolor")) + if (!context.color () || + task.hasTag ("nocolor")) { c = Color (); return;