Я могу покрасить ячейки, указав формат строки или формат столбца, но при этом применяется раскраска / форматирование ко всей строке или столбцу. Я хотел бы установить цвет каждой ячейки на основе некоторых критериев. Когда я включаю … цветные метки в setCDKMatrixCell()
Вызов этих символов устанавливается на текст ячейки, не используемый для форматирования ячейки.
Есть ли другой способ? Или какие-нибудь идеи о том, как изменить drawCDKMatrixCell, чтобы сделать это?
void drawCDKMatrixCell() {
...
if (matrix->dominant == ROW) {
highlight = matrix->rowtitle[absolute_row][0] & A_ATTRIBUTES;
}
else if (matrix->dominant == COL) {
highlight = matrix->coltitle[col][0] & A_ATTRIBUTES;
}
/* Draw in the cell info. */
for (x = 1; x <= matrix->colwidths[col]; x++) {
chtype ch = (((x <= infolen) && !isHiddenDisplayType(disptype))
? (CharOf(MATRIX_INFO(matrix, vrow, vcol)[x - 1]) | highlight)
: matrix->filler);(void) mvwaddch(cell, 1, x, ch | highlight);
}
...
Клетки нарисованы с использованием закрытой функции
static void drawCDKMatrixCell (CDKMATRIX *matrix,
int row,
int col,
int vrow,
int vcol,
chtype attr,
boolean Box)
который просто использует mvwaddch
для каждого символа в ячейке. Информация для этого задается с помощью
int setCDKMatrixCell (CDKMATRIX *matrix, int row, int col, const char *value)
и хранится в матрице как char
(не chtype
). Если drawCDKMatrixCell
функции были изменены, скажем, использовать char2Chtype
чтобы построить данные, то вы могли бы делать то, что вы просите.
Других решений пока нет …