В матрице CDur NCurses можно ли покрасить отдельную ячейку?

Я могу покрасить ячейки, указав формат строки или формат столбца, но при этом применяется раскраска / форматирование ко всей строке или столбцу. Я хотел бы установить цвет каждой ячейки на основе некоторых критериев. Когда я включаю … цветные метки в 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);
}
...

1

Решение

Клетки нарисованы с использованием закрытой функции

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 чтобы построить данные, то вы могли бы делать то, что вы просите.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector