1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
#include "window.h"
void init_colors(void)
{
start_color();
init_pair(WBLACK, COLOR_WHITE, COLOR_BLACK);
init_pair(WCYAN, COLOR_WHITE, COLOR_CYAN);
init_pair(WBLUE, COLOR_WHITE, COLOR_BLUE);
init_pair(WYELLOW, COLOR_WHITE, COLOR_YELLOW);
init_pair(WGREEN, COLOR_WHITE, COLOR_GREEN);
init_pair(WMAGENTA, COLOR_WHITE, COLOR_MAGENTA);
init_pair(WRED, COLOR_WHITE, COLOR_RED);
init_pair(BWHITE, COLOR_BLACK, COLOR_WHITE);
init_pair(BCYAN, COLOR_BLACK, COLOR_CYAN);
init_pair(BBLUE, COLOR_BLACK, COLOR_BLUE);
init_pair(BYELLOW, COLOR_BLACK, COLOR_YELLOW);
init_pair(BGREEN, COLOR_BLACK, COLOR_GREEN);
init_pair(BMAGENTA, COLOR_BLACK, COLOR_MAGENTA);
init_pair(BRED, COLOR_BLACK, COLOR_RED);
}
void startProgramX() {
initscr(); // initialize curses
cbreak(); // pass key presses to program, but not signals
noecho(); // don't echo key presses to screen
keypad(stdscr, TRUE); // allow arrow keys
timeout(0); // no blocking on getch()
curs_set(0); // set the cursor to invisible
init_colors();
}
void stopProgramX() {
refresh();
getch();
endwin();
}
void Window::update() const{
wrefresh(win);
wrefresh(frame);
refresh();
}
Window::Window(int h,int w, int x, int y, char c)
: height(h), width(w), startx(x), starty(y), bord(c)
{
colorwin=WCYAN;
colorframe=WBLACK;
frame=newwin(h+2,w+2,y,x);
win=subwin(frame,h,w,y+1,x+1);
wbkgd(frame,COLOR_PAIR(colorwin));
wbkgd(win,COLOR_PAIR(colorframe));
wborder(frame, c,c,c,c,c,c,c,c);
wattron(win,COLOR_PAIR(colorwin));
wattron(frame,COLOR_PAIR(colorframe));
update();
}
Window::~Window(){
wborder(frame, ' ', ' ', ' ',' ',' ',' ',' ',' ');
wattroff(win,COLOR_PAIR(colorwin));
wattroff(win,COLOR_PAIR(colorframe));
werase(win);
update();
delwin(win);
}
void Window::print(int x, int y, std::string s, Color c) const {
wattron(win,COLOR_PAIR(c));
mvwprintw(win,y,x,s.c_str());
wattroff(win,COLOR_PAIR(c));
update();
}
void Window::print(int x, int y, char s, Color c) const{
wattron(win,COLOR_PAIR(c));
mvwaddch(win,y,x,s);
wattroff(win,COLOR_PAIR(c));
update();
}
void Window::print(int x, int y, std::string s) const{
mvwprintw(win,y,x,s.c_str());
update();
}
void Window::print(int x, int y, char s) const{
mvwaddch(win,y,x,s);
update();
}
int Window::getX() const { return startx;}
int Window::getY() const { return starty;}
int Window::getHauteur() const { return height;}
int Window::getLargeur() const { return width;}
Color Window::getCouleurBordure() const{ return colorframe;}
Color Window::getCouleurFenetre() const{ return colorwin;}
void Window::setCouleurBordure(Color c){
colorframe=c;
wattron(frame,COLOR_PAIR(colorframe));
wborder(frame, bord,bord,bord,bord,bord,bord,bord,bord);
update();
}
void Window::setCouleurFenetre(Color c){
colorwin=c;
wattron(win,COLOR_PAIR(colorwin));
wbkgd(win,COLOR_PAIR(colorwin));
update();
}
void Window::clear() const{ werase(win); update(); }
|