1 /* Here's a simple example of combining SDL and PDCurses functionality.
2 The top portion of the window is devoted to SDL, with a four-line
3 (assuming the default 8x16 font) stdscr at the bottom.
4 */
5
6 #include <SDL.h>
7 #include <curses.h>
8 #include <stdlib.h>
9 #include <time.h>
10
11 /* You could #include pdcsdl.h, or just add the relevant declarations
12 here: */
13
14 PDCEX SDL_Surface *pdc_screen;
15 PDCEX int pdc_yoffset;
16
main(int argc,char ** argv)17 int main(int argc, char **argv)
18 {
19 char inp[60];
20 int i, j, seed;
21
22 seed = time((time_t *)0);
23 srand(seed);
24
25 /* Initialize SDL */
26
27 if (SDL_Init(SDL_INIT_VIDEO) < 0)
28 exit(1);
29
30 atexit(SDL_Quit);
31
32 pdc_screen = SDL_SetVideoMode(640, 480, 0, SDL_SWSURFACE|SDL_ANYFORMAT);
33
34 /* Initialize PDCurses */
35
36 pdc_yoffset = 416; /* 480 - 4 * 16 */
37
38 initscr();
39 start_color();
40 scrollok(stdscr, TRUE);
41
42 PDC_set_title("PDCurses for SDL");
43
44 /* Do some SDL stuff */
45
46 for (i = 640, j = 416; j; i -= 2, j -= 2)
47 {
48 SDL_Rect dest;
49
50 dest.x = (640 - i) / 2;
51 dest.y = (416 - j) / 2;
52 dest.w = i;
53 dest.h = j;
54
55 SDL_FillRect(pdc_screen, &dest,
56 SDL_MapRGB(pdc_screen->format, rand() % 256,
57 rand() % 256, rand() % 256));
58 }
59
60 SDL_UpdateRect(pdc_screen, 0, 0, 640, 416);
61
62 /* Do some curses stuff */
63
64 init_pair(1, COLOR_WHITE + 8, COLOR_BLUE);
65 bkgd(COLOR_PAIR(1));
66
67 addstr("This is a demo of ");
68 attron(A_UNDERLINE);
69 addstr("PDCurses for SDL");
70 attroff(A_UNDERLINE);
71 addstr(".\nYour comments here: ");
72 getnstr(inp, 59);
73 addstr("Press any key to exit.");
74
75 getch();
76 endwin();
77
78 return 0;
79 }
80