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