2010-12-10 5 views
3

나는 하루 종일 ncurses에서 간단한 선 그리기 (예 : 상자)를 해봤지만 제대로 작동하지 않습니다. http://www.theasciicode.com.ar/ascii-table-codes/ascii-codes-219.html wchar_t에 대해 몇 가지 언급을 보았지만 ncursesw가 필요합니다.이 글꼴은 포함하는 방법을 알아낼 수 없습니다 (설치되어 있음을 알고 있습니다)ncurses의 선 그리기

OS X 10.6.2 및 GCC 4.2에서 XCode를 사용하고 있습니다.

아이디어가 있으십니까?

+1

어떤 프로그래밍 환경이에? 나는 C/C++을 내 대답에 가정했다. – wallyk

답변

4

wchar_t가 필요하지 않습니다. 예를 들어 이중선 상자의 왼쪽 아래 모서리를 그리려면 10 진수 10 진수 310 ("\ 310") 또는 0xc8 ("\ xc8") 코드를 사용하십시오. ").

해당 문자는 사용중인 터미널 에뮬레이터의 지원이 필요하지만 정상적으로 작동합니다.


편집
나는 오래된 저주의 7 비트 대 8 비트 모드의 막연한 기억을 가지고,하지만 난 FSF의 ncurses에 대한 언급을 찾을 수 없습니다 1.190 (2008/12/20) 또한 Linux에있는 v5.7.3.20090207로 확인되었습니다. man page for curs_addch 문자 그리기 라인에 대한 기호 상수를 언급, 그래서 아마 당신은 리터럴 선 그리기 문자들을 사용할 것으로 예상됩니다

addch (ACS_ULCORNER); // upper left corner 
for (int j = 0; j < boxwidth-2; ++j) 
    addch (ACS_HLINE); 
addch (ACS_URCORNER); // upper right 
... 
+0

이것을 시도하면 ncurses가 물음표를 그립니다. (나는 C를 사용하고 있습니다. 그런데 Plain ol 'C) – denizen

+0

그리고 네, 터미널을 점검했습니다. 확장 ASCII를 붙여 넣을 수 있습니다. – denizen

+0

글쎄, 내게 조금 더 가까워진다. 선 그리기 상수는이 문제와 일치하는 Q로 표시됩니다. http://invisible-island.net/ncurses/ncurses.faq.html#no_line_drawing. 그것은 터미널 비호 환성으로 인한 것으로 보이지만, Terminal.app뿐만 아니라 xterm도 시도해 보았습니다. – denizen

0
void boxAround(int y, int x, int h, int w) { 
    move(y, x); 
    addch (ACS_ULCORNER); // upper left corner 
    int j; 
    for (j = 0; j < w; ++j) 
     addch (ACS_HLINE); 
    addch (ACS_URCORNER); // upper right 

    for(j = 0; j < h; ++j) { 
      move( y+1+j, x); 
      addch (ACS_VLINE); 
      move(y+1+j, x+w+1); 
      addch (ACS_VLINE); 
    } 

    move(y+h+1,x); 
    addch (ACS_LLCORNER); // lower left corner 

    for (j = 0; j < w; ++j) 
     addch (ACS_HLINE); 
    addch (ACS_LRCORNER); // lower right 
}