2 Haziran 2020 Salı

ncurses

Giriş
Şu satırı dahil ederiz.
#include <ncurses.h>
curses
Açıklaması şöyle.
curses is designed to manage your entire screen
Bu kütüphane Unix içindi. Açıklaması şöyle
The curses library is a terminal control library for Unix-like systems used in text based user interface applications. It has been used in many games in the past. It was developed by Ken Arnold and originally released with BSD Unix.
ncurses
Açıklaması şöyle. ncurses kullanmaya başlamadan önce ilk olarak initscr() metodu çağrılmalıdır.
ncurses is an open-source clone of the original Unix curses library. 
Kurulum
Linux'ta şöyle yaparız.
apt-get install libncurses-dev
addch metodu
Kutu çizmek için şöyle yaparız
move(0,0); addch(ACS_ULCORNER); addch(ACS_HLINE); addch(ACS_URCORNER);
move(1,0); addch(ACS_LLCORNER); addch(ACS_HLINE); addch(ACS_LRCORNER);
cbreak metodu
cbreak() metodu raw() metodunun tersidir. Ctrl + C ile çıkabilmesi sağlar. Şöyle yaparız.
int main ( int argc, char **argv) {

  initscr();
  cbreak();
  noecho();
  WINDOW* my_win=newwin(30, 30, 0, 0);
  ...
  char *s = ...;
  mvwprintw(my_win, 3, 5, s);
  wrefresh(my_win);
  
  endwin();
  return 0;
}
clear metodu
ncurses olmadan şöyle yaparız.
system("clear");//for linux
system("cls");//for Windows
ncurses ile şöyle yaparız
int tv = clear();
endwin metodu
terminali resetleyerek çıkmak için şöyle yaparız
endwin();
exit(0);
init_color metodu
Şöyle yaparız.
// #define's for the COLOR_PAIRs
#define X_COLOR 1
#define O_COLOR 2
#define BG_COLOR 3

start_color();
init_pair(X_COLOR, COLOR_CYAN, COLOR_BLACK);
init_pair(O_COLOR, COLOR_GREEN, COLOR_BLACK);
init_pair(BG_COLOR, COLOR_YELLOW, COLOR_BLACK);
initscr metodu
İlk çağrılması gereken metod.
Örnek
Şöyle yaparız
#include <stdio.h>
#include <curses.h>
#include <iostream>

int main()
{
  int ch;
  initscr(); // <----------- this
  while (ch != 113)
  {
    ch = getch();
    std::cout << ch << std::endl;
  }

  return 0;
}
Örnek
Şöyle yaparız.
#include <ncurses.h>
int main()
{
  initscr();
  WINDOW *win = newwin(0,0,10,10);
  delwin(win);
  endwin();
  return 0;
}
getmax metodu
Şöyle yaparız.
int row, col;
getmaxyx(stdscr,row,col);
move metodu
Şöyle yaparız.
move(1,0);
newpad metodu
Şöyle yaparız.
// create pad
WINDOW* pad newpad (10000, col);
newwin metodu - lines + cols+ begin y + begin x
50 satırlık, 10 sütunlu 10,10 konumundan başlayan bir pencere açmak için şöyle yaparız. box() çağrısı ile kutu çizilir.
#include <ncurses.h>
#include <iostream>

using namespace std;

int main(){
  initscr();

  WINDOW * win = newwin(50,10,10,10);
  box(win,0,0);
  wrefresh(win);

  wgetch(win);
  endwin();
  return 0;
}
raw metodu
raw() metodu cbreak() metodunun tersidir. Ctrl + C ile çıkılmamasını sağlar.
Örnek
Şöyle yaparız.
raw();
noecho();
wgetch metodu
Basılan tuşu okur. Açıklaması şöyle.
When a character that could be the beginning of a function key is received (which, on modern terminals, means an escape character), curses sets a timer. If the remainder of the sequence does not come in within the designated time, the character is passed through; otherwise, the function key value is returned. For this reason, many terminals experience a delay between the time a user presses the escape key and the escape is returned to the program.
Şöyle yaparız.
// initialization not shown initscr() should be enough for this test
while(!f_should_exit)
{
  int c(wgetch(f_win_input));

  // show codes of what the user types
  //
  printf("got [%d] ", c);
  // prints 27 when I hit ESC
  // prints 27 91 65 when I hit Arrow Up
}
wprintw metodu
Şöyle yaparız.
char* fileName = ...;

WINDOW* pad = ...;
...
wprintw(pad,"Team #4   \"%s\"",fileName);
wmove metodu
Şöyle yaparız.
WINDOW* pad = ...;

//print text contents to screen
wmove(pad,0,0);

Hiç yorum yok:

Yorum Gönder