2017-03-11 8 views
2

나는 terminfo 데이터베이스를 사용하여 색상을 인쇄하려고하고 각 터미널에 대한 터미널 데이터베이스 파일을 성공적으로 파싱했습니다. 제 경우에는 확실히 색상을 지원하는 그놈 터미널을 사용했습니다. terminfo를 사용하여 터미널에서 색상을 설정하는 방법

set_foreground 
set_background 
set_a_foreground 
set_a_background 

내가 전경색을 설정하려는 때문에

, 나는 그것을 ANSI 서열와 호환 말한다 set_a_foreground을 집어 -

지금처럼의 terminfo 데이터베이스에 몇 가지 명령이 있습니다. 하지만 여전히 실제로 둘 중 하나를 사용하여 색상을 인쇄하는 방법을 알지 못합니다.

그들 모두는 다음과 같이 말합니다. - Set foreground color #1 설명에 실제 문자열이 내 단말기에서 - ESC[3%p1%dm처럼 보입니다.

그럼 내 질문은 set_a_ 또는 set_ 버전을 사용해야하며, 어떤 색상으로 인쇄해야합니까?

답변

1

의 색상 사이에 분석 정보와 스위치를 사용하여 스위치에서 사용 define header file like I've done on my printf project

의 어떤 종류를해야 set_foregroundset_a_foreground (배경 기능과 함께)의 차이는 Color Handling sectionterminfo(5) 매뉴얼 페이지에 있습니다. 긴 이름은 자주 사용되는 것을 명심하십시오, 당신은 setfsetaf 대를 찾고되어야한다 : 단지의 terminfo (그리고 저주)를 사용하여

The setaf/setab and setf/setb capabilities take a single 
    numeric argument each. Argument values 0-7 of setaf/setab 
    are portably defined as follows (the middle column is the 
    symboliC#define available in the header for the curses or 
    ncurses libraries). The terminal hardware is free to map 
    these as it likes, but the RGB values indicate normal 
    locations in color space. 

     Color  #define  Value  RGB 
     black  COLOR_BLACK  0  0, 0, 0 
     red  COLOR_RED   1  max,0,0 
     green  COLOR_GREEN  2  0,max,0 
     yellow COLOR_YELLOW  3  max,max,0 
     blue  COLOR_BLUE  4  0,0,max 
     magenta COLOR_MAGENTA  5  max,0,max 
     cyan  COLOR_CYAN  6  0,max,max 
     white  COLOR_WHITE  7  max,max,max 

    The argument values of setf/setb historically correspond 
    to a different mapping, i.e., 

     Color  #define  Value  RGB 
     black  COLOR_BLACK  0  0, 0, 0 
     blue  COLOR_BLUE  1  0,0,max 
     green  COLOR_GREEN  2  0,max,0 
     cyan  COLOR_CYAN  3  0,max,max 
     red  COLOR_RED   4  max,0,0 
     magenta COLOR_MAGENTA  5  max,0,max 
     yellow COLOR_YELLOW  6  max,max,0 
     white  COLOR_WHITE  7  max,max,max 

    It is important to not confuse the two sets of color capa- 
    bilities; otherwise red/blue will be interchanged on the 
    display. 

대부분의 응용 프로그램을 대체 문자열 서식을 tparm 기능을 사용하여 (숫자) 매개 변수를 사용하고 결과 문자열에 tputs을 사용하여 실제로 씁니다. 패딩 및 지연에 대한 두 가지 설명 (일반적으로 기능에는 없지만 일반적으로 terminfo에 있음).

ncurses-examples 프로그램 dots은 이러한 기능을 사용하여 색상이 지정된 셀을 화면에 무작위로 그립니다. (이 예에서 tparm2, tparm3tparm 프로토 타입에 필요한 추가 매개 변수를 제공하는 매크로입니다.

-2

그럼 먼저, 당신은 그런 그 정의를 사용하고 모든 다른 터미널 :