curses 1.4.6 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/push_gem.yml +6 -4
- data/README.md +8 -1
- data/curses.gemspec +2 -2
- data/ext/curses/curses.c +188 -12
- data/ext/curses/extconf.rb +3 -2
- data/lib/curses.rb +7 -0
- data/sample/attr_demo.rb +4 -2
- data/sample/screen.rb +9 -0
- data/vendor/PDCurses/.gitignore +47 -0
- data/vendor/PDCurses/.travis.yml +49 -0
- data/vendor/PDCurses/CMakeLists.txt +68 -0
- data/vendor/PDCurses/HISTORY.md +2036 -0
- data/vendor/PDCurses/IMPLEMNT.md +327 -0
- data/vendor/PDCurses/Makefile +27 -0
- data/vendor/PDCurses/README.md +77 -0
- data/vendor/PDCurses/acs_defs.h +265 -0
- data/vendor/PDCurses/appveyor.yml +218 -0
- data/vendor/PDCurses/cmake/README.md +71 -0
- data/vendor/PDCurses/cmake/build_dependencies.cmake +178 -0
- data/vendor/PDCurses/cmake/build_options.cmake +25 -0
- data/vendor/PDCurses/cmake/dll_version.cmake +26 -0
- data/vendor/PDCurses/cmake/gen_config_header.cmake +43 -0
- data/vendor/PDCurses/cmake/get_version.cmake +17 -0
- data/vendor/PDCurses/cmake/make_uninstall.cmake +19 -0
- data/vendor/PDCurses/cmake/project_common.cmake +121 -0
- data/vendor/PDCurses/cmake/resource.in.cmake +52 -0
- data/vendor/PDCurses/cmake/sdl2_ttf/CMakeLists.txt +83 -0
- data/vendor/PDCurses/cmake/target_arch.cmake +36 -0
- data/vendor/PDCurses/cmake/version.in.cmake +73 -0
- data/vendor/PDCurses/cmake/watcom_open_dos16_toolchain.cmake +96 -0
- data/vendor/PDCurses/cmake/watcom_open_dos32_toolchain.cmake +106 -0
- data/vendor/PDCurses/cmake/watcom_open_os2v2_toolchain.cmake +105 -0
- data/vendor/PDCurses/curses.h +1846 -0
- data/vendor/PDCurses/curspriv.h +134 -0
- data/vendor/PDCurses/demos/README.md +25 -0
- data/vendor/PDCurses/demos/firework.c +144 -0
- data/vendor/PDCurses/demos/newtest.c +581 -0
- data/vendor/PDCurses/demos/ozdemo.c +447 -0
- data/vendor/PDCurses/demos/ptest.c +283 -0
- data/vendor/PDCurses/demos/rain.c +157 -0
- data/vendor/PDCurses/demos/testcurs.c +1607 -0
- data/vendor/PDCurses/demos/tui.c +1048 -0
- data/vendor/PDCurses/demos/tui.h +65 -0
- data/vendor/PDCurses/demos/tuidemo.c +233 -0
- data/vendor/PDCurses/demos/version.c +61 -0
- data/vendor/PDCurses/demos/worm.c +432 -0
- data/vendor/PDCurses/demos/xmas.c +955 -0
- data/vendor/PDCurses/dos/CMakeLists.txt +47 -0
- data/vendor/PDCurses/dos/Makefile +105 -0
- data/vendor/PDCurses/dos/Makefile.bcc +83 -0
- data/vendor/PDCurses/dos/Makefile.dmc +257 -0
- data/vendor/PDCurses/dos/Makefile.msc +113 -0
- data/vendor/PDCurses/dos/Makefile.wcc +107 -0
- data/vendor/PDCurses/dos/README.md +51 -0
- data/vendor/PDCurses/dos/bccdos.lrf +9 -0
- data/vendor/PDCurses/dos/mscdos.lrf +50 -0
- data/vendor/PDCurses/dos/pdcclip.c +132 -0
- data/vendor/PDCurses/dos/pdcdisp.c +135 -0
- data/vendor/PDCurses/dos/pdcdos.h +194 -0
- data/vendor/PDCurses/dos/pdcgetsc.c +98 -0
- data/vendor/PDCurses/dos/pdckbd.c +513 -0
- data/vendor/PDCurses/dos/pdcscrn.c +785 -0
- data/vendor/PDCurses/dos/pdcsetsc.c +101 -0
- data/vendor/PDCurses/dos/pdcutil.c +212 -0
- data/vendor/PDCurses/libobjs.mif +26 -0
- data/vendor/PDCurses/makedist.mif +20 -0
- data/vendor/PDCurses/man/Makefile +37 -0
- data/vendor/PDCurses/man/README.md +21 -0
- data/vendor/PDCurses/man/intro.md +361 -0
- data/vendor/PDCurses/man/manext.c +119 -0
- data/vendor/PDCurses/man/sdl.md +152 -0
- data/vendor/PDCurses/man/sdl2.md +58 -0
- data/vendor/PDCurses/man/x11.md +407 -0
- data/vendor/PDCurses/ncurses/CMakeLists.txt +66 -0
- data/vendor/PDCurses/ncurses/README.md +26 -0
- data/vendor/PDCurses/ncurses/makefile +29 -0
- data/vendor/PDCurses/os2/CMakeLists.txt +41 -0
- data/vendor/PDCurses/os2/Makefile +132 -0
- data/vendor/PDCurses/os2/Makefile.bcc +90 -0
- data/vendor/PDCurses/os2/Makefile.wcc +43 -0
- data/vendor/PDCurses/os2/README.md +43 -0
- data/vendor/PDCurses/os2/iccos2.lrf +50 -0
- data/vendor/PDCurses/os2/iccos2.mak +256 -0
- data/vendor/PDCurses/os2/pdcclip.c +188 -0
- data/vendor/PDCurses/os2/pdcdisp.c +93 -0
- data/vendor/PDCurses/os2/pdcgetsc.c +89 -0
- data/vendor/PDCurses/os2/pdckbd.c +521 -0
- data/vendor/PDCurses/os2/pdcos2.h +55 -0
- data/vendor/PDCurses/os2/pdcscrn.c +449 -0
- data/vendor/PDCurses/os2/pdcsetsc.c +112 -0
- data/vendor/PDCurses/os2/pdcutil.c +52 -0
- data/vendor/PDCurses/panel.h +56 -0
- data/vendor/PDCurses/pdcurses/README.md +25 -0
- data/vendor/PDCurses/pdcurses/addch.c +693 -0
- data/vendor/PDCurses/pdcurses/addchstr.c +245 -0
- data/vendor/PDCurses/pdcurses/addstr.c +240 -0
- data/vendor/PDCurses/pdcurses/attr.c +359 -0
- data/vendor/PDCurses/pdcurses/beep.c +68 -0
- data/vendor/PDCurses/pdcurses/bkgd.c +223 -0
- data/vendor/PDCurses/pdcurses/border.c +411 -0
- data/vendor/PDCurses/pdcurses/clear.c +159 -0
- data/vendor/PDCurses/pdcurses/color.c +298 -0
- data/vendor/PDCurses/pdcurses/debug.c +109 -0
- data/vendor/PDCurses/pdcurses/delch.c +96 -0
- data/vendor/PDCurses/pdcurses/deleteln.c +211 -0
- data/vendor/PDCurses/pdcurses/deprec.c +27 -0
- data/vendor/PDCurses/pdcurses/getch.c +417 -0
- data/vendor/PDCurses/pdcurses/getstr.c +474 -0
- data/vendor/PDCurses/pdcurses/getyx.c +139 -0
- data/vendor/PDCurses/pdcurses/inch.c +127 -0
- data/vendor/PDCurses/pdcurses/inchstr.c +214 -0
- data/vendor/PDCurses/pdcurses/initscr.c +367 -0
- data/vendor/PDCurses/pdcurses/inopts.c +324 -0
- data/vendor/PDCurses/pdcurses/insch.c +271 -0
- data/vendor/PDCurses/pdcurses/insstr.c +264 -0
- data/vendor/PDCurses/pdcurses/instr.c +246 -0
- data/vendor/PDCurses/pdcurses/kernel.c +259 -0
- data/vendor/PDCurses/pdcurses/keyname.c +157 -0
- data/vendor/PDCurses/pdcurses/mouse.c +438 -0
- data/vendor/PDCurses/pdcurses/move.c +57 -0
- data/vendor/PDCurses/pdcurses/outopts.c +159 -0
- data/vendor/PDCurses/pdcurses/overlay.c +214 -0
- data/vendor/PDCurses/pdcurses/pad.c +260 -0
- data/vendor/PDCurses/pdcurses/panel.c +633 -0
- data/vendor/PDCurses/pdcurses/printw.c +126 -0
- data/vendor/PDCurses/pdcurses/refresh.c +279 -0
- data/vendor/PDCurses/pdcurses/scanw.c +578 -0
- data/vendor/PDCurses/pdcurses/scr_dump.c +213 -0
- data/vendor/PDCurses/pdcurses/scroll.c +101 -0
- data/vendor/PDCurses/pdcurses/slk.c +591 -0
- data/vendor/PDCurses/pdcurses/termattr.c +182 -0
- data/vendor/PDCurses/pdcurses/terminfo.c +217 -0
- data/vendor/PDCurses/pdcurses/touch.c +163 -0
- data/vendor/PDCurses/pdcurses/util.c +312 -0
- data/vendor/PDCurses/pdcurses/window.c +569 -0
- data/vendor/PDCurses/sdl1/Makefile +129 -0
- data/vendor/PDCurses/sdl1/Makefile.mng +110 -0
- data/vendor/PDCurses/sdl1/README.md +31 -0
- data/vendor/PDCurses/sdl1/deffont.h +385 -0
- data/vendor/PDCurses/sdl1/deficon.h +23 -0
- data/vendor/PDCurses/sdl1/pdcclip.c +131 -0
- data/vendor/PDCurses/sdl1/pdcdisp.c +373 -0
- data/vendor/PDCurses/sdl1/pdcgetsc.c +30 -0
- data/vendor/PDCurses/sdl1/pdckbd.c +405 -0
- data/vendor/PDCurses/sdl1/pdcscrn.c +414 -0
- data/vendor/PDCurses/sdl1/pdcsdl.h +31 -0
- data/vendor/PDCurses/sdl1/pdcsetsc.c +64 -0
- data/vendor/PDCurses/sdl1/pdcutil.c +40 -0
- data/vendor/PDCurses/sdl1/sdltest.c +79 -0
- data/vendor/PDCurses/sdl2/CMakeLists.txt +76 -0
- data/vendor/PDCurses/sdl2/Makefile +135 -0
- data/vendor/PDCurses/sdl2/Makefile.vc +164 -0
- data/vendor/PDCurses/sdl2/README.md +34 -0
- data/vendor/PDCurses/sdl2/deffont.h +385 -0
- data/vendor/PDCurses/sdl2/deficon.h +23 -0
- data/vendor/PDCurses/sdl2/pdcclip.c +93 -0
- data/vendor/PDCurses/sdl2/pdcdisp.c +534 -0
- data/vendor/PDCurses/sdl2/pdcgetsc.c +30 -0
- data/vendor/PDCurses/sdl2/pdckbd.c +480 -0
- data/vendor/PDCurses/sdl2/pdcscrn.c +443 -0
- data/vendor/PDCurses/sdl2/pdcsdl.h +33 -0
- data/vendor/PDCurses/sdl2/pdcsetsc.c +67 -0
- data/vendor/PDCurses/sdl2/pdcutil.c +39 -0
- data/vendor/PDCurses/sdl2/sdltest.c +81 -0
- data/vendor/PDCurses/term.h +48 -0
- data/vendor/PDCurses/version.mif +7 -0
- data/vendor/PDCurses/vt/CMakeLists.txt +28 -0
- data/vendor/PDCurses/vt/Makefile +135 -0
- data/vendor/PDCurses/vt/Makefile.bcc +111 -0
- data/vendor/PDCurses/vt/Makefile.dmc +258 -0
- data/vendor/PDCurses/vt/Makefile.vc +144 -0
- data/vendor/PDCurses/vt/Makefile.wcc +107 -0
- data/vendor/PDCurses/vt/README.md +64 -0
- data/vendor/PDCurses/vt/pdcclip.c +20 -0
- data/vendor/PDCurses/vt/pdcdisp.c +284 -0
- data/vendor/PDCurses/vt/pdcgetsc.c +27 -0
- data/vendor/PDCurses/vt/pdckbd.c +394 -0
- data/vendor/PDCurses/vt/pdcscrn.c +434 -0
- data/vendor/PDCurses/vt/pdcsetsc.c +45 -0
- data/vendor/PDCurses/vt/pdcutil.c +43 -0
- data/vendor/PDCurses/vt/pdcvt.h +16 -0
- data/vendor/PDCurses/watcom.mif +68 -0
- data/vendor/PDCurses/wincon/CMakeLists.txt +27 -0
- data/vendor/PDCurses/wincon/Makefile.bcc +88 -0
- data/vendor/PDCurses/wincon/Makefile.dmc +256 -0
- data/vendor/PDCurses/wincon/Makefile.lcc +273 -0
- data/vendor/PDCurses/wincon/Makefile.mng +176 -0
- data/vendor/PDCurses/wincon/Makefile.vc +144 -0
- data/vendor/PDCurses/wincon/Makefile.wcc +51 -0
- data/vendor/PDCurses/wincon/README.md +85 -0
- data/vendor/PDCurses/wincon/pdcclip.c +174 -0
- data/vendor/PDCurses/wincon/pdcdisp.c +143 -0
- data/vendor/PDCurses/wincon/pdcgetsc.c +55 -0
- data/vendor/PDCurses/wincon/pdckbd.c +786 -0
- data/vendor/PDCurses/wincon/pdcscrn.c +717 -0
- data/vendor/PDCurses/wincon/pdcsetsc.c +91 -0
- data/vendor/PDCurses/wincon/pdcurses.ico +0 -0
- data/vendor/PDCurses/wincon/pdcurses.rc +28 -0
- data/vendor/PDCurses/wincon/pdcutil.c +41 -0
- data/vendor/PDCurses/wincon/pdcwin.h +31 -0
- data/vendor/PDCurses/wingui/CMakeLists.txt +27 -0
- data/vendor/PDCurses/wingui/Makefile.bcc +85 -0
- data/vendor/PDCurses/wingui/Makefile.dmc +259 -0
- data/vendor/PDCurses/wingui/Makefile.lcc +273 -0
- data/vendor/PDCurses/wingui/Makefile.mng +171 -0
- data/vendor/PDCurses/wingui/Makefile.vc +144 -0
- data/vendor/PDCurses/wingui/Makefile.wcc +51 -0
- data/vendor/PDCurses/wingui/README.md +93 -0
- data/vendor/PDCurses/wingui/pdcclip.c +174 -0
- data/vendor/PDCurses/wingui/pdcdisp.c +718 -0
- data/vendor/PDCurses/wingui/pdcgetsc.c +30 -0
- data/vendor/PDCurses/wingui/pdckbd.c +143 -0
- data/vendor/PDCurses/wingui/pdcscrn.c +2797 -0
- data/vendor/PDCurses/wingui/pdcsetsc.c +89 -0
- data/vendor/PDCurses/wingui/pdcurses.ico +0 -0
- data/vendor/PDCurses/wingui/pdcurses.rc +28 -0
- data/vendor/PDCurses/wingui/pdcutil.c +61 -0
- data/vendor/PDCurses/wingui/pdcwin.h +122 -0
- data/vendor/PDCurses/x11/Makefile.in +754 -0
- data/vendor/PDCurses/x11/PDCurses.spec +82 -0
- data/vendor/PDCurses/x11/README.md +62 -0
- data/vendor/PDCurses/x11/ScrollBox.c +319 -0
- data/vendor/PDCurses/x11/ScrollBox.h +51 -0
- data/vendor/PDCurses/x11/ScrollBoxP.h +70 -0
- data/vendor/PDCurses/x11/aclocal.m4 +994 -0
- data/vendor/PDCurses/x11/big_icon.xbm +46 -0
- data/vendor/PDCurses/x11/compose.h +201 -0
- data/vendor/PDCurses/x11/config.guess +1500 -0
- data/vendor/PDCurses/x11/config.h.in +100 -0
- data/vendor/PDCurses/x11/config.sub +1616 -0
- data/vendor/PDCurses/x11/configure +6700 -0
- data/vendor/PDCurses/x11/configure.ac +295 -0
- data/vendor/PDCurses/x11/debian/changelog +6 -0
- data/vendor/PDCurses/x11/debian/compat +1 -0
- data/vendor/PDCurses/x11/debian/control +11 -0
- data/vendor/PDCurses/x11/debian/copyright +27 -0
- data/vendor/PDCurses/x11/debian/rules +98 -0
- data/vendor/PDCurses/x11/install-sh +253 -0
- data/vendor/PDCurses/x11/little_icon.xbm +14 -0
- data/vendor/PDCurses/x11/ncurses_cfg.h +45 -0
- data/vendor/PDCurses/x11/pdcclip.c +173 -0
- data/vendor/PDCurses/x11/pdcdisp.c +85 -0
- data/vendor/PDCurses/x11/pdcgetsc.c +28 -0
- data/vendor/PDCurses/x11/pdckbd.c +104 -0
- data/vendor/PDCurses/x11/pdcscrn.c +258 -0
- data/vendor/PDCurses/x11/pdcsetsc.c +95 -0
- data/vendor/PDCurses/x11/pdcutil.c +52 -0
- data/vendor/PDCurses/x11/pdcx11.c +316 -0
- data/vendor/PDCurses/x11/pdcx11.h +191 -0
- data/vendor/PDCurses/x11/sb.c +155 -0
- data/vendor/PDCurses/x11/x11.c +3686 -0
- data/vendor/PDCurses/x11/xcurses-config.in +81 -0
- metadata +249 -8
@@ -0,0 +1,414 @@
|
|
1
|
+
/* Public Domain Curses */
|
2
|
+
|
3
|
+
#include "pdcsdl.h"
|
4
|
+
|
5
|
+
#include <stdlib.h>
|
6
|
+
#ifndef PDC_WIDE
|
7
|
+
#include "deffont.h"
|
8
|
+
#endif
|
9
|
+
#include "deficon.h"
|
10
|
+
|
11
|
+
#ifdef PDC_WIDE
|
12
|
+
# ifndef PDC_FONT_PATH
|
13
|
+
# ifdef _WIN32
|
14
|
+
#define PDC_FONT_PATH "C:/Windows/Fonts/lucon.ttf"
|
15
|
+
# elif defined(__APPLE__)
|
16
|
+
#define PDC_FONT_PATH "/Library/Fonts/Courier New.ttf"
|
17
|
+
# else
|
18
|
+
#define PDC_FONT_PATH "/usr/share/fonts/truetype/freefont/FreeMono.ttf"
|
19
|
+
# endif
|
20
|
+
# endif
|
21
|
+
TTF_Font *pdc_ttffont = NULL;
|
22
|
+
int pdc_font_size = 18;
|
23
|
+
#endif
|
24
|
+
|
25
|
+
SDL_Surface *pdc_screen = NULL, *pdc_font = NULL, *pdc_icon = NULL,
|
26
|
+
*pdc_back = NULL, *pdc_tileback = NULL;
|
27
|
+
int pdc_sheight = 0, pdc_swidth = 0, pdc_yoffset = 0, pdc_xoffset = 0;
|
28
|
+
|
29
|
+
SDL_Color pdc_color[256];
|
30
|
+
Uint32 pdc_mapped[256];
|
31
|
+
int pdc_fheight, pdc_fwidth, pdc_flastc;
|
32
|
+
bool pdc_own_screen;
|
33
|
+
|
34
|
+
/* special purpose function keys */
|
35
|
+
static int PDC_shutdown_key[PDC_MAX_FUNCTION_KEYS] = { 0, 0, 0, 0, 0 };
|
36
|
+
|
37
|
+
/* COLOR_PAIR to attribute encoding table. */
|
38
|
+
|
39
|
+
static struct {short f, b;} atrtab[PDC_COLOR_PAIRS];
|
40
|
+
|
41
|
+
static void _clean(void)
|
42
|
+
{
|
43
|
+
#ifdef PDC_WIDE
|
44
|
+
if (pdc_ttffont)
|
45
|
+
{
|
46
|
+
TTF_CloseFont(pdc_ttffont);
|
47
|
+
TTF_Quit();
|
48
|
+
}
|
49
|
+
#endif
|
50
|
+
SDL_FreeSurface(pdc_tileback);
|
51
|
+
SDL_FreeSurface(pdc_back);
|
52
|
+
SDL_FreeSurface(pdc_icon);
|
53
|
+
SDL_FreeSurface(pdc_font);
|
54
|
+
|
55
|
+
SDL_Quit();
|
56
|
+
}
|
57
|
+
|
58
|
+
void PDC_retile(void)
|
59
|
+
{
|
60
|
+
if (pdc_tileback)
|
61
|
+
SDL_FreeSurface(pdc_tileback);
|
62
|
+
|
63
|
+
pdc_tileback = SDL_DisplayFormat(pdc_screen);
|
64
|
+
if (pdc_tileback == NULL)
|
65
|
+
return;
|
66
|
+
|
67
|
+
if (pdc_back)
|
68
|
+
{
|
69
|
+
SDL_Rect dest;
|
70
|
+
|
71
|
+
dest.y = 0;
|
72
|
+
|
73
|
+
while (dest.y < pdc_tileback->h)
|
74
|
+
{
|
75
|
+
dest.x = 0;
|
76
|
+
|
77
|
+
while (dest.x < pdc_tileback->w)
|
78
|
+
{
|
79
|
+
SDL_BlitSurface(pdc_back, 0, pdc_tileback, &dest);
|
80
|
+
dest.x += pdc_back->w;
|
81
|
+
}
|
82
|
+
|
83
|
+
dest.y += pdc_back->h;
|
84
|
+
}
|
85
|
+
|
86
|
+
SDL_BlitSurface(pdc_tileback, 0, pdc_screen, 0);
|
87
|
+
}
|
88
|
+
}
|
89
|
+
|
90
|
+
void PDC_scr_close(void)
|
91
|
+
{
|
92
|
+
PDC_LOG(("PDC_scr_close() - called\n"));
|
93
|
+
}
|
94
|
+
|
95
|
+
void PDC_scr_free(void)
|
96
|
+
{
|
97
|
+
if (SP)
|
98
|
+
free(SP);
|
99
|
+
}
|
100
|
+
|
101
|
+
static int default_pdc_swidth = 80, default_pdc_sheight = 25;
|
102
|
+
|
103
|
+
/* open the physical screen -- allocate SP, miscellaneous intialization */
|
104
|
+
|
105
|
+
int PDC_scr_open(int argc, char **argv)
|
106
|
+
{
|
107
|
+
int i, r, g, b;
|
108
|
+
|
109
|
+
PDC_LOG(("PDC_scr_open() - called\n"));
|
110
|
+
|
111
|
+
SP = calloc(1, sizeof(SCREEN));
|
112
|
+
|
113
|
+
if (!SP)
|
114
|
+
return ERR;
|
115
|
+
|
116
|
+
pdc_own_screen = !pdc_screen;
|
117
|
+
|
118
|
+
if (pdc_own_screen)
|
119
|
+
{
|
120
|
+
if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER) < 0)
|
121
|
+
{
|
122
|
+
fprintf(stderr, "Could not start SDL: %s\n", SDL_GetError());
|
123
|
+
return ERR;
|
124
|
+
}
|
125
|
+
|
126
|
+
atexit(_clean);
|
127
|
+
}
|
128
|
+
|
129
|
+
#ifdef PDC_WIDE
|
130
|
+
if (!pdc_ttffont)
|
131
|
+
{
|
132
|
+
const char *ptsz, *fname;
|
133
|
+
|
134
|
+
if (TTF_Init() == -1)
|
135
|
+
{
|
136
|
+
fprintf(stderr, "Could not start SDL_TTF: %s\n", SDL_GetError());
|
137
|
+
return ERR;
|
138
|
+
}
|
139
|
+
|
140
|
+
ptsz = getenv("PDC_FONT_SIZE");
|
141
|
+
if (ptsz != NULL)
|
142
|
+
pdc_font_size = atoi(ptsz);
|
143
|
+
if (pdc_font_size <= 0)
|
144
|
+
pdc_font_size = 18;
|
145
|
+
|
146
|
+
fname = getenv("PDC_FONT");
|
147
|
+
pdc_ttffont = TTF_OpenFont(fname ? fname : PDC_FONT_PATH,
|
148
|
+
pdc_font_size);
|
149
|
+
}
|
150
|
+
|
151
|
+
if (!pdc_ttffont)
|
152
|
+
{
|
153
|
+
fprintf(stderr, "Could not load font\n");
|
154
|
+
return ERR;
|
155
|
+
}
|
156
|
+
|
157
|
+
TTF_SetFontKerning(pdc_ttffont, 0);
|
158
|
+
TTF_SetFontHinting(pdc_ttffont, TTF_HINTING_MONO);
|
159
|
+
|
160
|
+
SP->mono = FALSE;
|
161
|
+
#else
|
162
|
+
if (!pdc_font)
|
163
|
+
{
|
164
|
+
const char *fname = getenv("PDC_FONT");
|
165
|
+
pdc_font = SDL_LoadBMP(fname ? fname : "pdcfont.bmp");
|
166
|
+
}
|
167
|
+
|
168
|
+
if (!pdc_font)
|
169
|
+
pdc_font = SDL_LoadBMP_RW(SDL_RWFromMem(deffont, sizeof(deffont)), 0);
|
170
|
+
|
171
|
+
if (!pdc_font)
|
172
|
+
{
|
173
|
+
fprintf(stderr, "Could not load font\n");
|
174
|
+
return ERR;
|
175
|
+
}
|
176
|
+
|
177
|
+
SP->mono = !pdc_font->format->palette;
|
178
|
+
#endif
|
179
|
+
|
180
|
+
if (!SP->mono && !pdc_back)
|
181
|
+
{
|
182
|
+
const char *bname = getenv("PDC_BACKGROUND");
|
183
|
+
pdc_back = SDL_LoadBMP(bname ? bname : "pdcback.bmp");
|
184
|
+
}
|
185
|
+
|
186
|
+
if (!SP->mono && (pdc_back || !pdc_own_screen))
|
187
|
+
{
|
188
|
+
SP->orig_attr = TRUE;
|
189
|
+
SP->orig_fore = COLOR_WHITE;
|
190
|
+
SP->orig_back = -1;
|
191
|
+
}
|
192
|
+
else
|
193
|
+
SP->orig_attr = FALSE;
|
194
|
+
|
195
|
+
#ifdef PDC_WIDE
|
196
|
+
TTF_SizeText(pdc_ttffont, "W", &pdc_fwidth, &pdc_fheight);
|
197
|
+
#else
|
198
|
+
pdc_fheight = pdc_font->h / 8;
|
199
|
+
pdc_fwidth = pdc_font->w / 32;
|
200
|
+
|
201
|
+
if (!SP->mono)
|
202
|
+
pdc_flastc = pdc_font->format->palette->ncolors - 1;
|
203
|
+
#endif
|
204
|
+
|
205
|
+
if (pdc_own_screen && !pdc_icon)
|
206
|
+
{
|
207
|
+
const char *iname = getenv("PDC_ICON");
|
208
|
+
pdc_icon = SDL_LoadBMP(iname ? iname : "pdcicon.bmp");
|
209
|
+
|
210
|
+
if (!pdc_icon)
|
211
|
+
pdc_icon = SDL_LoadBMP_RW(SDL_RWFromMem(deficon,
|
212
|
+
sizeof(deficon)), 0);
|
213
|
+
|
214
|
+
if (pdc_icon)
|
215
|
+
SDL_WM_SetIcon(pdc_icon, NULL);
|
216
|
+
}
|
217
|
+
|
218
|
+
if (pdc_own_screen)
|
219
|
+
{
|
220
|
+
const char *env = getenv("PDC_LINES");
|
221
|
+
pdc_sheight = (env ? atoi(env) : default_pdc_sheight) * pdc_fheight;
|
222
|
+
|
223
|
+
env = getenv("PDC_COLS");
|
224
|
+
pdc_swidth = (env ? atoi(env) : default_pdc_swidth) * pdc_fwidth;
|
225
|
+
|
226
|
+
pdc_screen = SDL_SetVideoMode(pdc_swidth, pdc_sheight, 0,
|
227
|
+
SDL_SWSURFACE|SDL_ANYFORMAT|SDL_RESIZABLE);
|
228
|
+
}
|
229
|
+
else
|
230
|
+
{
|
231
|
+
if (!pdc_sheight)
|
232
|
+
pdc_sheight = pdc_screen->h - pdc_yoffset;
|
233
|
+
|
234
|
+
if (!pdc_swidth)
|
235
|
+
pdc_swidth = pdc_screen->w - pdc_xoffset;
|
236
|
+
}
|
237
|
+
|
238
|
+
if (!pdc_screen)
|
239
|
+
{
|
240
|
+
fprintf(stderr, "Couldn't create a surface: %s\n", SDL_GetError());
|
241
|
+
return ERR;
|
242
|
+
}
|
243
|
+
|
244
|
+
if (SP->orig_attr)
|
245
|
+
PDC_retile();
|
246
|
+
|
247
|
+
COLORS = 256; /* we have 256 colors in this flavor of PDCurses */
|
248
|
+
for (i = 0; i < 8; i++)
|
249
|
+
{
|
250
|
+
pdc_color[i].r = (i & COLOR_RED) ? 0xc0 : 0;
|
251
|
+
pdc_color[i].g = (i & COLOR_GREEN) ? 0xc0 : 0;
|
252
|
+
pdc_color[i].b = (i & COLOR_BLUE) ? 0xc0 : 0;
|
253
|
+
|
254
|
+
pdc_color[i + 8].r = (i & COLOR_RED) ? 0xff : 0x40;
|
255
|
+
pdc_color[i + 8].g = (i & COLOR_GREEN) ? 0xff : 0x40;
|
256
|
+
pdc_color[i + 8].b = (i & COLOR_BLUE) ? 0xff : 0x40;
|
257
|
+
}
|
258
|
+
|
259
|
+
/* 256-color xterm extended palette: 216 colors in a
|
260
|
+
6x6x6 color cube, plus 24 (not 50) shades of gray */
|
261
|
+
i = 16;
|
262
|
+
for( r = 0; r < 6; r++)
|
263
|
+
for( g = 0; g < 6; g++)
|
264
|
+
for( b = 0; b < 6; b++, i++)
|
265
|
+
{
|
266
|
+
pdc_color[i].r = ( r ? r * 40 + 55 : 0);
|
267
|
+
pdc_color[i].g = ( g ? g * 40 + 55 : 0);
|
268
|
+
pdc_color[i].b = ( b ? b * 40 + 55 : 0);
|
269
|
+
}
|
270
|
+
for( i = 232; i < 256; i++)
|
271
|
+
pdc_color[i].r = pdc_color[i].g = pdc_color[i].b = (i - 232) * 10 + 8;
|
272
|
+
for (i = 0; i < 256; i++)
|
273
|
+
pdc_mapped[i] = SDL_MapRGB(pdc_screen->format, pdc_color[i].r,
|
274
|
+
pdc_color[i].g, pdc_color[i].b);
|
275
|
+
|
276
|
+
SDL_EnableUNICODE(1);
|
277
|
+
|
278
|
+
PDC_mouse_set();
|
279
|
+
|
280
|
+
if (pdc_own_screen)
|
281
|
+
PDC_set_title(argc ? argv[0] : "PDCurses");
|
282
|
+
|
283
|
+
SP->lines = PDC_get_rows();
|
284
|
+
SP->cols = PDC_get_columns();
|
285
|
+
|
286
|
+
SP->mouse_wait = PDC_CLICK_PERIOD;
|
287
|
+
SP->audible = FALSE;
|
288
|
+
|
289
|
+
PDC_reset_prog_mode();
|
290
|
+
|
291
|
+
return OK;
|
292
|
+
}
|
293
|
+
|
294
|
+
/* the core of resize_term() */
|
295
|
+
|
296
|
+
int PDC_resize_screen(int nlines, int ncols)
|
297
|
+
{
|
298
|
+
if( !stdscr) /* window hasn't been created yet; we're */
|
299
|
+
{ /* specifying its size before doing so */
|
300
|
+
default_pdc_swidth = ncols;
|
301
|
+
default_pdc_sheight = nlines;
|
302
|
+
return OK;
|
303
|
+
}
|
304
|
+
|
305
|
+
if (!pdc_own_screen)
|
306
|
+
return ERR;
|
307
|
+
|
308
|
+
if (nlines && ncols)
|
309
|
+
{
|
310
|
+
pdc_sheight = nlines * pdc_fheight;
|
311
|
+
pdc_swidth = ncols * pdc_fwidth;
|
312
|
+
}
|
313
|
+
|
314
|
+
SDL_FreeSurface(pdc_screen);
|
315
|
+
|
316
|
+
pdc_screen = SDL_SetVideoMode(pdc_swidth, pdc_sheight, 0,
|
317
|
+
SDL_SWSURFACE|SDL_ANYFORMAT|SDL_RESIZABLE);
|
318
|
+
|
319
|
+
if (pdc_tileback)
|
320
|
+
PDC_retile();
|
321
|
+
|
322
|
+
SP->resized = FALSE;
|
323
|
+
SP->cursrow = SP->curscol = 0;
|
324
|
+
|
325
|
+
return OK;
|
326
|
+
}
|
327
|
+
|
328
|
+
void PDC_reset_prog_mode(void)
|
329
|
+
{
|
330
|
+
PDC_LOG(("PDC_reset_prog_mode() - called.\n"));
|
331
|
+
|
332
|
+
PDC_flushinp();
|
333
|
+
SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
|
334
|
+
}
|
335
|
+
|
336
|
+
void PDC_reset_shell_mode(void)
|
337
|
+
{
|
338
|
+
PDC_LOG(("PDC_reset_shell_mode() - called.\n"));
|
339
|
+
|
340
|
+
SDL_EnableKeyRepeat(0, 0);
|
341
|
+
PDC_flushinp();
|
342
|
+
}
|
343
|
+
|
344
|
+
void PDC_restore_screen_mode(int i)
|
345
|
+
{
|
346
|
+
}
|
347
|
+
|
348
|
+
void PDC_save_screen_mode(int i)
|
349
|
+
{
|
350
|
+
}
|
351
|
+
|
352
|
+
void PDC_init_pair(short pair, short fg, short bg)
|
353
|
+
{
|
354
|
+
atrtab[pair].f = fg;
|
355
|
+
atrtab[pair].b = bg;
|
356
|
+
}
|
357
|
+
|
358
|
+
int PDC_pair_content(short pair, short *fg, short *bg)
|
359
|
+
{
|
360
|
+
*fg = atrtab[pair].f;
|
361
|
+
*bg = atrtab[pair].b;
|
362
|
+
|
363
|
+
return OK;
|
364
|
+
}
|
365
|
+
|
366
|
+
bool PDC_can_change_color(void)
|
367
|
+
{
|
368
|
+
return TRUE;
|
369
|
+
}
|
370
|
+
|
371
|
+
int PDC_color_content(short color, short *red, short *green, short *blue)
|
372
|
+
{
|
373
|
+
*red = DIVROUND(pdc_color[color].r * 1000, 255);
|
374
|
+
*green = DIVROUND(pdc_color[color].g * 1000, 255);
|
375
|
+
*blue = DIVROUND(pdc_color[color].b * 1000, 255);
|
376
|
+
|
377
|
+
return OK;
|
378
|
+
}
|
379
|
+
|
380
|
+
int PDC_init_color(short color, short red, short green, short blue)
|
381
|
+
{
|
382
|
+
pdc_color[color].r = DIVROUND(red * 255, 1000);
|
383
|
+
pdc_color[color].g = DIVROUND(green * 255, 1000);
|
384
|
+
pdc_color[color].b = DIVROUND(blue * 255, 1000);
|
385
|
+
|
386
|
+
pdc_mapped[color] = SDL_MapRGB(pdc_screen->format, pdc_color[color].r,
|
387
|
+
pdc_color[color].g, pdc_color[color].b);
|
388
|
+
|
389
|
+
wrefresh(curscr);
|
390
|
+
|
391
|
+
return OK;
|
392
|
+
}
|
393
|
+
|
394
|
+
/* Does nothing in the SDL flavors of PDCurses. That may change, eventually,
|
395
|
+
allowing one to limit the range of user-resizable windows. See X11 or Win32a
|
396
|
+
versions of this function for details. */
|
397
|
+
|
398
|
+
void PDC_set_resize_limits( const int new_min_lines, const int new_max_lines,
|
399
|
+
const int new_min_cols, const int new_max_cols)
|
400
|
+
{
|
401
|
+
}
|
402
|
+
|
403
|
+
/* PDC_set_function_key() does nothing on this platform */
|
404
|
+
int PDC_set_function_key( const unsigned function, const int new_key)
|
405
|
+
{
|
406
|
+
int old_key = -1;
|
407
|
+
|
408
|
+
if( function < PDC_MAX_FUNCTION_KEYS)
|
409
|
+
{
|
410
|
+
old_key = PDC_shutdown_key[function];
|
411
|
+
PDC_shutdown_key[function] = new_key;
|
412
|
+
}
|
413
|
+
return( old_key);
|
414
|
+
}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
/* Public Domain Curses */
|
2
|
+
|
3
|
+
#include <curspriv.h>
|
4
|
+
|
5
|
+
#include <SDL.h>
|
6
|
+
#ifdef PDC_WIDE
|
7
|
+
#include <SDL_ttf.h>
|
8
|
+
#endif
|
9
|
+
|
10
|
+
#ifdef PDC_WIDE
|
11
|
+
PDCEX TTF_Font *pdc_ttffont;
|
12
|
+
PDCEX int pdc_font_size;
|
13
|
+
#endif
|
14
|
+
PDCEX SDL_Surface *pdc_screen, *pdc_font, *pdc_icon, *pdc_back;
|
15
|
+
PDCEX int pdc_sheight, pdc_swidth, pdc_yoffset, pdc_xoffset;
|
16
|
+
|
17
|
+
extern SDL_Surface *pdc_tileback; /* used to regenerate the background
|
18
|
+
of "transparent" cells */
|
19
|
+
extern SDL_Color pdc_color[256]; /* colors for font palette */
|
20
|
+
extern Uint32 pdc_mapped[256]; /* colors for FillRect(), as
|
21
|
+
used in _highlight() */
|
22
|
+
extern int pdc_fheight, pdc_fwidth; /* font height and width */
|
23
|
+
extern int pdc_flastc; /* font palette's last color
|
24
|
+
(treated as the foreground) */
|
25
|
+
extern bool pdc_own_screen; /* if pdc_screen was not set
|
26
|
+
before initscr(), PDCurses is
|
27
|
+
responsible for (owns) it */
|
28
|
+
extern Uint32 pdc_lastupdate; /* time of last update, in ticks */
|
29
|
+
|
30
|
+
void PDC_update_rects(void);
|
31
|
+
void PDC_retile(void);
|
@@ -0,0 +1,64 @@
|
|
1
|
+
/* Public Domain Curses */
|
2
|
+
|
3
|
+
#include "pdcsdl.h"
|
4
|
+
|
5
|
+
/*man-start**************************************************************
|
6
|
+
|
7
|
+
pdcsetsc
|
8
|
+
--------
|
9
|
+
|
10
|
+
### Synopsis
|
11
|
+
|
12
|
+
int PDC_set_blink(bool blinkon);
|
13
|
+
void PDC_set_title(const char *title);
|
14
|
+
|
15
|
+
### Description
|
16
|
+
|
17
|
+
PDC_set_blink() toggles whether the A_BLINK attribute sets an
|
18
|
+
actual blink mode (TRUE), or sets the background color to high
|
19
|
+
intensity (FALSE). The default is platform-dependent (FALSE in
|
20
|
+
most cases). It returns OK if it could set the state to match
|
21
|
+
the given parameter, ERR otherwise. Current platforms also
|
22
|
+
adjust the value of COLORS according to this function -- 16 for
|
23
|
+
FALSE, and 8 for TRUE.
|
24
|
+
|
25
|
+
PDC_set_title() sets the title of the window in which the curses
|
26
|
+
program is running. This function may not do anything on some
|
27
|
+
platforms. (Currently it only works in Win32 and X11.)
|
28
|
+
|
29
|
+
### Portability
|
30
|
+
X/Open BSD SYS V
|
31
|
+
PDC_set_blink - - -
|
32
|
+
PDC_set_title - - -
|
33
|
+
|
34
|
+
**man-end****************************************************************/
|
35
|
+
|
36
|
+
int PDC_curs_set(int visibility)
|
37
|
+
{
|
38
|
+
int ret_vis;
|
39
|
+
|
40
|
+
PDC_LOG(("PDC_curs_set() - called: visibility=%d\n", visibility));
|
41
|
+
|
42
|
+
ret_vis = SP->visibility;
|
43
|
+
|
44
|
+
SP->visibility = visibility;
|
45
|
+
|
46
|
+
PDC_gotoyx(SP->cursrow, SP->curscol);
|
47
|
+
|
48
|
+
return ret_vis;
|
49
|
+
}
|
50
|
+
|
51
|
+
void PDC_set_title(const char *title)
|
52
|
+
{
|
53
|
+
PDC_LOG(("PDC_set_title() - called:<%s>\n", title));
|
54
|
+
|
55
|
+
SDL_WM_SetCaption(title, title);
|
56
|
+
}
|
57
|
+
|
58
|
+
int PDC_set_blink(bool blinkon)
|
59
|
+
{
|
60
|
+
// if (pdc_color_started) /* We've got 256 colors in this version */
|
61
|
+
// COLORS = 16;
|
62
|
+
|
63
|
+
return blinkon ? ERR : OK;
|
64
|
+
}
|
@@ -0,0 +1,40 @@
|
|
1
|
+
/* Public Domain Curses */
|
2
|
+
|
3
|
+
#include "pdcsdl.h"
|
4
|
+
|
5
|
+
void PDC_beep(void)
|
6
|
+
{
|
7
|
+
PDC_LOG(("PDC_beep() - called\n"));
|
8
|
+
}
|
9
|
+
|
10
|
+
void PDC_napms(int ms)
|
11
|
+
{
|
12
|
+
PDC_LOG(("PDC_napms() - called: ms=%d\n", ms));
|
13
|
+
|
14
|
+
PDC_update_rects();
|
15
|
+
SDL_PumpEvents();
|
16
|
+
SDL_Delay(ms);
|
17
|
+
}
|
18
|
+
|
19
|
+
const char *PDC_sysname(void)
|
20
|
+
{
|
21
|
+
return "SDL";
|
22
|
+
}
|
23
|
+
|
24
|
+
PDCEX PDC_version_info PDC_version = { PDC_PORT_SDL1,
|
25
|
+
PDC_VER_MAJOR, PDC_VER_MINOR, PDC_VER_CHANGE,
|
26
|
+
sizeof( chtype),
|
27
|
+
/* note that thus far, 'wide' and 'UTF8' versions exist */
|
28
|
+
/* only for SDL2, X11, Win32, and Win32a; elsewhere, */
|
29
|
+
/* these will be FALSE */
|
30
|
+
#ifdef PDC_WIDE
|
31
|
+
TRUE,
|
32
|
+
#else
|
33
|
+
FALSE,
|
34
|
+
#endif
|
35
|
+
#ifdef PDC_FORCE_UTF8
|
36
|
+
TRUE,
|
37
|
+
#else
|
38
|
+
FALSE,
|
39
|
+
#endif
|
40
|
+
};
|
@@ -0,0 +1,79 @@
|
|
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
|
+
|
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
|
+
}
|
@@ -0,0 +1,76 @@
|
|
1
|
+
cmake_minimum_required(VERSION 3.11)
|
2
|
+
|
3
|
+
if(NOT CMAKE_BUILD_TYPE)
|
4
|
+
set(CMAKE_BUILD_TYPE "MinSizeRel" CACHE STRING "Choose the type of build, options are: Debug, Release, or MinSizeRel." FORCE)
|
5
|
+
message(STATUS "No build type specified, defaulting to MinSizeRel.")
|
6
|
+
endif()
|
7
|
+
|
8
|
+
project(sdl2 VERSION "${PROJECT_VERSION}" LANGUAGES C)
|
9
|
+
message(STATUS "${PROJECT_NAME} version: ${PROJECT_VERSION}")
|
10
|
+
|
11
|
+
message(STATUS "SDL2_LIBRARIES = ${SDL2_LIBRARIES}")
|
12
|
+
message(STATUS "SDL2_INCLUDE_DIR = ${SDL2_INCLUDE_DIR}")
|
13
|
+
message(STATUS "SDL2_LIBRARY_DIR = ${SDL2_LIBRARY_DIR}")
|
14
|
+
if(PDC_WIDE)
|
15
|
+
message(STATUS "SDL2_TTF_LIBRARY = ${SDL2_TTF_LIBRARY}")
|
16
|
+
message(STATUS "SDL2_TTF_INCLUDE_DIR = ${SDL2_TTF_INCLUDE_DIR}")
|
17
|
+
message(STATUS "SDL2_TTF_LIBRARY_DIR = ${SDL2_TTF_LIBRARY_DIR}")
|
18
|
+
endif()
|
19
|
+
|
20
|
+
include_directories(${SDL2_INCLUDE_DIR} ${SDL2_TTF_INCLUDE_DIR})
|
21
|
+
link_directories(${SDL2_LIBRARY_DIR} ${SDL2_TTF_LIBRARY_DIR})
|
22
|
+
|
23
|
+
include(project_common)
|
24
|
+
|
25
|
+
macro (sdl2_app dir targ)
|
26
|
+
|
27
|
+
set(bin_name "${PROJECT_NAME}_${targ}")
|
28
|
+
|
29
|
+
if(${targ} STREQUAL "tuidemo")
|
30
|
+
set(src_files ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/tuidemo.c ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/tui.c)
|
31
|
+
else()
|
32
|
+
set(src_files ${CMAKE_CURRENT_SOURCE_DIR}/${dir}/${targ}.c)
|
33
|
+
endif()
|
34
|
+
|
35
|
+
add_executable(${bin_name} ${src_files})
|
36
|
+
|
37
|
+
if(PDC_WIDE)
|
38
|
+
target_link_libraries(${bin_name} ${PDCURSE_PROJ} ${EXTRA_LIBS}
|
39
|
+
"${SDL2_LIBRARIES};${SDL2_TTF_LIBRARY};${FT2_LIBRARY};${ZLIB_LIBRARY};${SDL2_DEP_LIBRARIES}")
|
40
|
+
else()
|
41
|
+
target_link_libraries(${bin_name} ${PDCURSE_PROJ} ${EXTRA_LIBS}
|
42
|
+
"${SDL2_LIBRARIES};${SDL2_TTF_DEP_LIBRARIES};${SDL2_DEP_LIBRARIES}")
|
43
|
+
endif()
|
44
|
+
|
45
|
+
add_dependencies(${bin_name} ${PDCURSE_PROJ})
|
46
|
+
set_target_properties(${bin_name} PROPERTIES OUTPUT_NAME ${targ})
|
47
|
+
|
48
|
+
install(TARGETS ${bin_name} RUNTIME DESTINATION ${PDCURSES_DIST}/bin/${PROJECT_NAME} COMPONENT applications)
|
49
|
+
|
50
|
+
endmacro ()
|
51
|
+
|
52
|
+
sdl2_app(../demos version)
|
53
|
+
sdl2_app(../demos firework)
|
54
|
+
sdl2_app(../demos ozdemo)
|
55
|
+
sdl2_app(../demos newtest)
|
56
|
+
sdl2_app(../demos ptest)
|
57
|
+
sdl2_app(../demos rain)
|
58
|
+
sdl2_app(../demos testcurs)
|
59
|
+
sdl2_app(../demos tuidemo)
|
60
|
+
sdl2_app(../demos worm)
|
61
|
+
sdl2_app(../demos xmas)
|
62
|
+
sdl2_app(./ sdltest)
|
63
|
+
|
64
|
+
if(WIN32)
|
65
|
+
set_target_properties(${PROJECT_NAME}_newtest PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS")
|
66
|
+
endif(WIN32)
|
67
|
+
|
68
|
+
if(PDC_SDL2_DEPS_BUILD)
|
69
|
+
if(PDC_WIDE)
|
70
|
+
add_dependencies(${PDCURSE_PROJ} sdl2_ext sdl2_ttf_ext)
|
71
|
+
else()
|
72
|
+
add_dependencies(${PDCURSE_PROJ} sdl2_ext)
|
73
|
+
endif()
|
74
|
+
endif()
|
75
|
+
|
76
|
+
set(CPACK_COMPONENTS_ALL applications)
|