- Corrected some cases where rc.color was not obeyed.
This commit is contained in:
Paul Beckingham 2011-05-21 11:29:34 -04:00
parent df652d2ec7
commit 409fa216b8
3 changed files with 41 additions and 19 deletions

View file

@ -26,11 +26,14 @@
////////////////////////////////////////////////////////////////////////////////
#include <ViewTask.h>
#include <Context.h>
#include <Timer.h>
#include <text.h>
#include <utf8.h>
#include <main.h>
extern Context context;
////////////////////////////////////////////////////////////////////////////////
ViewTask::ViewTask ()
: _width (0)
@ -204,10 +207,10 @@ std::string ViewTask::render (std::vector <Task>& data, std::vector <int>& 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 <Task>& data, std::vector <int>& 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)
{

View file

@ -26,11 +26,14 @@
////////////////////////////////////////////////////////////////////////////////
#include <ViewText.h>
#include <Context.h>
#include <Timer.h>
#include <text.h>
#include <utf8.h>
#include <main.h>
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 <std::string> ());
_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], ' ');
}
}

View file

@ -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;