curs_color(3)

명칭
start_color, init_pair, init_color, has_colors, can_change_color, color_content, pair_content - ncurses 칼라 조작 routine

서식
# include <ncurses.h>
int start_color(void) ;
int init_pair(short pair, short f, short b) ;
int init_color(short color, short r, short g, short b) ;
bool has_colors(void) ;
bool can_change_color(void) ;
int color_content(short color, short *r, short *g, short *b) ;
int pair_content(short pair, short *f, short *b) ;

해설
ncurses 는, 기능이 있는 단말로 칼라 속성을 서포트합니다. 이러한 routine를 사용하려면 , 통상, initscr 의 직후에 start_color 를 호출할 필요가 있습니다. 색은 반드시 페어로 사용됩니다 (색의 페어로 불립니다). 색의 페어는, (캐릭터용의) 전경색과 (캐릭터가 표시되는 공백의 필터용의) 배경색으로 구성됩니다. 프로그래머는, routine init_pair 로 색의 페어를 초기화합니다. 초기화가 끝난 후는, <ncurses.h> 내에서 정의되고 있는 매크로이다 COLOR_PAIR(n)를, 새로운 비디오 속성으로서 사용할 수 있습니다. 단말이 색을 재정의할 수 있는 경우는, 프로그래머는, routine init_color 를 사용해, 색의 정의를 변경할 수 있습니다. routine has_colors 와 routine can_change_color 는, 단말에 색의 기능이 있는지 어떤지, 프로그래머가 색을 변경할 수 있는지 어떤지에 따라, TRUE 또는 FALSE 를 돌려줍니다. routine color_content 에 의해, 프로그래머는 초기화된 색의 적, 초록, 파랑의 컴퍼넌트를 꺼낼 수 있습니다. routine pair_content 에 의해, 프로그래머는, 지정의 색의 페어가 현시점에서 어떻게 정의되고 있을까를 찾아낼 수 있습니다.

  routine의 해설
start_color routine에는 인수는 필요 없습니다. 프로그래머가 색을 사용하는 경우는, 다른 색조작 routine가 호출하기 전에 이것을 호출할 필요가 있습니다. initscr 의 곧 다음에 이 routine를 호출하는 것은 현명한 방법입니다. start_color 는 8 개의 기본색 (흑, 적, 록, 황색, 파랑, 적자, 물색, 흰색)(와)과 2 개의 글로벌 변수 COLORS 와 COLOR_PAIRS 를 초기화합니다 (각각 단말을 서포트할 수 있는 색 및 색의 페어의 최대수를 정의합니다). 또, 단말을 온으로 전환했을 때의 색에, 단말상의 색을 복원합니다. init_pair routine는, 색의 페어의 정의를 변경합니다. 다음의 3 개의 인수를 취합니다. 변경하는 색의 페어의 번호, 전경색의 번호, 및 배경색의 번호입니다. 최초의 인수의 값은 1 와 COLOR_PAIRS-1 의 사이일 필요가 있습니다. 2 번째의 인수의 값과 3 번째의 인수의 값은 0 으로 COLORS 의 사이에 있을 필요가 있습니다 (0 색의 페어는 흑 위의 흰색에 묶어 청구서라고 있으므로, 변경할 수 없습니다). 색의 페어가 이전에 초기화되고 있는 경우, 화면은 리프레쉬 되어 그 색의 페어가 발생한 곳은 모두 새로운 정의로 변경됩니다. init_color routine는 색의 정의를 변경합니다. 다음의 4 개의 인수를 취합니다. 변경하는 색의 번호의 뒤에 3 개의 RGB 치가 계속된 것입니다 (적, 초록, 파랑의 각 컴퍼넌트의 양에 대해입니다). 최초의 인수의 값은, 0 와 COLORS 의 사이일 필요가 있습니다 (디폴트의 칼라 인덱스에 대해서는, Colors 의 섹션을 참조해 주세요). 마지막 3 개의 인수는 각각 0 으로 1000 의 값의 사이에 있을 필요가 있습니다. init_color 를 사용할 때, 화면상에 그 색이 발생한 곳은 모두 즉시 새로운 정의에 변화합니다. has_colors routine에는 인수는 필요 없습니다. 단말이 색을 조작할 수 있는 경우는 TRUE 를 돌려줍니다. 그렇지 않은 경우는, FALSE 를 돌려줍니다. 이 routine는, 단말에 독립인 프로그램을 작성하는 것을 간단하게 합니다. 예를 들어, 프로그래머는, 이것을 사용해, 색 또는 다른 비디오 속성을 사용하는지 어떤지 결정할 수 있습니다. can_change_color routine에는 인수는 필요 없습니다. 단말이 색을 서포트해, 색의 정의를 변경할 수 있는 경우는 TRUE 를 돌려줍니다. 그렇지 않은 경우, FALSE 를 돌려줍니다. 이 routine는 단말에 독립인 프로그램을 작성하는 것을 간단하게 합니다. color_content routine는, 색안에 적, 초록, 파랑 (RGB) 컴퍼넌트의 강도를 찾아내는 방법을 프로그래머에게 줍니다. 다음의 4 개의 인수가 필요합니다. 색의 번호, 및 지정의 색안의 적, 초록, 파랑의 컴퍼넌트에 관한 정보를 보존하는 short 의 3 개의 주소입니다. 최초의 인수의 값은 0 으로 COLORS 의 사이입니다. 마지막 3 개의 인수가 가리키는 주소에 보존되는 값은 0 (컴퍼넌트 없음)(와)과 1000 (컴퍼넌트의 최대량)의 사이입니다. pair_content routine에 의해, 프로그래머는, 지정의 색의 페어가 무슨색으로 구성될까를 찾아낼 수가 있습니다. 다음의 3 개의 인수가 필요합니다. 색의 페어의 번호, 전경색의 번호와 배경색의 번호를 보존하기 위한 short 의 2 개의 주소입니다. 최초의 인수의 값은 1 으로 COLOR_PAIRS-1 의 사이에 있을 필요가 있습니다. 2 번째의 인수와 3 번째의 인수가 가리키는 주소에 보존되는 값은 0 으로 COLORS 의 사이에 있습니다.

  색
<ncurses.h> 에서는, 다음의 매크로가 정의되고 있습니다. 이것들은 디폴트의 색입니다. 또, ncurses 은, COLOR_BLACK 가 모든 단말에 대해 디폴트의 배경색이라고 상정합니다.
      COLOR_BLACK
      COLOR_RED
      COLOR_GREEN
      COLOR_YELLOW
      COLOR_BLUE
      COLOR_MAGENTA
      COLOR_CYAN
      COLOR_WHITE

반환값
모든 routine가 처리 실패했을 때에 정수 ERR 를 돌려주어, 처리가 정상적으로 완료했을 때는 OK 를 돌려줍니다.

주석
몇개의 경고가 VGA 호환의 그래픽스가 있다 386 머신과 486 머신에 적용됩니다. COLOR_YELLOW 는 실제로는 갈색입니다. 황색으로 하기 위해서(때문에)는, A_BOLD 속성과 COLOR_YELLOW 를 조합해 사용합니다. A_BLINK 속성은, 이론적으로는 배경을 밝게 할 것입니다. 이것은 동작에 실패하는 것이 많아, 가장 많이 동작하고 있는 카드 (예를 들어, Paradise 및 이것과 호환성이 있는 것)에서도, 밝은 "황색의" 배경을 설정하려고 할 때 잘못한 동작을 하는 일이 있습니다 (대신에 전경이 황색 나와 또 옵니다). 색의 RGB 치는 설정할 수 없습니다.

기능
setf, setb, setaf, setab. curses 프로그램 라이브러리는 2 번째의 페어를 선택해 사용하고 나서, 최초의 페어에 의존합니다.

관련 항목
ncurses(3), curs_initscr(3), curs_attr(3)