ncurses Attribute 설정해보기

오늘은 ncurses에서 속성을 제어하는 방식을 매우 간단하게 포스팅하려합니다.

이전 포스팅과 다소 겹치는 부분이 있을 수도 있습니다. 양해 부탁드립니다.

start_color()

전에 언급한대로 색 attribute를 사용하기 위해 선언하는 함수입니다.

터미널에 색을 입히기 위해서는 반드시 선언되어야 합니다.

init_pair()

글자 색과 배경 색을 한 쌍으로 색 속성을 지정합니다.

init_pair(1,COLOR_WHITE,COLOR_BLACK);

1번 팔레트에 하얀색 글씨와 검은 배경으로 설정합니다.

bkgd()

한 Attribute로 윈도우의 전체에 적용하게 되는 함수입니다.

COLOR_PAIR()로 위에서 설정한 팔레트의 색을 가져다가 씁니다.

bkgd(COLOR_PAIR(1));

1번 팔레트에서 속성을 가져와서 적용하는 예시입니다.

attron()

적용할 Attribute를 설정하는 함수입니다.

bkgd()처럼 사용합니다.

attron(COLOR_PAIR(1));

1번 팔레트를 사용합니다.

attroff()

적용한 Attribute를 해제하는 함수힙니다.

attron() 함수와 대조되며, 팔레트를 헤제하는데에 사용됩니다.

attroff(COLOR_PAIR(1))

1번 팔레트를 사용 해제하는 예시입니다.

border()

윈도우의 경계를 설정하며, 왼쪽, 오른쪽, 위쪽, 아랫쪽, 그리고 각 코너를 각각 설정 할 수 있습니다.

border('@', '@', '@', '@', '@', '@', '@', '@');

각 인자 별로 왼쪽 측면, 오른쪽 측면, 위쪽 측면, 아랫쪽 측면, 왼쪽 윗 코너, 오른쪽 위쪽 코너, 왼쪽 아랫쪽 코너, 오른쪽 위쪽 코너 순으로 넣으면 됩니다.

비슷한 함수인 box()도 테두리를 설정할 수 있습니다.

예제 코드

#include <ncurses.h>
int main()
{
    initscr();
    start_color();
    init_pair(1,COLOR_WHITE,COLOR_BLACK);
    bkgd(COLOR_PAIR(1));
    attron(COLOR_PAIR(1));
    mvprintw(1, 1, "hello world!");
    attroff(COLOR_PAIR(1));
    border('*', '*', '*', '*', '*', '*', '*', '*');
    refresh();
    getch();
    endwin();

    return 0;
}

위 간단 포스팅을 바탕으로 작성된 예제 코드입니다.

1번 팔레트로 속성을 설정하고 문자열을 출력하며 테두리를 지정함을 볼 수 있습니다.

Written on May 20, 2018