2016-12-08 5 views
1

행 형식이나 열 형식을 지정하여 셀을 색칠 할 수 있지만 전체 행이나 열에 색칠/서식을 적용합니다. 몇 가지 기준에 따라 각 셀의 색상을 설정하고 싶습니다. setCDKMatrixCell() 호출에 ... coloring 태그를 포함 시키면 해당 문자는 셀을 포맷하는 데 사용되지 않는 셀 텍스트로 설정됩니다.NCurses CDK 매트릭스에서 개별 세포를 착색 할 수 있습니까?

다른 방법이 있습니까? 또는 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

셀 전용 함수를 사용하여 그려 단순히 셀의 각 문자에 대해 사용 mvwaddch

static void drawCDKMatrixCell (CDKMATRIX *matrix, 
           int row, 
           int col, 
           int vrow, 
           int vcol, 
           chtype attr, 
           boolean Box) 

. 해당하는 정보가

int setCDKMatrixCell (CDKMATRIX *matrix, int row, int col, const char *value) 

를 사용하여 설정 char (되지 chtype)로서 매트릭스에 저장된다. drawCDKMatrixCell 함수가 수정 된 경우, 예를 들어 char2Chtype을 사용하여 데이터를 구성하면 원하는 것을 수행 할 수 있습니다.

+0

감사합니다. 나는 색칠을 책임지고 있다고 생각하는 코드 덩어리를 포함시켰다. char2Chtype을 사용하여 색상을 설정하는 방법을 알려주시겠습니까? 내 혼란은 b/c 텍스트는 char에 의해 작성되고 "강조 표시"와 OR됩니다. 정확히 어떻게 작동하는지 확실하지 않습니다. – jterm