This commit is contained in:
David Zuber
2019-09-01 14:14:08 +01:00
parent 924ff5f5ef
commit 8e8907f48b
631 changed files with 202169 additions and 0 deletions

View File

@ -0,0 +1,200 @@
txt_button.o: txt_button.c /usr/include/stdlib.h /usr/include/features.h \
/usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \
/usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/endian.h /usr/include/bits/endian.h \
/usr/include/bits/byteswap.h /usr/include/xlocale.h \
/usr/include/sys/types.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/time.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/sigset.h /usr/include/bits/time.h \
/usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
/usr/include/alloca.h /usr/include/bits/stdlib.h /usr/include/string.h \
/usr/include/bits/string.h /usr/include/bits/string2.h \
/usr/include/bits/string3.h ../src/doomkeys.h txt_button.h txt_widget.h \
txt_gui.h txt_io.h txt_main.h txt_sdl.h /usr/include/SDL/SDL.h \
/usr/include/SDL/SDL_main.h /usr/include/SDL/SDL_stdinc.h \
/usr/include/SDL/SDL_config.h /usr/include/SDL/SDL_platform.h \
/usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \
/usr/include/wchar.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/bits/stdio2.h \
/usr/include/strings.h /usr/include/inttypes.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/ctype.h \
/usr/include/iconv.h /usr/include/SDL/begin_code.h \
/usr/include/SDL/close_code.h /usr/include/SDL/SDL_audio.h \
/usr/include/SDL/SDL_error.h /usr/include/SDL/SDL_endian.h \
/usr/include/SDL/SDL_mutex.h /usr/include/SDL/SDL_thread.h \
/usr/include/SDL/SDL_rwops.h /usr/include/SDL/SDL_cdrom.h \
/usr/include/SDL/SDL_cpuinfo.h /usr/include/SDL/SDL_events.h \
/usr/include/SDL/SDL_active.h /usr/include/SDL/SDL_keyboard.h \
/usr/include/SDL/SDL_keysym.h /usr/include/SDL/SDL_mouse.h \
/usr/include/SDL/SDL_video.h /usr/include/SDL/SDL_joystick.h \
/usr/include/SDL/SDL_quit.h /usr/include/SDL/SDL_loadso.h \
/usr/include/SDL/SDL_timer.h /usr/include/SDL/SDL_version.h txt_window.h \
txt_table.h txt_window_action.h
/usr/include/stdlib.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/wordsize.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/byteswap.h:
/usr/include/xlocale.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib.h:
/usr/include/string.h:
/usr/include/bits/string.h:
/usr/include/bits/string2.h:
/usr/include/bits/string3.h:
../src/doomkeys.h:
txt_button.h:
txt_widget.h:
txt_gui.h:
txt_io.h:
txt_main.h:
txt_sdl.h:
/usr/include/SDL/SDL.h:
/usr/include/SDL/SDL_main.h:
/usr/include/SDL/SDL_stdinc.h:
/usr/include/SDL/SDL_config.h:
/usr/include/SDL/SDL_platform.h:
/usr/include/stdio.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/bits/stdio.h:
/usr/include/bits/stdio2.h:
/usr/include/strings.h:
/usr/include/inttypes.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/ctype.h:
/usr/include/iconv.h:
/usr/include/SDL/begin_code.h:
/usr/include/SDL/close_code.h:
/usr/include/SDL/SDL_audio.h:
/usr/include/SDL/SDL_error.h:
/usr/include/SDL/SDL_endian.h:
/usr/include/SDL/SDL_mutex.h:
/usr/include/SDL/SDL_thread.h:
/usr/include/SDL/SDL_rwops.h:
/usr/include/SDL/SDL_cdrom.h:
/usr/include/SDL/SDL_cpuinfo.h:
/usr/include/SDL/SDL_events.h:
/usr/include/SDL/SDL_active.h:
/usr/include/SDL/SDL_keyboard.h:
/usr/include/SDL/SDL_keysym.h:
/usr/include/SDL/SDL_mouse.h:
/usr/include/SDL/SDL_video.h:
/usr/include/SDL/SDL_joystick.h:
/usr/include/SDL/SDL_quit.h:
/usr/include/SDL/SDL_loadso.h:
/usr/include/SDL/SDL_timer.h:
/usr/include/SDL/SDL_version.h:
txt_window.h:
txt_table.h:
txt_window_action.h:

View File

@ -0,0 +1,201 @@
txt_checkbox.o: txt_checkbox.c /usr/include/stdlib.h \
/usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
/usr/include/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/endian.h /usr/include/bits/endian.h \
/usr/include/bits/byteswap.h /usr/include/xlocale.h \
/usr/include/sys/types.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/time.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/sigset.h /usr/include/bits/time.h \
/usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
/usr/include/alloca.h /usr/include/bits/stdlib.h /usr/include/string.h \
/usr/include/bits/string.h /usr/include/bits/string2.h \
/usr/include/bits/string3.h ../src/doomkeys.h txt_checkbox.h \
txt_widget.h txt_gui.h txt_io.h txt_main.h txt_sdl.h \
/usr/include/SDL/SDL.h /usr/include/SDL/SDL_main.h \
/usr/include/SDL/SDL_stdinc.h /usr/include/SDL/SDL_config.h \
/usr/include/SDL/SDL_platform.h /usr/include/stdio.h \
/usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/bits/stdio2.h \
/usr/include/strings.h /usr/include/inttypes.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/ctype.h \
/usr/include/iconv.h /usr/include/SDL/begin_code.h \
/usr/include/SDL/close_code.h /usr/include/SDL/SDL_audio.h \
/usr/include/SDL/SDL_error.h /usr/include/SDL/SDL_endian.h \
/usr/include/SDL/SDL_mutex.h /usr/include/SDL/SDL_thread.h \
/usr/include/SDL/SDL_rwops.h /usr/include/SDL/SDL_cdrom.h \
/usr/include/SDL/SDL_cpuinfo.h /usr/include/SDL/SDL_events.h \
/usr/include/SDL/SDL_active.h /usr/include/SDL/SDL_keyboard.h \
/usr/include/SDL/SDL_keysym.h /usr/include/SDL/SDL_mouse.h \
/usr/include/SDL/SDL_video.h /usr/include/SDL/SDL_joystick.h \
/usr/include/SDL/SDL_quit.h /usr/include/SDL/SDL_loadso.h \
/usr/include/SDL/SDL_timer.h /usr/include/SDL/SDL_version.h txt_window.h \
txt_table.h txt_window_action.h
/usr/include/stdlib.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/wordsize.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/byteswap.h:
/usr/include/xlocale.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib.h:
/usr/include/string.h:
/usr/include/bits/string.h:
/usr/include/bits/string2.h:
/usr/include/bits/string3.h:
../src/doomkeys.h:
txt_checkbox.h:
txt_widget.h:
txt_gui.h:
txt_io.h:
txt_main.h:
txt_sdl.h:
/usr/include/SDL/SDL.h:
/usr/include/SDL/SDL_main.h:
/usr/include/SDL/SDL_stdinc.h:
/usr/include/SDL/SDL_config.h:
/usr/include/SDL/SDL_platform.h:
/usr/include/stdio.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/bits/stdio.h:
/usr/include/bits/stdio2.h:
/usr/include/strings.h:
/usr/include/inttypes.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/ctype.h:
/usr/include/iconv.h:
/usr/include/SDL/begin_code.h:
/usr/include/SDL/close_code.h:
/usr/include/SDL/SDL_audio.h:
/usr/include/SDL/SDL_error.h:
/usr/include/SDL/SDL_endian.h:
/usr/include/SDL/SDL_mutex.h:
/usr/include/SDL/SDL_thread.h:
/usr/include/SDL/SDL_rwops.h:
/usr/include/SDL/SDL_cdrom.h:
/usr/include/SDL/SDL_cpuinfo.h:
/usr/include/SDL/SDL_events.h:
/usr/include/SDL/SDL_active.h:
/usr/include/SDL/SDL_keyboard.h:
/usr/include/SDL/SDL_keysym.h:
/usr/include/SDL/SDL_mouse.h:
/usr/include/SDL/SDL_video.h:
/usr/include/SDL/SDL_joystick.h:
/usr/include/SDL/SDL_quit.h:
/usr/include/SDL/SDL_loadso.h:
/usr/include/SDL/SDL_timer.h:
/usr/include/SDL/SDL_version.h:
txt_window.h:
txt_table.h:
txt_window_action.h:

View File

@ -0,0 +1,202 @@
txt_desktop.o: txt_desktop.c /usr/include/stdio.h /usr/include/features.h \
/usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \
/usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h \
/usr/include/bits/types.h /usr/include/bits/typesizes.h \
/usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/bits/stdio2.h \
/usr/include/stdlib.h /usr/include/bits/waitflags.h \
/usr/include/bits/waitstatus.h /usr/include/endian.h \
/usr/include/bits/endian.h /usr/include/bits/byteswap.h \
/usr/include/xlocale.h /usr/include/sys/types.h /usr/include/time.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/sigset.h /usr/include/bits/time.h \
/usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
/usr/include/alloca.h /usr/include/bits/stdlib.h /usr/include/string.h \
/usr/include/bits/string.h /usr/include/bits/string2.h \
/usr/include/bits/string3.h ../src/doomkeys.h txt_desktop.h txt_window.h \
txt_widget.h txt_table.h txt_window_action.h txt_gui.h txt_io.h \
txt_main.h txt_sdl.h /usr/include/SDL/SDL.h /usr/include/SDL/SDL_main.h \
/usr/include/SDL/SDL_stdinc.h /usr/include/SDL/SDL_config.h \
/usr/include/SDL/SDL_platform.h /usr/include/strings.h \
/usr/include/inttypes.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/ctype.h \
/usr/include/iconv.h /usr/include/SDL/begin_code.h \
/usr/include/SDL/close_code.h /usr/include/SDL/SDL_audio.h \
/usr/include/SDL/SDL_error.h /usr/include/SDL/SDL_endian.h \
/usr/include/SDL/SDL_mutex.h /usr/include/SDL/SDL_thread.h \
/usr/include/SDL/SDL_rwops.h /usr/include/SDL/SDL_cdrom.h \
/usr/include/SDL/SDL_cpuinfo.h /usr/include/SDL/SDL_events.h \
/usr/include/SDL/SDL_active.h /usr/include/SDL/SDL_keyboard.h \
/usr/include/SDL/SDL_keysym.h /usr/include/SDL/SDL_mouse.h \
/usr/include/SDL/SDL_video.h /usr/include/SDL/SDL_joystick.h \
/usr/include/SDL/SDL_quit.h /usr/include/SDL/SDL_loadso.h \
/usr/include/SDL/SDL_timer.h /usr/include/SDL/SDL_version.h \
txt_separator.h
/usr/include/stdio.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/wordsize.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/bits/stdio.h:
/usr/include/bits/stdio2.h:
/usr/include/stdlib.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/byteswap.h:
/usr/include/xlocale.h:
/usr/include/sys/types.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib.h:
/usr/include/string.h:
/usr/include/bits/string.h:
/usr/include/bits/string2.h:
/usr/include/bits/string3.h:
../src/doomkeys.h:
txt_desktop.h:
txt_window.h:
txt_widget.h:
txt_table.h:
txt_window_action.h:
txt_gui.h:
txt_io.h:
txt_main.h:
txt_sdl.h:
/usr/include/SDL/SDL.h:
/usr/include/SDL/SDL_main.h:
/usr/include/SDL/SDL_stdinc.h:
/usr/include/SDL/SDL_config.h:
/usr/include/SDL/SDL_platform.h:
/usr/include/strings.h:
/usr/include/inttypes.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/ctype.h:
/usr/include/iconv.h:
/usr/include/SDL/begin_code.h:
/usr/include/SDL/close_code.h:
/usr/include/SDL/SDL_audio.h:
/usr/include/SDL/SDL_error.h:
/usr/include/SDL/SDL_endian.h:
/usr/include/SDL/SDL_mutex.h:
/usr/include/SDL/SDL_thread.h:
/usr/include/SDL/SDL_rwops.h:
/usr/include/SDL/SDL_cdrom.h:
/usr/include/SDL/SDL_cpuinfo.h:
/usr/include/SDL/SDL_events.h:
/usr/include/SDL/SDL_active.h:
/usr/include/SDL/SDL_keyboard.h:
/usr/include/SDL/SDL_keysym.h:
/usr/include/SDL/SDL_mouse.h:
/usr/include/SDL/SDL_video.h:
/usr/include/SDL/SDL_joystick.h:
/usr/include/SDL/SDL_quit.h:
/usr/include/SDL/SDL_loadso.h:
/usr/include/SDL/SDL_timer.h:
/usr/include/SDL/SDL_version.h:
txt_separator.h:

View File

@ -0,0 +1,203 @@
txt_dropdown.o: txt_dropdown.c /usr/include/stdlib.h \
/usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
/usr/include/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/endian.h /usr/include/bits/endian.h \
/usr/include/bits/byteswap.h /usr/include/xlocale.h \
/usr/include/sys/types.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/time.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/sigset.h /usr/include/bits/time.h \
/usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
/usr/include/alloca.h /usr/include/bits/stdlib.h /usr/include/string.h \
/usr/include/bits/string.h /usr/include/bits/string2.h \
/usr/include/bits/string3.h ../src/doomkeys.h txt_button.h txt_widget.h \
txt_dropdown.h txt_gui.h txt_io.h txt_main.h txt_sdl.h \
/usr/include/SDL/SDL.h /usr/include/SDL/SDL_main.h \
/usr/include/SDL/SDL_stdinc.h /usr/include/SDL/SDL_config.h \
/usr/include/SDL/SDL_platform.h /usr/include/stdio.h \
/usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/bits/stdio2.h \
/usr/include/strings.h /usr/include/inttypes.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/ctype.h \
/usr/include/iconv.h /usr/include/SDL/begin_code.h \
/usr/include/SDL/close_code.h /usr/include/SDL/SDL_audio.h \
/usr/include/SDL/SDL_error.h /usr/include/SDL/SDL_endian.h \
/usr/include/SDL/SDL_mutex.h /usr/include/SDL/SDL_thread.h \
/usr/include/SDL/SDL_rwops.h /usr/include/SDL/SDL_cdrom.h \
/usr/include/SDL/SDL_cpuinfo.h /usr/include/SDL/SDL_events.h \
/usr/include/SDL/SDL_active.h /usr/include/SDL/SDL_keyboard.h \
/usr/include/SDL/SDL_keysym.h /usr/include/SDL/SDL_mouse.h \
/usr/include/SDL/SDL_video.h /usr/include/SDL/SDL_joystick.h \
/usr/include/SDL/SDL_quit.h /usr/include/SDL/SDL_loadso.h \
/usr/include/SDL/SDL_timer.h /usr/include/SDL/SDL_version.h txt_window.h \
txt_table.h txt_window_action.h
/usr/include/stdlib.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/wordsize.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/byteswap.h:
/usr/include/xlocale.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib.h:
/usr/include/string.h:
/usr/include/bits/string.h:
/usr/include/bits/string2.h:
/usr/include/bits/string3.h:
../src/doomkeys.h:
txt_button.h:
txt_widget.h:
txt_dropdown.h:
txt_gui.h:
txt_io.h:
txt_main.h:
txt_sdl.h:
/usr/include/SDL/SDL.h:
/usr/include/SDL/SDL_main.h:
/usr/include/SDL/SDL_stdinc.h:
/usr/include/SDL/SDL_config.h:
/usr/include/SDL/SDL_platform.h:
/usr/include/stdio.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/bits/stdio.h:
/usr/include/bits/stdio2.h:
/usr/include/strings.h:
/usr/include/inttypes.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/ctype.h:
/usr/include/iconv.h:
/usr/include/SDL/begin_code.h:
/usr/include/SDL/close_code.h:
/usr/include/SDL/SDL_audio.h:
/usr/include/SDL/SDL_error.h:
/usr/include/SDL/SDL_endian.h:
/usr/include/SDL/SDL_mutex.h:
/usr/include/SDL/SDL_thread.h:
/usr/include/SDL/SDL_rwops.h:
/usr/include/SDL/SDL_cdrom.h:
/usr/include/SDL/SDL_cpuinfo.h:
/usr/include/SDL/SDL_events.h:
/usr/include/SDL/SDL_active.h:
/usr/include/SDL/SDL_keyboard.h:
/usr/include/SDL/SDL_keysym.h:
/usr/include/SDL/SDL_mouse.h:
/usr/include/SDL/SDL_video.h:
/usr/include/SDL/SDL_joystick.h:
/usr/include/SDL/SDL_quit.h:
/usr/include/SDL/SDL_loadso.h:
/usr/include/SDL/SDL_timer.h:
/usr/include/SDL/SDL_version.h:
txt_window.h:
txt_table.h:
txt_window_action.h:

View File

@ -0,0 +1,186 @@
txt_gui.o: txt_gui.c /usr/include/stdlib.h /usr/include/features.h \
/usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \
/usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/endian.h /usr/include/bits/endian.h \
/usr/include/bits/byteswap.h /usr/include/xlocale.h \
/usr/include/sys/types.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/time.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/sigset.h /usr/include/bits/time.h \
/usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
/usr/include/alloca.h /usr/include/bits/stdlib.h /usr/include/string.h \
/usr/include/bits/string.h /usr/include/bits/string2.h \
/usr/include/bits/string3.h txt_gui.h txt_io.h txt_main.h txt_sdl.h \
/usr/include/SDL/SDL.h /usr/include/SDL/SDL_main.h \
/usr/include/SDL/SDL_stdinc.h /usr/include/SDL/SDL_config.h \
/usr/include/SDL/SDL_platform.h /usr/include/stdio.h \
/usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/bits/stdio2.h \
/usr/include/strings.h /usr/include/inttypes.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/ctype.h \
/usr/include/iconv.h /usr/include/SDL/begin_code.h \
/usr/include/SDL/close_code.h /usr/include/SDL/SDL_audio.h \
/usr/include/SDL/SDL_error.h /usr/include/SDL/SDL_endian.h \
/usr/include/SDL/SDL_mutex.h /usr/include/SDL/SDL_thread.h \
/usr/include/SDL/SDL_rwops.h /usr/include/SDL/SDL_cdrom.h \
/usr/include/SDL/SDL_cpuinfo.h /usr/include/SDL/SDL_events.h \
/usr/include/SDL/SDL_active.h /usr/include/SDL/SDL_keyboard.h \
/usr/include/SDL/SDL_keysym.h /usr/include/SDL/SDL_mouse.h \
/usr/include/SDL/SDL_video.h /usr/include/SDL/SDL_joystick.h \
/usr/include/SDL/SDL_quit.h /usr/include/SDL/SDL_loadso.h \
/usr/include/SDL/SDL_timer.h /usr/include/SDL/SDL_version.h
/usr/include/stdlib.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/wordsize.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/byteswap.h:
/usr/include/xlocale.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib.h:
/usr/include/string.h:
/usr/include/bits/string.h:
/usr/include/bits/string2.h:
/usr/include/bits/string3.h:
txt_gui.h:
txt_io.h:
txt_main.h:
txt_sdl.h:
/usr/include/SDL/SDL.h:
/usr/include/SDL/SDL_main.h:
/usr/include/SDL/SDL_stdinc.h:
/usr/include/SDL/SDL_config.h:
/usr/include/SDL/SDL_platform.h:
/usr/include/stdio.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/bits/stdio.h:
/usr/include/bits/stdio2.h:
/usr/include/strings.h:
/usr/include/inttypes.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/ctype.h:
/usr/include/iconv.h:
/usr/include/SDL/begin_code.h:
/usr/include/SDL/close_code.h:
/usr/include/SDL/SDL_audio.h:
/usr/include/SDL/SDL_error.h:
/usr/include/SDL/SDL_endian.h:
/usr/include/SDL/SDL_mutex.h:
/usr/include/SDL/SDL_thread.h:
/usr/include/SDL/SDL_rwops.h:
/usr/include/SDL/SDL_cdrom.h:
/usr/include/SDL/SDL_cpuinfo.h:
/usr/include/SDL/SDL_events.h:
/usr/include/SDL/SDL_active.h:
/usr/include/SDL/SDL_keyboard.h:
/usr/include/SDL/SDL_keysym.h:
/usr/include/SDL/SDL_mouse.h:
/usr/include/SDL/SDL_video.h:
/usr/include/SDL/SDL_joystick.h:
/usr/include/SDL/SDL_quit.h:
/usr/include/SDL/SDL_loadso.h:
/usr/include/SDL/SDL_timer.h:
/usr/include/SDL/SDL_version.h:

View File

@ -0,0 +1,201 @@
txt_inputbox.o: txt_inputbox.c /usr/include/ctype.h \
/usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
/usr/include/gnu/stubs-64.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/endian.h \
/usr/include/bits/endian.h /usr/include/bits/byteswap.h \
/usr/include/xlocale.h /usr/include/stdio.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h \
/usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/bits/stdio2.h \
/usr/include/stdlib.h /usr/include/bits/waitflags.h \
/usr/include/bits/waitstatus.h /usr/include/sys/types.h \
/usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/sigset.h /usr/include/bits/time.h \
/usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
/usr/include/alloca.h /usr/include/bits/stdlib.h /usr/include/string.h \
/usr/include/bits/string.h /usr/include/bits/string2.h \
/usr/include/bits/string3.h ../src/doomkeys.h txt_inputbox.h \
txt_widget.h txt_gui.h txt_io.h txt_main.h txt_sdl.h \
/usr/include/SDL/SDL.h /usr/include/SDL/SDL_main.h \
/usr/include/SDL/SDL_stdinc.h /usr/include/SDL/SDL_config.h \
/usr/include/SDL/SDL_platform.h /usr/include/strings.h \
/usr/include/inttypes.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/iconv.h \
/usr/include/SDL/begin_code.h /usr/include/SDL/close_code.h \
/usr/include/SDL/SDL_audio.h /usr/include/SDL/SDL_error.h \
/usr/include/SDL/SDL_endian.h /usr/include/SDL/SDL_mutex.h \
/usr/include/SDL/SDL_thread.h /usr/include/SDL/SDL_rwops.h \
/usr/include/SDL/SDL_cdrom.h /usr/include/SDL/SDL_cpuinfo.h \
/usr/include/SDL/SDL_events.h /usr/include/SDL/SDL_active.h \
/usr/include/SDL/SDL_keyboard.h /usr/include/SDL/SDL_keysym.h \
/usr/include/SDL/SDL_mouse.h /usr/include/SDL/SDL_video.h \
/usr/include/SDL/SDL_joystick.h /usr/include/SDL/SDL_quit.h \
/usr/include/SDL/SDL_loadso.h /usr/include/SDL/SDL_timer.h \
/usr/include/SDL/SDL_version.h txt_window.h txt_table.h \
txt_window_action.h
/usr/include/ctype.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/wordsize.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/byteswap.h:
/usr/include/xlocale.h:
/usr/include/stdio.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/bits/stdio.h:
/usr/include/bits/stdio2.h:
/usr/include/stdlib.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/sys/types.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib.h:
/usr/include/string.h:
/usr/include/bits/string.h:
/usr/include/bits/string2.h:
/usr/include/bits/string3.h:
../src/doomkeys.h:
txt_inputbox.h:
txt_widget.h:
txt_gui.h:
txt_io.h:
txt_main.h:
txt_sdl.h:
/usr/include/SDL/SDL.h:
/usr/include/SDL/SDL_main.h:
/usr/include/SDL/SDL_stdinc.h:
/usr/include/SDL/SDL_config.h:
/usr/include/SDL/SDL_platform.h:
/usr/include/strings.h:
/usr/include/inttypes.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/iconv.h:
/usr/include/SDL/begin_code.h:
/usr/include/SDL/close_code.h:
/usr/include/SDL/SDL_audio.h:
/usr/include/SDL/SDL_error.h:
/usr/include/SDL/SDL_endian.h:
/usr/include/SDL/SDL_mutex.h:
/usr/include/SDL/SDL_thread.h:
/usr/include/SDL/SDL_rwops.h:
/usr/include/SDL/SDL_cdrom.h:
/usr/include/SDL/SDL_cpuinfo.h:
/usr/include/SDL/SDL_events.h:
/usr/include/SDL/SDL_active.h:
/usr/include/SDL/SDL_keyboard.h:
/usr/include/SDL/SDL_keysym.h:
/usr/include/SDL/SDL_mouse.h:
/usr/include/SDL/SDL_video.h:
/usr/include/SDL/SDL_joystick.h:
/usr/include/SDL/SDL_quit.h:
/usr/include/SDL/SDL_loadso.h:
/usr/include/SDL/SDL_timer.h:
/usr/include/SDL/SDL_version.h:
txt_window.h:
txt_table.h:
txt_window_action.h:

View File

@ -0,0 +1,184 @@
txt_io.o: txt_io.c /usr/include/stdlib.h /usr/include/features.h \
/usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \
/usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/endian.h /usr/include/bits/endian.h \
/usr/include/bits/byteswap.h /usr/include/xlocale.h \
/usr/include/sys/types.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/time.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/sigset.h /usr/include/bits/time.h \
/usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
/usr/include/alloca.h /usr/include/bits/stdlib.h /usr/include/string.h \
/usr/include/bits/string.h /usr/include/bits/string2.h \
/usr/include/bits/string3.h txt_io.h txt_main.h txt_sdl.h \
/usr/include/SDL/SDL.h /usr/include/SDL/SDL_main.h \
/usr/include/SDL/SDL_stdinc.h /usr/include/SDL/SDL_config.h \
/usr/include/SDL/SDL_platform.h /usr/include/stdio.h \
/usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/bits/stdio2.h \
/usr/include/strings.h /usr/include/inttypes.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/ctype.h \
/usr/include/iconv.h /usr/include/SDL/begin_code.h \
/usr/include/SDL/close_code.h /usr/include/SDL/SDL_audio.h \
/usr/include/SDL/SDL_error.h /usr/include/SDL/SDL_endian.h \
/usr/include/SDL/SDL_mutex.h /usr/include/SDL/SDL_thread.h \
/usr/include/SDL/SDL_rwops.h /usr/include/SDL/SDL_cdrom.h \
/usr/include/SDL/SDL_cpuinfo.h /usr/include/SDL/SDL_events.h \
/usr/include/SDL/SDL_active.h /usr/include/SDL/SDL_keyboard.h \
/usr/include/SDL/SDL_keysym.h /usr/include/SDL/SDL_mouse.h \
/usr/include/SDL/SDL_video.h /usr/include/SDL/SDL_joystick.h \
/usr/include/SDL/SDL_quit.h /usr/include/SDL/SDL_loadso.h \
/usr/include/SDL/SDL_timer.h /usr/include/SDL/SDL_version.h
/usr/include/stdlib.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/wordsize.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/byteswap.h:
/usr/include/xlocale.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib.h:
/usr/include/string.h:
/usr/include/bits/string.h:
/usr/include/bits/string2.h:
/usr/include/bits/string3.h:
txt_io.h:
txt_main.h:
txt_sdl.h:
/usr/include/SDL/SDL.h:
/usr/include/SDL/SDL_main.h:
/usr/include/SDL/SDL_stdinc.h:
/usr/include/SDL/SDL_config.h:
/usr/include/SDL/SDL_platform.h:
/usr/include/stdio.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/bits/stdio.h:
/usr/include/bits/stdio2.h:
/usr/include/strings.h:
/usr/include/inttypes.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/ctype.h:
/usr/include/iconv.h:
/usr/include/SDL/begin_code.h:
/usr/include/SDL/close_code.h:
/usr/include/SDL/SDL_audio.h:
/usr/include/SDL/SDL_error.h:
/usr/include/SDL/SDL_endian.h:
/usr/include/SDL/SDL_mutex.h:
/usr/include/SDL/SDL_thread.h:
/usr/include/SDL/SDL_rwops.h:
/usr/include/SDL/SDL_cdrom.h:
/usr/include/SDL/SDL_cpuinfo.h:
/usr/include/SDL/SDL_events.h:
/usr/include/SDL/SDL_active.h:
/usr/include/SDL/SDL_keyboard.h:
/usr/include/SDL/SDL_keysym.h:
/usr/include/SDL/SDL_mouse.h:
/usr/include/SDL/SDL_video.h:
/usr/include/SDL/SDL_joystick.h:
/usr/include/SDL/SDL_quit.h:
/usr/include/SDL/SDL_loadso.h:
/usr/include/SDL/SDL_timer.h:
/usr/include/SDL/SDL_version.h:

View File

@ -0,0 +1,197 @@
txt_label.o: txt_label.c /usr/include/stdlib.h /usr/include/features.h \
/usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \
/usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/endian.h /usr/include/bits/endian.h \
/usr/include/bits/byteswap.h /usr/include/xlocale.h \
/usr/include/sys/types.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/time.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/sigset.h /usr/include/bits/time.h \
/usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
/usr/include/alloca.h /usr/include/bits/stdlib.h /usr/include/string.h \
/usr/include/bits/string.h /usr/include/bits/string2.h \
/usr/include/bits/string3.h txt_label.h txt_main.h txt_sdl.h \
/usr/include/SDL/SDL.h /usr/include/SDL/SDL_main.h \
/usr/include/SDL/SDL_stdinc.h /usr/include/SDL/SDL_config.h \
/usr/include/SDL/SDL_platform.h /usr/include/stdio.h \
/usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/bits/stdio2.h \
/usr/include/strings.h /usr/include/inttypes.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/ctype.h \
/usr/include/iconv.h /usr/include/SDL/begin_code.h \
/usr/include/SDL/close_code.h /usr/include/SDL/SDL_audio.h \
/usr/include/SDL/SDL_error.h /usr/include/SDL/SDL_endian.h \
/usr/include/SDL/SDL_mutex.h /usr/include/SDL/SDL_thread.h \
/usr/include/SDL/SDL_rwops.h /usr/include/SDL/SDL_cdrom.h \
/usr/include/SDL/SDL_cpuinfo.h /usr/include/SDL/SDL_events.h \
/usr/include/SDL/SDL_active.h /usr/include/SDL/SDL_keyboard.h \
/usr/include/SDL/SDL_keysym.h /usr/include/SDL/SDL_mouse.h \
/usr/include/SDL/SDL_video.h /usr/include/SDL/SDL_joystick.h \
/usr/include/SDL/SDL_quit.h /usr/include/SDL/SDL_loadso.h \
/usr/include/SDL/SDL_timer.h /usr/include/SDL/SDL_version.h txt_widget.h \
txt_gui.h txt_io.h txt_window.h txt_table.h txt_window_action.h
/usr/include/stdlib.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/wordsize.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/byteswap.h:
/usr/include/xlocale.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib.h:
/usr/include/string.h:
/usr/include/bits/string.h:
/usr/include/bits/string2.h:
/usr/include/bits/string3.h:
txt_label.h:
txt_main.h:
txt_sdl.h:
/usr/include/SDL/SDL.h:
/usr/include/SDL/SDL_main.h:
/usr/include/SDL/SDL_stdinc.h:
/usr/include/SDL/SDL_config.h:
/usr/include/SDL/SDL_platform.h:
/usr/include/stdio.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/bits/stdio.h:
/usr/include/bits/stdio2.h:
/usr/include/strings.h:
/usr/include/inttypes.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/ctype.h:
/usr/include/iconv.h:
/usr/include/SDL/begin_code.h:
/usr/include/SDL/close_code.h:
/usr/include/SDL/SDL_audio.h:
/usr/include/SDL/SDL_error.h:
/usr/include/SDL/SDL_endian.h:
/usr/include/SDL/SDL_mutex.h:
/usr/include/SDL/SDL_thread.h:
/usr/include/SDL/SDL_rwops.h:
/usr/include/SDL/SDL_cdrom.h:
/usr/include/SDL/SDL_cpuinfo.h:
/usr/include/SDL/SDL_events.h:
/usr/include/SDL/SDL_active.h:
/usr/include/SDL/SDL_keyboard.h:
/usr/include/SDL/SDL_keysym.h:
/usr/include/SDL/SDL_mouse.h:
/usr/include/SDL/SDL_video.h:
/usr/include/SDL/SDL_joystick.h:
/usr/include/SDL/SDL_quit.h:
/usr/include/SDL/SDL_loadso.h:
/usr/include/SDL/SDL_timer.h:
/usr/include/SDL/SDL_version.h:
txt_widget.h:
txt_gui.h:
txt_io.h:
txt_window.h:
txt_table.h:
txt_window_action.h:

View File

@ -0,0 +1,201 @@
txt_radiobutton.o: txt_radiobutton.c /usr/include/stdlib.h \
/usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
/usr/include/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/endian.h /usr/include/bits/endian.h \
/usr/include/bits/byteswap.h /usr/include/xlocale.h \
/usr/include/sys/types.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/time.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/sigset.h /usr/include/bits/time.h \
/usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
/usr/include/alloca.h /usr/include/bits/stdlib.h /usr/include/string.h \
/usr/include/bits/string.h /usr/include/bits/string2.h \
/usr/include/bits/string3.h ../src/doomkeys.h txt_radiobutton.h \
txt_widget.h txt_gui.h txt_io.h txt_main.h txt_sdl.h \
/usr/include/SDL/SDL.h /usr/include/SDL/SDL_main.h \
/usr/include/SDL/SDL_stdinc.h /usr/include/SDL/SDL_config.h \
/usr/include/SDL/SDL_platform.h /usr/include/stdio.h \
/usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/bits/stdio2.h \
/usr/include/strings.h /usr/include/inttypes.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/ctype.h \
/usr/include/iconv.h /usr/include/SDL/begin_code.h \
/usr/include/SDL/close_code.h /usr/include/SDL/SDL_audio.h \
/usr/include/SDL/SDL_error.h /usr/include/SDL/SDL_endian.h \
/usr/include/SDL/SDL_mutex.h /usr/include/SDL/SDL_thread.h \
/usr/include/SDL/SDL_rwops.h /usr/include/SDL/SDL_cdrom.h \
/usr/include/SDL/SDL_cpuinfo.h /usr/include/SDL/SDL_events.h \
/usr/include/SDL/SDL_active.h /usr/include/SDL/SDL_keyboard.h \
/usr/include/SDL/SDL_keysym.h /usr/include/SDL/SDL_mouse.h \
/usr/include/SDL/SDL_video.h /usr/include/SDL/SDL_joystick.h \
/usr/include/SDL/SDL_quit.h /usr/include/SDL/SDL_loadso.h \
/usr/include/SDL/SDL_timer.h /usr/include/SDL/SDL_version.h txt_window.h \
txt_table.h txt_window_action.h
/usr/include/stdlib.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/wordsize.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/byteswap.h:
/usr/include/xlocale.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib.h:
/usr/include/string.h:
/usr/include/bits/string.h:
/usr/include/bits/string2.h:
/usr/include/bits/string3.h:
../src/doomkeys.h:
txt_radiobutton.h:
txt_widget.h:
txt_gui.h:
txt_io.h:
txt_main.h:
txt_sdl.h:
/usr/include/SDL/SDL.h:
/usr/include/SDL/SDL_main.h:
/usr/include/SDL/SDL_stdinc.h:
/usr/include/SDL/SDL_config.h:
/usr/include/SDL/SDL_platform.h:
/usr/include/stdio.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/bits/stdio.h:
/usr/include/bits/stdio2.h:
/usr/include/strings.h:
/usr/include/inttypes.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/ctype.h:
/usr/include/iconv.h:
/usr/include/SDL/begin_code.h:
/usr/include/SDL/close_code.h:
/usr/include/SDL/SDL_audio.h:
/usr/include/SDL/SDL_error.h:
/usr/include/SDL/SDL_endian.h:
/usr/include/SDL/SDL_mutex.h:
/usr/include/SDL/SDL_thread.h:
/usr/include/SDL/SDL_rwops.h:
/usr/include/SDL/SDL_cdrom.h:
/usr/include/SDL/SDL_cpuinfo.h:
/usr/include/SDL/SDL_events.h:
/usr/include/SDL/SDL_active.h:
/usr/include/SDL/SDL_keyboard.h:
/usr/include/SDL/SDL_keysym.h:
/usr/include/SDL/SDL_mouse.h:
/usr/include/SDL/SDL_video.h:
/usr/include/SDL/SDL_joystick.h:
/usr/include/SDL/SDL_quit.h:
/usr/include/SDL/SDL_loadso.h:
/usr/include/SDL/SDL_timer.h:
/usr/include/SDL/SDL_version.h:
txt_window.h:
txt_table.h:
txt_window_action.h:

View File

@ -0,0 +1,218 @@
txt_scrollpane.o: txt_scrollpane.c /usr/include/ctype.h \
/usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
/usr/include/gnu/stubs-64.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/endian.h \
/usr/include/bits/endian.h /usr/include/bits/byteswap.h \
/usr/include/xlocale.h /usr/include/stdio.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h \
/usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/bits/stdio2.h \
/usr/include/stdlib.h /usr/include/bits/waitflags.h \
/usr/include/bits/waitstatus.h /usr/include/sys/types.h \
/usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/sigset.h /usr/include/bits/time.h \
/usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
/usr/include/alloca.h /usr/include/bits/stdlib.h /usr/include/string.h \
/usr/include/bits/string.h /usr/include/bits/string2.h \
/usr/include/bits/string3.h /usr/include/math.h \
/usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \
/usr/include/bits/huge_vall.h /usr/include/bits/inf.h \
/usr/include/bits/nan.h /usr/include/bits/mathdef.h \
/usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \
txt_scrollpane.h txt_widget.h txt_gui.h txt_io.h txt_main.h txt_sdl.h \
/usr/include/SDL/SDL.h /usr/include/SDL/SDL_main.h \
/usr/include/SDL/SDL_stdinc.h /usr/include/SDL/SDL_config.h \
/usr/include/SDL/SDL_platform.h /usr/include/strings.h \
/usr/include/inttypes.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/iconv.h \
/usr/include/SDL/begin_code.h /usr/include/SDL/close_code.h \
/usr/include/SDL/SDL_audio.h /usr/include/SDL/SDL_error.h \
/usr/include/SDL/SDL_endian.h /usr/include/SDL/SDL_mutex.h \
/usr/include/SDL/SDL_thread.h /usr/include/SDL/SDL_rwops.h \
/usr/include/SDL/SDL_cdrom.h /usr/include/SDL/SDL_cpuinfo.h \
/usr/include/SDL/SDL_events.h /usr/include/SDL/SDL_active.h \
/usr/include/SDL/SDL_keyboard.h /usr/include/SDL/SDL_keysym.h \
/usr/include/SDL/SDL_mouse.h /usr/include/SDL/SDL_video.h \
/usr/include/SDL/SDL_joystick.h /usr/include/SDL/SDL_quit.h \
/usr/include/SDL/SDL_loadso.h /usr/include/SDL/SDL_timer.h \
/usr/include/SDL/SDL_version.h txt_table.h ../src/doomkeys.h
/usr/include/ctype.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/wordsize.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/byteswap.h:
/usr/include/xlocale.h:
/usr/include/stdio.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/bits/stdio.h:
/usr/include/bits/stdio2.h:
/usr/include/stdlib.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/sys/types.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib.h:
/usr/include/string.h:
/usr/include/bits/string.h:
/usr/include/bits/string2.h:
/usr/include/bits/string3.h:
/usr/include/math.h:
/usr/include/bits/huge_val.h:
/usr/include/bits/huge_valf.h:
/usr/include/bits/huge_vall.h:
/usr/include/bits/inf.h:
/usr/include/bits/nan.h:
/usr/include/bits/mathdef.h:
/usr/include/bits/mathcalls.h:
/usr/include/bits/mathinline.h:
txt_scrollpane.h:
txt_widget.h:
txt_gui.h:
txt_io.h:
txt_main.h:
txt_sdl.h:
/usr/include/SDL/SDL.h:
/usr/include/SDL/SDL_main.h:
/usr/include/SDL/SDL_stdinc.h:
/usr/include/SDL/SDL_config.h:
/usr/include/SDL/SDL_platform.h:
/usr/include/strings.h:
/usr/include/inttypes.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/iconv.h:
/usr/include/SDL/begin_code.h:
/usr/include/SDL/close_code.h:
/usr/include/SDL/SDL_audio.h:
/usr/include/SDL/SDL_error.h:
/usr/include/SDL/SDL_endian.h:
/usr/include/SDL/SDL_mutex.h:
/usr/include/SDL/SDL_thread.h:
/usr/include/SDL/SDL_rwops.h:
/usr/include/SDL/SDL_cdrom.h:
/usr/include/SDL/SDL_cpuinfo.h:
/usr/include/SDL/SDL_events.h:
/usr/include/SDL/SDL_active.h:
/usr/include/SDL/SDL_keyboard.h:
/usr/include/SDL/SDL_keysym.h:
/usr/include/SDL/SDL_mouse.h:
/usr/include/SDL/SDL_video.h:
/usr/include/SDL/SDL_joystick.h:
/usr/include/SDL/SDL_quit.h:
/usr/include/SDL/SDL_loadso.h:
/usr/include/SDL/SDL_timer.h:
/usr/include/SDL/SDL_version.h:
txt_table.h:
../src/doomkeys.h:

View File

@ -0,0 +1,189 @@
txt_sdl.o: txt_sdl.c /usr/include/SDL/SDL.h /usr/include/SDL/SDL_main.h \
/usr/include/SDL/SDL_stdinc.h /usr/include/SDL/SDL_config.h \
/usr/include/SDL/SDL_platform.h /usr/include/sys/types.h \
/usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
/usr/include/gnu/stubs-64.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/time.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h \
/usr/include/endian.h /usr/include/bits/endian.h \
/usr/include/bits/byteswap.h /usr/include/sys/select.h \
/usr/include/bits/select.h /usr/include/bits/sigset.h \
/usr/include/bits/time.h /usr/include/sys/sysmacros.h \
/usr/include/bits/pthreadtypes.h /usr/include/stdio.h \
/usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/bits/stdio2.h \
/usr/include/stdlib.h /usr/include/bits/waitflags.h \
/usr/include/bits/waitstatus.h /usr/include/xlocale.h \
/usr/include/alloca.h /usr/include/bits/stdlib.h /usr/include/string.h \
/usr/include/bits/string.h /usr/include/bits/string2.h \
/usr/include/bits/string3.h /usr/include/strings.h \
/usr/include/inttypes.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/ctype.h \
/usr/include/iconv.h /usr/include/SDL/begin_code.h \
/usr/include/SDL/close_code.h /usr/include/SDL/SDL_audio.h \
/usr/include/SDL/SDL_error.h /usr/include/SDL/SDL_endian.h \
/usr/include/SDL/SDL_mutex.h /usr/include/SDL/SDL_thread.h \
/usr/include/SDL/SDL_rwops.h /usr/include/SDL/SDL_cdrom.h \
/usr/include/SDL/SDL_cpuinfo.h /usr/include/SDL/SDL_events.h \
/usr/include/SDL/SDL_active.h /usr/include/SDL/SDL_keyboard.h \
/usr/include/SDL/SDL_keysym.h /usr/include/SDL/SDL_mouse.h \
/usr/include/SDL/SDL_video.h /usr/include/SDL/SDL_joystick.h \
/usr/include/SDL/SDL_quit.h /usr/include/SDL/SDL_loadso.h \
/usr/include/SDL/SDL_timer.h /usr/include/SDL/SDL_version.h \
../src/doomkeys.h txt_main.h txt_sdl.h txt_font.h txt_smallfont.h
/usr/include/SDL/SDL.h:
/usr/include/SDL/SDL_main.h:
/usr/include/SDL/SDL_stdinc.h:
/usr/include/SDL/SDL_config.h:
/usr/include/SDL/SDL_platform.h:
/usr/include/sys/types.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/wordsize.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/time.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/byteswap.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/stdio.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/bits/stdio.h:
/usr/include/bits/stdio2.h:
/usr/include/stdlib.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/xlocale.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib.h:
/usr/include/string.h:
/usr/include/bits/string.h:
/usr/include/bits/string2.h:
/usr/include/bits/string3.h:
/usr/include/strings.h:
/usr/include/inttypes.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/ctype.h:
/usr/include/iconv.h:
/usr/include/SDL/begin_code.h:
/usr/include/SDL/close_code.h:
/usr/include/SDL/SDL_audio.h:
/usr/include/SDL/SDL_error.h:
/usr/include/SDL/SDL_endian.h:
/usr/include/SDL/SDL_mutex.h:
/usr/include/SDL/SDL_thread.h:
/usr/include/SDL/SDL_rwops.h:
/usr/include/SDL/SDL_cdrom.h:
/usr/include/SDL/SDL_cpuinfo.h:
/usr/include/SDL/SDL_events.h:
/usr/include/SDL/SDL_active.h:
/usr/include/SDL/SDL_keyboard.h:
/usr/include/SDL/SDL_keysym.h:
/usr/include/SDL/SDL_mouse.h:
/usr/include/SDL/SDL_video.h:
/usr/include/SDL/SDL_joystick.h:
/usr/include/SDL/SDL_quit.h:
/usr/include/SDL/SDL_loadso.h:
/usr/include/SDL/SDL_timer.h:
/usr/include/SDL/SDL_version.h:
../src/doomkeys.h:
txt_main.h:
txt_sdl.h:
txt_font.h:
txt_smallfont.h:

View File

@ -0,0 +1,199 @@
txt_separator.o: txt_separator.c /usr/include/stdlib.h \
/usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
/usr/include/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/endian.h /usr/include/bits/endian.h \
/usr/include/bits/byteswap.h /usr/include/xlocale.h \
/usr/include/sys/types.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/time.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/sigset.h /usr/include/bits/time.h \
/usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
/usr/include/alloca.h /usr/include/bits/stdlib.h /usr/include/string.h \
/usr/include/bits/string.h /usr/include/bits/string2.h \
/usr/include/bits/string3.h txt_separator.h txt_widget.h txt_gui.h \
txt_io.h txt_main.h txt_sdl.h /usr/include/SDL/SDL.h \
/usr/include/SDL/SDL_main.h /usr/include/SDL/SDL_stdinc.h \
/usr/include/SDL/SDL_config.h /usr/include/SDL/SDL_platform.h \
/usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \
/usr/include/wchar.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/bits/stdio2.h \
/usr/include/strings.h /usr/include/inttypes.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/ctype.h \
/usr/include/iconv.h /usr/include/SDL/begin_code.h \
/usr/include/SDL/close_code.h /usr/include/SDL/SDL_audio.h \
/usr/include/SDL/SDL_error.h /usr/include/SDL/SDL_endian.h \
/usr/include/SDL/SDL_mutex.h /usr/include/SDL/SDL_thread.h \
/usr/include/SDL/SDL_rwops.h /usr/include/SDL/SDL_cdrom.h \
/usr/include/SDL/SDL_cpuinfo.h /usr/include/SDL/SDL_events.h \
/usr/include/SDL/SDL_active.h /usr/include/SDL/SDL_keyboard.h \
/usr/include/SDL/SDL_keysym.h /usr/include/SDL/SDL_mouse.h \
/usr/include/SDL/SDL_video.h /usr/include/SDL/SDL_joystick.h \
/usr/include/SDL/SDL_quit.h /usr/include/SDL/SDL_loadso.h \
/usr/include/SDL/SDL_timer.h /usr/include/SDL/SDL_version.h txt_window.h \
txt_table.h txt_window_action.h
/usr/include/stdlib.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/wordsize.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/byteswap.h:
/usr/include/xlocale.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib.h:
/usr/include/string.h:
/usr/include/bits/string.h:
/usr/include/bits/string2.h:
/usr/include/bits/string3.h:
txt_separator.h:
txt_widget.h:
txt_gui.h:
txt_io.h:
txt_main.h:
txt_sdl.h:
/usr/include/SDL/SDL.h:
/usr/include/SDL/SDL_main.h:
/usr/include/SDL/SDL_stdinc.h:
/usr/include/SDL/SDL_config.h:
/usr/include/SDL/SDL_platform.h:
/usr/include/stdio.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/bits/stdio.h:
/usr/include/bits/stdio2.h:
/usr/include/strings.h:
/usr/include/inttypes.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/ctype.h:
/usr/include/iconv.h:
/usr/include/SDL/begin_code.h:
/usr/include/SDL/close_code.h:
/usr/include/SDL/SDL_audio.h:
/usr/include/SDL/SDL_error.h:
/usr/include/SDL/SDL_endian.h:
/usr/include/SDL/SDL_mutex.h:
/usr/include/SDL/SDL_thread.h:
/usr/include/SDL/SDL_rwops.h:
/usr/include/SDL/SDL_cdrom.h:
/usr/include/SDL/SDL_cpuinfo.h:
/usr/include/SDL/SDL_events.h:
/usr/include/SDL/SDL_active.h:
/usr/include/SDL/SDL_keyboard.h:
/usr/include/SDL/SDL_keysym.h:
/usr/include/SDL/SDL_mouse.h:
/usr/include/SDL/SDL_video.h:
/usr/include/SDL/SDL_joystick.h:
/usr/include/SDL/SDL_quit.h:
/usr/include/SDL/SDL_loadso.h:
/usr/include/SDL/SDL_timer.h:
/usr/include/SDL/SDL_version.h:
txt_window.h:
txt_table.h:
txt_window_action.h:

View File

@ -0,0 +1,223 @@
txt_spinctrl.o: txt_spinctrl.c /usr/include/ctype.h \
/usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
/usr/include/gnu/stubs-64.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/endian.h \
/usr/include/bits/endian.h /usr/include/bits/byteswap.h \
/usr/include/xlocale.h /usr/include/stdio.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h \
/usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/bits/stdio2.h \
/usr/include/stdlib.h /usr/include/bits/waitflags.h \
/usr/include/bits/waitstatus.h /usr/include/sys/types.h \
/usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/sigset.h /usr/include/bits/time.h \
/usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
/usr/include/alloca.h /usr/include/bits/stdlib.h /usr/include/string.h \
/usr/include/bits/string.h /usr/include/bits/string2.h \
/usr/include/bits/string3.h /usr/include/math.h \
/usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \
/usr/include/bits/huge_vall.h /usr/include/bits/inf.h \
/usr/include/bits/nan.h /usr/include/bits/mathdef.h \
/usr/include/bits/mathcalls.h /usr/include/bits/mathinline.h \
../src/doomkeys.h txt_spinctrl.h txt_widget.h txt_gui.h txt_io.h \
txt_main.h txt_sdl.h /usr/include/SDL/SDL.h /usr/include/SDL/SDL_main.h \
/usr/include/SDL/SDL_stdinc.h /usr/include/SDL/SDL_config.h \
/usr/include/SDL/SDL_platform.h /usr/include/strings.h \
/usr/include/inttypes.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/iconv.h \
/usr/include/SDL/begin_code.h /usr/include/SDL/close_code.h \
/usr/include/SDL/SDL_audio.h /usr/include/SDL/SDL_error.h \
/usr/include/SDL/SDL_endian.h /usr/include/SDL/SDL_mutex.h \
/usr/include/SDL/SDL_thread.h /usr/include/SDL/SDL_rwops.h \
/usr/include/SDL/SDL_cdrom.h /usr/include/SDL/SDL_cpuinfo.h \
/usr/include/SDL/SDL_events.h /usr/include/SDL/SDL_active.h \
/usr/include/SDL/SDL_keyboard.h /usr/include/SDL/SDL_keysym.h \
/usr/include/SDL/SDL_mouse.h /usr/include/SDL/SDL_video.h \
/usr/include/SDL/SDL_joystick.h /usr/include/SDL/SDL_quit.h \
/usr/include/SDL/SDL_loadso.h /usr/include/SDL/SDL_timer.h \
/usr/include/SDL/SDL_version.h txt_window.h txt_table.h \
txt_window_action.h
/usr/include/ctype.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/wordsize.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/byteswap.h:
/usr/include/xlocale.h:
/usr/include/stdio.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/bits/stdio.h:
/usr/include/bits/stdio2.h:
/usr/include/stdlib.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/sys/types.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib.h:
/usr/include/string.h:
/usr/include/bits/string.h:
/usr/include/bits/string2.h:
/usr/include/bits/string3.h:
/usr/include/math.h:
/usr/include/bits/huge_val.h:
/usr/include/bits/huge_valf.h:
/usr/include/bits/huge_vall.h:
/usr/include/bits/inf.h:
/usr/include/bits/nan.h:
/usr/include/bits/mathdef.h:
/usr/include/bits/mathcalls.h:
/usr/include/bits/mathinline.h:
../src/doomkeys.h:
txt_spinctrl.h:
txt_widget.h:
txt_gui.h:
txt_io.h:
txt_main.h:
txt_sdl.h:
/usr/include/SDL/SDL.h:
/usr/include/SDL/SDL_main.h:
/usr/include/SDL/SDL_stdinc.h:
/usr/include/SDL/SDL_config.h:
/usr/include/SDL/SDL_platform.h:
/usr/include/strings.h:
/usr/include/inttypes.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/iconv.h:
/usr/include/SDL/begin_code.h:
/usr/include/SDL/close_code.h:
/usr/include/SDL/SDL_audio.h:
/usr/include/SDL/SDL_error.h:
/usr/include/SDL/SDL_endian.h:
/usr/include/SDL/SDL_mutex.h:
/usr/include/SDL/SDL_thread.h:
/usr/include/SDL/SDL_rwops.h:
/usr/include/SDL/SDL_cdrom.h:
/usr/include/SDL/SDL_cpuinfo.h:
/usr/include/SDL/SDL_events.h:
/usr/include/SDL/SDL_active.h:
/usr/include/SDL/SDL_keyboard.h:
/usr/include/SDL/SDL_keysym.h:
/usr/include/SDL/SDL_mouse.h:
/usr/include/SDL/SDL_video.h:
/usr/include/SDL/SDL_joystick.h:
/usr/include/SDL/SDL_quit.h:
/usr/include/SDL/SDL_loadso.h:
/usr/include/SDL/SDL_timer.h:
/usr/include/SDL/SDL_version.h:
txt_window.h:
txt_table.h:
txt_window_action.h:

View File

@ -0,0 +1,198 @@
txt_strut.o: txt_strut.c /usr/include/stdlib.h /usr/include/features.h \
/usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \
/usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/endian.h /usr/include/bits/endian.h \
/usr/include/bits/byteswap.h /usr/include/xlocale.h \
/usr/include/sys/types.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/time.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/sigset.h /usr/include/bits/time.h \
/usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
/usr/include/alloca.h /usr/include/bits/stdlib.h /usr/include/string.h \
/usr/include/bits/string.h /usr/include/bits/string2.h \
/usr/include/bits/string3.h ../src/doomkeys.h txt_strut.h txt_widget.h \
txt_io.h txt_main.h txt_sdl.h /usr/include/SDL/SDL.h \
/usr/include/SDL/SDL_main.h /usr/include/SDL/SDL_stdinc.h \
/usr/include/SDL/SDL_config.h /usr/include/SDL/SDL_platform.h \
/usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \
/usr/include/wchar.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/bits/stdio2.h \
/usr/include/strings.h /usr/include/inttypes.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/ctype.h \
/usr/include/iconv.h /usr/include/SDL/begin_code.h \
/usr/include/SDL/close_code.h /usr/include/SDL/SDL_audio.h \
/usr/include/SDL/SDL_error.h /usr/include/SDL/SDL_endian.h \
/usr/include/SDL/SDL_mutex.h /usr/include/SDL/SDL_thread.h \
/usr/include/SDL/SDL_rwops.h /usr/include/SDL/SDL_cdrom.h \
/usr/include/SDL/SDL_cpuinfo.h /usr/include/SDL/SDL_events.h \
/usr/include/SDL/SDL_active.h /usr/include/SDL/SDL_keyboard.h \
/usr/include/SDL/SDL_keysym.h /usr/include/SDL/SDL_mouse.h \
/usr/include/SDL/SDL_video.h /usr/include/SDL/SDL_joystick.h \
/usr/include/SDL/SDL_quit.h /usr/include/SDL/SDL_loadso.h \
/usr/include/SDL/SDL_timer.h /usr/include/SDL/SDL_version.h txt_window.h \
txt_table.h txt_window_action.h
/usr/include/stdlib.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/wordsize.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/byteswap.h:
/usr/include/xlocale.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib.h:
/usr/include/string.h:
/usr/include/bits/string.h:
/usr/include/bits/string2.h:
/usr/include/bits/string3.h:
../src/doomkeys.h:
txt_strut.h:
txt_widget.h:
txt_io.h:
txt_main.h:
txt_sdl.h:
/usr/include/SDL/SDL.h:
/usr/include/SDL/SDL_main.h:
/usr/include/SDL/SDL_stdinc.h:
/usr/include/SDL/SDL_config.h:
/usr/include/SDL/SDL_platform.h:
/usr/include/stdio.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/bits/stdio.h:
/usr/include/bits/stdio2.h:
/usr/include/strings.h:
/usr/include/inttypes.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/ctype.h:
/usr/include/iconv.h:
/usr/include/SDL/begin_code.h:
/usr/include/SDL/close_code.h:
/usr/include/SDL/SDL_audio.h:
/usr/include/SDL/SDL_error.h:
/usr/include/SDL/SDL_endian.h:
/usr/include/SDL/SDL_mutex.h:
/usr/include/SDL/SDL_thread.h:
/usr/include/SDL/SDL_rwops.h:
/usr/include/SDL/SDL_cdrom.h:
/usr/include/SDL/SDL_cpuinfo.h:
/usr/include/SDL/SDL_events.h:
/usr/include/SDL/SDL_active.h:
/usr/include/SDL/SDL_keyboard.h:
/usr/include/SDL/SDL_keysym.h:
/usr/include/SDL/SDL_mouse.h:
/usr/include/SDL/SDL_video.h:
/usr/include/SDL/SDL_joystick.h:
/usr/include/SDL/SDL_quit.h:
/usr/include/SDL/SDL_loadso.h:
/usr/include/SDL/SDL_timer.h:
/usr/include/SDL/SDL_version.h:
txt_window.h:
txt_table.h:
txt_window_action.h:

View File

@ -0,0 +1,205 @@
txt_table.o: txt_table.c \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h \
/usr/include/stdlib.h /usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
/usr/include/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/endian.h /usr/include/bits/endian.h \
/usr/include/bits/byteswap.h /usr/include/xlocale.h \
/usr/include/sys/types.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/time.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/sigset.h /usr/include/bits/time.h \
/usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
/usr/include/alloca.h /usr/include/bits/stdlib.h /usr/include/string.h \
/usr/include/bits/string.h /usr/include/bits/string2.h \
/usr/include/bits/string3.h ../src/doomkeys.h txt_desktop.h txt_window.h \
txt_widget.h txt_table.h txt_window_action.h txt_gui.h txt_io.h \
txt_main.h txt_sdl.h /usr/include/SDL/SDL.h /usr/include/SDL/SDL_main.h \
/usr/include/SDL/SDL_stdinc.h /usr/include/SDL/SDL_config.h \
/usr/include/SDL/SDL_platform.h /usr/include/stdio.h \
/usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/bits/stdio2.h \
/usr/include/strings.h /usr/include/inttypes.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/ctype.h \
/usr/include/iconv.h /usr/include/SDL/begin_code.h \
/usr/include/SDL/close_code.h /usr/include/SDL/SDL_audio.h \
/usr/include/SDL/SDL_error.h /usr/include/SDL/SDL_endian.h \
/usr/include/SDL/SDL_mutex.h /usr/include/SDL/SDL_thread.h \
/usr/include/SDL/SDL_rwops.h /usr/include/SDL/SDL_cdrom.h \
/usr/include/SDL/SDL_cpuinfo.h /usr/include/SDL/SDL_events.h \
/usr/include/SDL/SDL_active.h /usr/include/SDL/SDL_keyboard.h \
/usr/include/SDL/SDL_keysym.h /usr/include/SDL/SDL_mouse.h \
/usr/include/SDL/SDL_video.h /usr/include/SDL/SDL_joystick.h \
/usr/include/SDL/SDL_quit.h /usr/include/SDL/SDL_loadso.h \
/usr/include/SDL/SDL_timer.h /usr/include/SDL/SDL_version.h \
txt_separator.h txt_strut.h
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h:
/usr/include/stdlib.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/wordsize.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/byteswap.h:
/usr/include/xlocale.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib.h:
/usr/include/string.h:
/usr/include/bits/string.h:
/usr/include/bits/string2.h:
/usr/include/bits/string3.h:
../src/doomkeys.h:
txt_desktop.h:
txt_window.h:
txt_widget.h:
txt_table.h:
txt_window_action.h:
txt_gui.h:
txt_io.h:
txt_main.h:
txt_sdl.h:
/usr/include/SDL/SDL.h:
/usr/include/SDL/SDL_main.h:
/usr/include/SDL/SDL_stdinc.h:
/usr/include/SDL/SDL_config.h:
/usr/include/SDL/SDL_platform.h:
/usr/include/stdio.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/bits/stdio.h:
/usr/include/bits/stdio2.h:
/usr/include/strings.h:
/usr/include/inttypes.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/ctype.h:
/usr/include/iconv.h:
/usr/include/SDL/begin_code.h:
/usr/include/SDL/close_code.h:
/usr/include/SDL/SDL_audio.h:
/usr/include/SDL/SDL_error.h:
/usr/include/SDL/SDL_endian.h:
/usr/include/SDL/SDL_mutex.h:
/usr/include/SDL/SDL_thread.h:
/usr/include/SDL/SDL_rwops.h:
/usr/include/SDL/SDL_cdrom.h:
/usr/include/SDL/SDL_cpuinfo.h:
/usr/include/SDL/SDL_events.h:
/usr/include/SDL/SDL_active.h:
/usr/include/SDL/SDL_keyboard.h:
/usr/include/SDL/SDL_keysym.h:
/usr/include/SDL/SDL_mouse.h:
/usr/include/SDL/SDL_video.h:
/usr/include/SDL/SDL_joystick.h:
/usr/include/SDL/SDL_quit.h:
/usr/include/SDL/SDL_loadso.h:
/usr/include/SDL/SDL_timer.h:
/usr/include/SDL/SDL_version.h:
txt_separator.h:
txt_strut.h:

View File

@ -0,0 +1,197 @@
txt_widget.o: txt_widget.c /usr/include/stdlib.h /usr/include/features.h \
/usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \
/usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/endian.h /usr/include/bits/endian.h \
/usr/include/bits/byteswap.h /usr/include/xlocale.h \
/usr/include/sys/types.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/time.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/sigset.h /usr/include/bits/time.h \
/usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
/usr/include/alloca.h /usr/include/bits/stdlib.h /usr/include/string.h \
/usr/include/bits/string.h /usr/include/bits/string2.h \
/usr/include/bits/string3.h txt_io.h txt_main.h txt_sdl.h \
/usr/include/SDL/SDL.h /usr/include/SDL/SDL_main.h \
/usr/include/SDL/SDL_stdinc.h /usr/include/SDL/SDL_config.h \
/usr/include/SDL/SDL_platform.h /usr/include/stdio.h \
/usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/bits/stdio2.h \
/usr/include/strings.h /usr/include/inttypes.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/ctype.h \
/usr/include/iconv.h /usr/include/SDL/begin_code.h \
/usr/include/SDL/close_code.h /usr/include/SDL/SDL_audio.h \
/usr/include/SDL/SDL_error.h /usr/include/SDL/SDL_endian.h \
/usr/include/SDL/SDL_mutex.h /usr/include/SDL/SDL_thread.h \
/usr/include/SDL/SDL_rwops.h /usr/include/SDL/SDL_cdrom.h \
/usr/include/SDL/SDL_cpuinfo.h /usr/include/SDL/SDL_events.h \
/usr/include/SDL/SDL_active.h /usr/include/SDL/SDL_keyboard.h \
/usr/include/SDL/SDL_keysym.h /usr/include/SDL/SDL_mouse.h \
/usr/include/SDL/SDL_video.h /usr/include/SDL/SDL_joystick.h \
/usr/include/SDL/SDL_quit.h /usr/include/SDL/SDL_loadso.h \
/usr/include/SDL/SDL_timer.h /usr/include/SDL/SDL_version.h txt_widget.h \
txt_gui.h txt_desktop.h txt_window.h txt_table.h txt_window_action.h
/usr/include/stdlib.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/wordsize.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/byteswap.h:
/usr/include/xlocale.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib.h:
/usr/include/string.h:
/usr/include/bits/string.h:
/usr/include/bits/string2.h:
/usr/include/bits/string3.h:
txt_io.h:
txt_main.h:
txt_sdl.h:
/usr/include/SDL/SDL.h:
/usr/include/SDL/SDL_main.h:
/usr/include/SDL/SDL_stdinc.h:
/usr/include/SDL/SDL_config.h:
/usr/include/SDL/SDL_platform.h:
/usr/include/stdio.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/bits/stdio.h:
/usr/include/bits/stdio2.h:
/usr/include/strings.h:
/usr/include/inttypes.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/ctype.h:
/usr/include/iconv.h:
/usr/include/SDL/begin_code.h:
/usr/include/SDL/close_code.h:
/usr/include/SDL/SDL_audio.h:
/usr/include/SDL/SDL_error.h:
/usr/include/SDL/SDL_endian.h:
/usr/include/SDL/SDL_mutex.h:
/usr/include/SDL/SDL_thread.h:
/usr/include/SDL/SDL_rwops.h:
/usr/include/SDL/SDL_cdrom.h:
/usr/include/SDL/SDL_cpuinfo.h:
/usr/include/SDL/SDL_events.h:
/usr/include/SDL/SDL_active.h:
/usr/include/SDL/SDL_keyboard.h:
/usr/include/SDL/SDL_keysym.h:
/usr/include/SDL/SDL_mouse.h:
/usr/include/SDL/SDL_video.h:
/usr/include/SDL/SDL_joystick.h:
/usr/include/SDL/SDL_quit.h:
/usr/include/SDL/SDL_loadso.h:
/usr/include/SDL/SDL_timer.h:
/usr/include/SDL/SDL_version.h:
txt_widget.h:
txt_gui.h:
txt_desktop.h:
txt_window.h:
txt_table.h:
txt_window_action.h:

View File

@ -0,0 +1,200 @@
txt_window.o: txt_window.c /usr/include/stdlib.h /usr/include/features.h \
/usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \
/usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/endian.h /usr/include/bits/endian.h \
/usr/include/bits/byteswap.h /usr/include/xlocale.h \
/usr/include/sys/types.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/time.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/sigset.h /usr/include/bits/time.h \
/usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
/usr/include/alloca.h /usr/include/bits/stdlib.h /usr/include/string.h \
/usr/include/bits/string.h /usr/include/bits/string2.h \
/usr/include/bits/string3.h ../src/doomkeys.h txt_desktop.h txt_window.h \
txt_widget.h txt_table.h txt_window_action.h txt_gui.h txt_main.h \
txt_sdl.h /usr/include/SDL/SDL.h /usr/include/SDL/SDL_main.h \
/usr/include/SDL/SDL_stdinc.h /usr/include/SDL/SDL_config.h \
/usr/include/SDL/SDL_platform.h /usr/include/stdio.h \
/usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/bits/stdio2.h \
/usr/include/strings.h /usr/include/inttypes.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/ctype.h \
/usr/include/iconv.h /usr/include/SDL/begin_code.h \
/usr/include/SDL/close_code.h /usr/include/SDL/SDL_audio.h \
/usr/include/SDL/SDL_error.h /usr/include/SDL/SDL_endian.h \
/usr/include/SDL/SDL_mutex.h /usr/include/SDL/SDL_thread.h \
/usr/include/SDL/SDL_rwops.h /usr/include/SDL/SDL_cdrom.h \
/usr/include/SDL/SDL_cpuinfo.h /usr/include/SDL/SDL_events.h \
/usr/include/SDL/SDL_active.h /usr/include/SDL/SDL_keyboard.h \
/usr/include/SDL/SDL_keysym.h /usr/include/SDL/SDL_mouse.h \
/usr/include/SDL/SDL_video.h /usr/include/SDL/SDL_joystick.h \
/usr/include/SDL/SDL_quit.h /usr/include/SDL/SDL_loadso.h \
/usr/include/SDL/SDL_timer.h /usr/include/SDL/SDL_version.h \
txt_separator.h
/usr/include/stdlib.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/wordsize.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/byteswap.h:
/usr/include/xlocale.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib.h:
/usr/include/string.h:
/usr/include/bits/string.h:
/usr/include/bits/string2.h:
/usr/include/bits/string3.h:
../src/doomkeys.h:
txt_desktop.h:
txt_window.h:
txt_widget.h:
txt_table.h:
txt_window_action.h:
txt_gui.h:
txt_main.h:
txt_sdl.h:
/usr/include/SDL/SDL.h:
/usr/include/SDL/SDL_main.h:
/usr/include/SDL/SDL_stdinc.h:
/usr/include/SDL/SDL_config.h:
/usr/include/SDL/SDL_platform.h:
/usr/include/stdio.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/bits/stdio.h:
/usr/include/bits/stdio2.h:
/usr/include/strings.h:
/usr/include/inttypes.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/ctype.h:
/usr/include/iconv.h:
/usr/include/SDL/begin_code.h:
/usr/include/SDL/close_code.h:
/usr/include/SDL/SDL_audio.h:
/usr/include/SDL/SDL_error.h:
/usr/include/SDL/SDL_endian.h:
/usr/include/SDL/SDL_mutex.h:
/usr/include/SDL/SDL_thread.h:
/usr/include/SDL/SDL_rwops.h:
/usr/include/SDL/SDL_cdrom.h:
/usr/include/SDL/SDL_cpuinfo.h:
/usr/include/SDL/SDL_events.h:
/usr/include/SDL/SDL_active.h:
/usr/include/SDL/SDL_keyboard.h:
/usr/include/SDL/SDL_keysym.h:
/usr/include/SDL/SDL_mouse.h:
/usr/include/SDL/SDL_video.h:
/usr/include/SDL/SDL_joystick.h:
/usr/include/SDL/SDL_quit.h:
/usr/include/SDL/SDL_loadso.h:
/usr/include/SDL/SDL_timer.h:
/usr/include/SDL/SDL_version.h:
txt_separator.h:

View File

@ -0,0 +1,198 @@
txt_window_action.o: txt_window_action.c /usr/include/stdlib.h \
/usr/include/features.h /usr/include/sys/cdefs.h \
/usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
/usr/include/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h \
/usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \
/usr/include/endian.h /usr/include/bits/endian.h \
/usr/include/bits/byteswap.h /usr/include/xlocale.h \
/usr/include/sys/types.h /usr/include/bits/types.h \
/usr/include/bits/typesizes.h /usr/include/time.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/sigset.h /usr/include/bits/time.h \
/usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
/usr/include/alloca.h /usr/include/bits/stdlib.h /usr/include/string.h \
/usr/include/bits/string.h /usr/include/bits/string2.h \
/usr/include/bits/string3.h ../src/doomkeys.h txt_window_action.h \
txt_widget.h txt_window.h txt_table.h txt_gui.h txt_io.h txt_main.h \
txt_sdl.h /usr/include/SDL/SDL.h /usr/include/SDL/SDL_main.h \
/usr/include/SDL/SDL_stdinc.h /usr/include/SDL/SDL_config.h \
/usr/include/SDL/SDL_platform.h /usr/include/stdio.h \
/usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/bits/stdio2.h \
/usr/include/strings.h /usr/include/inttypes.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/ctype.h \
/usr/include/iconv.h /usr/include/SDL/begin_code.h \
/usr/include/SDL/close_code.h /usr/include/SDL/SDL_audio.h \
/usr/include/SDL/SDL_error.h /usr/include/SDL/SDL_endian.h \
/usr/include/SDL/SDL_mutex.h /usr/include/SDL/SDL_thread.h \
/usr/include/SDL/SDL_rwops.h /usr/include/SDL/SDL_cdrom.h \
/usr/include/SDL/SDL_cpuinfo.h /usr/include/SDL/SDL_events.h \
/usr/include/SDL/SDL_active.h /usr/include/SDL/SDL_keyboard.h \
/usr/include/SDL/SDL_keysym.h /usr/include/SDL/SDL_mouse.h \
/usr/include/SDL/SDL_video.h /usr/include/SDL/SDL_joystick.h \
/usr/include/SDL/SDL_quit.h /usr/include/SDL/SDL_loadso.h \
/usr/include/SDL/SDL_timer.h /usr/include/SDL/SDL_version.h
/usr/include/stdlib.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/wordsize.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/byteswap.h:
/usr/include/xlocale.h:
/usr/include/sys/types.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib.h:
/usr/include/string.h:
/usr/include/bits/string.h:
/usr/include/bits/string2.h:
/usr/include/bits/string3.h:
../src/doomkeys.h:
txt_window_action.h:
txt_widget.h:
txt_window.h:
txt_table.h:
txt_gui.h:
txt_io.h:
txt_main.h:
txt_sdl.h:
/usr/include/SDL/SDL.h:
/usr/include/SDL/SDL_main.h:
/usr/include/SDL/SDL_stdinc.h:
/usr/include/SDL/SDL_config.h:
/usr/include/SDL/SDL_platform.h:
/usr/include/stdio.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/bits/stdio.h:
/usr/include/bits/stdio2.h:
/usr/include/strings.h:
/usr/include/inttypes.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/ctype.h:
/usr/include/iconv.h:
/usr/include/SDL/begin_code.h:
/usr/include/SDL/close_code.h:
/usr/include/SDL/SDL_audio.h:
/usr/include/SDL/SDL_error.h:
/usr/include/SDL/SDL_endian.h:
/usr/include/SDL/SDL_mutex.h:
/usr/include/SDL/SDL_thread.h:
/usr/include/SDL/SDL_rwops.h:
/usr/include/SDL/SDL_cdrom.h:
/usr/include/SDL/SDL_cpuinfo.h:
/usr/include/SDL/SDL_events.h:
/usr/include/SDL/SDL_active.h:
/usr/include/SDL/SDL_keyboard.h:
/usr/include/SDL/SDL_keysym.h:
/usr/include/SDL/SDL_mouse.h:
/usr/include/SDL/SDL_video.h:
/usr/include/SDL/SDL_joystick.h:
/usr/include/SDL/SDL_quit.h:
/usr/include/SDL/SDL_loadso.h:
/usr/include/SDL/SDL_timer.h:
/usr/include/SDL/SDL_version.h:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,641 @@
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# textscreen/Makefile. Generated from Makefile.in by configure.
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
# Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
pkgdatadir = $(datadir)/psdoom
pkgincludedir = $(includedir)/psdoom
pkglibdir = $(libdir)/psdoom
pkglibexecdir = $(libexecdir)/psdoom
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
subdir = textscreen
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
LIBRARIES = $(noinst_LIBRARIES)
AR = ar
ARFLAGS = cru
libtextscreen_a_AR = $(AR) $(ARFLAGS)
libtextscreen_a_LIBADD =
am_libtextscreen_a_OBJECTS = txt_checkbox.$(OBJEXT) \
txt_desktop.$(OBJEXT) txt_dropdown.$(OBJEXT) txt_gui.$(OBJEXT) \
txt_inputbox.$(OBJEXT) txt_io.$(OBJEXT) txt_button.$(OBJEXT) \
txt_label.$(OBJEXT) txt_radiobutton.$(OBJEXT) \
txt_scrollpane.$(OBJEXT) txt_separator.$(OBJEXT) \
txt_spinctrl.$(OBJEXT) txt_sdl.$(OBJEXT) txt_strut.$(OBJEXT) \
txt_table.$(OBJEXT) txt_widget.$(OBJEXT) txt_window.$(OBJEXT) \
txt_window_action.$(OBJEXT)
libtextscreen_a_OBJECTS = $(am_libtextscreen_a_OBJECTS)
DEFAULT_INCLUDES = -I. -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/autotools/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = $(libtextscreen_a_SOURCES)
DIST_SOURCES = $(libtextscreen_a_SOURCES)
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-dvi-recursive install-exec-recursive \
install-html-recursive install-info-recursive \
install-pdf-recursive install-ps-recursive install-recursive \
installcheck-recursive installdirs-recursive pdf-recursive \
ps-recursive uninstall-recursive
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
distdir
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
am__relativize = \
dir0=`pwd`; \
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
sed_rest='s,^[^/]*/*,,'; \
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
sed_butlast='s,/*[^/]*$$,,'; \
while test -n "$$dir1"; do \
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
if test "$$first" != "."; then \
if test "$$first" = ".."; then \
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
else \
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
if test "$$first2" = "$$first"; then \
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
else \
dir2="../$$dir2"; \
fi; \
dir0="$$dir0"/"$$first"; \
fi; \
fi; \
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
done; \
reldir="$$dir2"
ACLOCAL = ${SHELL} /home/orson/Downloads/chocolate-doom-1.6.0/autotools/missing --run aclocal-1.11
AMTAR = ${SHELL} /home/orson/Downloads/chocolate-doom-1.6.0/autotools/missing --run tar
AUTOCONF = ${SHELL} /home/orson/Downloads/chocolate-doom-1.6.0/autotools/missing --run autoconf
AUTOHEADER = ${SHELL} /home/orson/Downloads/chocolate-doom-1.6.0/autotools/missing --run autoheader
AUTOMAKE = ${SHELL} /home/orson/Downloads/chocolate-doom-1.6.0/autotools/missing --run automake-1.11
AWK = gawk
CC = gcc
CCDEPMODE = depmode=gcc3
CFLAGS = -O2 -g -Wall -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
CPP = gcc -E
CPPFLAGS =
CYGPATH_W = echo
DEFS = -DHAVE_CONFIG_H
DEPDIR = .deps
ECHO_C =
ECHO_N = -n
ECHO_T =
EGREP = /bin/grep -E
EXEEXT =
GREP = /bin/grep
HAVE_PYTHON = true
INSTALL = /usr/bin/install -c
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_PROGRAM = ${INSTALL}
INSTALL_SCRIPT = ${INSTALL}
INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
LDFLAGS = -lSDL -lpthread
LIBOBJS =
LIBS = -lm
LTLIBOBJS =
MAKEINFO = ${SHELL} /home/orson/Downloads/chocolate-doom-1.6.0/autotools/missing --run makeinfo
MKDIR_P = /bin/mkdir -p
OBJEXT = o
PACKAGE = psdoom
PACKAGE_BUGREPORT = orsonteodoro@yahoo.com
PACKAGE_COPYRIGHT = Copyright (C) 1993-2012
PACKAGE_LICENSE = GNU General Public License, version 2
PACKAGE_MAINTAINER = Orson Teodoro
PACKAGE_NAME = psdoom
PACKAGE_SHORTDESC = psdoom-ng source port - psDooM with Chocolate Doom
PACKAGE_STRING = psdoom 2012.02.05-1.6.0
PACKAGE_TARNAME = psdoom
PACKAGE_URL = https://github.com/orsonteodoro/psdoom-ng/
PACKAGE_VERSION = 2012.02.05-1.6.0
PATH_SEPARATOR = :
PROGRAM_PREFIX = ps
RANLIB = ranlib
SDLMIXER_CFLAGS =
SDLMIXER_LIBS = -lSDL_mixer
SDLNET_CFLAGS =
SDLNET_LIBS = -lSDL_net
SDL_CFLAGS = -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
SDL_CONFIG = /usr/bin/sdl-config
SDL_LIBS = -lSDL -lpthread
SET_MAKE =
SHELL = /bin/sh
STRIP = strip
VERSION = 2012.02.05-1.6.0
WINDOWS_RC_VERSION = 2012, 02, 05-1, 6, 0, 0
WINDRES =
abs_builddir = /home/orson/Downloads/chocolate-doom-1.6.0/textscreen
abs_srcdir = /home/orson/Downloads/chocolate-doom-1.6.0/textscreen
abs_top_builddir = /home/orson/Downloads/chocolate-doom-1.6.0
abs_top_srcdir = /home/orson/Downloads/chocolate-doom-1.6.0
ac_aux_dir = autotools
ac_ct_CC = gcc
am__include = include
am__leading_dot = .
am__quote =
am__tar = ${AMTAR} chof - "$$tardir"
am__untar = ${AMTAR} xf -
bindir = ${exec_prefix}/bin
build_alias =
builddir = .
datadir = ${datarootdir}
datarootdir = ${prefix}/share
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
dvidir = ${docdir}
exec_prefix = ${prefix}
host_alias =
htmldir = ${docdir}
includedir = ${prefix}/include
infodir = ${datarootdir}/info
install_sh = ${SHELL} /home/orson/Downloads/chocolate-doom-1.6.0/autotools/install-sh
libdir = ${exec_prefix}/lib
libexecdir = ${exec_prefix}/libexec
localedir = ${datarootdir}/locale
localstatedir = ${prefix}/var
mandir = ${datarootdir}/man
mkdir_p = /bin/mkdir -p
oldincludedir = /usr/include
pdfdir = ${docdir}
prefix = /usr/local
program_transform_name = s,x,x,
psdir = ${docdir}
sbindir = ${exec_prefix}/sbin
sharedstatedir = ${prefix}/com
srcdir = .
sysconfdir = ${prefix}/etc
target_alias =
top_build_prefix = ../
top_builddir = ..
top_srcdir = ..
AM_CFLAGS = -I../src
CTAGS_ARGS = -I TXT_UNCAST_ARG+
# build this directory before the examples directory.
SUBDIRS = . examples
noinst_LIBRARIES = libtextscreen.a
EXTRA_DIST = Doxyfile
libtextscreen_a_SOURCES = \
textscreen.h \
txt_checkbox.c txt_checkbox.h \
txt_desktop.c txt_desktop.h \
txt_dropdown.c txt_dropdown.h \
txt_gui.c txt_gui.h \
txt_inputbox.c txt_inputbox.h \
txt_io.c txt_io.h \
txt_main.h \
txt_button.c txt_button.h \
txt_label.c txt_label.h \
txt_radiobutton.c txt_radiobutton.h \
txt_scrollpane.c txt_scrollpane.h \
txt_separator.c txt_separator.h \
txt_spinctrl.c txt_spinctrl.h \
txt_sdl.c txt_sdl.h \
txt_smallfont.h \
txt_strut.c txt_strut.h \
txt_table.c txt_table.h \
txt_widget.c txt_widget.h \
txt_window.c txt_window.h \
txt_window_action.c txt_window_action.h \
txt_font.h
all: all-recursive
.SUFFIXES:
.SUFFIXES: .c .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu textscreen/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu textscreen/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
clean-noinstLIBRARIES:
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
libtextscreen.a: $(libtextscreen_a_OBJECTS) $(libtextscreen_a_DEPENDENCIES)
-rm -f libtextscreen.a
$(libtextscreen_a_AR) libtextscreen.a $(libtextscreen_a_OBJECTS) $(libtextscreen_a_LIBADD)
$(RANLIB) libtextscreen.a
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
include ./$(DEPDIR)/txt_button.Po
include ./$(DEPDIR)/txt_checkbox.Po
include ./$(DEPDIR)/txt_desktop.Po
include ./$(DEPDIR)/txt_dropdown.Po
include ./$(DEPDIR)/txt_gui.Po
include ./$(DEPDIR)/txt_inputbox.Po
include ./$(DEPDIR)/txt_io.Po
include ./$(DEPDIR)/txt_label.Po
include ./$(DEPDIR)/txt_radiobutton.Po
include ./$(DEPDIR)/txt_scrollpane.Po
include ./$(DEPDIR)/txt_sdl.Po
include ./$(DEPDIR)/txt_separator.Po
include ./$(DEPDIR)/txt_spinctrl.Po
include ./$(DEPDIR)/txt_strut.Po
include ./$(DEPDIR)/txt_table.Po
include ./$(DEPDIR)/txt_widget.Po
include ./$(DEPDIR)/txt_window.Po
include ./$(DEPDIR)/txt_window_action.Po
.c.o:
$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
# source='$<' object='$@' libtool=no \
# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
# $(COMPILE) -c $<
.c.obj:
$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
# source='$<' object='$@' libtool=no \
# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
# $(COMPILE) -c `$(CYGPATH_W) '$<'`
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
set x; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
fi; \
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
dir1=$$subdir; dir2="$(top_distdir)"; \
$(am__relativize); \
new_top_distdir=$$reldir; \
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
($(am__cd) $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$new_top_distdir" \
distdir="$$new_distdir" \
am__remove_distdir=: \
am__skip_length_check=: \
am__skip_mode_fix=: \
distdir) \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-recursive
all-am: Makefile $(LIBRARIES)
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive
clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
distclean: distclean-recursive
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
html-am:
info: info-recursive
info-am:
install-data-am:
install-dvi: install-dvi-recursive
install-dvi-am:
install-exec-am:
install-html: install-html-recursive
install-html-am:
install-info: install-info-recursive
install-info-am:
install-man:
install-pdf: install-pdf-recursive
install-pdf-am:
install-ps: install-ps-recursive
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-compile mostlyclean-generic
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am:
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
install-am install-strip tags-recursive
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
all all-am check check-am clean clean-generic \
clean-noinstLIBRARIES ctags ctags-recursive distclean \
distclean-compile distclean-generic distclean-tags distdir dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs installdirs-am \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
tags tags-recursive uninstall uninstall-am
doc:
doxygen
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -0,0 +1,40 @@
AM_CFLAGS = -I../src
CTAGS_ARGS=-I TXT_UNCAST_ARG+
# build this directory before the examples directory.
SUBDIRS= . examples
noinst_LIBRARIES=libtextscreen.a
EXTRA_DIST=Doxyfile
libtextscreen_a_SOURCES = \
textscreen.h \
txt_checkbox.c txt_checkbox.h \
txt_desktop.c txt_desktop.h \
txt_dropdown.c txt_dropdown.h \
txt_gui.c txt_gui.h \
txt_inputbox.c txt_inputbox.h \
txt_io.c txt_io.h \
txt_main.h \
txt_button.c txt_button.h \
txt_label.c txt_label.h \
txt_radiobutton.c txt_radiobutton.h \
txt_scrollpane.c txt_scrollpane.h \
txt_separator.c txt_separator.h \
txt_spinctrl.c txt_spinctrl.h \
txt_sdl.c txt_sdl.h \
txt_smallfont.h \
txt_strut.c txt_strut.h \
txt_table.c txt_table.h \
txt_widget.c txt_widget.h \
txt_window.c txt_window.h \
txt_window_action.c txt_window_action.h \
txt_font.h
doc:
doxygen

View File

@ -0,0 +1,641 @@
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
# Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
subdir = textscreen
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
LIBRARIES = $(noinst_LIBRARIES)
AR = ar
ARFLAGS = cru
libtextscreen_a_AR = $(AR) $(ARFLAGS)
libtextscreen_a_LIBADD =
am_libtextscreen_a_OBJECTS = txt_checkbox.$(OBJEXT) \
txt_desktop.$(OBJEXT) txt_dropdown.$(OBJEXT) txt_gui.$(OBJEXT) \
txt_inputbox.$(OBJEXT) txt_io.$(OBJEXT) txt_button.$(OBJEXT) \
txt_label.$(OBJEXT) txt_radiobutton.$(OBJEXT) \
txt_scrollpane.$(OBJEXT) txt_separator.$(OBJEXT) \
txt_spinctrl.$(OBJEXT) txt_sdl.$(OBJEXT) txt_strut.$(OBJEXT) \
txt_table.$(OBJEXT) txt_widget.$(OBJEXT) txt_window.$(OBJEXT) \
txt_window_action.$(OBJEXT)
libtextscreen_a_OBJECTS = $(am_libtextscreen_a_OBJECTS)
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/autotools/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = $(libtextscreen_a_SOURCES)
DIST_SOURCES = $(libtextscreen_a_SOURCES)
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-dvi-recursive install-exec-recursive \
install-html-recursive install-info-recursive \
install-pdf-recursive install-ps-recursive install-recursive \
installcheck-recursive installdirs-recursive pdf-recursive \
ps-recursive uninstall-recursive
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
distdir
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
am__relativize = \
dir0=`pwd`; \
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
sed_rest='s,^[^/]*/*,,'; \
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
sed_butlast='s,/*[^/]*$$,,'; \
while test -n "$$dir1"; do \
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
if test "$$first" != "."; then \
if test "$$first" = ".."; then \
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
else \
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
if test "$$first2" = "$$first"; then \
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
else \
dir2="../$$dir2"; \
fi; \
dir0="$$dir0"/"$$first"; \
fi; \
fi; \
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
done; \
reldir="$$dir2"
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
GREP = @GREP@
HAVE_PYTHON = @HAVE_PYTHON@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_COPYRIGHT = @PACKAGE_COPYRIGHT@
PACKAGE_LICENSE = @PACKAGE_LICENSE@
PACKAGE_MAINTAINER = @PACKAGE_MAINTAINER@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_SHORTDESC = @PACKAGE_SHORTDESC@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PROGRAM_PREFIX = @PROGRAM_PREFIX@
RANLIB = @RANLIB@
SDLMIXER_CFLAGS = @SDLMIXER_CFLAGS@
SDLMIXER_LIBS = @SDLMIXER_LIBS@
SDLNET_CFLAGS = @SDLNET_CFLAGS@
SDLNET_LIBS = @SDLNET_LIBS@
SDL_CFLAGS = @SDL_CFLAGS@
SDL_CONFIG = @SDL_CONFIG@
SDL_LIBS = @SDL_LIBS@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
WINDOWS_RC_VERSION = @WINDOWS_RC_VERSION@
WINDRES = @WINDRES@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_aux_dir = @ac_aux_dir@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build_alias = @build_alias@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host_alias = @host_alias@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AM_CFLAGS = -I../src
CTAGS_ARGS = -I TXT_UNCAST_ARG+
# build this directory before the examples directory.
SUBDIRS = . examples
noinst_LIBRARIES = libtextscreen.a
EXTRA_DIST = Doxyfile
libtextscreen_a_SOURCES = \
textscreen.h \
txt_checkbox.c txt_checkbox.h \
txt_desktop.c txt_desktop.h \
txt_dropdown.c txt_dropdown.h \
txt_gui.c txt_gui.h \
txt_inputbox.c txt_inputbox.h \
txt_io.c txt_io.h \
txt_main.h \
txt_button.c txt_button.h \
txt_label.c txt_label.h \
txt_radiobutton.c txt_radiobutton.h \
txt_scrollpane.c txt_scrollpane.h \
txt_separator.c txt_separator.h \
txt_spinctrl.c txt_spinctrl.h \
txt_sdl.c txt_sdl.h \
txt_smallfont.h \
txt_strut.c txt_strut.h \
txt_table.c txt_table.h \
txt_widget.c txt_widget.h \
txt_window.c txt_window.h \
txt_window_action.c txt_window_action.h \
txt_font.h
all: all-recursive
.SUFFIXES:
.SUFFIXES: .c .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu textscreen/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu textscreen/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
clean-noinstLIBRARIES:
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
libtextscreen.a: $(libtextscreen_a_OBJECTS) $(libtextscreen_a_DEPENDENCIES)
-rm -f libtextscreen.a
$(libtextscreen_a_AR) libtextscreen.a $(libtextscreen_a_OBJECTS) $(libtextscreen_a_LIBADD)
$(RANLIB) libtextscreen.a
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/txt_button.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/txt_checkbox.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/txt_desktop.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/txt_dropdown.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/txt_gui.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/txt_inputbox.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/txt_io.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/txt_label.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/txt_radiobutton.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/txt_scrollpane.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/txt_sdl.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/txt_separator.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/txt_spinctrl.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/txt_strut.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/txt_table.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/txt_widget.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/txt_window.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/txt_window_action.Po@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
$(RECURSIVE_CLEAN_TARGETS):
@fail= failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
set x; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
fi; \
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
dir1=$$subdir; dir2="$(top_distdir)"; \
$(am__relativize); \
new_top_distdir=$$reldir; \
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
($(am__cd) $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$new_top_distdir" \
distdir="$$new_distdir" \
am__remove_distdir=: \
am__skip_length_check=: \
am__skip_mode_fix=: \
distdir) \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-recursive
all-am: Makefile $(LIBRARIES)
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive
clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
distclean: distclean-recursive
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
html-am:
info: info-recursive
info-am:
install-data-am:
install-dvi: install-dvi-recursive
install-dvi-am:
install-exec-am:
install-html: install-html-recursive
install-html-am:
install-info: install-info-recursive
install-info-am:
install-man:
install-pdf: install-pdf-recursive
install-pdf-am:
install-ps: install-ps-recursive
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-compile mostlyclean-generic
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am:
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
install-am install-strip tags-recursive
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
all all-am check check-am clean clean-generic \
clean-noinstLIBRARIES ctags ctags-recursive distclean \
distclean-compile distclean-generic distclean-tags distdir dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-dvi install-dvi-am \
install-exec install-exec-am install-html install-html-am \
install-info install-info-am install-man install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs installdirs-am \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
tags tags-recursive uninstall uninstall-am
doc:
doxygen
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -0,0 +1,220 @@
calculator.o: calculator.c /usr/include/stdio.h /usr/include/features.h \
/usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \
/usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h \
/usr/include/bits/types.h /usr/include/bits/typesizes.h \
/usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/bits/stdio2.h \
/usr/include/stdlib.h /usr/include/bits/waitflags.h \
/usr/include/bits/waitstatus.h /usr/include/endian.h \
/usr/include/bits/endian.h /usr/include/bits/byteswap.h \
/usr/include/xlocale.h /usr/include/sys/types.h /usr/include/time.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/sigset.h /usr/include/bits/time.h \
/usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
/usr/include/alloca.h /usr/include/bits/stdlib.h /usr/include/string.h \
/usr/include/bits/string.h /usr/include/bits/string2.h \
/usr/include/bits/string3.h ../textscreen.h ../../src/doomkeys.h \
../txt_main.h ../txt_sdl.h /usr/include/SDL/SDL.h \
/usr/include/SDL/SDL_main.h /usr/include/SDL/SDL_stdinc.h \
/usr/include/SDL/SDL_config.h /usr/include/SDL/SDL_platform.h \
/usr/include/strings.h /usr/include/inttypes.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/ctype.h \
/usr/include/iconv.h /usr/include/SDL/begin_code.h \
/usr/include/SDL/close_code.h /usr/include/SDL/SDL_audio.h \
/usr/include/SDL/SDL_error.h /usr/include/SDL/SDL_endian.h \
/usr/include/SDL/SDL_mutex.h /usr/include/SDL/SDL_thread.h \
/usr/include/SDL/SDL_rwops.h /usr/include/SDL/SDL_cdrom.h \
/usr/include/SDL/SDL_cpuinfo.h /usr/include/SDL/SDL_events.h \
/usr/include/SDL/SDL_active.h /usr/include/SDL/SDL_keyboard.h \
/usr/include/SDL/SDL_keysym.h /usr/include/SDL/SDL_mouse.h \
/usr/include/SDL/SDL_video.h /usr/include/SDL/SDL_joystick.h \
/usr/include/SDL/SDL_quit.h /usr/include/SDL/SDL_loadso.h \
/usr/include/SDL/SDL_timer.h /usr/include/SDL/SDL_version.h \
../txt_button.h ../txt_widget.h ../txt_checkbox.h ../txt_desktop.h \
../txt_window.h ../txt_table.h ../txt_window_action.h ../txt_dropdown.h \
../txt_inputbox.h ../txt_label.h ../txt_radiobutton.h \
../txt_scrollpane.h ../txt_separator.h ../txt_spinctrl.h ../txt_strut.h
/usr/include/stdio.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/wordsize.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/bits/stdio.h:
/usr/include/bits/stdio2.h:
/usr/include/stdlib.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/byteswap.h:
/usr/include/xlocale.h:
/usr/include/sys/types.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib.h:
/usr/include/string.h:
/usr/include/bits/string.h:
/usr/include/bits/string2.h:
/usr/include/bits/string3.h:
../textscreen.h:
../../src/doomkeys.h:
../txt_main.h:
../txt_sdl.h:
/usr/include/SDL/SDL.h:
/usr/include/SDL/SDL_main.h:
/usr/include/SDL/SDL_stdinc.h:
/usr/include/SDL/SDL_config.h:
/usr/include/SDL/SDL_platform.h:
/usr/include/strings.h:
/usr/include/inttypes.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/ctype.h:
/usr/include/iconv.h:
/usr/include/SDL/begin_code.h:
/usr/include/SDL/close_code.h:
/usr/include/SDL/SDL_audio.h:
/usr/include/SDL/SDL_error.h:
/usr/include/SDL/SDL_endian.h:
/usr/include/SDL/SDL_mutex.h:
/usr/include/SDL/SDL_thread.h:
/usr/include/SDL/SDL_rwops.h:
/usr/include/SDL/SDL_cdrom.h:
/usr/include/SDL/SDL_cpuinfo.h:
/usr/include/SDL/SDL_events.h:
/usr/include/SDL/SDL_active.h:
/usr/include/SDL/SDL_keyboard.h:
/usr/include/SDL/SDL_keysym.h:
/usr/include/SDL/SDL_mouse.h:
/usr/include/SDL/SDL_video.h:
/usr/include/SDL/SDL_joystick.h:
/usr/include/SDL/SDL_quit.h:
/usr/include/SDL/SDL_loadso.h:
/usr/include/SDL/SDL_timer.h:
/usr/include/SDL/SDL_version.h:
../txt_button.h:
../txt_widget.h:
../txt_checkbox.h:
../txt_desktop.h:
../txt_window.h:
../txt_table.h:
../txt_window_action.h:
../txt_dropdown.h:
../txt_inputbox.h:
../txt_label.h:
../txt_radiobutton.h:
../txt_scrollpane.h:
../txt_separator.h:
../txt_spinctrl.h:
../txt_strut.h:

View File

@ -0,0 +1,220 @@
guitest.o: guitest.c /usr/include/stdio.h /usr/include/features.h \
/usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \
/usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h \
/usr/include/bits/types.h /usr/include/bits/typesizes.h \
/usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h \
/usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
/usr/include/bits/stdio.h /usr/include/bits/stdio2.h \
/usr/include/stdlib.h /usr/include/bits/waitflags.h \
/usr/include/bits/waitstatus.h /usr/include/endian.h \
/usr/include/bits/endian.h /usr/include/bits/byteswap.h \
/usr/include/xlocale.h /usr/include/sys/types.h /usr/include/time.h \
/usr/include/sys/select.h /usr/include/bits/select.h \
/usr/include/bits/sigset.h /usr/include/bits/time.h \
/usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
/usr/include/alloca.h /usr/include/bits/stdlib.h /usr/include/string.h \
/usr/include/bits/string.h /usr/include/bits/string2.h \
/usr/include/bits/string3.h ../textscreen.h ../../src/doomkeys.h \
../txt_main.h ../txt_sdl.h /usr/include/SDL/SDL.h \
/usr/include/SDL/SDL_main.h /usr/include/SDL/SDL_stdinc.h \
/usr/include/SDL/SDL_config.h /usr/include/SDL/SDL_platform.h \
/usr/include/strings.h /usr/include/inttypes.h \
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h \
/usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/ctype.h \
/usr/include/iconv.h /usr/include/SDL/begin_code.h \
/usr/include/SDL/close_code.h /usr/include/SDL/SDL_audio.h \
/usr/include/SDL/SDL_error.h /usr/include/SDL/SDL_endian.h \
/usr/include/SDL/SDL_mutex.h /usr/include/SDL/SDL_thread.h \
/usr/include/SDL/SDL_rwops.h /usr/include/SDL/SDL_cdrom.h \
/usr/include/SDL/SDL_cpuinfo.h /usr/include/SDL/SDL_events.h \
/usr/include/SDL/SDL_active.h /usr/include/SDL/SDL_keyboard.h \
/usr/include/SDL/SDL_keysym.h /usr/include/SDL/SDL_mouse.h \
/usr/include/SDL/SDL_video.h /usr/include/SDL/SDL_joystick.h \
/usr/include/SDL/SDL_quit.h /usr/include/SDL/SDL_loadso.h \
/usr/include/SDL/SDL_timer.h /usr/include/SDL/SDL_version.h \
../txt_button.h ../txt_widget.h ../txt_checkbox.h ../txt_desktop.h \
../txt_window.h ../txt_table.h ../txt_window_action.h ../txt_dropdown.h \
../txt_inputbox.h ../txt_label.h ../txt_radiobutton.h \
../txt_scrollpane.h ../txt_separator.h ../txt_spinctrl.h ../txt_strut.h
/usr/include/stdio.h:
/usr/include/features.h:
/usr/include/sys/cdefs.h:
/usr/include/bits/wordsize.h:
/usr/include/gnu/stubs.h:
/usr/include/gnu/stubs-64.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stddef.h:
/usr/include/bits/types.h:
/usr/include/bits/typesizes.h:
/usr/include/libio.h:
/usr/include/_G_config.h:
/usr/include/wchar.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdarg.h:
/usr/include/bits/stdio_lim.h:
/usr/include/bits/sys_errlist.h:
/usr/include/bits/stdio.h:
/usr/include/bits/stdio2.h:
/usr/include/stdlib.h:
/usr/include/bits/waitflags.h:
/usr/include/bits/waitstatus.h:
/usr/include/endian.h:
/usr/include/bits/endian.h:
/usr/include/bits/byteswap.h:
/usr/include/xlocale.h:
/usr/include/sys/types.h:
/usr/include/time.h:
/usr/include/sys/select.h:
/usr/include/bits/select.h:
/usr/include/bits/sigset.h:
/usr/include/bits/time.h:
/usr/include/sys/sysmacros.h:
/usr/include/bits/pthreadtypes.h:
/usr/include/alloca.h:
/usr/include/bits/stdlib.h:
/usr/include/string.h:
/usr/include/bits/string.h:
/usr/include/bits/string2.h:
/usr/include/bits/string3.h:
../textscreen.h:
../../src/doomkeys.h:
../txt_main.h:
../txt_sdl.h:
/usr/include/SDL/SDL.h:
/usr/include/SDL/SDL_main.h:
/usr/include/SDL/SDL_stdinc.h:
/usr/include/SDL/SDL_config.h:
/usr/include/SDL/SDL_platform.h:
/usr/include/strings.h:
/usr/include/inttypes.h:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/include/stdint.h:
/usr/include/stdint.h:
/usr/include/bits/wchar.h:
/usr/include/ctype.h:
/usr/include/iconv.h:
/usr/include/SDL/begin_code.h:
/usr/include/SDL/close_code.h:
/usr/include/SDL/SDL_audio.h:
/usr/include/SDL/SDL_error.h:
/usr/include/SDL/SDL_endian.h:
/usr/include/SDL/SDL_mutex.h:
/usr/include/SDL/SDL_thread.h:
/usr/include/SDL/SDL_rwops.h:
/usr/include/SDL/SDL_cdrom.h:
/usr/include/SDL/SDL_cpuinfo.h:
/usr/include/SDL/SDL_events.h:
/usr/include/SDL/SDL_active.h:
/usr/include/SDL/SDL_keyboard.h:
/usr/include/SDL/SDL_keysym.h:
/usr/include/SDL/SDL_mouse.h:
/usr/include/SDL/SDL_video.h:
/usr/include/SDL/SDL_joystick.h:
/usr/include/SDL/SDL_quit.h:
/usr/include/SDL/SDL_loadso.h:
/usr/include/SDL/SDL_timer.h:
/usr/include/SDL/SDL_version.h:
../txt_button.h:
../txt_widget.h:
../txt_checkbox.h:
../txt_desktop.h:
../txt_window.h:
../txt_table.h:
../txt_window_action.h:
../txt_dropdown.h:
../txt_inputbox.h:
../txt_label.h:
../txt_radiobutton.h:
../txt_scrollpane.h:
../txt_separator.h:
../txt_spinctrl.h:
../txt_strut.h:

View File

@ -0,0 +1,440 @@
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# textscreen/examples/Makefile. Generated from Makefile.in by configure.
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
# Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
pkgdatadir = $(datadir)/psdoom
pkgincludedir = $(includedir)/psdoom
pkglibdir = $(libdir)/psdoom
pkglibexecdir = $(libexecdir)/psdoom
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
noinst_PROGRAMS = guitest$(EXEEXT) calculator$(EXEEXT)
subdir = textscreen/examples
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
PROGRAMS = $(noinst_PROGRAMS)
am_calculator_OBJECTS = calculator.$(OBJEXT)
calculator_OBJECTS = $(am_calculator_OBJECTS)
calculator_DEPENDENCIES = ../libtextscreen.a
am_guitest_OBJECTS = guitest.$(OBJEXT)
guitest_OBJECTS = $(am_guitest_OBJECTS)
guitest_DEPENDENCIES = ../libtextscreen.a
DEFAULT_INCLUDES = -I. -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/autotools/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = $(calculator_SOURCES) $(guitest_SOURCES)
DIST_SOURCES = $(calculator_SOURCES) $(guitest_SOURCES)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = ${SHELL} /home/orson/Downloads/chocolate-doom-1.6.0/autotools/missing --run aclocal-1.11
AMTAR = ${SHELL} /home/orson/Downloads/chocolate-doom-1.6.0/autotools/missing --run tar
AUTOCONF = ${SHELL} /home/orson/Downloads/chocolate-doom-1.6.0/autotools/missing --run autoconf
AUTOHEADER = ${SHELL} /home/orson/Downloads/chocolate-doom-1.6.0/autotools/missing --run autoheader
AUTOMAKE = ${SHELL} /home/orson/Downloads/chocolate-doom-1.6.0/autotools/missing --run automake-1.11
AWK = gawk
CC = gcc
CCDEPMODE = depmode=gcc3
CFLAGS = -O2 -g -Wall -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
CPP = gcc -E
CPPFLAGS =
CYGPATH_W = echo
DEFS = -DHAVE_CONFIG_H
DEPDIR = .deps
ECHO_C =
ECHO_N = -n
ECHO_T =
EGREP = /bin/grep -E
EXEEXT =
GREP = /bin/grep
HAVE_PYTHON = true
INSTALL = /usr/bin/install -c
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_PROGRAM = ${INSTALL}
INSTALL_SCRIPT = ${INSTALL}
INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
LDFLAGS = -lSDL -lpthread
LIBOBJS =
LIBS = -lm
LTLIBOBJS =
MAKEINFO = ${SHELL} /home/orson/Downloads/chocolate-doom-1.6.0/autotools/missing --run makeinfo
MKDIR_P = /bin/mkdir -p
OBJEXT = o
PACKAGE = psdoom
PACKAGE_BUGREPORT = orsonteodoro@yahoo.com
PACKAGE_COPYRIGHT = Copyright (C) 1993-2012
PACKAGE_LICENSE = GNU General Public License, version 2
PACKAGE_MAINTAINER = Orson Teodoro
PACKAGE_NAME = psdoom
PACKAGE_SHORTDESC = psdoom-ng source port - psDooM with Chocolate Doom
PACKAGE_STRING = psdoom 2012.02.05-1.6.0
PACKAGE_TARNAME = psdoom
PACKAGE_URL = https://github.com/orsonteodoro/psdoom-ng/
PACKAGE_VERSION = 2012.02.05-1.6.0
PATH_SEPARATOR = :
PROGRAM_PREFIX = ps
RANLIB = ranlib
SDLMIXER_CFLAGS =
SDLMIXER_LIBS = -lSDL_mixer
SDLNET_CFLAGS =
SDLNET_LIBS = -lSDL_net
SDL_CFLAGS = -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
SDL_CONFIG = /usr/bin/sdl-config
SDL_LIBS = -lSDL -lpthread
SET_MAKE =
SHELL = /bin/sh
STRIP = strip
VERSION = 2012.02.05-1.6.0
WINDOWS_RC_VERSION = 2012, 02, 05-1, 6, 0, 0
WINDRES =
abs_builddir = /home/orson/Downloads/chocolate-doom-1.6.0/textscreen/examples
abs_srcdir = /home/orson/Downloads/chocolate-doom-1.6.0/textscreen/examples
abs_top_builddir = /home/orson/Downloads/chocolate-doom-1.6.0
abs_top_srcdir = /home/orson/Downloads/chocolate-doom-1.6.0
ac_aux_dir = autotools
ac_ct_CC = gcc
am__include = include
am__leading_dot = .
am__quote =
am__tar = ${AMTAR} chof - "$$tardir"
am__untar = ${AMTAR} xf -
bindir = ${exec_prefix}/bin
build_alias =
builddir = .
datadir = ${datarootdir}
datarootdir = ${prefix}/share
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
dvidir = ${docdir}
exec_prefix = ${prefix}
host_alias =
htmldir = ${docdir}
includedir = ${prefix}/include
infodir = ${datarootdir}/info
install_sh = ${SHELL} /home/orson/Downloads/chocolate-doom-1.6.0/autotools/install-sh
libdir = ${exec_prefix}/lib
libexecdir = ${exec_prefix}/libexec
localedir = ${datarootdir}/locale
localstatedir = ${prefix}/var
mandir = ${datarootdir}/man
mkdir_p = /bin/mkdir -p
oldincludedir = /usr/include
pdfdir = ${docdir}
prefix = /usr/local
program_transform_name = s,x,x,
psdir = ${docdir}
sbindir = ${exec_prefix}/sbin
sharedstatedir = ${prefix}/com
srcdir = .
sysconfdir = ${prefix}/etc
target_alias =
top_build_prefix = ../../
top_builddir = ../..
top_srcdir = ../..
AM_CFLAGS = -I.. -I../../src
guitest_LDADD = ../libtextscreen.a -lSDL -lpthread -lSDL -lpthread
guitest_SOURCES = guitest.c
calculator_LDADD = ../libtextscreen.a -lSDL -lpthread -lSDL -lpthread
calculator_SOURCES = calculator.c
all: all-am
.SUFFIXES:
.SUFFIXES: .c .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu textscreen/examples/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu textscreen/examples/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
clean-noinstPROGRAMS:
-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
calculator$(EXEEXT): $(calculator_OBJECTS) $(calculator_DEPENDENCIES)
@rm -f calculator$(EXEEXT)
$(LINK) $(calculator_OBJECTS) $(calculator_LDADD) $(LIBS)
guitest$(EXEEXT): $(guitest_OBJECTS) $(guitest_DEPENDENCIES)
@rm -f guitest$(EXEEXT)
$(LINK) $(guitest_OBJECTS) $(guitest_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
include ./$(DEPDIR)/calculator.Po
include ./$(DEPDIR)/guitest.Po
.c.o:
$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
# source='$<' object='$@' libtool=no \
# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
# $(COMPILE) -c $<
.c.obj:
$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
# source='$<' object='$@' libtool=no \
# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
# $(COMPILE) -c `$(CYGPATH_W) '$<'`
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
set x; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS)
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am:
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
clean-noinstPROGRAMS ctags distclean distclean-compile \
distclean-generic distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-pdf install-pdf-am \
install-ps install-ps-am install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -0,0 +1,11 @@
AM_CFLAGS = -I.. -I../../src
noinst_PROGRAMS=guitest calculator
guitest_LDADD = ../libtextscreen.a @LDFLAGS@ @SDL_LIBS@
guitest_SOURCES = guitest.c
calculator_LDADD = ../libtextscreen.a @LDFLAGS@ @SDL_LIBS@
calculator_SOURCES = calculator.c

View File

@ -0,0 +1,440 @@
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
# Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
noinst_PROGRAMS = guitest$(EXEEXT) calculator$(EXEEXT)
subdir = textscreen/examples
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
PROGRAMS = $(noinst_PROGRAMS)
am_calculator_OBJECTS = calculator.$(OBJEXT)
calculator_OBJECTS = $(am_calculator_OBJECTS)
calculator_DEPENDENCIES = ../libtextscreen.a
am_guitest_OBJECTS = guitest.$(OBJEXT)
guitest_OBJECTS = $(am_guitest_OBJECTS)
guitest_DEPENDENCIES = ../libtextscreen.a
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/autotools/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = $(calculator_SOURCES) $(guitest_SOURCES)
DIST_SOURCES = $(calculator_SOURCES) $(guitest_SOURCES)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
GREP = @GREP@
HAVE_PYTHON = @HAVE_PYTHON@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_COPYRIGHT = @PACKAGE_COPYRIGHT@
PACKAGE_LICENSE = @PACKAGE_LICENSE@
PACKAGE_MAINTAINER = @PACKAGE_MAINTAINER@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_SHORTDESC = @PACKAGE_SHORTDESC@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PROGRAM_PREFIX = @PROGRAM_PREFIX@
RANLIB = @RANLIB@
SDLMIXER_CFLAGS = @SDLMIXER_CFLAGS@
SDLMIXER_LIBS = @SDLMIXER_LIBS@
SDLNET_CFLAGS = @SDLNET_CFLAGS@
SDLNET_LIBS = @SDLNET_LIBS@
SDL_CFLAGS = @SDL_CFLAGS@
SDL_CONFIG = @SDL_CONFIG@
SDL_LIBS = @SDL_LIBS@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
WINDOWS_RC_VERSION = @WINDOWS_RC_VERSION@
WINDRES = @WINDRES@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_aux_dir = @ac_aux_dir@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build_alias = @build_alias@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host_alias = @host_alias@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AM_CFLAGS = -I.. -I../../src
guitest_LDADD = ../libtextscreen.a @LDFLAGS@ @SDL_LIBS@
guitest_SOURCES = guitest.c
calculator_LDADD = ../libtextscreen.a @LDFLAGS@ @SDL_LIBS@
calculator_SOURCES = calculator.c
all: all-am
.SUFFIXES:
.SUFFIXES: .c .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu textscreen/examples/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu textscreen/examples/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
clean-noinstPROGRAMS:
-test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS)
calculator$(EXEEXT): $(calculator_OBJECTS) $(calculator_DEPENDENCIES)
@rm -f calculator$(EXEEXT)
$(LINK) $(calculator_OBJECTS) $(calculator_LDADD) $(LIBS)
guitest$(EXEEXT): $(guitest_OBJECTS) $(guitest_DEPENDENCIES)
@rm -f guitest$(EXEEXT)
$(LINK) $(guitest_OBJECTS) $(guitest_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/calculator.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/guitest.Po@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
set x; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS)
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-noinstPROGRAMS mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am:
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
clean-noinstPROGRAMS ctags distclean distclean-compile \
distclean-generic distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-pdf install-pdf-am \
install-ps install-ps-am install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
uninstall-am
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -0,0 +1,189 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006-2009 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
//-----------------------------------------------------------------------------
//
// Example program: desktop calculator
//
//-----------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "textscreen.h"
typedef enum
{
OP_NONE,
OP_PLUS,
OP_MINUS,
OP_MULT,
OP_DIV,
} operator_t;
int starting_input = 0;
int input_value = 0;
txt_label_t *input_box;
int first_operand;
operator_t operator = OP_NONE;
void UpdateInputBox(void)
{
char buf[20];
sprintf(buf, " %i", input_value);
TXT_SetLabel(input_box, buf);
}
void InsertNumber(TXT_UNCAST_ARG(button), TXT_UNCAST_ARG(value))
{
TXT_CAST_ARG(int, value);
if (starting_input)
{
input_value = 0;
starting_input = 0;
}
input_value *= 10;
input_value += *value;
UpdateInputBox();
}
void AddNumberButton(txt_table_t *table, int value)
{
char buf[10];
int *val_copy;
val_copy = malloc(sizeof(int));
*val_copy = value;
sprintf(buf, " %i ", value);
TXT_AddWidget(table, TXT_NewButton2(buf, InsertNumber, val_copy));
}
void Operator(TXT_UNCAST_ARG(button), TXT_UNCAST_ARG(op))
{
TXT_CAST_ARG(operator_t, op);
first_operand = input_value;
operator = *op;
starting_input = 1;
}
void AddOperatorButton(txt_table_t *table, char *label, operator_t op)
{
char buf[10];
operator_t *op_copy;
op_copy = malloc(sizeof(operator_t));
*op_copy = op;
sprintf(buf, " %s ", label);
TXT_AddWidget(table, TXT_NewButton2(buf, Operator, op_copy));
}
void Calculate(TXT_UNCAST_ARG(button), void *unused)
{
switch (operator)
{
case OP_PLUS:
input_value = first_operand + input_value;
break;
case OP_MINUS:
input_value = first_operand - input_value;
break;
case OP_MULT:
input_value = first_operand * input_value;
break;
case OP_DIV:
input_value = first_operand / input_value;
break;
case OP_NONE:
break;
}
UpdateInputBox();
operator = OP_NONE;
starting_input = 1;
}
void BuildGUI()
{
txt_window_t *window;
txt_table_t *table;
window = TXT_NewWindow("Calculator");
input_box = TXT_NewLabel("asdf");
TXT_SetBGColor(input_box, TXT_COLOR_BLACK);
TXT_AddWidget(window, input_box);
TXT_AddWidget(window, TXT_NewSeparator(NULL));
TXT_AddWidget(window, TXT_NewStrut(0, 1));
table = TXT_NewTable(4);
TXT_AddWidget(window, table);
TXT_SetWidgetAlign(table, TXT_HORIZ_CENTER);
AddNumberButton(table, 7);
AddNumberButton(table, 8);
AddNumberButton(table, 9);
AddOperatorButton(table, "*", OP_MULT);
AddNumberButton(table, 4);
AddNumberButton(table, 5);
AddNumberButton(table, 6);
AddOperatorButton(table, "-", OP_MINUS);
AddNumberButton(table, 1);
AddNumberButton(table, 2);
AddNumberButton(table, 3);
AddOperatorButton(table, "+", OP_PLUS);
AddNumberButton(table, 0);
TXT_AddWidget(table, NULL);
TXT_AddWidget(table, TXT_NewButton2(" = ", Calculate, NULL));
AddOperatorButton(table, "/", OP_DIV);
TXT_AddWidget(window, TXT_NewStrut(0, 1));
UpdateInputBox();
}
int main(int argc, char *argv[])
{
if (!TXT_Init())
{
fprintf(stderr, "Failed to initialise GUI\n");
exit(-1);
}
TXT_SetDesktopTitle("Calculator demo");
BuildGUI();
TXT_GUIMainLoop();
TXT_Shutdown();
return 0;
}

View File

@ -0,0 +1,260 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006-2009 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
//-----------------------------------------------------------------------------
//
// Example program: GUI test program
//
// Demonstrates all the main textscreen widgets in use and shows how
// a simple textscreen program can be written.
//
//-----------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "textscreen.h"
enum
{
RADIO_VALUE_BADGER,
RADIO_VALUE_MUSHROOM,
RADIO_VALUE_SNAKE,
};
char *radio_values[] = { "Badger", "Mushroom", "Snake" };
char *textbox_value = NULL;
int numbox_value = 0;
int radiobutton_value;
txt_label_t *value_label;
txt_window_t *firstwin;
int cheesy;
void ClosePwnBox(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(window))
{
TXT_CAST_ARG(txt_window_t, window);
TXT_CloseWindow(window);
}
void PwnBox(TXT_UNCAST_ARG(widget), void *user_data)
{
txt_window_t *window;
txt_window_action_t *close_button;
window = TXT_NewWindow("Pwned!");
TXT_AddWidget(window, TXT_NewLabel(" BOOM! HEADSHOT! "));
close_button = TXT_NewWindowAction(KEY_ENTER, "Close");
TXT_SignalConnect(close_button, "pressed", ClosePwnBox, window);
TXT_SetWindowAction(window, TXT_HORIZ_LEFT, NULL);
TXT_SetWindowAction(window, TXT_HORIZ_RIGHT, close_button);
}
void UpdateLabel(TXT_UNCAST_ARG(widget), void *user_data)
{
char buf[40];
strcpy(buf, " Current value: ");
if (cheesy)
{
strcat(buf, "Cheesy ");
}
strcat(buf, radio_values[radiobutton_value]);
strcat(buf, "\n");
TXT_SetLabel(value_label, buf);
}
void CloseWindow(TXT_UNCAST_ARG(button), void *user_data)
{
TXT_CloseWindow(firstwin);
}
void SetupWindow(void)
{
txt_window_t *window;
txt_table_t *table;
txt_table_t *rightpane;
txt_checkbox_t *cheesy_checkbox;
txt_window_action_t *pwn;
txt_label_t *toplabel;
char buf[100];
int i;
window = TXT_NewWindow("Window test");
TXT_AddWidget(window, TXT_NewSeparator("Main section"));
table = TXT_NewTable(3);
toplabel = TXT_NewLabel("This is a multiline label.\n"
"A single label object contains \n"
"all three of these lines.\n");
TXT_AddWidget(window, toplabel);
TXT_SetWidgetAlign(toplabel, TXT_HORIZ_CENTER);
//TXT_AddWidget(window, TXT_NewScrollPane(15, 4, table));
TXT_AddWidget(window, table);
for (i=0; i<5; ++i)
{
sprintf(buf, "Option %i in a table:", i + 1);
TXT_AddWidget(table, TXT_NewLabel(buf));
sprintf(buf, " Button %i-1 ", i + 1);
TXT_AddWidget(table, TXT_NewButton(buf));
sprintf(buf, " Button %i-2 ", i + 1);
TXT_AddWidget(table, TXT_NewButton(buf));
}
TXT_AddWidget(window, TXT_NewStrut(0, 1));
value_label = TXT_NewLabel("");
TXT_AddWidget(window, value_label);
table = TXT_NewTable(2);
TXT_AddWidget(window, table);
TXT_SetWidgetAlign(table, TXT_HORIZ_CENTER);
cheesy_checkbox = TXT_NewCheckBox("Cheesy", &cheesy);
TXT_AddWidget(table, cheesy_checkbox);
TXT_SignalConnect(cheesy_checkbox, "changed", UpdateLabel, NULL);
rightpane = TXT_NewTable(1);
TXT_AddWidget(table, rightpane);
for (i=0; i<3; ++i)
{
txt_radiobutton_t *rbut;
rbut = TXT_NewRadioButton(radio_values[i], &radiobutton_value, i);
TXT_AddWidget(rightpane, rbut);
TXT_SignalConnect(rbut, "selected", UpdateLabel, NULL);
}
UpdateLabel(NULL, NULL);
TXT_AddWidget(window, TXT_NewButton2("Close Window", CloseWindow, NULL));
pwn = TXT_NewWindowAction(KEY_F1, "PWN!");
TXT_SetWindowAction(window, TXT_HORIZ_CENTER, pwn);
TXT_SignalConnect(pwn, "pressed", PwnBox, NULL);
firstwin = window;
}
void Window2(void)
{
txt_window_t *window;
txt_table_t *table;
txt_table_t *unselectable_table;
txt_scrollpane_t *scrollpane;
window = TXT_NewWindow("Another test");
TXT_SetWindowPosition(window,
TXT_HORIZ_RIGHT,
TXT_VERT_TOP,
TXT_SCREEN_W - 1, 1);
TXT_AddWidgets(window,
TXT_NewScrollPane(40, 1,
TXT_NewLabel("* Unselectable scroll pane *")),
unselectable_table = TXT_NewTable(1),
NULL);
TXT_AddWidget(unselectable_table, TXT_NewLabel("* Unselectable table *"));
TXT_AddWidget(window, TXT_NewSeparator("Input boxes"));
table = TXT_NewTable(2);
TXT_AddWidget(window, table);
TXT_AddWidget(table, TXT_NewLabel("String: "));
TXT_AddWidget(table, TXT_NewInputBox(&textbox_value, 20));
TXT_AddWidget(table, TXT_NewLabel("Int: "));
TXT_AddWidget(table, TXT_NewIntInputBox(&numbox_value, 10));
TXT_AddWidget(table, TXT_NewLabel("Spin control:"));
TXT_AddWidget(table, TXT_NewSpinControl(&numbox_value, 0, 15));
TXT_AddWidget(window, TXT_NewSeparator("Scroll pane test"));
scrollpane = TXT_NewScrollPane(40, 5, TXT_NewLabel(
"This is a scrollable pane. The contents\n"
"of this box are larger than the box\n"
"itself, but it can be scrolled around\n"
"to explore the full contents.\n"
"\n"
"Scrollable panes can be scrolled both\n"
"vertically and horizontally. They\n"
"can contain any widget. The scroll bars\n"
"appear automatically as needed.\n"
"\n"
"This is a very long line of text that forces a horizontal scrollbar"
));
TXT_AddWidget(window, scrollpane);
}
void ScrollingMenu(void)
{
txt_window_t *window;
txt_button_t *button;
txt_table_t *table;
window = TXT_NewWindow("Scrollable menu");
table = TXT_NewTable(1);
TXT_AddWidgets(table,
TXT_NewButton("Configure display"),
TXT_NewButton("Configure joystick"),
TXT_NewButton("Configure keyboard"),
TXT_NewButton("Configure mouse"),
TXT_NewButton("Configure sound"),
TXT_NewStrut(0, 1),
button = TXT_NewButton("Save Parameters and launch DOOM"),
TXT_NewStrut(0, 1),
TXT_NewButton("Start a network game"),
TXT_NewButton("Join a network game"),
TXT_NewButton("Multiplayer configuration"),
NULL);
TXT_SignalConnect(button, "pressed", PwnBox, NULL);
TXT_AddWidget(window, TXT_NewScrollPane(0, 6, table));
}
int main(int argc, char *argv[])
{
if (!TXT_Init())
{
fprintf(stderr, "Failed to initialise GUI\n");
exit(-1);
}
TXT_SetDesktopTitle("Not Chocolate Doom Setup");
ScrollingMenu();
Window2();
SetupWindow();
TXT_GUIMainLoop();
TXT_Shutdown();
return 0;
}

View File

@ -0,0 +1,45 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#ifndef TEXTSCREEN_H
#define TEXTSCREEN_H
#include "../src/doomkeys.h"
#include "txt_main.h"
#include "txt_button.h"
#include "txt_checkbox.h"
#include "txt_desktop.h"
#include "txt_dropdown.h"
#include "txt_inputbox.h"
#include "txt_label.h"
#include "txt_radiobutton.h"
#include "txt_scrollpane.h"
#include "txt_separator.h"
#include "txt_spinctrl.h"
#include "txt_strut.h"
#include "txt_table.h"
#include "txt_widget.h"
#include "txt_window_action.h"
#include "txt_window.h"
#endif /* #ifndef TEXTSCREEN_H */

View File

@ -0,0 +1,135 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#include <stdlib.h>
#include <string.h>
#include "doomkeys.h"
#include "txt_button.h"
#include "txt_gui.h"
#include "txt_io.h"
#include "txt_main.h"
#include "txt_window.h"
static void TXT_ButtonSizeCalc(TXT_UNCAST_ARG(button))
{
TXT_CAST_ARG(txt_button_t, button);
button->widget.w = strlen(button->label);
button->widget.h = 1;
}
static void TXT_ButtonDrawer(TXT_UNCAST_ARG(button), int selected)
{
TXT_CAST_ARG(txt_button_t, button);
int i;
int w;
w = button->widget.w;
TXT_FGColor(TXT_COLOR_BRIGHT_WHITE);
TXT_SetWidgetBG(button, selected);
TXT_DrawString(button->label);
for (i=strlen(button->label); i < w; ++i)
{
TXT_DrawString(" ");
}
}
static void TXT_ButtonDestructor(TXT_UNCAST_ARG(button))
{
TXT_CAST_ARG(txt_button_t, button);
free(button->label);
}
static int TXT_ButtonKeyPress(TXT_UNCAST_ARG(button), int key)
{
TXT_CAST_ARG(txt_button_t, button);
if (key == KEY_ENTER)
{
TXT_EmitSignal(button, "pressed");
return 1;
}
return 0;
}
static void TXT_ButtonMousePress(TXT_UNCAST_ARG(button), int x, int y, int b)
{
TXT_CAST_ARG(txt_button_t, button);
if (b == TXT_MOUSE_LEFT)
{
// Equivalent to pressing enter
TXT_ButtonKeyPress(button, KEY_ENTER);
}
}
txt_widget_class_t txt_button_class =
{
TXT_AlwaysSelectable,
TXT_ButtonSizeCalc,
TXT_ButtonDrawer,
TXT_ButtonKeyPress,
TXT_ButtonDestructor,
TXT_ButtonMousePress,
NULL,
};
void TXT_SetButtonLabel(txt_button_t *button, char *label)
{
free(button->label);
button->label = strdup(label);
}
txt_button_t *TXT_NewButton(char *label)
{
txt_button_t *button;
button = malloc(sizeof(txt_button_t));
TXT_InitWidget(button, &txt_button_class);
button->label = strdup(label);
return button;
}
// Button with a callback set automatically
txt_button_t *TXT_NewButton2(char *label, TxtWidgetSignalFunc func,
void *user_data)
{
txt_button_t *button;
button = TXT_NewButton(label);
TXT_SignalConnect(button, "pressed", func, user_data);
return button;
}

View File

@ -0,0 +1,81 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#ifndef TXT_BUTTON_H
#define TXT_BUTTON_H
/**
* @file txt_button.h
*
* Button widget.
*/
/**
* Button widget.
*
* A button is a widget that can be selected to perform some action.
* When a button is pressed, it emits the "pressed" signal.
*/
typedef struct txt_button_s txt_button_t;
#include "txt_widget.h"
struct txt_button_s
{
txt_widget_t widget;
char *label;
};
/**
* Create a new button widget.
*
* @param label The label to use on the new button.
* @return Pointer to the new button widget.
*/
txt_button_t *TXT_NewButton(char *label);
/**
* Create a new button widget, binding the "pressed" signal to a
* specified callback function.
*
* @param label The label to use on the new button.
* @param func The callback function to invoke.
* @param user_data User-specified pointer to pass to the callback.
* @return Pointer to the new button widget.
*/
txt_button_t *TXT_NewButton2(char *label, TxtWidgetSignalFunc func,
void *user_data);
/**
* Change the label used on a button.
*
* @param button The button.
* @param label The new label.
*/
void TXT_SetButtonLabel(txt_button_t *button, char *label);
#endif /* #ifndef TXT_BUTTON_H */

View File

@ -0,0 +1,148 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#include <stdlib.h>
#include <string.h>
#include "doomkeys.h"
#include "txt_checkbox.h"
#include "txt_gui.h"
#include "txt_io.h"
#include "txt_main.h"
#include "txt_window.h"
static void TXT_CheckBoxSizeCalc(TXT_UNCAST_ARG(checkbox))
{
TXT_CAST_ARG(txt_checkbox_t, checkbox);
// Minimum width is the string length + right-side space for padding
checkbox->widget.w = strlen(checkbox->label) + 5;
checkbox->widget.h = 1;
}
static void TXT_CheckBoxDrawer(TXT_UNCAST_ARG(checkbox), int selected)
{
TXT_CAST_ARG(txt_checkbox_t, checkbox);
int i;
int w;
w = checkbox->widget.w;
TXT_BGColor(TXT_WINDOW_BACKGROUND, 0);
TXT_FGColor(TXT_COLOR_BRIGHT_CYAN);
TXT_DrawString("(");
TXT_FGColor(TXT_COLOR_BRIGHT_WHITE);
if ((*checkbox->variable != 0) ^ checkbox->inverted)
{
TXT_DrawString("\x07");
}
else
{
TXT_DrawString(" ");
}
TXT_FGColor(TXT_COLOR_BRIGHT_CYAN);
TXT_DrawString(") ");
TXT_SetWidgetBG(checkbox, selected);
TXT_FGColor(TXT_COLOR_BRIGHT_WHITE);
TXT_DrawString(checkbox->label);
for (i=strlen(checkbox->label); i < w-5; ++i)
{
TXT_DrawString(" ");
}
}
static void TXT_CheckBoxDestructor(TXT_UNCAST_ARG(checkbox))
{
TXT_CAST_ARG(txt_checkbox_t, checkbox);
free(checkbox->label);
}
static int TXT_CheckBoxKeyPress(TXT_UNCAST_ARG(checkbox), int key)
{
TXT_CAST_ARG(txt_checkbox_t, checkbox);
if (key == KEY_ENTER || key == ' ')
{
*checkbox->variable = !*checkbox->variable;
TXT_EmitSignal(checkbox, "changed");
return 1;
}
return 0;
}
static void TXT_CheckBoxMousePress(TXT_UNCAST_ARG(checkbox), int x, int y, int b)
{
TXT_CAST_ARG(txt_checkbox_t, checkbox);
if (b == TXT_MOUSE_LEFT)
{
// Equivalent to pressing enter
TXT_CheckBoxKeyPress(checkbox, KEY_ENTER);
}
}
txt_widget_class_t txt_checkbox_class =
{
TXT_AlwaysSelectable,
TXT_CheckBoxSizeCalc,
TXT_CheckBoxDrawer,
TXT_CheckBoxKeyPress,
TXT_CheckBoxDestructor,
TXT_CheckBoxMousePress,
NULL,
};
txt_checkbox_t *TXT_NewCheckBox(char *label, int *variable)
{
txt_checkbox_t *checkbox;
checkbox = malloc(sizeof(txt_checkbox_t));
TXT_InitWidget(checkbox, &txt_checkbox_class);
checkbox->label = strdup(label);
checkbox->variable = variable;
checkbox->inverted = 0;
return checkbox;
}
txt_checkbox_t *TXT_NewInvertedCheckBox(char *label, int *variable)
{
txt_checkbox_t *result;
result = TXT_NewCheckBox(label, variable);
result->inverted = 1;
return result;
}

View File

@ -0,0 +1,83 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#ifndef TXT_CHECKBOX_H
#define TXT_CHECKBOX_H
/**
* @file txt_checkbox.h
*
* Checkbox widget.
*/
/**
* Checkbox widget.
*
* A checkbox is used to control boolean values that may be either on
* or off. The widget has a label that is displayed to the right of
* the checkbox indicator. The widget tracks an integer variable;
* if the variable is non-zero, the checkbox is checked, while if it
* is zero, the checkbox is unchecked. It is also possible to
* create "inverted" checkboxes where this logic is reversed.
*
* When a checkbox is changed, it emits the "changed" signal.
*/
typedef struct txt_checkbox_s txt_checkbox_t;
#include "txt_widget.h"
struct txt_checkbox_s
{
txt_widget_t widget;
char *label;
int *variable;
int inverted;
};
/**
* Create a new checkbox.
*
* @param label The label for the new checkbox.
* @param variable Pointer to the variable containing this checkbox's
* value.
* @return Pointer to the new checkbox.
*/
txt_checkbox_t *TXT_NewCheckBox(char *label, int *variable);
/**
* Create a new inverted checkbox.
*
* An inverted checkbox displays the opposite of a normal checkbox;
* where it would be checked, it appears unchecked, and vice-versa.
*
* @param label The label for the new checkbox.
* @param variable Pointer to the variable containing this checkbox's
* value.
* @return Pointer to the new checkbox.
*/
txt_checkbox_t *TXT_NewInvertedCheckBox(char *label, int *variable);
#endif /* #ifndef TXT_CHECKBOX_H */

View File

@ -0,0 +1,220 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "doomkeys.h"
#include "txt_desktop.h"
#include "txt_gui.h"
#include "txt_io.h"
#include "txt_main.h"
#include "txt_separator.h"
#include "txt_window.h"
#define MAXWINDOWS 128
static char *desktop_title;
static txt_window_t *all_windows[MAXWINDOWS];
static int num_windows = 0;
static int main_loop_running = 0;
void TXT_AddDesktopWindow(txt_window_t *win)
{
all_windows[num_windows] = win;
++num_windows;
}
void TXT_RemoveDesktopWindow(txt_window_t *win)
{
int from, to;
for (from=0, to=0; from<num_windows; ++from)
{
if (all_windows[from] != win)
{
all_windows[to] = all_windows[from];
++to;
}
}
num_windows = to;
}
txt_window_t *TXT_GetActiveWindow(void)
{
if (num_windows == 0)
{
return NULL;
}
return all_windows[num_windows - 1];
}
static void DrawDesktopBackground(const char *title)
{
int i;
unsigned char *screendata;
unsigned char *p;
screendata = TXT_GetScreenData();
// Fill the screen with gradient characters
p = screendata;
for (i=0; i<TXT_SCREEN_W * TXT_SCREEN_H; ++i)
{
*p++ = 0xb1;
*p++ = TXT_COLOR_GREY | (TXT_COLOR_BLUE << 4);
}
// Draw the top and bottom banners
p = screendata;
for (i=0; i<TXT_SCREEN_W; ++i)
{
*p++ = ' ';
*p++ = TXT_COLOR_BLACK | (TXT_COLOR_GREY << 4);
}
p = screendata + (TXT_SCREEN_H - 1) * TXT_SCREEN_W * 2;
for (i=0; i<TXT_SCREEN_W; ++i)
{
*p++ = ' ';
*p++ = TXT_COLOR_BLACK | (TXT_COLOR_GREY << 4);
}
// Print the title
TXT_GotoXY(0, 0);
TXT_FGColor(TXT_COLOR_BLACK);
TXT_BGColor(TXT_COLOR_GREY, 0);
TXT_PutChar(' ');
TXT_Puts(title);
}
void TXT_SetDesktopTitle(char *title)
{
free(desktop_title);
desktop_title = strdup(title);
TXT_SetWindowTitle(title);
}
void TXT_DrawDesktop(void)
{
int i;
const char *title;
TXT_InitClipArea();
if (desktop_title == NULL)
title = "";
else
title = desktop_title;
DrawDesktopBackground(title);
for (i=0; i<num_windows; ++i)
{
TXT_DrawWindow(all_windows[i], i == num_windows - 1);
}
TXT_UpdateScreen();
}
void TXT_DispatchEvents(void)
{
int c;
while ((c = TXT_GetChar()) > 0)
{
if (num_windows > 0)
{
// Send the keypress to the top window
TXT_WindowKeyPress(all_windows[num_windows - 1], c);
}
}
}
void TXT_ExitMainLoop(void)
{
main_loop_running = 0;
}
void TXT_DrawASCIITable(void)
{
unsigned char *screendata;
char buf[10];
int x, y;
int n;
screendata = TXT_GetScreenData();
TXT_FGColor(TXT_COLOR_BRIGHT_WHITE);
TXT_BGColor(TXT_COLOR_BLACK, 0);
for (y=0; y<16; ++y)
{
for (x=0; x<16; ++x)
{
n = y * 16 + x;
TXT_GotoXY(x * 5, y);
sprintf(buf, "%02x ", n);
TXT_Puts(buf);
// Write the character directly to the screen memory buffer:
screendata[(y * TXT_SCREEN_W + x * 5 + 3) * 2] = n;
}
}
TXT_UpdateScreen();
}
void TXT_GUIMainLoop(void)
{
main_loop_running = 1;
while (main_loop_running)
{
TXT_DispatchEvents();
// After the last window is closed, exit the loop
if (num_windows <= 0)
{
TXT_ExitMainLoop();
}
TXT_DrawDesktop();
// TXT_DrawASCIITable();
TXT_Sleep(0);
}
}

View File

@ -0,0 +1,77 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#ifndef TXT_DESKTOP_H
#define TXT_DESKTOP_H
/**
* @file txt_desktop.h
*
* Textscreen desktop.
*/
#include "txt_window.h"
void TXT_AddDesktopWindow(txt_window_t *win);
void TXT_RemoveDesktopWindow(txt_window_t *win);
void TXT_DrawDesktop(void);
void TXT_DispatchEvents(void);
void TXT_DrawWindow(txt_window_t *window, int selected);
void TXT_WindowKeyPress(txt_window_t *window, int c);
/**
* Set the title displayed at the top of the screen.
*
* @param title The title to display.
*/
void TXT_SetDesktopTitle(char *title);
/**
* Exit the currently-running main loop and return from the
* @ref TXT_GUIMainLoop function.
*/
void TXT_ExitMainLoop(void);
/**
* Start the main event loop. At least one window must have been
* opened prior to running this function. When no windows are left
* open, the event loop exits.
*
* It is possible to trigger an exit from this function using the
* @ref TXT_ExitMainLoop function.
*/
void TXT_GUIMainLoop(void);
/**
* Get the top window on the desktop that is currently receiving
* inputs.
*
* @return The active window, or NULL if no windows are present.
*/
txt_window_t *TXT_GetActiveWindow(void);
#endif /* #ifndef TXT_DESKTOP_H */

View File

@ -0,0 +1,297 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#include <stdlib.h>
#include <string.h>
#include "doomkeys.h"
#include "txt_button.h"
#include "txt_dropdown.h"
#include "txt_gui.h"
#include "txt_io.h"
#include "txt_main.h"
#include "txt_window.h"
typedef struct
{
txt_window_t *window;
txt_dropdown_list_t *list;
int item;
} callback_data_t;
// Check if the selected value for a list is valid
static int ValidSelection(txt_dropdown_list_t *list)
{
return *list->variable >= 0 && *list->variable < list->num_values;
}
// Calculate the Y position for the selector window
static int SelectorWindowY(txt_dropdown_list_t *list)
{
if (ValidSelection(list))
{
return list->widget.y - 1 - *list->variable;
}
else
{
return list->widget.y - 1 - (list->num_values / 2);
}
}
// Called when a button in the selector window is pressed
static void ItemSelected(TXT_UNCAST_ARG(button), TXT_UNCAST_ARG(callback_data))
{
TXT_CAST_ARG(callback_data_t, callback_data);
// Set the variable
*callback_data->list->variable = callback_data->item;
TXT_EmitSignal(callback_data->list, "changed");
// Close the window
TXT_CloseWindow(callback_data->window);
}
// Free callback data when the window is closed
static void FreeCallbackData(TXT_UNCAST_ARG(list),
TXT_UNCAST_ARG(callback_data))
{
TXT_CAST_ARG(callback_data_t, callback_data);
free(callback_data);
}
// Catch presses of escape and close the window.
static int SelectorWindowListener(txt_window_t *window, int key, void *user_data)
{
if (key == KEY_ESCAPE)
{
TXT_CloseWindow(window);
return 1;
}
return 0;
}
static int SelectorMouseListener(txt_window_t *window, int x, int y, int b,
void *unused)
{
txt_widget_t *win;
win = (txt_widget_t *) window;
if (x < win->x || x > win->x + win->w || y < win->y || y > win->y + win->h)
{
TXT_CloseWindow(window);
return 1;
}
return 0;
}
// Open the dropdown list window to select an item
static void OpenSelectorWindow(txt_dropdown_list_t *list)
{
txt_window_t *window;
int i;
// Open a simple window with no title bar or action buttons.
window = TXT_NewWindow(NULL);
TXT_SetWindowAction(window, TXT_HORIZ_LEFT, NULL);
TXT_SetWindowAction(window, TXT_HORIZ_CENTER, NULL);
TXT_SetWindowAction(window, TXT_HORIZ_RIGHT, NULL);
// Position the window so that the currently selected item appears
// over the top of the list widget.
TXT_SetWindowPosition(window, TXT_HORIZ_LEFT, TXT_VERT_TOP,
list->widget.x - 2, SelectorWindowY(list));
// Add a button to the window for each option in the list.
for (i=0; i<list->num_values; ++i)
{
txt_button_t *button;
callback_data_t *data;
button = TXT_NewButton(list->values[i]);
TXT_AddWidget(window, button);
// Callback struct
data = malloc(sizeof(callback_data_t));
data->list = list;
data->window = window;
data->item = i;
// When the button is pressed, invoke the button press callback
TXT_SignalConnect(button, "pressed", ItemSelected, data);
// When the window is closed, free back the callback struct
TXT_SignalConnect(window, "closed", FreeCallbackData, data);
// Is this the currently-selected value? If so, select the button
// in the window as the default.
if (i == *list->variable)
{
TXT_SelectWidget(window, button);
}
}
// Catch presses of escape in this window and close it.
TXT_SetKeyListener(window, SelectorWindowListener, NULL);
TXT_SetMouseListener(window, SelectorMouseListener, NULL);
}
static int DropdownListWidth(txt_dropdown_list_t *list)
{
int i;
int result;
// Find the maximum string width
result = 0;
for (i=0; i<list->num_values; ++i)
{
int w = strlen(list->values[i]);
if (w > result)
{
result = w;
}
}
return result;
}
static void TXT_DropdownListSizeCalc(TXT_UNCAST_ARG(list))
{
TXT_CAST_ARG(txt_dropdown_list_t, list);
list->widget.w = DropdownListWidth(list);
list->widget.h = 1;
}
static void TXT_DropdownListDrawer(TXT_UNCAST_ARG(list), int selected)
{
TXT_CAST_ARG(txt_dropdown_list_t, list);
unsigned int i;
const char *str;
// Set bg/fg text colors.
TXT_SetWidgetBG(list, selected);
TXT_FGColor(TXT_COLOR_BRIGHT_WHITE);
// Select a string to draw from the list, if the current value is
// in range. Otherwise fall back to a default.
if (ValidSelection(list))
{
str = list->values[*list->variable];
}
else
{
str = "???";
}
// Draw the string and fill to the end with spaces
TXT_DrawString(str);
for (i=strlen(str); i<list->widget.w; ++i)
{
TXT_DrawString(" ");
}
}
static void TXT_DropdownListDestructor(TXT_UNCAST_ARG(list))
{
}
static int TXT_DropdownListKeyPress(TXT_UNCAST_ARG(list), int key)
{
TXT_CAST_ARG(txt_dropdown_list_t, list);
if (key == KEY_ENTER)
{
OpenSelectorWindow(list);
return 1;
}
return 0;
}
static void TXT_DropdownListMousePress(TXT_UNCAST_ARG(list),
int x, int y, int b)
{
TXT_CAST_ARG(txt_dropdown_list_t, list);
// Left mouse click does the same as selecting and pressing enter
if (b == TXT_MOUSE_LEFT)
{
TXT_DropdownListKeyPress(list, KEY_ENTER);
}
}
txt_widget_class_t txt_dropdown_list_class =
{
TXT_AlwaysSelectable,
TXT_DropdownListSizeCalc,
TXT_DropdownListDrawer,
TXT_DropdownListKeyPress,
TXT_DropdownListDestructor,
TXT_DropdownListMousePress,
NULL,
};
txt_dropdown_list_t *TXT_NewDropdownList(int *variable, char **values,
int num_values)
{
txt_dropdown_list_t *list;
list = malloc(sizeof(txt_dropdown_list_t));
TXT_InitWidget(list, &txt_dropdown_list_class);
list->variable = variable;
list->values = values;
list->num_values = num_values;
return list;
}

View File

@ -0,0 +1,76 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#ifndef TXT_DROPDOWN_H
#define TXT_DROPDOWN_H
/**
* @file txt_dropdown.h
*
* Dropdown list widget.
*/
/**
* Dropdown list widget.
*
* A dropdown list allows the user to select from a list of values,
* which appears when the list is selected.
*
* When the value of a dropdown list is changed, the "changed" signal
* is emitted.
*/
typedef struct txt_dropdown_list_s txt_dropdown_list_t;
#include "txt_widget.h"
//
// Drop-down list box.
//
struct txt_dropdown_list_s
{
txt_widget_t widget;
int *variable;
char **values;
int num_values;
};
/**
* Create a new dropdown list widget.
*
* The parameters specify a list of string labels, and a pointer to an
* integer variable. The variable contains the current "value" of the
* list, as an index within the list of labels.
*
* @param variable Pointer to the variable containing the
* list's value.
* @param values Pointer to an array of strings containing
* the labels to use for the list.
* @param num_values The number of variables in the list.
*/
txt_dropdown_list_t *TXT_NewDropdownList(int *variable,
char **values, int num_values);
#endif /* #ifndef TXT_DROPDOWN_H */

View File

@ -0,0 +1,555 @@
// Emacs style mode select -*- C++ -*-
//---------------------------------------------------------------------------
//
// Copyright(C) 2005,2006 Simon Howard
// Copyright (C) 2002-2004 The DOSBox Team
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
//---------------------------------------------------------------------------
//
// VGA font data
// Font data is from the DOSBox project (http://dosbox.sourceforge.net/)
//
//---------------------------------------------------------------------------
#ifndef __FONT_H__
#define __FONT_H__
static unsigned char main_font_data[] =
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7e, 0x81, 0xa5, 0x81, 0x81, 0xbd,
0x99, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7e, 0xff, 0xdb, 0xff, 0xff, 0xc3,
0xe7, 0xff, 0xff, 0x7e, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x6c, 0xfe, 0xfe, 0xfe,
0xfe, 0x7c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x7c, 0xfe,
0x7c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0xe7, 0xe7,
0xe7, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff,
0x7e, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c,
0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xc3,
0xc3, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x42,
0x42, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x99, 0xbd,
0xbd, 0x99, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x1e, 0x0e, 0x1a, 0x32, 0x78, 0xcc,
0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c,
0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3f, 0x33, 0x3f, 0x30, 0x30, 0x30,
0x30, 0x70, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7f, 0x63, 0x7f, 0x63, 0x63, 0x63,
0x63, 0x67, 0xe7, 0xe6, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x18, 0x18, 0xdb, 0x3c, 0xe7,
0x3c, 0xdb, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfe, 0xf8,
0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x02, 0x06, 0x0e, 0x1e, 0x3e, 0xfe, 0x3e,
0x1e, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18,
0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66,
0x66, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7f, 0xdb, 0xdb, 0xdb, 0x7b, 0x1b,
0x1b, 0x1b, 0x1b, 0x1b, 0x00, 0x00, 0x00, 0x00,
0x00, 0x7c, 0xc6, 0x60, 0x38, 0x6c, 0xc6, 0xc6,
0x6c, 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18,
0x7e, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18,
0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0xfe,
0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0xfe,
0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0,
0xc0, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x66, 0xff,
0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x38, 0x7c,
0x7c, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x7c, 0x7c,
0x38, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x18,
0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
0x00, 0x66, 0x66, 0x66, 0x24, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c,
0x6c, 0xfe, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00,
0x18, 0x18, 0x7c, 0xc6, 0xc2, 0xc0, 0x7c, 0x06,
0x06, 0x86, 0xc6, 0x7c, 0x18, 0x18, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xc2, 0xc6, 0x0c, 0x18,
0x30, 0x60, 0xc6, 0x86, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x76, 0xdc,
0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
0x00, 0x30, 0x30, 0x30, 0x60, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30,
0x30, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x0c,
0x0c, 0x0c, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3c, 0xff,
0x3c, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e,
0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0c, 0x18,
0x30, 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3c, 0x66, 0xc3, 0xc3, 0xdb, 0xdb,
0xc3, 0xc3, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x18, 0x38, 0x78, 0x18, 0x18, 0x18,
0x18, 0x18, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7c, 0xc6, 0x06, 0x0c, 0x18, 0x30,
0x60, 0xc0, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0x3c, 0x06,
0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0c, 0x1c, 0x3c, 0x6c, 0xcc, 0xfe,
0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xfc, 0x06,
0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x38, 0x60, 0xc0, 0xc0, 0xfc, 0xc6,
0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xfe, 0xc6, 0x06, 0x06, 0x0c, 0x18,
0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0xc6,
0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7e, 0x06,
0x06, 0x06, 0x0c, 0x78, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00,
0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00,
0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x06, 0x0c, 0x18, 0x30, 0x60,
0x30, 0x18, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00,
0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x0c, 0x06,
0x0c, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x0c, 0x18, 0x18,
0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xde, 0xde,
0xde, 0xdc, 0xc0, 0x7c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6, 0xfe,
0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x66,
0x66, 0x66, 0x66, 0xfc, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0,
0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xf8, 0x6c, 0x66, 0x66, 0x66, 0x66,
0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68,
0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68,
0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xde,
0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6,
0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18,
0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78,
0x6c, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60,
0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xc3, 0xe7, 0xff, 0xff, 0xdb, 0xc3,
0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce,
0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x60,
0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
0xc6, 0xd6, 0xde, 0x7c, 0x0c, 0x0e, 0x00, 0x00,
0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c,
0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x60, 0x38, 0x0c,
0x06, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xff, 0xdb, 0x99, 0x18, 0x18, 0x18,
0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3,
0xc3, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xdb,
0xdb, 0xff, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xc3, 0xc3, 0x66, 0x3c, 0x18, 0x18,
0x3c, 0x66, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xc3, 0xc3, 0xc3, 0x66, 0x3c, 0x18,
0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xff, 0xc3, 0x86, 0x0c, 0x18, 0x30,
0x60, 0xc1, 0xc3, 0xff, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30,
0x30, 0x30, 0x30, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x70, 0x38,
0x1c, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
0x0c, 0x0c, 0x0c, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x10, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x7c,
0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xe0, 0x60, 0x60, 0x78, 0x6c, 0x66,
0x66, 0x66, 0x66, 0x7c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0,
0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc,
0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xfe,
0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x38, 0x6c, 0x64, 0x60, 0xf0, 0x60,
0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc,
0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00,
0x00, 0x00, 0xe0, 0x60, 0x60, 0x6c, 0x76, 0x66,
0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18,
0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x06, 0x06, 0x00, 0x0e, 0x06, 0x06,
0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x00,
0x00, 0x00, 0xe0, 0x60, 0x60, 0x66, 0x6c, 0x78,
0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18,
0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0xff, 0xdb,
0xdb, 0xdb, 0xdb, 0xdb, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66,
0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6,
0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66,
0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc,
0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x1e, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66,
0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x60,
0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x10, 0x30, 0x30, 0xfc, 0x30, 0x30,
0x30, 0x30, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc,
0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3, 0xc3,
0xc3, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3, 0xc3,
0xdb, 0xdb, 0xff, 0x66, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x66, 0x3c,
0x18, 0x3c, 0x66, 0xc3, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6,
0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xcc, 0x18,
0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0e, 0x18, 0x18, 0x18, 0x70, 0x18,
0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18,
0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x0e, 0x18,
0x18, 0x18, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6,
0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0,
0xc2, 0x66, 0x3c, 0x0c, 0x06, 0x7c, 0x00, 0x00,
0x00, 0x00, 0xcc, 0x00, 0x00, 0xcc, 0xcc, 0xcc,
0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0c, 0x18, 0x30, 0x00, 0x7c, 0xc6, 0xfe,
0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x10, 0x38, 0x6c, 0x00, 0x78, 0x0c, 0x7c,
0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xcc, 0x00, 0x00, 0x78, 0x0c, 0x7c,
0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
0x00, 0x60, 0x30, 0x18, 0x00, 0x78, 0x0c, 0x7c,
0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
0x00, 0x38, 0x6c, 0x38, 0x00, 0x78, 0x0c, 0x7c,
0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x60, 0x60,
0x66, 0x3c, 0x0c, 0x06, 0x3c, 0x00, 0x00, 0x00,
0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xfe,
0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xc6, 0x00, 0x00, 0x7c, 0xc6, 0xfe,
0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x60, 0x30, 0x18, 0x00, 0x7c, 0xc6, 0xfe,
0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x66, 0x00, 0x00, 0x38, 0x18, 0x18,
0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x18, 0x3c, 0x66, 0x00, 0x38, 0x18, 0x18,
0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x60, 0x30, 0x18, 0x00, 0x38, 0x18, 0x18,
0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x00, 0xc6, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6,
0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
0x38, 0x6c, 0x38, 0x00, 0x38, 0x6c, 0xc6, 0xc6,
0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
0x18, 0x30, 0x60, 0x00, 0xfe, 0x66, 0x60, 0x7c,
0x60, 0x60, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x3b, 0x1b,
0x7e, 0xd8, 0xdc, 0x77, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3e, 0x6c, 0xcc, 0xcc, 0xfe, 0xcc,
0xcc, 0xcc, 0xcc, 0xce, 0x00, 0x00, 0x00, 0x00,
0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xc6,
0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xc6, 0x00, 0x00, 0x7c, 0xc6, 0xc6,
0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x60, 0x30, 0x18, 0x00, 0x7c, 0xc6, 0xc6,
0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x30, 0x78, 0xcc, 0x00, 0xcc, 0xcc, 0xcc,
0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
0x00, 0x60, 0x30, 0x18, 0x00, 0xcc, 0xcc, 0xcc,
0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xc6, 0x00, 0x00, 0xc6, 0xc6, 0xc6,
0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0x78, 0x00,
0x00, 0xc6, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6,
0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
0x00, 0xc6, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x18, 0x18, 0x7e, 0xc3, 0xc0, 0xc0, 0xc0,
0xc3, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
0x00, 0x38, 0x6c, 0x64, 0x60, 0xf0, 0x60, 0x60,
0x60, 0x60, 0xe6, 0xfc, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xc3, 0x66, 0x3c, 0x18, 0xff, 0x18,
0xff, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
0x00, 0xfc, 0x66, 0x66, 0x7c, 0x62, 0x66, 0x6f,
0x66, 0x66, 0x66, 0xf3, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0e, 0x1b, 0x18, 0x18, 0x18, 0x7e, 0x18,
0x18, 0x18, 0x18, 0x18, 0xd8, 0x70, 0x00, 0x00,
0x00, 0x18, 0x30, 0x60, 0x00, 0x78, 0x0c, 0x7c,
0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0c, 0x18, 0x30, 0x00, 0x38, 0x18, 0x18,
0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x18, 0x30, 0x60, 0x00, 0x7c, 0xc6, 0xc6,
0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x18, 0x30, 0x60, 0x00, 0xcc, 0xcc, 0xcc,
0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x76, 0xdc, 0x00, 0xdc, 0x66, 0x66,
0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00,
0x76, 0xdc, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde,
0xce, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
0x00, 0x3c, 0x6c, 0x6c, 0x3e, 0x00, 0x7e, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x7c, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x60,
0xc0, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc0,
0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06,
0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xc0, 0xc0, 0xc2, 0xc6, 0xcc, 0x18, 0x30,
0x60, 0xce, 0x9b, 0x06, 0x0c, 0x1f, 0x00, 0x00,
0x00, 0xc0, 0xc0, 0xc2, 0xc6, 0xcc, 0x18, 0x30,
0x66, 0xce, 0x96, 0x3e, 0x06, 0x06, 0x00, 0x00,
0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18,
0x3c, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x6c, 0xd8,
0x6c, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x6c, 0x36,
0x6c, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44,
0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44,
0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa,
0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa,
0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77,
0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xf6,
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0xf8,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x06, 0xf6,
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0xf6,
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
0x36, 0x36, 0x36, 0x36, 0x36, 0xf6, 0x06, 0xfe,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xfe,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37,
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x3f,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x30, 0x37,
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
0x36, 0x36, 0x36, 0x36, 0x36, 0xf7, 0x00, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xf7,
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x37,
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x36, 0x36, 0x36, 0x36, 0x36, 0xf7, 0x00, 0xf7,
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x3f,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x1f,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f,
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xff,
0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0xff,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0xd8,
0xd8, 0xd8, 0xdc, 0x76, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x78, 0xcc, 0xcc, 0xcc, 0xd8, 0xcc,
0xc6, 0xc6, 0xc6, 0xcc, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xfe, 0xc6, 0xc6, 0xc0, 0xc0, 0xc0,
0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xfe, 0x6c, 0x6c, 0x6c,
0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xfe, 0xc6, 0x60, 0x30, 0x18,
0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xd8, 0xd8,
0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66,
0x66, 0x7c, 0x60, 0x60, 0xc0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x18, 0x18,
0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x7e, 0x18, 0x3c, 0x66, 0x66,
0x66, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xfe,
0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0x6c,
0x6c, 0x6c, 0x6c, 0xee, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x1e, 0x30, 0x18, 0x0c, 0x3e, 0x66,
0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xdb, 0xdb,
0xdb, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0x06, 0x7e, 0xdb, 0xdb,
0xf3, 0x7e, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x1c, 0x30, 0x60, 0x60, 0x7c, 0x60,
0x60, 0x60, 0x30, 0x1c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6,
0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe,
0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18,
0x18, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x30, 0x18, 0x0c, 0x06, 0x0c,
0x18, 0x30, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x60, 0x30,
0x18, 0x0c, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0e, 0x1b, 0x1b, 0x18, 0x18, 0x18,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x7e,
0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x00,
0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xec,
0x6c, 0x6c, 0x3c, 0x1c, 0x00, 0x00, 0x00, 0x00,
0x00, 0xd8, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x70, 0xd8, 0x30, 0x60, 0xc8, 0xf8, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7c, 0x7c, 0x7c, 0x7c,
0x7c, 0x7c, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
static txt_font_t main_font =
{
main_font_data,
8, // width
16 // height
};
#endif /* __FONT_H__ */

View File

@ -0,0 +1,410 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2005,2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#include <stdlib.h>
#include <string.h>
#include "txt_gui.h"
#include "txt_io.h"
#include "txt_main.h"
typedef struct txt_cliparea_s txt_cliparea_t;
struct txt_cliparea_s
{
int x1, x2;
int y1, y2;
txt_cliparea_t *next;
};
// Array of border characters for drawing windows. The array looks like this:
//
// +-++
// | ||
// +-++
// +-++
static const int borders[4][4] =
{
{0xda, 0xc4, 0xc2, 0xbf},
{0xb3, ' ', 0xb3, 0xb3},
{0xc3, 0xc4, 0xc5, 0xb4},
{0xc0, 0xc4, 0xc1, 0xd9},
};
static txt_cliparea_t *cliparea = NULL;
#define VALID_X(x) ((x) >= cliparea->x1 && (x) < cliparea->x2)
#define VALID_Y(y) ((y) >= cliparea->y1 && (y) < cliparea->y2)
void TXT_DrawDesktopBackground(const char *title)
{
int i;
unsigned char *screendata;
unsigned char *p;
screendata = TXT_GetScreenData();
// Fill the screen with gradient characters
p = screendata;
for (i=0; i<TXT_SCREEN_W * TXT_SCREEN_H; ++i)
{
*p++ = 0xb1;
*p++ = TXT_COLOR_GREY | (TXT_COLOR_BLUE << 4);
}
// Draw the top and bottom banners
p = screendata;
for (i=0; i<TXT_SCREEN_W; ++i)
{
*p++ = ' ';
*p++ = TXT_COLOR_BLACK | (TXT_COLOR_GREY << 4);
}
p = screendata + (TXT_SCREEN_H - 1) * TXT_SCREEN_W * 2;
for (i=0; i<TXT_SCREEN_W; ++i)
{
*p++ = ' ';
*p++ = TXT_COLOR_BLACK | (TXT_COLOR_GREY << 4);
}
// Print the title
TXT_GotoXY(0, 0);
TXT_FGColor(TXT_COLOR_BLACK);
TXT_BGColor(TXT_COLOR_GREY, 0);
TXT_DrawString(" ");
TXT_DrawString(title);
}
void TXT_DrawShadow(int x, int y, int w, int h)
{
unsigned char *screendata;
unsigned char *p;
int x1, y1;
screendata = TXT_GetScreenData();
for (y1=y; y1<y+h; ++y1)
{
p = screendata + (y1 * TXT_SCREEN_W + x) * 2;
for (x1=x; x1<x+w; ++x1)
{
if (VALID_X(x1) && VALID_Y(y1))
{
p[1] = TXT_COLOR_DARK_GREY;
}
p += 2;
}
}
}
void TXT_DrawWindowFrame(const char *title, int x, int y, int w, int h)
{
int x1, y1;
int bx, by;
TXT_FGColor(TXT_COLOR_BRIGHT_CYAN);
TXT_BGColor(TXT_WINDOW_BACKGROUND, 0);
for (y1=y; y1<y+h; ++y1)
{
// Select the appropriate row and column in the borders
// array to pick the appropriate character to draw at
// this location.
//
// Draw a horizontal line on the third line down, so we
// draw a box around the title.
by = y1 == y ? 0 :
y1 == y + 2 && title != NULL ? 2 :
y1 == y + h - 1 ? 3 : 1;
for (x1=x; x1<x+w; ++x1)
{
bx = x1 == x ? 0 :
x1 == x + w - 1 ? 3 : 1;
if (VALID_X(x1) && VALID_Y(y1))
{
TXT_GotoXY(x1, y1);
TXT_PutChar(borders[by][bx]);
}
}
}
// Draw the title
if (title != NULL)
{
TXT_GotoXY(x + 1, y + 1);
TXT_BGColor(TXT_COLOR_GREY, 0);
TXT_FGColor(TXT_COLOR_BLUE);
for (x1=0; x1<w-2; ++x1)
{
TXT_DrawString(" ");
}
TXT_GotoXY(x + (w - strlen(title)) / 2, y + 1);
TXT_DrawString(title);
}
// Draw the window's shadow.
TXT_DrawShadow(x + 2, y + h, w, 1);
TXT_DrawShadow(x + w, y + 1, 2, h);
}
void TXT_DrawSeparator(int x, int y, int w)
{
unsigned char *data;
int x1;
int b;
data = TXT_GetScreenData();
TXT_FGColor(TXT_COLOR_BRIGHT_CYAN);
TXT_BGColor(TXT_WINDOW_BACKGROUND, 0);
if (!VALID_Y(y))
{
return;
}
data += (y * TXT_SCREEN_W + x) * 2;
for (x1=x; x1<x+w; ++x1)
{
TXT_GotoXY(x1, y);
b = x1 == x ? 0 :
x1 == x + w - 1 ? 3 :
1;
if (VALID_X(x1))
{
// Read the current value from the screen
// Check that it matches what the window should look like if
// there is no separator, then apply the separator
if (*data == borders[1][b])
{
TXT_PutChar(borders[2][b]);
}
}
data += 2;
}
}
void TXT_DrawString(const char *s)
{
int x, y;
int x1;
const char *p;
TXT_GetXY(&x, &y);
if (VALID_Y(y))
{
x1 = x;
for (p = s; *p != '\0'; ++p)
{
if (VALID_X(x1))
{
TXT_GotoXY(x1, y);
TXT_PutChar(*p);
}
x1 += 1;
}
}
TXT_GotoXY(x + strlen(s), y);
}
void TXT_DrawHorizScrollbar(int x, int y, int w, int cursor, int range)
{
int x1;
int cursor_x;
if (!VALID_Y(y))
{
return;
}
TXT_FGColor(TXT_COLOR_BLACK);
TXT_BGColor(TXT_COLOR_GREY, 0);
TXT_GotoXY(x, y);
TXT_PutChar('\x1b');
cursor_x = x + 1;
if (range > 1)
{
cursor_x += (cursor * (w - 3)) / (range - 1);
}
if (cursor_x > x + w - 2)
{
cursor_x = x + w - 2;
}
for (x1=x+1; x1<x+w-1; ++x1)
{
if (VALID_X(x1))
{
if (x1 == cursor_x)
{
TXT_PutChar('\xdb');
}
else
{
TXT_PutChar('\xb1');
}
}
}
TXT_PutChar('\x1a');
}
void TXT_DrawVertScrollbar(int x, int y, int h, int cursor, int range)
{
int y1;
int cursor_y;
if (!VALID_X(x))
{
return;
}
TXT_FGColor(TXT_COLOR_BLACK);
TXT_BGColor(TXT_COLOR_GREY, 0);
TXT_GotoXY(x, y);
TXT_PutChar('\x18');
cursor_y = y + 1;
if (cursor_y > y + h - 2)
{
cursor_y = y + h - 2;
}
if (range > 1)
{
cursor_y += (cursor * (h - 3)) / (range - 1);
}
for (y1=y+1; y1<y+h-1; ++y1)
{
if (VALID_Y(y1))
{
TXT_GotoXY(x, y1);
if (y1 == cursor_y)
{
TXT_PutChar('\xdb');
}
else
{
TXT_PutChar('\xb1');
}
}
}
TXT_GotoXY(x, y + h - 1);
TXT_PutChar('\x19');
}
void TXT_InitClipArea(void)
{
if (cliparea == NULL)
{
cliparea = malloc(sizeof(txt_cliparea_t));
cliparea->x1 = 0;
cliparea->x2 = TXT_SCREEN_W;
cliparea->y1 = 1;
cliparea->y2 = TXT_SCREEN_H - 1;
cliparea->next = NULL;
}
}
void TXT_PushClipArea(int x1, int x2, int y1, int y2)
{
txt_cliparea_t *newarea;
newarea = malloc(sizeof(txt_cliparea_t));
// Set the new clip area to the intersection of the old
// area and the new one.
newarea->x1 = cliparea->x1;
newarea->x2 = cliparea->x2;
newarea->y1 = cliparea->y1;
newarea->y2 = cliparea->y2;
if (x1 > newarea->x1)
newarea->x1 = x1;
if (x2 < newarea->x2)
newarea->x2 = x2;
if (y1 > newarea->y1)
newarea->y1 = y1;
if (y2 < newarea->y2)
newarea->y2 = y2;
#if 0
printf("New scrollable area: %i,%i-%i,%i\n", x1, y1, x2, y2);
#endif
// Hook into the list
newarea->next = cliparea;
cliparea = newarea;
}
void TXT_PopClipArea(void)
{
txt_cliparea_t *next_cliparea;
// Never pop the last entry
if (cliparea->next == NULL)
return;
// Unlink the last entry and delete
next_cliparea = cliparea->next;
free(cliparea);
cliparea = next_cliparea;
}

View File

@ -0,0 +1,47 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2005,2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
//-----------------------------------------------------------------------------
//
// Text mode emulation in SDL
//
//-----------------------------------------------------------------------------
#ifndef TXT_GUI_H
#define TXT_GUI_H
#define TXT_WINDOW_BACKGROUND TXT_COLOR_BLUE
#define TXT_HOVER_BACKGROUND TXT_COLOR_CYAN
void TXT_DrawDesktopBackground(const char *title);
void TXT_DrawWindowFrame(const char *title, int x, int y, int w, int h);
void TXT_DrawSeparator(int x, int y, int w);
void TXT_DrawString(const char *s);
void TXT_DrawHorizScrollbar(int x, int y, int w, int cursor, int range);
void TXT_DrawVertScrollbar(int x, int y, int h, int cursor, int range);
void TXT_InitClipArea(void);
void TXT_PushClipArea(int x1, int x2, int y1, int y2);
void TXT_PopClipArea(void);
#endif /* #ifndef TXT_GUI_H */

View File

@ -0,0 +1,300 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "doomkeys.h"
#include "txt_inputbox.h"
#include "txt_gui.h"
#include "txt_io.h"
#include "txt_main.h"
#include "txt_window.h"
static void SetBufferFromValue(txt_inputbox_t *inputbox);
static void TXT_InputBoxSizeCalc(TXT_UNCAST_ARG(inputbox))
{
TXT_CAST_ARG(txt_inputbox_t, inputbox);
// Enough space for the box + cursor
inputbox->widget.w = inputbox->size + 1;
inputbox->widget.h = 1;
}
static void TXT_InputBoxDrawer(TXT_UNCAST_ARG(inputbox), int selected)
{
TXT_CAST_ARG(txt_inputbox_t, inputbox);
int i;
int chars;
int w;
w = inputbox->widget.w;
// Select the background color based on whether we are currently
// editing, and if not, whether the widget is selected.
if (inputbox->editing && selected)
{
TXT_BGColor(TXT_COLOR_BLACK, 0);
}
else
{
TXT_SetWidgetBG(inputbox, selected);
}
TXT_FGColor(TXT_COLOR_BRIGHT_WHITE);
if (!inputbox->editing)
{
// If not editing, use the current value from inputbox->value.
SetBufferFromValue(inputbox);
}
TXT_DrawString(inputbox->buffer);
chars = strlen(inputbox->buffer);
if (chars < w && inputbox->editing && selected)
{
TXT_BGColor(TXT_COLOR_BLACK, 1);
TXT_DrawString("_");
++chars;
}
for (i=chars; i < w; ++i)
{
TXT_DrawString(" ");
}
}
static void TXT_InputBoxDestructor(TXT_UNCAST_ARG(inputbox))
{
TXT_CAST_ARG(txt_inputbox_t, inputbox);
free(inputbox->buffer);
}
static void Backspace(txt_inputbox_t *inputbox)
{
if (strlen(inputbox->buffer) > 0)
{
inputbox->buffer[strlen(inputbox->buffer) - 1] = '\0';
}
}
static void AddCharacter(txt_inputbox_t *inputbox, int key)
{
if (strlen(inputbox->buffer) < inputbox->size)
{
// Add character to the buffer
inputbox->buffer[strlen(inputbox->buffer) + 1] = '\0';
inputbox->buffer[strlen(inputbox->buffer)] = key;
}
}
static int TXT_InputBoxKeyPress(TXT_UNCAST_ARG(inputbox), int key)
{
TXT_CAST_ARG(txt_inputbox_t, inputbox);
if (!inputbox->editing)
{
if (key == KEY_ENTER)
{
SetBufferFromValue(inputbox);
inputbox->editing = 1;
return 1;
}
return 0;
}
if (key == KEY_ENTER)
{
free(*((char **)inputbox->value));
*((char **) inputbox->value) = strdup(inputbox->buffer);
TXT_EmitSignal(&inputbox->widget, "changed");
inputbox->editing = 0;
}
if (key == KEY_ESCAPE)
{
inputbox->editing = 0;
}
if (isprint(key))
{
// Add character to the buffer
AddCharacter(inputbox, key);
}
if (key == KEY_BACKSPACE)
{
Backspace(inputbox);
}
return 1;
}
static int TXT_IntInputBoxKeyPress(TXT_UNCAST_ARG(inputbox), int key)
{
TXT_CAST_ARG(txt_inputbox_t, inputbox);
if (!inputbox->editing)
{
if (key == KEY_ENTER)
{
strcpy(inputbox->buffer, "");
inputbox->editing = 1;
return 1;
}
return 0;
}
if (key == KEY_ENTER)
{
*((int *) inputbox->value) = atoi(inputbox->buffer);
inputbox->editing = 0;
}
if (key == KEY_ESCAPE)
{
inputbox->editing = 0;
}
if (isdigit(key))
{
// Add character to the buffer
AddCharacter(inputbox, key);
}
if (key == KEY_BACKSPACE)
{
Backspace(inputbox);
}
return 1;
}
static void TXT_InputBoxMousePress(TXT_UNCAST_ARG(inputbox),
int x, int y, int b)
{
TXT_CAST_ARG(txt_inputbox_t, inputbox);
if (b == TXT_MOUSE_LEFT)
{
// Make mouse clicks start editing the box
if (!inputbox->editing)
{
// Send a simulated keypress to start editing
TXT_WidgetKeyPress(inputbox, KEY_ENTER);
}
}
}
txt_widget_class_t txt_inputbox_class =
{
TXT_AlwaysSelectable,
TXT_InputBoxSizeCalc,
TXT_InputBoxDrawer,
TXT_InputBoxKeyPress,
TXT_InputBoxDestructor,
TXT_InputBoxMousePress,
NULL,
};
txt_widget_class_t txt_int_inputbox_class =
{
TXT_AlwaysSelectable,
TXT_InputBoxSizeCalc,
TXT_InputBoxDrawer,
TXT_IntInputBoxKeyPress,
TXT_InputBoxDestructor,
TXT_InputBoxMousePress,
NULL,
};
static void SetBufferFromValue(txt_inputbox_t *inputbox)
{
if (inputbox->widget.widget_class == &txt_inputbox_class)
{
char **value = (char **) inputbox->value;
if (*value != NULL)
{
strncpy(inputbox->buffer, *value, inputbox->size);
inputbox->buffer[inputbox->size] = '\0';
}
else
{
strcpy(inputbox->buffer, "");
}
}
else if (inputbox->widget.widget_class == &txt_int_inputbox_class)
{
int *value = (int *) inputbox->value;
sprintf(inputbox->buffer, "%i", *value);
}
}
txt_inputbox_t *TXT_NewInputBox(char **value, int size)
{
txt_inputbox_t *inputbox;
inputbox = malloc(sizeof(txt_inputbox_t));
TXT_InitWidget(inputbox, &txt_inputbox_class);
inputbox->value = value;
inputbox->size = size;
inputbox->buffer = malloc(size + 1);
inputbox->editing = 0;
return inputbox;
}
txt_inputbox_t *TXT_NewIntInputBox(int *value, int size)
{
txt_inputbox_t *inputbox;
inputbox = malloc(sizeof(txt_inputbox_t));
TXT_InitWidget(inputbox, &txt_int_inputbox_class);
inputbox->value = value;
inputbox->size = size;
inputbox->buffer = malloc(15);
inputbox->editing = 0;
return inputbox;
}

View File

@ -0,0 +1,81 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#ifndef TXT_INPUTBOX_H
#define TXT_INPUTBOX_H
/**
* @file txt_inputbox.h
*
* Input box widget.
*/
/**
* Input box widget.
*
* An input box is a widget that displays a value, which can be
* selected to enter a new value.
*
* Input box widgets can be of an integer or string type.
*/
typedef struct txt_inputbox_s txt_inputbox_t;
#include "txt_widget.h"
struct txt_inputbox_s
{
txt_widget_t widget;
char *buffer;
unsigned int size;
int editing;
void *value;
};
/**
* Create a new input box widget for controlling a string value.
*
* @param value Pointer to a string variable that contains
* a pointer to the current value of the
* input box. The value should be allocated
* dynamically; when the string is changed it
* will be freed and the variable set to point
* to the new string value.
* @param size Width of the input box, in characters.
* @return Pointer to the new input box widget.
*/
txt_inputbox_t *TXT_NewInputBox(char **value, int size);
/**
* Create a new input box widget for controlling an integer value.
*
* @param value Pointer to an integer variable containing
* the value of the input box.
* @param size Width of the input box, in characters.
* @return Pointer to the new input box widget.
*/
txt_inputbox_t *TXT_NewIntInputBox(int *value, int size);
#endif /* #ifndef TXT_INPUTBOX_H */

View File

@ -0,0 +1,257 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2005,2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
//-----------------------------------------------------------------------------
//
// Text mode I/O functions, similar to C stdio
//
//-----------------------------------------------------------------------------
#include <stdlib.h>
#include <string.h>
#include "txt_io.h"
#include "txt_main.h"
static struct
{
txt_color_t color;
const char *name;
} colors[] = {
{TXT_COLOR_BLACK, "black"},
{TXT_COLOR_BLUE, "blue"},
{TXT_COLOR_GREEN, "green"},
{TXT_COLOR_CYAN, "cyan"},
{TXT_COLOR_RED, "red"},
{TXT_COLOR_MAGENTA, "magenta"},
{TXT_COLOR_BROWN, "brown"},
{TXT_COLOR_GREY, "grey"},
{TXT_COLOR_DARK_GREY, "darkgrey"},
{TXT_COLOR_BRIGHT_BLUE, "brightblue"},
{TXT_COLOR_BRIGHT_GREEN, "brightgreen"},
{TXT_COLOR_BRIGHT_CYAN, "brightcyan"},
{TXT_COLOR_BRIGHT_RED, "brightred"},
{TXT_COLOR_BRIGHT_MAGENTA, "brightmagenta"},
{TXT_COLOR_YELLOW, "yellow"},
{TXT_COLOR_BRIGHT_WHITE, "brightwhite"},
};
static int cur_x = 0, cur_y = 0;
static txt_color_t fgcolor = TXT_COLOR_GREY;
static txt_color_t bgcolor = TXT_COLOR_BLACK;
static int GetColorForName(char *s)
{
size_t i;
for (i=0; i<sizeof(colors) / sizeof(*colors); ++i)
{
if (!strcmp(s, colors[i].name))
{
return colors[i].color;
}
}
return -1;
}
static void NewLine(unsigned char *screendata)
{
int i;
unsigned char *p;
cur_x = 0;
++cur_y;
if (cur_y >= TXT_SCREEN_H)
{
// Scroll the screen up
cur_y = TXT_SCREEN_H - 1;
memcpy(screendata, screendata + TXT_SCREEN_W * 2,
TXT_SCREEN_W * 2 * (TXT_SCREEN_H -1));
// Clear the bottom line
p = screendata + (TXT_SCREEN_H - 1) * 2 * TXT_SCREEN_W;
for (i=0; i<TXT_SCREEN_W; ++i)
{
*p++ = ' ';
*p++ = fgcolor | (bgcolor << 4);
}
}
}
static void PutChar(unsigned char *screendata, int c)
{
unsigned char *p;
p = screendata + cur_y * TXT_SCREEN_W * 2 + cur_x * 2;
switch (c)
{
case '\n':
NewLine(screendata);
break;
case '\b':
// backspace
--cur_x;
if (cur_x < 0)
cur_x = 0;
break;
default:
// Add a new character to the buffer
p[0] = c;
p[1] = fgcolor | (bgcolor << 4);
++cur_x;
if (cur_x >= TXT_SCREEN_W)
{
NewLine(screendata);
}
break;
}
}
void TXT_PutChar(int c)
{
unsigned char *screen;
screen = TXT_GetScreenData();
PutChar(screen, c);
}
void TXT_Puts(const char *s)
{
int previous_color = TXT_COLOR_BLACK;
unsigned char *screen;
const char *p;
char colorname_buf[20];
char *ending;
int col;
screen = TXT_GetScreenData();
for (p=s; *p != '\0'; ++p)
{
if (*p == '<')
{
++p;
if (*p == '<')
{
PutChar(screen, '<');
}
else
{
ending = strchr(p, '>');
if (ending == NULL)
{
return;
}
strncpy(colorname_buf, p, 19);
colorname_buf[ending-p] = '\0';
if (!strcmp(colorname_buf, "/"))
{
// End of color block
col = previous_color;
}
else
{
col = GetColorForName(colorname_buf);
if (col < 0)
{
return;
}
// Save the color for the ending marker
previous_color = fgcolor;
}
TXT_FGColor(col);
p = ending;
}
}
else
{
PutChar(screen, *p);
}
}
PutChar(screen, '\n');
}
void TXT_GotoXY(int x, int y)
{
cur_x = x;
cur_y = y;
}
void TXT_GetXY(int *x, int *y)
{
*x = cur_x;
*y = cur_y;
}
void TXT_FGColor(txt_color_t color)
{
fgcolor = color;
}
void TXT_BGColor(int color, int blinking)
{
bgcolor = color;
if (blinking)
bgcolor |= TXT_COLOR_BLINKING;
}
void TXT_ClearScreen(void)
{
unsigned char *screen;
int i;
screen = TXT_GetScreenData();
for (i=0; i<TXT_SCREEN_W * TXT_SCREEN_H; ++i)
{
screen[i * 2] = ' ';
screen[i * 2 + 1] = (bgcolor << 4) | fgcolor;
}
cur_x = 0;
cur_y = 0;
}

View File

@ -0,0 +1,41 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2005,2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
//-----------------------------------------------------------------------------
//
// Text mode emulation in SDL
//
//-----------------------------------------------------------------------------
#ifndef TXT_IO_H
#define TXT_IO_H
#include "txt_main.h"
void TXT_PutChar(int c);
void TXT_Puts(const char *s);
void TXT_GotoXY(int x, int y);
void TXT_GetXY(int *x, int *y);
void TXT_FGColor(txt_color_t color);
void TXT_BGColor(int color, int blinking);
void TXT_ClearScreen(void);
#endif /* #ifndef TXT_IO_H */

View File

@ -0,0 +1,196 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#include <stdlib.h>
#include <string.h>
#include "txt_label.h"
#include "txt_gui.h"
#include "txt_io.h"
#include "txt_main.h"
#include "txt_window.h"
static void TXT_LabelSizeCalc(TXT_UNCAST_ARG(label))
{
TXT_CAST_ARG(txt_label_t, label);
label->widget.w = label->w;
label->widget.h = label->h;
}
static void TXT_LabelDrawer(TXT_UNCAST_ARG(label), int selected)
{
TXT_CAST_ARG(txt_label_t, label);
unsigned int x, y;
int origin_x, origin_y;
unsigned int align_indent = 0;
unsigned int w;
w = label->widget.w;
TXT_BGColor(label->bgcolor, 0);
TXT_FGColor(label->fgcolor);
TXT_GetXY(&origin_x, &origin_y);
for (y=0; y<label->h; ++y)
{
// Calculate the amount to indent this line due to the align
// setting
switch (label->widget.align)
{
case TXT_HORIZ_LEFT:
align_indent = 0;
break;
case TXT_HORIZ_CENTER:
align_indent = (label->w - strlen(label->lines[y])) / 2;
break;
case TXT_HORIZ_RIGHT:
align_indent = label->w - strlen(label->lines[y]);
break;
}
// Draw this line
TXT_GotoXY(origin_x, origin_y + y);
// Gap at the start
for (x=0; x<align_indent; ++x)
{
TXT_DrawString(" ");
}
// The string itself
TXT_DrawString(label->lines[y]);
x += strlen(label->lines[y]);
// Gap at the end
for (; x<w; ++x)
{
TXT_DrawString(" ");
}
}
}
static void TXT_LabelDestructor(TXT_UNCAST_ARG(label))
{
TXT_CAST_ARG(txt_label_t, label);
free(label->label);
free(label->lines);
}
txt_widget_class_t txt_label_class =
{
TXT_NeverSelectable,
TXT_LabelSizeCalc,
TXT_LabelDrawer,
NULL,
TXT_LabelDestructor,
NULL,
NULL,
};
void TXT_SetLabel(txt_label_t *label, char *value)
{
char *p;
unsigned int y;
// Free back the old label
free(label->label);
free(label->lines);
// Set the new value
label->label = strdup(value);
// Work out how many lines in this label
label->h = 1;
for (p = value; *p != '\0'; ++p)
{
if (*p == '\n')
{
++label->h;
}
}
// Split into lines
label->lines = malloc(sizeof(char *) * label->h);
label->lines[0] = label->label;
y = 1;
for (p = label->label; *p != '\0'; ++p)
{
if (*p == '\n')
{
label->lines[y] = p + 1;
*p = '\0';
++y;
}
}
label->w = 0;
for (y=0; y<label->h; ++y)
{
if (strlen(label->lines[y]) > label->w)
label->w = strlen(label->lines[y]);
}
}
txt_label_t *TXT_NewLabel(char *text)
{
txt_label_t *label;
label = malloc(sizeof(txt_label_t));
TXT_InitWidget(label, &txt_label_class);
label->label = NULL;
label->lines = NULL;
// Default colors
label->bgcolor = TXT_WINDOW_BACKGROUND;
label->fgcolor = TXT_COLOR_BRIGHT_WHITE;
TXT_SetLabel(label, text);
return label;
}
void TXT_SetFGColor(txt_label_t *label, txt_color_t color)
{
label->fgcolor = color;
}
void TXT_SetBGColor(txt_label_t *label, txt_color_t color)
{
label->bgcolor = color;
}

View File

@ -0,0 +1,90 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#ifndef TXT_LABEL_H
#define TXT_LABEL_H
/**
* @file txt_label.h
*
* Text label widget.
*/
/**
* Label widget.
*
* A label widget does nothing except show a text label.
*/
typedef struct txt_label_s txt_label_t;
#include "txt_main.h"
#include "txt_widget.h"
struct txt_label_s
{
txt_widget_t widget;
char *label;
char **lines;
unsigned int w, h;
txt_color_t fgcolor;
txt_color_t bgcolor;
};
/**
* Create a new label widget.
*
* @param label String to display in the widget.
* @return Pointer to the new label widget.
*/
txt_label_t *TXT_NewLabel(char *label);
/**
* Set the string displayed in a label widget.
*
* @param label The widget.
* @param value The string to display.
*/
void TXT_SetLabel(txt_label_t *label, char *value);
/**
* Set the background color of a label widget.
*
* @param label The widget.
* @param color The background color to use.
*/
void TXT_SetBGColor(txt_label_t *label, txt_color_t color);
/**
* Set the foreground color of a label widget.
*
* @param label The widget.
* @param color The foreground color to use.
*/
void TXT_SetFGColor(txt_label_t *label, txt_color_t color);
#endif /* #ifndef TXT_LABEL_H */

View File

@ -0,0 +1,135 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2005,2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
//-----------------------------------------------------------------------------
//
// Base interface that abstracts the text mode screen.
//
//-----------------------------------------------------------------------------
#ifndef TXT_MAIN_H
#define TXT_MAIN_H
// For the moment, txt_sdl.c is the only implementation of the base
// text mode screen API:
#include "txt_sdl.h"
// Special keypress values that correspond to mouse button clicks
#define TXT_MOUSE_BASE 0x10000
#define TXT_MOUSE_LEFT (TXT_MOUSE_BASE + 0)
#define TXT_MOUSE_RIGHT (TXT_MOUSE_BASE + 1)
#define TXT_MOUSE_MIDDLE (TXT_MOUSE_BASE + 2)
#define TXT_MOUSE_SCROLLUP (TXT_MOUSE_BASE + 3)
#define TXT_MOUSE_SCROLLDOWN (TXT_MOUSE_BASE + 4)
#define TXT_MAX_MOUSE_BUTTONS 16
// Screen size
#define TXT_SCREEN_W 80
#define TXT_SCREEN_H 25
#define TXT_COLOR_BLINKING (1 << 3)
typedef enum
{
TXT_COLOR_BLACK,
TXT_COLOR_BLUE,
TXT_COLOR_GREEN,
TXT_COLOR_CYAN,
TXT_COLOR_RED,
TXT_COLOR_MAGENTA,
TXT_COLOR_BROWN,
TXT_COLOR_GREY,
TXT_COLOR_DARK_GREY,
TXT_COLOR_BRIGHT_BLUE,
TXT_COLOR_BRIGHT_GREEN,
TXT_COLOR_BRIGHT_CYAN,
TXT_COLOR_BRIGHT_RED,
TXT_COLOR_BRIGHT_MAGENTA,
TXT_COLOR_YELLOW,
TXT_COLOR_BRIGHT_WHITE,
} txt_color_t;
// Modifier keys.
typedef enum
{
TXT_MOD_SHIFT,
TXT_MOD_CTRL,
TXT_MOD_ALT,
TXT_NUM_MODIFIERS
} txt_modifier_t;
// Initialize the screen
// Returns 1 if successful, 0 if failed.
int TXT_Init(void);
// Shut down text mode emulation
void TXT_Shutdown(void);
// Get a pointer to the buffer containing the raw screen data.
unsigned char *TXT_GetScreenData(void);
// Update an area of the screen
void TXT_UpdateScreenArea(int x, int y, int w, int h);
// Update the whole screen
void TXT_UpdateScreen(void);
// Read a character from the keyboard
int TXT_GetChar(void);
// Read the current state of modifier keys that are held down.
int TXT_GetModifierState(txt_modifier_t mod);
// Provides a short description of a key code, placing into the
// provided buffer.
void TXT_GetKeyDescription(int key, char *buf);
// Retrieve the current position of the mouse
void TXT_GetMousePosition(int *x, int *y);
// Sleep until an event is received or the screen needs updating
// Optional timeout in ms (timeout == 0 : sleep forever)
void TXT_Sleep(int timeout);
// Controls whether keys are returned from TXT_GetChar based on keyboard
// mapping, or raw key code.
void TXT_EnableKeyMapping(int enable);
// Set the window title of the window containing the text mode screen
void TXT_SetWindowTitle(char *title);
#endif /* #ifndef TXT_MAIN_H */

View File

@ -0,0 +1,148 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#include <stdlib.h>
#include <string.h>
#include "doomkeys.h"
#include "txt_radiobutton.h"
#include "txt_gui.h"
#include "txt_io.h"
#include "txt_main.h"
#include "txt_window.h"
static void TXT_RadioButtonSizeCalc(TXT_UNCAST_ARG(radiobutton))
{
TXT_CAST_ARG(txt_radiobutton_t, radiobutton);
// Minimum width is the string length + right-side spaces for padding
radiobutton->widget.w = strlen(radiobutton->label) + 5;
radiobutton->widget.h = 1;
}
static void TXT_RadioButtonDrawer(TXT_UNCAST_ARG(radiobutton), int selected)
{
TXT_CAST_ARG(txt_radiobutton_t, radiobutton);
int i;
int w;
w = radiobutton->widget.w;
TXT_BGColor(TXT_WINDOW_BACKGROUND, 0);
TXT_FGColor(TXT_COLOR_BRIGHT_CYAN);
TXT_DrawString("(");
TXT_FGColor(TXT_COLOR_BRIGHT_WHITE);
if (*radiobutton->variable == radiobutton->value)
{
TXT_DrawString("\x07");
}
else
{
TXT_DrawString(" ");
}
TXT_FGColor(TXT_COLOR_BRIGHT_CYAN);
TXT_DrawString(") ");
TXT_SetWidgetBG(radiobutton, selected);
TXT_FGColor(TXT_COLOR_BRIGHT_WHITE);
TXT_DrawString(radiobutton->label);
for (i=strlen(radiobutton->label); i < w-5; ++i)
{
TXT_DrawString(" ");
}
}
static void TXT_RadioButtonDestructor(TXT_UNCAST_ARG(radiobutton))
{
TXT_CAST_ARG(txt_radiobutton_t, radiobutton);
free(radiobutton->label);
}
static int TXT_RadioButtonKeyPress(TXT_UNCAST_ARG(radiobutton), int key)
{
TXT_CAST_ARG(txt_radiobutton_t, radiobutton);
if (key == KEY_ENTER || key == ' ')
{
if (*radiobutton->variable != radiobutton->value)
{
*radiobutton->variable = radiobutton->value;
TXT_EmitSignal(radiobutton, "selected");
}
return 1;
}
return 0;
}
static void TXT_RadioButtonMousePress(TXT_UNCAST_ARG(radiobutton),
int x, int y, int b)
{
TXT_CAST_ARG(txt_radiobutton_t, radiobutton);
if (b == TXT_MOUSE_LEFT)
{
// Equivalent to pressing enter
TXT_RadioButtonKeyPress(radiobutton, KEY_ENTER);
}
}
txt_widget_class_t txt_radiobutton_class =
{
TXT_AlwaysSelectable,
TXT_RadioButtonSizeCalc,
TXT_RadioButtonDrawer,
TXT_RadioButtonKeyPress,
TXT_RadioButtonDestructor,
TXT_RadioButtonMousePress,
NULL,
};
txt_radiobutton_t *TXT_NewRadioButton(char *label, int *variable, int value)
{
txt_radiobutton_t *radiobutton;
radiobutton = malloc(sizeof(txt_radiobutton_t));
TXT_InitWidget(radiobutton, &txt_radiobutton_class);
radiobutton->label = strdup(label);
radiobutton->variable = variable;
radiobutton->value = value;
return radiobutton;
}
void TXT_SetRadioButtonLabel(txt_radiobutton_t *radiobutton, char *value)
{
free(radiobutton->label);
radiobutton->label = strdup(value);
}

View File

@ -0,0 +1,85 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#ifndef TXT_RADIOBUTTON_H
#define TXT_RADIOBUTTON_H
/**
* @file txt_radiobutton.h
*
* Radio button widget.
*/
/**
* A radio button widget.
*
* Radio buttons are typically used in groups, to allow a value to be
* selected from a range of options. Each radio button corresponds
* to a particular option that may be selected. A radio button
* has an indicator to indicate whether it is the currently-selected
* value, and a text label.
*
* Internally, a radio button tracks an integer variable that may take
* a range of different values. Each radio button has a particular
* value associated with it; if the variable is equal to that value,
* the radio button appears selected. If a radio button is pressed
* by the user through the GUI, the variable is set to its value.
*
* When a radio button is selected, the "selected" signal is emitted.
*/
typedef struct txt_radiobutton_s txt_radiobutton_t;
#include "txt_widget.h"
struct txt_radiobutton_s
{
txt_widget_t widget;
char *label;
int *variable;
int value;
};
/**
* Create a new radio button widget.
*
* @param label The label to display next to the radio button.
* @param variable Pointer to the variable tracking whether this
* radio button is selected.
* @param value If the variable is equal to this value, the
* radio button appears selected.
* @return Pointer to the new radio button widget.
*/
txt_radiobutton_t *TXT_NewRadioButton(char *label, int *variable, int value);
/**
* Set the label on a radio button.
*
* @param radiobutton The radio button.
* @param value The new label.
*/
void TXT_SetRadioButtonLabel(txt_radiobutton_t *radiobutton, char *value);
#endif /* #ifndef TXT_RADIOBUTTON_H */

View File

@ -0,0 +1,566 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2009 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "txt_scrollpane.h"
#include "txt_gui.h"
#include "txt_io.h"
#include "txt_main.h"
#include "txt_table.h"
#include "doomkeys.h"
#define SCROLLBAR_VERTICAL (1 << 0)
#define SCROLLBAR_HORIZONTAL (1 << 1)
static int FullWidth(txt_scrollpane_t *scrollpane)
{
if (scrollpane->child != NULL)
{
return scrollpane->child->w;
}
else
{
return 0;
}
}
static int FullHeight(txt_scrollpane_t *scrollpane)
{
if (scrollpane->child != NULL)
{
return scrollpane->child->h;
}
else
{
return 0;
}
}
// Calculate which scroll bars the pane needs.
static int NeedsScrollbars(txt_scrollpane_t *scrollpane)
{
int result;
result = 0;
if (FullWidth(scrollpane) > scrollpane->w)
{
result |= SCROLLBAR_HORIZONTAL;
}
if (FullHeight(scrollpane) > scrollpane->h)
{
result |= SCROLLBAR_VERTICAL;
}
return result;
}
// If a scrollbar isn't needed, the scroll position is reset.
static void SanityCheckScrollbars(txt_scrollpane_t *scrollpane)
{
int scrollbars;
int max_x, max_y;
scrollbars = NeedsScrollbars(scrollpane);
if ((scrollbars & SCROLLBAR_HORIZONTAL) == 0)
{
scrollpane->x = 0;
}
if ((scrollbars & SCROLLBAR_VERTICAL) == 0)
{
scrollpane->y = 0;
}
max_x = FullWidth(scrollpane) - scrollpane->w;
max_y = FullHeight(scrollpane) - scrollpane->h;
if (scrollpane->x < 0)
{
scrollpane->x = 0;
}
else if (scrollpane->x > max_x)
{
scrollpane->x = max_x;
}
if (scrollpane->y < 0)
{
scrollpane->y = 0;
}
else if (scrollpane->y > max_y)
{
scrollpane->y = max_y;
}
}
static void TXT_ScrollPaneSizeCalc(TXT_UNCAST_ARG(scrollpane))
{
TXT_CAST_ARG(txt_scrollpane_t, scrollpane);
int scrollbars;
if (scrollpane->child != NULL)
{
TXT_CalcWidgetSize(scrollpane->child);
}
// Expand as necessary (to ensure that no scrollbars are needed)?
if (scrollpane->expand_w)
{
scrollpane->w = FullWidth(scrollpane);
}
if (scrollpane->expand_h)
{
scrollpane->h = FullHeight(scrollpane);
}
scrollpane->widget.w = scrollpane->w;
scrollpane->widget.h = scrollpane->h;
// If we have scroll bars, we need to expand slightly to
// accomodate them. Eg. if we have a vertical scrollbar, we
// need to be an extra character wide.
scrollbars = NeedsScrollbars(scrollpane);
if (scrollbars & SCROLLBAR_HORIZONTAL)
{
++scrollpane->widget.h;
}
if (scrollbars & SCROLLBAR_VERTICAL)
{
++scrollpane->widget.w;
}
}
static void TXT_ScrollPaneDrawer(TXT_UNCAST_ARG(scrollpane), int selected)
{
TXT_CAST_ARG(txt_scrollpane_t, scrollpane);
int x1, y1, x2, y2;
int scrollbars;
// We set a clipping area of the scroll pane.
x1 = scrollpane->widget.x,
y1 = scrollpane->widget.y,
x2 = x1 + scrollpane->w,
y2 = y1 + scrollpane->h;
scrollbars = NeedsScrollbars(scrollpane);
if (scrollbars & SCROLLBAR_HORIZONTAL)
{
TXT_DrawHorizScrollbar(x1,
y1 + scrollpane->h,
scrollpane->w,
scrollpane->x,
FullWidth(scrollpane) - scrollpane->w);
}
if (scrollbars & SCROLLBAR_VERTICAL)
{
TXT_DrawVertScrollbar(x1 + scrollpane->w,
y1,
scrollpane->h,
scrollpane->y,
FullHeight(scrollpane) - scrollpane->h);
}
TXT_PushClipArea(x1, x2, y1, y2);
// Draw the child widget
if (scrollpane->child != NULL)
{
TXT_DrawWidget(scrollpane->child, selected);
}
// Restore old clipping area.
TXT_PopClipArea();
}
static void TXT_ScrollPaneDestructor(TXT_UNCAST_ARG(scrollpane))
{
TXT_CAST_ARG(txt_scrollpane_t, scrollpane);
if (scrollpane->child != NULL)
{
TXT_DestroyWidget(scrollpane->child);
}
}
// Hack for tables - when browsing a table inside a scroll pane,
// automatically scroll the window to show the newly-selected
// item.
static void ShowSelectedWidget(txt_scrollpane_t *scrollpane)
{
txt_widget_t *selected;
selected = TXT_GetSelectedWidget(scrollpane->child);
// Scroll up or down?
if (selected->y <= scrollpane->widget.y)
{
scrollpane->y -= scrollpane->widget.y - selected->y;
}
else if ((signed) (selected->y + selected->h) >
(signed) (scrollpane->widget.y + scrollpane->h))
{
scrollpane->y += (selected->y + selected->h)
- (scrollpane->widget.y + scrollpane->h);
}
// Scroll left or right?
if (selected->x <= scrollpane->widget.x)
{
scrollpane->x -= scrollpane->widget.x - selected->x;
}
else if ((signed) (selected->x + selected->w) >
(signed) (scrollpane->widget.x + scrollpane->w))
{
scrollpane->x += (selected->x + selected->w)
- (scrollpane->widget.x + scrollpane->w);
}
}
// Another hack for tables - when scrolling in 'pages', the normal key press
// event does not provide children with enough information to know how far
// to move their selection to reach a new page. This function does so.
// Note that it *only* affects scrolling in pages, not with arrows!
// A side-effect of this, rather than 'pulling' the selection to fit within
// the new page, is that we will jump straight over ranges of unselectable
// items longer than a page, but that is also true of arrow-key scrolling.
// The other unfortunate effect of doing things this way is that page keys
// have no effect on tables _not_ in scrollpanes: not even home/end.
static int PageSelectedWidget(txt_scrollpane_t *scrollpane, int key)
{
int pagex = 0; // No page left/right yet, but some keyboards have them
int pagey = 0;
// Subtract one from the absolute page distance as this is slightly more
// intuitive: a page down first jumps to the bottom of the current page,
// then proceeds to scroll onwards.
switch (key)
{
case KEY_PGUP:
pagey = 1 - scrollpane->h;
break;
case KEY_PGDN:
pagey = scrollpane->h - 1;
break;
default: // We shouldn't even be in this function
return 0;
}
if (scrollpane->child->widget_class == &txt_table_class)
{
return TXT_PageTable(scrollpane->child, pagex, pagey);
}
return 0;
}
// Interpret arrow key presses as scroll commands
static int InterpretScrollKey(txt_scrollpane_t *scrollpane, int key)
{
int maxy;
switch (key)
{
case KEY_UPARROW:
if (scrollpane->y > 0)
{
--scrollpane->y;
return 1;
}
break;
case KEY_DOWNARROW:
if (scrollpane->y < FullHeight(scrollpane) - scrollpane->h)
{
++scrollpane->y;
return 1;
}
break;
case KEY_LEFTARROW:
if (scrollpane->x > 0)
{
--scrollpane->x;
return 1;
}
break;
case KEY_RIGHTARROW:
if (scrollpane->x < FullWidth(scrollpane) - scrollpane->w)
{
++scrollpane->x;
return 1;
}
break;
case KEY_PGUP:
if (scrollpane->y > 0)
{
scrollpane->y -= scrollpane->h;
if (scrollpane->y < 0)
{
scrollpane->y = 0;
}
return 1;
}
break;
case KEY_PGDN:
maxy = FullHeight(scrollpane) - scrollpane->h;
if (scrollpane->y < maxy)
{
scrollpane->y += scrollpane->h;
if (scrollpane->y > maxy)
{
scrollpane->y = maxy;
}
return 1;
}
break;
default:
break;
}
return 0;
}
static int TXT_ScrollPaneKeyPress(TXT_UNCAST_ARG(scrollpane), int key)
{
TXT_CAST_ARG(txt_scrollpane_t, scrollpane);
int result;
result = 0;
if (scrollpane->child != NULL)
{
result = TXT_WidgetKeyPress(scrollpane->child, key);
// Gross hack - if we're scrolling in a menu with the keyboard,
// automatically move the scroll pane to show the new
// selected item.
if (scrollpane->child->widget_class == &txt_table_class
&& (key == KEY_UPARROW || key == KEY_DOWNARROW
|| key == KEY_LEFTARROW || key == KEY_RIGHTARROW
|| key == KEY_PGUP || key == KEY_PGDN))
{
if (PageSelectedWidget(scrollpane, key))
{
result = 1;
}
ShowSelectedWidget(scrollpane);
}
// If the child widget didn't use the keypress, we can see
// if it can be interpreted as a scrolling command.
if (result == 0)
{
result = InterpretScrollKey(scrollpane, key);
}
}
return result;
}
static void TXT_ScrollPaneMousePress(TXT_UNCAST_ARG(scrollpane),
int x, int y, int b)
{
TXT_CAST_ARG(txt_scrollpane_t, scrollpane);
int scrollbars;
int rel_x, rel_y;
scrollbars = NeedsScrollbars(scrollpane);
if (b == TXT_MOUSE_SCROLLUP)
{
if (scrollbars & SCROLLBAR_VERTICAL)
{
scrollpane->y -= 3;
}
else if (scrollbars & SCROLLBAR_HORIZONTAL)
{
scrollpane->x -= 3;
}
return;
}
else if (b == TXT_MOUSE_SCROLLDOWN)
{
if (scrollbars & SCROLLBAR_VERTICAL)
{
scrollpane->y += 3;
}
else if (scrollbars & SCROLLBAR_HORIZONTAL)
{
scrollpane->x += 3;
}
return;
}
rel_x = x - scrollpane->widget.x;
rel_y = y - scrollpane->widget.y;
// Click on the horizontal scrollbar?
if ((scrollbars & SCROLLBAR_HORIZONTAL) && rel_y == scrollpane->h)
{
if (rel_x == 0)
{
--scrollpane->x;
}
else if (rel_x == scrollpane->w - 1)
{
++scrollpane->x;
}
else
{
int range = FullWidth(scrollpane) - scrollpane->w;
int bar_max = scrollpane->w - 3;
scrollpane->x = ((rel_x - 1) * range + (bar_max / 2)) / bar_max;
}
return;
}
// Click on the vertical scrollbar?
if ((scrollbars & SCROLLBAR_VERTICAL) && rel_x == scrollpane->w)
{
if (rel_y == 0)
{
--scrollpane->y;
}
else if (rel_y == scrollpane->h - 1)
{
++scrollpane->y;
}
else
{
int range = FullHeight(scrollpane) - scrollpane->h;
int bar_max = scrollpane->h - 3;
scrollpane->y = ((rel_y - 1) * range + (bar_max / 2)) / bar_max;
}
return;
}
if (scrollpane->child != NULL)
{
TXT_WidgetMousePress(scrollpane->child, x, y, b);
}
}
static void TXT_ScrollPaneLayout(TXT_UNCAST_ARG(scrollpane))
{
TXT_CAST_ARG(txt_scrollpane_t, scrollpane);
SanityCheckScrollbars(scrollpane);
// The child widget takes the same position as the scroll pane
// itself, but is offset by the scroll position.
if (scrollpane->child != NULL)
{
scrollpane->child->x = scrollpane->widget.x - scrollpane->x;
scrollpane->child->y = scrollpane->widget.y - scrollpane->y;
TXT_LayoutWidget(scrollpane->child);
}
}
static int TXT_ScrollPaneSelectable(TXT_UNCAST_ARG(scrollpane))
{
TXT_CAST_ARG(txt_scrollpane_t, scrollpane);
// If scroll bars are displayed, the scroll pane must be selectable
// so that we can use the arrow keys to scroll around.
if (NeedsScrollbars(scrollpane))
{
return 1;
}
// Otherwise, whether this is selectable depends on the child widget.
return TXT_SelectableWidget(scrollpane->child);
}
txt_widget_class_t txt_scrollpane_class =
{
TXT_ScrollPaneSelectable,
TXT_ScrollPaneSizeCalc,
TXT_ScrollPaneDrawer,
TXT_ScrollPaneKeyPress,
TXT_ScrollPaneDestructor,
TXT_ScrollPaneMousePress,
TXT_ScrollPaneLayout,
};
txt_scrollpane_t *TXT_NewScrollPane(int w, int h, TXT_UNCAST_ARG(target))
{
TXT_CAST_ARG(txt_widget_t, target);
txt_scrollpane_t *scrollpane;
scrollpane = malloc(sizeof(txt_scrollpane_t));
TXT_InitWidget(scrollpane, &txt_scrollpane_class);
scrollpane->w = w;
scrollpane->h = h;
scrollpane->x = 0;
scrollpane->y = 0;
scrollpane->child = target;
scrollpane->expand_w = w <= 0;
scrollpane->expand_h = h <= 0;
// Set parent pointer for inner widget.
target->parent = &scrollpane->widget;
return scrollpane;
}

View File

@ -0,0 +1,66 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2009 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#ifndef TXT_SCROLLPANE_H
#define TXT_SCROLLPANE_H
/**
* @file txt_scrollpane.h
*
* Scrollable pane widget.
*/
/**
* Scrollable pane widget.
*
* A scrollable pane widget is a widget that contains another widget
* that is larger than it. Scroll bars appear on the side to allow
* different areas of the contained widget to be seen.
*/
typedef struct txt_scrollpane_s txt_scrollpane_t;
#include "txt_widget.h"
struct txt_scrollpane_s
{
txt_widget_t widget;
int w, h;
int x, y;
int expand_w, expand_h;
txt_widget_t *child;
};
/**
* Create a new scroll pane widget.
*
* @param w Width of the scroll pane, in characters.
* @param h Height of the scroll pane, in lines.
* @param target The target widget that the scroll pane will
* contain.
* @return Pointer to the new scroll pane widget.
*/
txt_scrollpane_t *TXT_NewScrollPane(int w, int h, TXT_UNCAST_ARG(target));
#endif /* #ifndef TXT_SCROLLPANE_H */

View File

@ -0,0 +1,787 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2005,2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
//-----------------------------------------------------------------------------
//
// Text mode emulation in SDL
//
//-----------------------------------------------------------------------------
#include "SDL.h"
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "doomkeys.h"
#include "txt_main.h"
#include "txt_sdl.h"
#if defined(_MSC_VER) && !defined(__cplusplus)
#define inline __inline
#endif
typedef struct
{
unsigned char *data;
unsigned int w;
unsigned int h;
} txt_font_t;
// Fonts:
#include "txt_font.h"
#include "txt_smallfont.h"
// Time between character blinks in ms
#define BLINK_PERIOD 250
static SDL_Surface *screen;
static unsigned char *screendata;
static int key_mapping = 1;
static TxtSDLEventCallbackFunc event_callback;
static void *event_callback_data;
static int modifier_state[TXT_NUM_MODIFIERS];
// Font we are using:
static txt_font_t *font;
//#define TANGO
#ifndef TANGO
static SDL_Color ega_colors[] =
{
{0x00, 0x00, 0x00, 0x00}, // 0: Black
{0x00, 0x00, 0xa8, 0x00}, // 1: Blue
{0x00, 0xa8, 0x00, 0x00}, // 2: Green
{0x00, 0xa8, 0xa8, 0x00}, // 3: Cyan
{0xa8, 0x00, 0x00, 0x00}, // 4: Red
{0xa8, 0x00, 0xa8, 0x00}, // 5: Magenta
{0xa8, 0x54, 0x00, 0x00}, // 6: Brown
{0xa8, 0xa8, 0xa8, 0x00}, // 7: Grey
{0x54, 0x54, 0x54, 0x00}, // 8: Dark grey
{0x54, 0x54, 0xfe, 0x00}, // 9: Bright blue
{0x54, 0xfe, 0x54, 0x00}, // 10: Bright green
{0x54, 0xfe, 0xfe, 0x00}, // 11: Bright cyan
{0xfe, 0x54, 0x54, 0x00}, // 12: Bright red
{0xfe, 0x54, 0xfe, 0x00}, // 13: Bright magenta
{0xfe, 0xfe, 0x54, 0x00}, // 14: Yellow
{0xfe, 0xfe, 0xfe, 0x00}, // 15: Bright white
};
#else
// Colors that fit the Tango desktop guidelines: see
// http://tango.freedesktop.org/ also
// http://uwstopia.nl/blog/2006/07/tango-terminal
static SDL_Color ega_colors[] =
{
{0x2e, 0x34, 0x36, 0x00}, // 0: Black
{0x34, 0x65, 0xa4, 0x00}, // 1: Blue
{0x4e, 0x9a, 0x06, 0x00}, // 2: Green
{0x06, 0x98, 0x9a, 0x00}, // 3: Cyan
{0xcc, 0x00, 0x00, 0x00}, // 4: Red
{0x75, 0x50, 0x7b, 0x00}, // 5: Magenta
{0xc4, 0xa0, 0x00, 0x00}, // 6: Brown
{0xd3, 0xd7, 0xcf, 0x00}, // 7: Grey
{0x55, 0x57, 0x53, 0x00}, // 8: Dark grey
{0x72, 0x9f, 0xcf, 0x00}, // 9: Bright blue
{0x8a, 0xe2, 0x34, 0x00}, // 10: Bright green
{0x34, 0xe2, 0xe2, 0x00}, // 11: Bright cyan
{0xef, 0x29, 0x29, 0x00}, // 12: Bright red
{0x34, 0xe2, 0xe2, 0x00}, // 13: Bright magenta
{0xfc, 0xe9, 0x4f, 0x00}, // 14: Yellow
{0xee, 0xee, 0xec, 0x00}, // 15: Bright white
};
#endif
static txt_font_t *FontForName(char *name)
{
if (!strcmp(name, "small"))
{
return &small_font;
}
else if (!strcmp(name, "normal"))
{
return &main_font;
}
else
{
return NULL;
}
}
//
// Select the font to use, based on screen resolution
//
// If the highest screen resolution available is less than
// 640x480, use the small font.
//
static void ChooseFont(void)
{
SDL_Rect **modes;
char *env;
int i;
// Allow normal selection to be overridden from an environment variable:
env = getenv("TEXTSCREEN_FONT");
if (env != NULL)
{
font = FontForName(env);
if (font != NULL)
{
return;
}
}
// Check all modes
modes = SDL_ListModes(NULL, SDL_FULLSCREEN);
// If in doubt and we can't get a list, always prefer to
// fall back to the normal font:
font = &main_font;
if (modes == NULL || modes == (SDL_Rect **) -1 || *modes == NULL)
{
#ifdef _WIN32_WCE
font = &small_font;
#endif
return;
}
for (i=0; modes[i] != NULL; ++i)
{
if (modes[i]->w >= 640 && modes[i]->h >= 480)
{
return;
}
}
// No large mode found.
font = &small_font;
}
//
// Initialize text mode screen
//
// Returns 1 if successful, 0 if an error occurred
//
int TXT_Init(void)
{
if (SDL_InitSubSystem(SDL_INIT_VIDEO) < 0)
{
return 0;
}
ChooseFont();
screen = SDL_SetVideoMode(TXT_SCREEN_W * font->w,
TXT_SCREEN_H * font->h, 8, 0);
if (screen == NULL)
return 0;
SDL_SetColors(screen, ega_colors, 0, 16);
SDL_EnableUNICODE(1);
screendata = malloc(TXT_SCREEN_W * TXT_SCREEN_H * 2);
memset(screendata, 0, TXT_SCREEN_W * TXT_SCREEN_H * 2);
// Ignore all mouse motion events
// SDL_EventState(SDL_MOUSEMOTION, SDL_IGNORE);
// Repeat key presses so we can hold down arrows to scroll down the
// menu, for example. This is what setup.exe does.
SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY, SDL_DEFAULT_REPEAT_INTERVAL);
return 1;
}
void TXT_Shutdown(void)
{
free(screendata);
SDL_QuitSubSystem(SDL_INIT_VIDEO);
}
unsigned char *TXT_GetScreenData(void)
{
return screendata;
}
static inline void UpdateCharacter(int x, int y)
{
unsigned char character;
unsigned char *p;
unsigned char *s, *s1;
int bg, fg;
unsigned int x1, y1;
p = &screendata[(y * TXT_SCREEN_W + x) * 2];
character = p[0];
fg = p[1] & 0xf;
bg = (p[1] >> 4) & 0xf;
if (bg & 0x8)
{
// blinking
bg &= ~0x8;
if (((SDL_GetTicks() / BLINK_PERIOD) % 2) == 0)
{
fg = bg;
}
}
p = &font->data[character * font->h];
s = ((unsigned char *) screen->pixels)
+ (y * font->h * screen->pitch) + (x * font->w);
for (y1=0; y1<font->h; ++y1)
{
s1 = s;
for (x1=0; x1<font->w; ++x1)
{
if (*p & (1 << (7-x1)))
{
*s1++ = fg;
}
else
{
*s1++ = bg;
}
}
++p;
s += screen->pitch;
}
}
static int LimitToRange(int val, int min, int max)
{
if (val < min)
{
return min;
}
else if (val > max)
{
return max;
}
else
{
return val;
}
}
void TXT_UpdateScreenArea(int x, int y, int w, int h)
{
int x1, y1;
int x_end;
int y_end;
x_end = LimitToRange(x + w, 0, TXT_SCREEN_W);
y_end = LimitToRange(y + h, 0, TXT_SCREEN_H);
x = LimitToRange(x, 0, TXT_SCREEN_W);
y = LimitToRange(y, 0, TXT_SCREEN_H);
for (y1=y; y1<y_end; ++y1)
{
for (x1=x; x1<x_end; ++x1)
{
UpdateCharacter(x1, y1);
}
}
SDL_UpdateRect(screen,
x * font->w, y * font->h,
(x_end - x) * font->w, (y_end - y) * font->h);
}
void TXT_UpdateScreen(void)
{
TXT_UpdateScreenArea(0, 0, TXT_SCREEN_W, TXT_SCREEN_H);
}
void TXT_GetMousePosition(int *x, int *y)
{
#if SDL_VERSION_ATLEAST(1, 3, 0)
SDL_GetMouseState(0, x, y);
#else
SDL_GetMouseState(x, y);
#endif
*x /= font->w;
*y /= font->h;
}
//
// Translates the SDL key
//
static int TranslateKey(SDL_keysym *sym)
{
switch(sym->sym)
{
case SDLK_LEFT: return KEY_LEFTARROW;
case SDLK_RIGHT: return KEY_RIGHTARROW;
case SDLK_DOWN: return KEY_DOWNARROW;
case SDLK_UP: return KEY_UPARROW;
case SDLK_ESCAPE: return KEY_ESCAPE;
case SDLK_RETURN: return KEY_ENTER;
case SDLK_TAB: return KEY_TAB;
case SDLK_F1: return KEY_F1;
case SDLK_F2: return KEY_F2;
case SDLK_F3: return KEY_F3;
case SDLK_F4: return KEY_F4;
case SDLK_F5: return KEY_F5;
case SDLK_F6: return KEY_F6;
case SDLK_F7: return KEY_F7;
case SDLK_F8: return KEY_F8;
case SDLK_F9: return KEY_F9;
case SDLK_F10: return KEY_F10;
case SDLK_F11: return KEY_F11;
case SDLK_F12: return KEY_F12;
case SDLK_BACKSPACE: return KEY_BACKSPACE;
case SDLK_DELETE: return KEY_DEL;
case SDLK_PAUSE: return KEY_PAUSE;
case SDLK_LSHIFT:
case SDLK_RSHIFT:
return KEY_RSHIFT;
case SDLK_LCTRL:
case SDLK_RCTRL:
return KEY_RCTRL;
case SDLK_LALT:
case SDLK_RALT:
#if !SDL_VERSION_ATLEAST(1, 3, 0)
case SDLK_LMETA:
case SDLK_RMETA:
#endif
return KEY_RALT;
case SDLK_CAPSLOCK: return KEY_CAPSLOCK;
case SDLK_SCROLLOCK: return KEY_SCRLCK;
case SDLK_KP0: return KEYP_0;
case SDLK_KP1: return KEYP_1;
case SDLK_KP2: return KEYP_2;
case SDLK_KP3: return KEYP_3;
case SDLK_KP4: return KEYP_4;
case SDLK_KP5: return KEYP_5;
case SDLK_KP6: return KEYP_6;
case SDLK_KP7: return KEYP_7;
case SDLK_KP8: return KEYP_8;
case SDLK_KP9: return KEYP_9;
case SDLK_KP_PERIOD: return KEYP_PERIOD;
case SDLK_KP_MULTIPLY: return KEYP_MULTIPLY;
case SDLK_KP_PLUS: return KEYP_PLUS;
case SDLK_KP_MINUS: return KEYP_MINUS;
case SDLK_KP_DIVIDE: return KEYP_DIVIDE;
case SDLK_KP_EQUALS: return KEYP_EQUALS;
case SDLK_KP_ENTER: return KEYP_ENTER;
case SDLK_HOME: return KEY_HOME;
case SDLK_INSERT: return KEY_INS;
case SDLK_END: return KEY_END;
case SDLK_PAGEUP: return KEY_PGUP;
case SDLK_PAGEDOWN: return KEY_PGDN;
#ifdef SDL_HAVE_APP_KEYS
case SDLK_APP1: return KEY_F1;
case SDLK_APP2: return KEY_F2;
case SDLK_APP3: return KEY_F3;
case SDLK_APP4: return KEY_F4;
case SDLK_APP5: return KEY_F5;
case SDLK_APP6: return KEY_F6;
#endif
default: break;
}
// Returned value is different, depending on whether key mapping is
// enabled. Key mapping is preferable most of the time, for typing
// in text, etc. However, when we want to read raw keyboard codes
// for the setup keyboard configuration dialog, we want the raw
// key code.
if (key_mapping)
{
return sym->unicode;
}
else
{
return tolower(sym->sym);
}
}
// Convert an SDL button index to textscreen button index.
//
// Note special cases because 2 == mid in SDL, 3 == mid in textscreen/setup
static int SDLButtonToTXTButton(int button)
{
switch (button)
{
case SDL_BUTTON_LEFT:
return TXT_MOUSE_LEFT;
case SDL_BUTTON_RIGHT:
return TXT_MOUSE_RIGHT;
case SDL_BUTTON_MIDDLE:
return TXT_MOUSE_MIDDLE;
default:
return TXT_MOUSE_BASE + button - 1;
}
}
static int MouseHasMoved(void)
{
static int last_x = 0, last_y = 0;
int x, y;
TXT_GetMousePosition(&x, &y);
if (x != last_x || y != last_y)
{
last_x = x; last_y = y;
return 1;
}
else
{
return 0;
}
}
// Examine a key press/release and update the modifier key state
// if necessary.
static void UpdateModifierState(SDL_keysym *sym, int pressed)
{
txt_modifier_t mod;
switch (sym->sym)
{
case SDLK_LSHIFT:
case SDLK_RSHIFT:
mod = TXT_MOD_SHIFT;
break;
case SDLK_LCTRL:
case SDLK_RCTRL:
mod = TXT_MOD_CTRL;
break;
case SDLK_LALT:
case SDLK_RALT:
#if !SDL_VERSION_ATLEAST(1, 3, 0)
case SDLK_LMETA:
case SDLK_RMETA:
#endif
mod = TXT_MOD_ALT;
break;
default:
return;
}
if (pressed)
{
++modifier_state[mod];
}
else
{
--modifier_state[mod];
}
}
signed int TXT_GetChar(void)
{
SDL_Event ev;
while (SDL_PollEvent(&ev))
{
// If there is an event callback, allow it to intercept this
// event.
if (event_callback != NULL)
{
if (event_callback(&ev, event_callback_data))
{
continue;
}
}
// Process the event.
switch (ev.type)
{
case SDL_MOUSEBUTTONDOWN:
if (ev.button.button < TXT_MAX_MOUSE_BUTTONS)
{
return SDLButtonToTXTButton(ev.button.button);
}
break;
case SDL_KEYDOWN:
UpdateModifierState(&ev.key.keysym, 1);
return TranslateKey(&ev.key.keysym);
case SDL_KEYUP:
UpdateModifierState(&ev.key.keysym, 0);
break;
case SDL_QUIT:
// Quit = escape
return 27;
case SDL_MOUSEMOTION:
if (MouseHasMoved())
{
return 0;
}
default:
break;
}
}
return -1;
}
int TXT_GetModifierState(txt_modifier_t mod)
{
if (mod < TXT_NUM_MODIFIERS)
{
return modifier_state[mod] > 0;
}
return 0;
}
static const char *SpecialKeyName(int key)
{
switch (key)
{
case ' ': return "SPACE";
case KEY_RIGHTARROW: return "RIGHT";
case KEY_LEFTARROW: return "LEFT";
case KEY_UPARROW: return "UP";
case KEY_DOWNARROW: return "DOWN";
case KEY_ESCAPE: return "ESC";
case KEY_ENTER: return "ENTER";
case KEY_TAB: return "TAB";
case KEY_F1: return "F1";
case KEY_F2: return "F2";
case KEY_F3: return "F3";
case KEY_F4: return "F4";
case KEY_F5: return "F5";
case KEY_F6: return "F6";
case KEY_F7: return "F7";
case KEY_F8: return "F8";
case KEY_F9: return "F9";
case KEY_F10: return "F10";
case KEY_F11: return "F11";
case KEY_F12: return "F12";
case KEY_BACKSPACE: return "BKSP";
case KEY_PAUSE: return "PAUSE";
case KEY_EQUALS: return "EQUALS";
case KEY_MINUS: return "MINUS";
case KEY_RSHIFT: return "SHIFT";
case KEY_RCTRL: return "CTRL";
case KEY_RALT: return "ALT";
case KEY_CAPSLOCK: return "CAPS";
case KEY_SCRLCK: return "SCRLCK";
case KEY_HOME: return "HOME";
case KEY_END: return "END";
case KEY_PGUP: return "PGUP";
case KEY_PGDN: return "PGDN";
case KEY_INS: return "INS";
case KEY_DEL: return "DEL";
/*
case KEYP_0: return "PAD0";
case KEYP_1: return "PAD1";
case KEYP_2: return "PAD2";
case KEYP_3: return "PAD3";
case KEYP_4: return "PAD4";
case KEYP_5: return "PAD5";
case KEYP_6: return "PAD6";
case KEYP_7: return "PAD7";
case KEYP_8: return "PAD8";
case KEYP_9: return "PAD9";
case KEYP_UPARROW: return "PAD_U";
case KEYP_DOWNARROW: return "PAD_D";
case KEYP_LEFTARROW: return "PAD_L";
case KEYP_RIGHTARROW: return "PAD_R";
case KEYP_MULTIPLY: return "PAD*";
case KEYP_PLUS: return "PAD+";
case KEYP_MINUS: return "PAD-";
case KEYP_DIVIDE: return "PAD/";
*/
default: return NULL;
}
}
void TXT_GetKeyDescription(int key, char *buf)
{
const char *keyname;
keyname = SpecialKeyName(key);
if (keyname != NULL)
{
strcpy(buf, keyname);
}
else if (isprint(key))
{
sprintf(buf, "%c", toupper(key));
}
else
{
sprintf(buf, "??%i", key);
}
}
// Searches the desktop screen buffer to determine whether there are any
// blinking characters.
int TXT_ScreenHasBlinkingChars(void)
{
int x, y;
unsigned char *p;
// Check all characters in screen buffer
for (y=0; y<TXT_SCREEN_H; ++y)
{
for (x=0; x<TXT_SCREEN_W; ++x)
{
p = &screendata[(y * TXT_SCREEN_W + x) * 2];
if (p[1] & 0x80)
{
// This character is blinking
return 1;
}
}
}
// None found
return 0;
}
// Sleeps until an event is received, the screen needs to be redrawn,
// or until timeout expires (if timeout != 0)
void TXT_Sleep(int timeout)
{
unsigned int start_time;
if (TXT_ScreenHasBlinkingChars())
{
int time_to_next_blink;
time_to_next_blink = BLINK_PERIOD - (SDL_GetTicks() % BLINK_PERIOD);
// There are blinking characters on the screen, so we
// must time out after a while
if (timeout == 0 || timeout > time_to_next_blink)
{
// Add one so it is always positive
timeout = time_to_next_blink + 1;
}
}
if (timeout == 0)
{
// We can just wait forever until an event occurs
SDL_WaitEvent(NULL);
}
else
{
// Sit in a busy loop until the timeout expires or we have to
// redraw the blinking screen
start_time = SDL_GetTicks();
while (SDL_GetTicks() < start_time + timeout)
{
if (SDL_PollEvent(NULL) != 0)
{
// Received an event, so stop waiting
break;
}
// Don't hog the CPU
SDL_Delay(1);
}
}
}
void TXT_EnableKeyMapping(int enable)
{
key_mapping = enable;
}
void TXT_SetWindowTitle(char *title)
{
SDL_WM_SetCaption(title, NULL);
}
void TXT_SDL_SetEventCallback(TxtSDLEventCallbackFunc callback, void *user_data)
{
event_callback = callback;
event_callback_data = user_data;
}

View File

@ -0,0 +1,50 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2005,2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
//-----------------------------------------------------------------------------
//
// Text mode emulation in SDL
//
//-----------------------------------------------------------------------------
#ifndef TXT_SDL_H
#define TXT_SDL_H
// The textscreen API itself doesn't need SDL; however, SDL needs its
// headers included where main() is defined.
#include "SDL.h"
// Event callback function type: a function of this type can be used
// to intercept events in the textscreen event processing loop.
// Returning 1 will cause the event to be eaten; the textscreen code
// will not see it.
typedef int (*TxtSDLEventCallbackFunc)(SDL_Event *event, void *user_data);
// Set a callback function to call in the SDL event loop. Useful for
// intercepting events. Pass callback=NULL to clear an existing
// callback function.
// user_data is a void pointer to be passed to the callback function.
void TXT_SDL_SetEventCallback(TxtSDLEventCallbackFunc callback, void *user_data);
#endif /* #ifndef TXT_SDL_H */

View File

@ -0,0 +1,121 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#include <stdlib.h>
#include <string.h>
#include "txt_separator.h"
#include "txt_gui.h"
#include "txt_io.h"
#include "txt_main.h"
#include "txt_window.h"
static void TXT_SeparatorSizeCalc(TXT_UNCAST_ARG(separator))
{
TXT_CAST_ARG(txt_separator_t, separator);
if (separator->label != NULL)
{
// Minimum width is the string length + two spaces for padding
separator->widget.w = strlen(separator->label) + 2;
}
else
{
separator->widget.w = 0;
}
separator->widget.h = 1;
}
static void TXT_SeparatorDrawer(TXT_UNCAST_ARG(separator), int selected)
{
TXT_CAST_ARG(txt_separator_t, separator);
int x, y;
int w;
w = separator->widget.w;
TXT_GetXY(&x, &y);
// Draw separator. Go back one character and draw two extra
// to overlap the window borders.
TXT_DrawSeparator(x-2, y, w + 4);
if (separator->label != NULL)
{
TXT_GotoXY(x, y);
TXT_BGColor(TXT_WINDOW_BACKGROUND, 0);
TXT_FGColor(TXT_COLOR_BRIGHT_GREEN);
TXT_DrawString(" ");
TXT_DrawString(separator->label);
TXT_DrawString(" ");
}
}
static void TXT_SeparatorDestructor(TXT_UNCAST_ARG(separator))
{
TXT_CAST_ARG(txt_separator_t, separator);
free(separator->label);
}
void TXT_SetSeparatorLabel(txt_separator_t *separator, char *label)
{
free(separator->label);
if (label != NULL)
{
separator->label = strdup(label);
}
else
{
separator->label = NULL;
}
}
txt_widget_class_t txt_separator_class =
{
TXT_NeverSelectable,
TXT_SeparatorSizeCalc,
TXT_SeparatorDrawer,
NULL,
TXT_SeparatorDestructor,
NULL,
NULL,
};
txt_separator_t *TXT_NewSeparator(char *label)
{
txt_separator_t *separator;
separator = malloc(sizeof(txt_separator_t));
TXT_InitWidget(separator, &txt_separator_class);
separator->label = NULL;
TXT_SetSeparatorLabel(separator, label);
return separator;
}

View File

@ -0,0 +1,72 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#ifndef TXT_SEPARATOR_H
#define TXT_SEPARATOR_H
/**
* @file txt_separator.h
*
* Horizontal separator widget.
*/
/**
* Horizontal separator.
*
* A horizontal separator appears as a horizontal line divider across
* the length of the window in which it is added. An optional label
* allows the separator to be used as a section divider for grouping
* related controls.
*/
typedef struct txt_separator_s txt_separator_t;
#include "txt_widget.h"
struct txt_separator_s
{
txt_widget_t widget;
char *label;
};
extern txt_widget_class_t txt_separator_class;
/**
* Create a new horizontal separator widget.
*
* @param label Label to display on the separator. If this is
* set to NULL, no label is displayed.
* @return The new separator widget.
*/
txt_separator_t *TXT_NewSeparator(char *label);
/**
* Change the label on a separator.
*
* @param separator The separator.
* @param label The new label.
*/
void TXT_SetSeparatorLabel(txt_separator_t *separator, char *label);
#endif /* #ifndef TXT_SEPARATOR_H */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,407 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "doomkeys.h"
#include "txt_spinctrl.h"
#include "txt_gui.h"
#include "txt_io.h"
#include "txt_main.h"
#include "txt_window.h"
// Generate the format string to be used for displaying floats
static void FloatFormatString(float step, char *buf)
{
int precision;
precision = (int) ceil(-log(step) / log(10));
if (precision > 0)
{
sprintf(buf, "%%.%if", precision);
}
else
{
strcpy(buf, "%.1f");
}
}
// Number of characters needed to represent a character
static unsigned int IntWidth(int val)
{
char buf[25];
sprintf(buf, "%i", val);
return strlen(buf);
}
static unsigned int FloatWidth(float val, float step)
{
unsigned int precision;
unsigned int result;
// Calculate the width of the int value
result = IntWidth((int) val);
// Add a decimal part if the precision specifies it
precision = (unsigned int) ceil(-log(step) / log(10));
if (precision > 0)
{
result += precision + 1;
}
return result;
}
// Returns the minimum width of the input box
static unsigned int SpinControlWidth(txt_spincontrol_t *spincontrol)
{
unsigned int minw, maxw;
switch (spincontrol->type)
{
case TXT_SPINCONTROL_FLOAT:
minw = FloatWidth(spincontrol->min.f, spincontrol->step.f);
maxw = FloatWidth(spincontrol->max.f, spincontrol->step.f);
break;
default:
case TXT_SPINCONTROL_INT:
minw = IntWidth(spincontrol->min.i);
maxw = IntWidth(spincontrol->max.i);
break;
}
// Choose the wider of the two values. Add one so that there is always
// space for the cursor when editing.
if (minw > maxw)
{
return minw;
}
else
{
return maxw;
}
}
static void TXT_SpinControlSizeCalc(TXT_UNCAST_ARG(spincontrol))
{
TXT_CAST_ARG(txt_spincontrol_t, spincontrol);
spincontrol->widget.w = SpinControlWidth(spincontrol) + 5;
spincontrol->widget.h = 1;
}
static void SetBuffer(txt_spincontrol_t *spincontrol)
{
char format[25];
switch (spincontrol->type)
{
case TXT_SPINCONTROL_INT:
sprintf(spincontrol->buffer, "%i", spincontrol->value->i);
break;
case TXT_SPINCONTROL_FLOAT:
FloatFormatString(spincontrol->step.f, format);
sprintf(spincontrol->buffer, format, spincontrol->value->f);
break;
}
}
static void TXT_SpinControlDrawer(TXT_UNCAST_ARG(spincontrol), int selected)
{
TXT_CAST_ARG(txt_spincontrol_t, spincontrol);
unsigned int i;
unsigned int padding;
TXT_FGColor(TXT_COLOR_BRIGHT_CYAN);
TXT_BGColor(TXT_WINDOW_BACKGROUND, 0);
TXT_DrawString("\x1b ");
TXT_FGColor(TXT_COLOR_BRIGHT_WHITE);
// Choose background color
if (selected && spincontrol->editing)
{
TXT_BGColor(TXT_COLOR_BLACK, 0);
}
else
{
TXT_SetWidgetBG(spincontrol, selected);
}
if (!spincontrol->editing)
{
SetBuffer(spincontrol);
}
i = 0;
padding = spincontrol->widget.w - strlen(spincontrol->buffer) - 4;
while (i < padding)
{
TXT_DrawString(" ");
++i;
}
TXT_DrawString(spincontrol->buffer);
i += strlen(spincontrol->buffer);
while (i < spincontrol->widget.w - 4)
{
TXT_DrawString(" ");
++i;
}
TXT_FGColor(TXT_COLOR_BRIGHT_CYAN);
TXT_BGColor(TXT_WINDOW_BACKGROUND, 0);
TXT_DrawString(" \x1a");
}
static void TXT_SpinControlDestructor(TXT_UNCAST_ARG(spincontrol))
{
TXT_CAST_ARG(txt_spincontrol_t, spincontrol);
free(spincontrol->buffer);
}
static void AddCharacter(txt_spincontrol_t *spincontrol, int key)
{
if (strlen(spincontrol->buffer) < SpinControlWidth(spincontrol))
{
spincontrol->buffer[strlen(spincontrol->buffer) + 1] = '\0';
spincontrol->buffer[strlen(spincontrol->buffer)] = key;
}
}
static void Backspace(txt_spincontrol_t *spincontrol)
{
if (strlen(spincontrol->buffer) > 0)
{
spincontrol->buffer[strlen(spincontrol->buffer) - 1] = '\0';
}
}
static void EnforceLimits(txt_spincontrol_t *spincontrol)
{
switch (spincontrol->type)
{
case TXT_SPINCONTROL_INT:
if (spincontrol->value->i > spincontrol->max.i)
spincontrol->value->i = spincontrol->max.i;
else if (spincontrol->value->i < spincontrol->min.i)
spincontrol->value->i = spincontrol->min.i;
break;
case TXT_SPINCONTROL_FLOAT:
if (spincontrol->value->f > spincontrol->max.f)
spincontrol->value->f = spincontrol->max.f;
else if (spincontrol->value->f < spincontrol->min.f)
spincontrol->value->f = spincontrol->min.f;
break;
}
}
static int TXT_SpinControlKeyPress(TXT_UNCAST_ARG(spincontrol), int key)
{
TXT_CAST_ARG(txt_spincontrol_t, spincontrol);
// Enter to enter edit mode
if (spincontrol->editing)
{
if (key == KEY_ENTER)
{
switch (spincontrol->type)
{
case TXT_SPINCONTROL_INT:
spincontrol->value->i = atoi(spincontrol->buffer);
break;
case TXT_SPINCONTROL_FLOAT:
spincontrol->value->f = (float) atof(spincontrol->buffer);
break;
}
spincontrol->editing = 0;
EnforceLimits(spincontrol);
return 1;
}
if (key == KEY_ESCAPE)
{
// Abort without saving value
spincontrol->editing = 0;
return 1;
}
if (isdigit(key) || key == '-' || key == '.')
{
AddCharacter(spincontrol, key);
return 1;
}
if (key == KEY_BACKSPACE)
{
Backspace(spincontrol);
return 1;
}
}
else
{
// Non-editing mode
if (key == KEY_ENTER)
{
spincontrol->editing = 1;
strcpy(spincontrol->buffer, "");
return 1;
}
if (key == KEY_LEFTARROW)
{
switch (spincontrol->type)
{
case TXT_SPINCONTROL_INT:
spincontrol->value->i -= spincontrol->step.i;
break;
case TXT_SPINCONTROL_FLOAT:
spincontrol->value->f -= spincontrol->step.f;
break;
}
EnforceLimits(spincontrol);
return 1;
}
if (key == KEY_RIGHTARROW)
{
switch (spincontrol->type)
{
case TXT_SPINCONTROL_INT:
spincontrol->value->i += spincontrol->step.i;
break;
case TXT_SPINCONTROL_FLOAT:
spincontrol->value->f += spincontrol->step.f;
break;
}
EnforceLimits(spincontrol);
return 1;
}
}
return 0;
}
static void TXT_SpinControlMousePress(TXT_UNCAST_ARG(spincontrol),
int x, int y, int b)
{
TXT_CAST_ARG(txt_spincontrol_t, spincontrol);
unsigned int rel_x;
rel_x = x - spincontrol->widget.x;
if (rel_x < 2)
{
TXT_SpinControlKeyPress(spincontrol, KEY_LEFTARROW);
}
else if (rel_x >= spincontrol->widget.w - 2)
{
TXT_SpinControlKeyPress(spincontrol, KEY_RIGHTARROW);
}
}
txt_widget_class_t txt_spincontrol_class =
{
TXT_AlwaysSelectable,
TXT_SpinControlSizeCalc,
TXT_SpinControlDrawer,
TXT_SpinControlKeyPress,
TXT_SpinControlDestructor,
TXT_SpinControlMousePress,
NULL,
};
static txt_spincontrol_t *TXT_BaseSpinControl(void)
{
txt_spincontrol_t *spincontrol;
spincontrol = malloc(sizeof(txt_spincontrol_t));
TXT_InitWidget(spincontrol, &txt_spincontrol_class);
spincontrol->buffer = malloc(25);
strcpy(spincontrol->buffer, "");
spincontrol->editing = 0;
return spincontrol;
}
txt_spincontrol_t *TXT_NewSpinControl(int *value, int min, int max)
{
txt_spincontrol_t *spincontrol;
spincontrol = TXT_BaseSpinControl();
spincontrol->type = TXT_SPINCONTROL_INT;
spincontrol->value = (void *) value;
spincontrol->min.i = min;
spincontrol->max.i = max;
spincontrol->step.i = 1;
return spincontrol;
}
txt_spincontrol_t *TXT_NewFloatSpinControl(float *value, float min, float max)
{
txt_spincontrol_t *spincontrol;
spincontrol = TXT_BaseSpinControl();
spincontrol->type = TXT_SPINCONTROL_FLOAT;
spincontrol->value = (void *) value;
spincontrol->min.f = min;
spincontrol->max.f = max;
spincontrol->step.f = 0.1f;
return spincontrol;
}

View File

@ -0,0 +1,84 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#ifndef TXT_SPINCONTROL_H
#define TXT_SPINCONTROL_H
/**
* @file txt_spinctrl.h
*
* Spin control widget.
*/
/**
* Spin control widget.
*
* A spin control widget works as an input box that can be used to
* set numeric values, but also has buttons that allow its value
* to be increased or decreased.
*/
typedef struct txt_spincontrol_s txt_spincontrol_t;
typedef enum
{
TXT_SPINCONTROL_INT,
TXT_SPINCONTROL_FLOAT,
} txt_spincontrol_type_t;
#include "txt_widget.h"
struct txt_spincontrol_s
{
txt_widget_t widget;
txt_spincontrol_type_t type;
union { float f; int i; } min, max, *value, step;
int editing;
char *buffer;
};
/**
* Create a new spin control widget tracking an integer value.
*
* @param value Pointer to the variable containing the value
* displayed in the widget.
* @param min Minimum value that may be set.
* @param max Maximum value that may be set.
* @return Pointer to the new spin control widget.
*/
txt_spincontrol_t *TXT_NewSpinControl(int *value, int min, int max);
/**
* Create a new spin control widget tracking a float value.
*
* @param value Pointer to the variable containing the value
* displayed in the widget.
* @param min Minimum value that may be set.
* @param max Maximum value that may be set.
* @return Pointer to the new spin control widget.
*/
txt_spincontrol_t *TXT_NewFloatSpinControl(float *value, float min, float max);
#endif /* #ifndef TXT_SPINCONTROL_H */

View File

@ -0,0 +1,79 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#include <stdlib.h>
#include <string.h>
#include "doomkeys.h"
#include "txt_strut.h"
#include "txt_io.h"
#include "txt_main.h"
#include "txt_window.h"
static void TXT_StrutSizeCalc(TXT_UNCAST_ARG(strut))
{
TXT_CAST_ARG(txt_strut_t, strut);
// Minimum width is the string length + two spaces for padding
strut->widget.w = strut->width;
strut->widget.h = strut->height;
}
static void TXT_StrutDrawer(TXT_UNCAST_ARG(strut), int selected)
{
// Nothing is drawn for a strut.
}
static void TXT_StrutDestructor(TXT_UNCAST_ARG(strut))
{
}
static int TXT_StrutKeyPress(TXT_UNCAST_ARG(strut), int key)
{
return 0;
}
txt_widget_class_t txt_strut_class =
{
TXT_NeverSelectable,
TXT_StrutSizeCalc,
TXT_StrutDrawer,
TXT_StrutKeyPress,
TXT_StrutDestructor,
NULL,
NULL,
};
txt_strut_t *TXT_NewStrut(int width, int height)
{
txt_strut_t *strut;
strut = malloc(sizeof(txt_strut_t));
TXT_InitWidget(strut, &txt_strut_class);
strut->width = width;
strut->height = height;
return strut;
}

View File

@ -0,0 +1,61 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#ifndef TXT_STRUT_H
#define TXT_STRUT_H
/**
* @file txt_strut.h
*
* Strut widget.
*/
/**
* Strut widget.
*
* A strut is a widget that takes up a fixed amount of space. It can
* be visualised as a transparent box. Struts are used to provide
* spacing between widgets.
*/
typedef struct txt_strut_s txt_strut_t;
#include "txt_widget.h"
struct txt_strut_s
{
txt_widget_t widget;
int width;
int height;
};
/**
* Create a new strut.
*
* @param width Width of the strut, in characters.
* @param height Height of the strut, in characters.
*/
txt_strut_t *TXT_NewStrut(int width, int height);
#endif /* #ifndef TXT_STRUT_H */

View File

@ -0,0 +1,896 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#include "doomkeys.h"
#include "txt_desktop.h"
#include "txt_gui.h"
#include "txt_io.h"
#include "txt_main.h"
#include "txt_separator.h"
#include "txt_strut.h"
#include "txt_table.h"
// Remove all entries from a table
void TXT_ClearTable(TXT_UNCAST_ARG(table))
{
TXT_CAST_ARG(txt_table_t, table);
int i;
// Free all widgets
// Skip over the first (num_columns) widgets in the array, as these
// are the column struts used to control column width
for (i=table->columns; i<table->num_widgets; ++i)
{
if (table->widgets[i] != NULL)
{
TXT_DestroyWidget(table->widgets[i]);
}
}
// Shrink the table to just the column strut widgets
table->num_widgets = table->columns;
}
static void TXT_TableDestructor(TXT_UNCAST_ARG(table))
{
TXT_CAST_ARG(txt_table_t, table);
TXT_ClearTable(table);
}
static int TableRows(txt_table_t *table)
{
return (table->num_widgets + table->columns - 1) / table->columns;
}
static void CalcRowColSizes(txt_table_t *table,
unsigned int *row_heights,
unsigned int *col_widths)
{
int x, y;
int rows;
txt_widget_t *widget;
rows = TableRows(table);
memset(col_widths, 0, sizeof(int) * table->columns);
for (y=0; y<rows; ++y)
{
row_heights[y] = 0;
for (x=0; x<table->columns; ++x)
{
if (y * table->columns + x >= table->num_widgets)
break;
widget = table->widgets[y * table->columns + x];
// NULL represents an empty spacer
if (widget != NULL)
{
TXT_CalcWidgetSize(widget);
if (widget->h > row_heights[y])
row_heights[y] = widget->h;
if (widget->w > col_widths[x])
col_widths[x] = widget->w;
}
}
}
}
static void TXT_CalcTableSize(TXT_UNCAST_ARG(table))
{
TXT_CAST_ARG(txt_table_t, table);
unsigned int *column_widths;
unsigned int *row_heights;
int x, y;
int rows;
rows = TableRows(table);
row_heights = malloc(sizeof(int) * rows);
column_widths = malloc(sizeof(int) * table->columns);
CalcRowColSizes(table, row_heights, column_widths);
table->widget.w = 0;
for (x=0; x<table->columns; ++x)
{
table->widget.w += column_widths[x];
}
table->widget.h = 0;
for (y=0; y<rows; ++y)
{
table->widget.h += row_heights[y];
}
free(row_heights);
free(column_widths);
}
void TXT_AddWidget(TXT_UNCAST_ARG(table), TXT_UNCAST_ARG(widget))
{
TXT_CAST_ARG(txt_table_t, table);
TXT_CAST_ARG(txt_widget_t, widget);
if (table->num_widgets > 0)
{
txt_widget_t *last_widget;
last_widget = table->widgets[table->num_widgets - 1];
if (widget != NULL && last_widget != NULL
&& widget->widget_class == &txt_separator_class
&& last_widget->widget_class == &txt_separator_class)
{
// The previous widget added was a separator; replace
// it with this one.
//
// This way, if the first widget added to a window is
// a separator, it replaces the "default" separator that
// the window itself adds on creation.
table->widgets[table->num_widgets - 1] = widget;
TXT_DestroyWidget(last_widget);
return;
}
}
table->widgets = realloc(table->widgets,
sizeof(txt_widget_t *) * (table->num_widgets + 1));
table->widgets[table->num_widgets] = widget;
++table->num_widgets;
// Maintain parent pointer.
if (widget != NULL)
{
widget->parent = &table->widget;
}
}
// Add multiple widgets to a table.
void TXT_AddWidgets(TXT_UNCAST_ARG(table), ...)
{
TXT_CAST_ARG(txt_table_t, table);
va_list args;
txt_widget_t *widget;
va_start(args, TXT_UNCAST_ARG_NAME(table));
// Keep adding widgets until a NULL is reached.
for (;;)
{
widget = va_arg(args, txt_widget_t *);
if (widget == NULL)
{
break;
}
TXT_AddWidget(table, widget);
}
va_end(args);
}
static int SelectableCell(txt_table_t *table, int x, int y)
{
txt_widget_t *widget;
int i;
if (x < 0 || x >= table->columns)
{
return 0;
}
i = y * table->columns + x;
if (i >= 0 && i < table->num_widgets)
{
widget = table->widgets[i];
return widget != NULL
&& TXT_SelectableWidget(widget)
&& widget->visible;
}
return 0;
}
// Tries to locate a selectable widget in the given row, returning
// the column number of the first column available or -1 if none are
// available in the given row.
//
// Starts from start_col, then searches nearby columns.
static int FindSelectableColumn(txt_table_t *table, int row, int start_col)
{
int x;
for (x=0; x<table->columns; ++x)
{
// Search to the right
if (SelectableCell(table, start_col + x, row))
{
return start_col + x;
}
// Search to the left
if (SelectableCell(table, start_col - x, row))
{
return start_col - x;
}
}
// None available
return -1;
}
static int TXT_TableKeyPress(TXT_UNCAST_ARG(table), int key)
{
TXT_CAST_ARG(txt_table_t, table);
int selected;
int rows;
rows = TableRows(table);
// Send to the currently selected widget first
selected = table->selected_y * table->columns + table->selected_x;
if (selected >= 0 && selected < table->num_widgets)
{
if (table->widgets[selected] != NULL
&& TXT_SelectableWidget(table->widgets[selected])
&& TXT_WidgetKeyPress(table->widgets[selected], key))
{
return 1;
}
}
if (key == KEY_DOWNARROW)
{
int new_x, new_y;
// Move cursor down to the next selectable widget
for (new_y = table->selected_y + 1; new_y < rows; ++new_y)
{
new_x = FindSelectableColumn(table, new_y, table->selected_x);
if (new_x >= 0)
{
// Found a selectable widget in this column!
table->selected_x = new_x;
table->selected_y = new_y;
return 1;
}
}
}
if (key == KEY_UPARROW)
{
int new_x, new_y;
// Move cursor up to the next selectable widget
for (new_y = table->selected_y - 1; new_y >= 0; --new_y)
{
new_x = FindSelectableColumn(table, new_y, table->selected_x);
if (new_x >= 0)
{
// Found a selectable widget in this column!
table->selected_x = new_x;
table->selected_y = new_y;
return 1;
}
}
}
if (key == KEY_LEFTARROW)
{
int new_x;
// Move cursor left
for (new_x = table->selected_x - 1; new_x >= 0; --new_x)
{
if (SelectableCell(table, new_x, table->selected_y))
{
// Found a selectable widget!
table->selected_x = new_x;
return 1;
}
}
}
if (key == KEY_RIGHTARROW)
{
int new_x;
// Move cursor left
for (new_x = table->selected_x + 1; new_x < table->columns; ++new_x)
{
if (SelectableCell(table, new_x, table->selected_y))
{
// Found a selectable widget!
table->selected_x = new_x;
return 1;
}
}
}
return 0;
}
// Check the currently selected widget in the table is valid.
static void CheckValidSelection(txt_table_t *table)
{
int rows;
int new_x, new_y;
rows = TableRows(table);
for (new_y = table->selected_y; new_y < rows; ++new_y)
{
new_x = FindSelectableColumn(table, new_y, table->selected_x);
if (new_x >= 0)
{
// Found a selectable column.
table->selected_x = new_x;
table->selected_y = new_y;
break;
}
}
}
static void LayoutCell(txt_table_t *table, int x, int y, int col_width,
int draw_x, int draw_y)
{
txt_widget_t *widget;
widget = table->widgets[y * table->columns + x];
// Adjust x position based on alignment property
switch (widget->align)
{
case TXT_HORIZ_LEFT:
widget->w = col_width;
break;
case TXT_HORIZ_CENTER:
TXT_CalcWidgetSize(widget);
// Separators are always drawn left-aligned.
if (widget->widget_class != &txt_separator_class)
{
draw_x += (col_width - widget->w) / 2;
}
break;
case TXT_HORIZ_RIGHT:
TXT_CalcWidgetSize(widget);
if (widget->widget_class != &txt_separator_class)
{
draw_x += col_width - widget->w;
}
break;
}
// Set the position for this widget
widget->x = draw_x;
widget->y = draw_y;
// Recursively lay out any widgets contained in the widget
TXT_LayoutWidget(widget);
}
static void TXT_TableLayout(TXT_UNCAST_ARG(table))
{
TXT_CAST_ARG(txt_table_t, table);
unsigned int *column_widths;
unsigned int *row_heights;
int draw_x, draw_y;
int x, y;
int i;
int rows;
// Work out the column widths and row heights
rows = TableRows(table);
column_widths = malloc(sizeof(int) * table->columns);
row_heights = malloc(sizeof(int) * rows);
CalcRowColSizes(table, row_heights, column_widths);
// If this table only has one column, expand column size to fit
// the display width. Ensures that separators reach the window edges
// when drawing windows.
if (table->columns == 1)
{
column_widths[0] = table->widget.w;
}
// Draw all cells
draw_y = table->widget.y;
for (y=0; y<rows; ++y)
{
draw_x = table->widget.x;
for (x=0; x<table->columns; ++x)
{
i = y * table->columns + x;
if (i >= table->num_widgets)
break;
if (table->widgets[i] != NULL)
{
LayoutCell(table, x, y, column_widths[x],
draw_x, draw_y);
}
draw_x += column_widths[x];
}
draw_y += row_heights[y];
}
free(row_heights);
free(column_widths);
}
static void TXT_TableDrawer(TXT_UNCAST_ARG(table), int selected)
{
TXT_CAST_ARG(txt_table_t, table);
txt_widget_t *widget;
int selected_cell;
int i;
// Check the table's current selection points at something valid before
// drawing.
CheckValidSelection(table);
// Find the index of the currently-selected widget.
selected_cell = table->selected_y * table->columns + table->selected_x;
// Draw all cells
for (i=0; i<table->num_widgets; ++i)
{
widget = table->widgets[i];
if (widget != NULL)
{
TXT_GotoXY(widget->x, widget->y);
TXT_DrawWidget(widget, selected && i == selected_cell);
}
}
}
// Responds to mouse presses
static void TXT_TableMousePress(TXT_UNCAST_ARG(table), int x, int y, int b)
{
TXT_CAST_ARG(txt_table_t, table);
txt_widget_t *widget;
int i;
for (i=0; i<table->num_widgets; ++i)
{
widget = table->widgets[i];
// NULL widgets are spacers
if (widget != NULL)
{
if (x >= widget->x && x < (signed) (widget->x + widget->w)
&& y >= widget->y && y < (signed) (widget->y + widget->h))
{
// This is the widget that was clicked!
// Select the cell if the widget is selectable
if (TXT_SelectableWidget(widget))
{
table->selected_x = i % table->columns;
table->selected_y = i / table->columns;
}
// Propagate click
TXT_WidgetMousePress(widget, x, y, b);
break;
}
}
}
}
// Determine whether the table is selectable.
static int TXT_TableSelectable(TXT_UNCAST_ARG(table))
{
TXT_CAST_ARG(txt_table_t, table);
int i;
// Is the currently-selected cell selectable?
if (SelectableCell(table, table->selected_x, table->selected_y))
{
return 1;
}
// Find the first selectable cell and set selected_x, selected_y.
for (i = 0; i < table->num_widgets; ++i)
{
if (table->widgets[i] != NULL
&& TXT_SelectableWidget(table->widgets[i]))
{
table->selected_x = i % table->columns;
table->selected_y = i / table->columns;
return 1;
}
}
// No selectable widgets exist within the table.
return 0;
}
txt_widget_class_t txt_table_class =
{
TXT_TableSelectable,
TXT_CalcTableSize,
TXT_TableDrawer,
TXT_TableKeyPress,
TXT_TableDestructor,
TXT_TableMousePress,
TXT_TableLayout,
};
void TXT_InitTable(txt_table_t *table, int columns)
{
int i;
TXT_InitWidget(table, &txt_table_class);
table->columns = columns;
table->widgets = NULL;
table->num_widgets = 0;
table->selected_x = 0;
table->selected_y = 0;
// Add a strut for each column at the start of the table.
// These are used by the TXT_SetColumnWidths function below:
// the struts are created with widths of 0 each, but this
// function changes them.
for (i=0; i<columns; ++i)
{
TXT_AddWidget(table, TXT_NewStrut(0, 0));
}
}
txt_table_t *TXT_NewTable(int columns)
{
txt_table_t *table;
table = malloc(sizeof(txt_table_t));
TXT_InitTable(table, columns);
return table;
}
// Create a horizontal table from a list of widgets.
txt_table_t *TXT_NewHorizBox(TXT_UNCAST_ARG(first_widget), ...)
{
TXT_CAST_ARG(txt_widget_t, first_widget);
txt_table_t *result;
va_list args;
int num_args;
// First, find the number of arguments to determine the width of
// the box.
va_start(args, TXT_UNCAST_ARG_NAME(first_widget));
num_args = 1;
for (;;)
{
txt_widget_t *widget;
widget = va_arg(args, txt_widget_t *);
if (widget == NULL)
{
// End of list
break;
}
else
{
++num_args;
}
}
va_end(args);
// Create the table.
result = TXT_NewTable(num_args);
TXT_AddWidget(result, first_widget);
// Go through the list again and add each widget.
va_start(args, TXT_UNCAST_ARG_NAME(first_widget));
for (;;)
{
txt_widget_t *widget;
widget = va_arg(args, txt_widget_t *);
if (widget == NULL)
{
// End of list
break;
}
else
{
TXT_AddWidget(result, widget);
}
}
va_end(args);
return result;
}
// Get the currently-selected widget in a table, recursively searching
// through sub-tables if necessary.
txt_widget_t *TXT_GetSelectedWidget(TXT_UNCAST_ARG(table))
{
TXT_CAST_ARG(txt_table_t, table);
txt_widget_t *result;
int index;
index = table->selected_y * table->columns + table->selected_x;
result = NULL;
if (index >= 0 && index < table->num_widgets)
{
result = table->widgets[index];
}
if (result != NULL && result->widget_class == &txt_table_class)
{
result = TXT_GetSelectedWidget(result);
}
return result;
}
// Selects a given widget in a table, recursively searching any tables
// within this table. Returns 1 if successful, 0 if unsuccessful.
int TXT_SelectWidget(TXT_UNCAST_ARG(table), TXT_UNCAST_ARG(widget))
{
TXT_CAST_ARG(txt_table_t, table);
TXT_CAST_ARG(txt_widget_t, widget);
int i;
for (i=0; i<table->num_widgets; ++i)
{
if (table->widgets[i] == NULL)
{
continue;
}
if (table->widgets[i] == widget)
{
// Found the item! Select it and return.
table->selected_x = i % table->columns;
table->selected_y = i / table->columns;
return 1;
}
if (table->widgets[i]->widget_class == &txt_table_class)
{
// This item is a subtable. Recursively search this table.
if (TXT_SelectWidget(table->widgets[i], widget))
{
// Found it in the subtable. Select this subtable and return.
table->selected_x = i % table->columns;
table->selected_y = i / table->columns;
return 1;
}
}
}
// Not found.
return 0;
}
// Sets the widths of columns in a table.
void TXT_SetColumnWidths(TXT_UNCAST_ARG(table), ...)
{
TXT_CAST_ARG(txt_table_t, table);
va_list args;
txt_strut_t *strut;
int i;
int width;
va_start(args, TXT_UNCAST_ARG_NAME(table));
for (i=0; i<table->columns; ++i)
{
width = va_arg(args, int);
strut = (txt_strut_t *) table->widgets[i];
strut->width = width;
}
va_end(args);
}
// Moves the select by at least the given number of characters.
// Currently quietly ignores pagex, as we don't use it.
int TXT_PageTable(TXT_UNCAST_ARG(table), int pagex, int pagey)
{
TXT_CAST_ARG(txt_table_t, table);
unsigned int *column_widths;
unsigned int *row_heights;
int rows;
int changed = 0;
rows = TableRows(table);
row_heights = malloc(sizeof(int) * rows);
column_widths = malloc(sizeof(int) * table->columns);
CalcRowColSizes(table, row_heights, column_widths);
if (pagex)
{
// @todo Jump selection to the left or right as needed
}
if (pagey)
{
int new_x, new_y;
int distance = 0;
int dir;
// What direction are we moving?
if (pagey > 0)
{
dir = 1;
}
else
{
dir = -1;
}
// Move the cursor until the desired distance is reached.
new_y = table->selected_y;
while (new_y >= 0 && new_y < rows)
{
// We are about to travel a distance equal to the height of the row
// we are about to leave.
distance += row_heights[new_y];
// *Now* increment the loop.
new_y += dir;
new_x = FindSelectableColumn(table, new_y, table->selected_x);
if (new_x >= 0)
{
// Found a selectable widget in this column!
// Select it anyway in case we don't find something better.
table->selected_x = new_x;
table->selected_y = new_y;
changed = 1;
// ...but is it far enough away?
if (distance >= abs(pagey))
{
break;
}
}
}
}
free(row_heights);
free(column_widths);
return changed;
}

View File

@ -0,0 +1,196 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#ifndef TXT_TABLE_H
#define TXT_TABLE_H
/**
* @file txt_table.h
*
* Table widget.
*/
/**
* Table widget.
*
* A table is a widget that contains other widgets. It may have
* multiple columns, in which case the child widgets are laid out
* in a grid. Columns automatically grow as necessary, although
* minimum column widths can be set using @ref TXT_SetColumnWidths.
*
* To create a new table, use @ref TXT_NewTable. It is also
* possible to use @ref TXT_NewHorizBox to create a table, specifying
* widgets to place inside a horizontal list. A vertical list is
* possible simply by creating a table containing a single column.
*/
typedef struct txt_table_s txt_table_t;
#include "txt_widget.h"
struct txt_table_s
{
txt_widget_t widget;
// Widgets in this table
// The widget at (x,y) in the table is widgets[columns * y + x]
txt_widget_t **widgets;
int num_widgets;
// Number of columns
int columns;
// Currently selected
int selected_x;
int selected_y;
};
extern txt_widget_class_t txt_table_class;
void TXT_InitTable(txt_table_t *table, int columns);
/**
* Create a new table.
*
* @param columns The number of columns in the new table.
* @return Pointer to the new table structure.
*/
txt_table_t *TXT_NewTable(int columns);
/**
* Create a table containing the specified widgets packed horizontally,
* from left to right.
*
* The arguments to this function are variable. Each argument must
* be a pointer to a widget, and the list is terminated with a
* NULL.
*
* @return Pointer to the new table structure.
*/
txt_table_t *TXT_NewHorizBox(TXT_UNCAST_ARG(first_widget), ...);
/**
* Get the currently selected widget within a table.
*
* This function will recurse through subtables if necessary.
*
* @param table The table.
* @return Pointer to the widget that is currently selected.
*/
txt_widget_t *TXT_GetSelectedWidget(TXT_UNCAST_ARG(table));
/**
* Add a widget to a table.
*
* Widgets are added to tables horizontally, from left to right.
* For example, for a table with three columns, the first call
* to this function will add a widget to the first column, the second
* call to the second column, the third call to the third column,
* and the fourth will return to the first column, starting a new
* row.
*
* For adding many widgets, it may be easier to use
* @ref TXT_AddWidgets.
*
* @param table The table.
* @param widget The widget to add.
*/
void TXT_AddWidget(TXT_UNCAST_ARG(table), TXT_UNCAST_ARG(widget));
/**
* Add multiple widgets to a table.
*
* Widgets are added as described in the documentation for the
* @ref TXT_AddWidget function. This function adds multiple
* widgets. The number of arguments is variable, and the argument
* list must be terminated by a NULL pointer.
*
* @param table The table.
*/
void TXT_AddWidgets(TXT_UNCAST_ARG(table), ...);
/**
* Select the given widget that is contained within the specified
* table.
*
* This function will recursively search through subtables if
* necessary.
*
* @param table The table.
* @param widget The widget to select.
* @return Non-zero (true) if it has been selected,
* or zero (false) if it was not found within
* this table.
*/
int TXT_SelectWidget(TXT_UNCAST_ARG(table), TXT_UNCAST_ARG(widget));
/**
* Set the widths of the columns of the table.
*
* The arguments to this function are variable, and correspond
* to the number of columns in the table. For example, if a table
* has five columns, the width of each of the five columns must be
* specified.
*
* The width values are in number of characters.
*
* Note that this function only sets the minimum widths for columns;
* if the columns contain widgets that are wider than the widths
* specified, they will be larger.
*
* @param table The table.
*/
void TXT_SetColumnWidths(TXT_UNCAST_ARG(table), ...);
/**
* Remove all widgets from a table.
*
* @param table The table.
*/
void TXT_ClearTable(TXT_UNCAST_ARG(table));
/**
* Hack to move the selection in a table by a 'page', triggered by the
* scrollpane. This acts as per the keyboard events for the arrows, but moves
* the selection by at least the specified number of characters.
*
* @param table The table.
* @param pagex Minimum distance to move the selection horizontally.
* @param pagey Minimum distance to move the selection vertically.
* @return Non-zero if the selection has been changed.
*/
int TXT_PageTable(TXT_UNCAST_ARG(table), int pagex, int pagey);
#endif /* #ifndef TXT_TABLE_T */

View File

@ -0,0 +1,301 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#include <stdlib.h>
#include <string.h>
#include "txt_io.h"
#include "txt_widget.h"
#include "txt_gui.h"
#include "txt_desktop.h"
typedef struct
{
char *signal_name;
TxtWidgetSignalFunc func;
void *user_data;
} txt_callback_t;
struct txt_callback_table_s
{
int refcount;
txt_callback_t *callbacks;
int num_callbacks;
};
txt_callback_table_t *TXT_NewCallbackTable(void)
{
txt_callback_table_t *table;
table = malloc(sizeof(txt_callback_table_t));
table->callbacks = NULL;
table->num_callbacks = 0;
table->refcount = 1;
return table;
}
void TXT_RefCallbackTable(txt_callback_table_t *table)
{
++table->refcount;
}
void TXT_UnrefCallbackTable(txt_callback_table_t *table)
{
int i;
--table->refcount;
if (table->refcount == 0)
{
// No more references to this table
for (i=0; i<table->num_callbacks; ++i)
{
free(table->callbacks[i].signal_name);
}
free(table->callbacks);
free(table);
}
}
void TXT_InitWidget(TXT_UNCAST_ARG(widget), txt_widget_class_t *widget_class)
{
TXT_CAST_ARG(txt_widget_t, widget);
widget->widget_class = widget_class;
widget->callback_table = TXT_NewCallbackTable();
widget->parent = NULL;
// Visible by default.
widget->visible = 1;
// Align left by default
widget->align = TXT_HORIZ_LEFT;
}
void TXT_SignalConnect(TXT_UNCAST_ARG(widget),
const char *signal_name,
TxtWidgetSignalFunc func,
void *user_data)
{
TXT_CAST_ARG(txt_widget_t, widget);
txt_callback_table_t *table;
txt_callback_t *callback;
table = widget->callback_table;
// Add a new callback to the table
table->callbacks
= realloc(table->callbacks,
sizeof(txt_callback_t) * (table->num_callbacks + 1));
callback = &table->callbacks[table->num_callbacks];
++table->num_callbacks;
callback->signal_name = strdup(signal_name);
callback->func = func;
callback->user_data = user_data;
}
void TXT_EmitSignal(TXT_UNCAST_ARG(widget), const char *signal_name)
{
TXT_CAST_ARG(txt_widget_t, widget);
txt_callback_table_t *table;
int i;
table = widget->callback_table;
// Don't destroy the table while we're searching through it
// (one of the callbacks may destroy this window)
TXT_RefCallbackTable(table);
// Search the table for all callbacks with this name and invoke
// the functions.
for (i=0; i<table->num_callbacks; ++i)
{
if (!strcmp(table->callbacks[i].signal_name, signal_name))
{
table->callbacks[i].func(widget, table->callbacks[i].user_data);
}
}
// Finished using the table
TXT_UnrefCallbackTable(table);
}
void TXT_CalcWidgetSize(TXT_UNCAST_ARG(widget))
{
TXT_CAST_ARG(txt_widget_t, widget);
widget->widget_class->size_calc(widget);
}
void TXT_DrawWidget(TXT_UNCAST_ARG(widget), int selected)
{
TXT_CAST_ARG(txt_widget_t, widget);
// For convenience...
TXT_GotoXY(widget->x, widget->y);
// Call drawer method
widget->widget_class->drawer(widget, selected);
}
void TXT_DestroyWidget(TXT_UNCAST_ARG(widget))
{
TXT_CAST_ARG(txt_widget_t, widget);
widget->widget_class->destructor(widget);
TXT_UnrefCallbackTable(widget->callback_table);
free(widget);
}
int TXT_WidgetKeyPress(TXT_UNCAST_ARG(widget), int key)
{
TXT_CAST_ARG(txt_widget_t, widget);
if (widget->widget_class->key_press != NULL)
{
return widget->widget_class->key_press(widget, key);
}
return 0;
}
void TXT_SetWidgetAlign(TXT_UNCAST_ARG(widget), txt_horiz_align_t horiz_align)
{
TXT_CAST_ARG(txt_widget_t, widget);
widget->align = horiz_align;
}
void TXT_WidgetMousePress(TXT_UNCAST_ARG(widget), int x, int y, int b)
{
TXT_CAST_ARG(txt_widget_t, widget);
if (widget->widget_class->mouse_press != NULL)
{
widget->widget_class->mouse_press(widget, x, y, b);
}
}
void TXT_LayoutWidget(TXT_UNCAST_ARG(widget))
{
TXT_CAST_ARG(txt_widget_t, widget);
if (widget->widget_class->layout != NULL)
{
widget->widget_class->layout(widget);
}
}
int TXT_AlwaysSelectable(TXT_UNCAST_ARG(widget))
{
return 1;
}
int TXT_NeverSelectable(TXT_UNCAST_ARG(widget))
{
return 0;
}
int TXT_SelectableWidget(TXT_UNCAST_ARG(widget))
{
TXT_CAST_ARG(txt_widget_t, widget);
if (widget->widget_class->selectable != NULL)
{
return widget->widget_class->selectable(widget);
}
else
{
return 0;
}
}
int TXT_ContainsWidget(TXT_UNCAST_ARG(haystack), TXT_UNCAST_ARG(needle))
{
TXT_CAST_ARG(txt_widget_t, haystack);
TXT_CAST_ARG(txt_widget_t, needle);
while (needle != NULL)
{
if (needle == haystack)
{
return 1;
}
needle = needle->parent;
}
return 0;
}
int TXT_HoveringOverWidget(TXT_UNCAST_ARG(widget))
{
TXT_CAST_ARG(txt_widget_t, widget);
txt_window_t *active_window;
int x, y;
// We can only be hovering over widgets in the active window.
active_window = TXT_GetActiveWindow();
if (active_window == NULL || !TXT_ContainsWidget(active_window, widget))
{
return 0;
}
// Is the mouse cursor within the bounds of the widget?
TXT_GetMousePosition(&x, &y);
return (x >= widget->x && x < widget->x + widget->w
&& y >= widget->y && y < widget->y + widget->h);
}
void TXT_SetWidgetBG(TXT_UNCAST_ARG(widget), int selected)
{
TXT_CAST_ARG(txt_widget_t, widget);
if (selected)
{
TXT_BGColor(TXT_COLOR_GREY, 0);
}
else if (TXT_HoveringOverWidget(widget))
{
TXT_BGColor(TXT_HOVER_BACKGROUND, 0);
}
else
{
TXT_BGColor(TXT_WINDOW_BACKGROUND, 0);
}
}

View File

@ -0,0 +1,183 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#ifndef TXT_WIDGET_H
#define TXT_WIDGET_H
/**
* @file txt_widget.h
*
* Base "widget" GUI component class.
*/
#ifndef DOXYGEN
#define TXT_UNCAST_ARG_NAME(name) uncast_ ## name
#define TXT_UNCAST_ARG(name) void * TXT_UNCAST_ARG_NAME(name)
#define TXT_CAST_ARG(type, name) type *name = (type *) uncast_ ## name
#else
#define TXT_UNCAST_ARG(name) txt_widget_t *name
#endif
typedef enum
{
TXT_VERT_TOP,
TXT_VERT_CENTER,
TXT_VERT_BOTTOM,
} txt_vert_align_t;
typedef enum
{
TXT_HORIZ_LEFT,
TXT_HORIZ_CENTER,
TXT_HORIZ_RIGHT,
} txt_horiz_align_t;
/**
* A GUI widget.
*
* A widget is an individual component of a GUI. Various different widget
* types exist.
*
* Widgets may emit signals. The types of signal emitted by a widget
* depend on the type of the widget. It is possible to be notified
* when a signal occurs using the @ref TXT_SignalConnect function.
*/
typedef struct txt_widget_s txt_widget_t;
typedef struct txt_widget_class_s txt_widget_class_t;
typedef struct txt_callback_table_s txt_callback_table_t;
typedef void (*TxtWidgetSizeCalc)(TXT_UNCAST_ARG(widget));
typedef void (*TxtWidgetDrawer)(TXT_UNCAST_ARG(widget), int selected);
typedef void (*TxtWidgetDestroy)(TXT_UNCAST_ARG(widget));
typedef int (*TxtWidgetKeyPress)(TXT_UNCAST_ARG(widget), int key);
typedef void (*TxtWidgetSignalFunc)(TXT_UNCAST_ARG(widget), void *user_data);
typedef void (*TxtMousePressFunc)(TXT_UNCAST_ARG(widget), int x, int y, int b);
typedef void (*TxtWidgetLayoutFunc)(TXT_UNCAST_ARG(widget));
typedef int (*TxtWidgetSelectableFunc)(TXT_UNCAST_ARG(widget));
struct txt_widget_class_s
{
TxtWidgetSelectableFunc selectable;
TxtWidgetSizeCalc size_calc;
TxtWidgetDrawer drawer;
TxtWidgetKeyPress key_press;
TxtWidgetDestroy destructor;
TxtMousePressFunc mouse_press;
TxtWidgetLayoutFunc layout;
};
struct txt_widget_s
{
txt_widget_class_t *widget_class;
txt_callback_table_t *callback_table;
int visible;
txt_horiz_align_t align;
// These are set automatically when the window is drawn and should
// not be set manually.
int x, y;
unsigned int w, h;
// Pointer up to parent widget that contains this widget.
txt_widget_t *parent;
};
void TXT_InitWidget(TXT_UNCAST_ARG(widget), txt_widget_class_t *widget_class);
void TXT_CalcWidgetSize(TXT_UNCAST_ARG(widget));
void TXT_DrawWidget(TXT_UNCAST_ARG(widget), int selected);
void TXT_EmitSignal(TXT_UNCAST_ARG(widget), const char *signal_name);
int TXT_WidgetKeyPress(TXT_UNCAST_ARG(widget), int key);
void TXT_WidgetMousePress(TXT_UNCAST_ARG(widget), int x, int y, int b);
void TXT_DestroyWidget(TXT_UNCAST_ARG(widget));
void TXT_LayoutWidget(TXT_UNCAST_ARG(widget));
int TXT_AlwaysSelectable(TXT_UNCAST_ARG(widget));
int TXT_NeverSelectable(TXT_UNCAST_ARG(widget));
/**
* Set a callback function to be invoked when a signal occurs.
*
* @param widget The widget to watch.
* @param signal_name The signal to watch.
* @param func The callback function to invoke.
* @param user_data User-specified pointer to pass to the callback function.
*/
void TXT_SignalConnect(TXT_UNCAST_ARG(widget), const char *signal_name,
TxtWidgetSignalFunc func, void *user_data);
/**
* Set the policy for how a widget should be aligned within a table.
* By default, widgets are aligned to the left of the column.
*
* @param widget The widget.
* @param horiz_align The alignment to use.
*/
void TXT_SetWidgetAlign(TXT_UNCAST_ARG(widget), txt_horiz_align_t horiz_align);
/**
* Query whether a widget is selectable with the cursor.
*
* @param widget The widget.
* @return Non-zero if the widget is selectable.
*/
int TXT_SelectableWidget(TXT_UNCAST_ARG(widget));
/**
* Query whether the mouse is hovering over the specified widget.
*
* @param widget The widget.
* @return Non-zero if the mouse cursor is over the widget.
*/
int TXT_HoveringOverWidget(TXT_UNCAST_ARG(widget));
/**
* Set the background to draw the specified widget, depending on
* whether it is selected and the mouse is hovering over it.
*
* @param widget The widget.
* @param selected Whether the widget is selected.
*/
void TXT_SetWidgetBG(TXT_UNCAST_ARG(widget), int selected);
/**
* Query whether the specified widget is contained within another
* widget.
*
* @param haystack The widget that might contain needle.
* @param needle The widget being queried.
*/
int TXT_ContainsWidget(TXT_UNCAST_ARG(haystack), TXT_UNCAST_ARG(needle));
#endif /* #ifndef TXT_WIDGET_H */

View File

@ -0,0 +1,474 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#include <stdlib.h>
#include <string.h>
#include "doomkeys.h"
#include "txt_desktop.h"
#include "txt_gui.h"
#include "txt_main.h"
#include "txt_separator.h"
#include "txt_window.h"
void TXT_SetWindowAction(txt_window_t *window,
txt_horiz_align_t position,
txt_window_action_t *action)
{
if (window->actions[position] != NULL)
{
TXT_DestroyWidget(window->actions[position]);
}
window->actions[position] = action;
// Maintain parent pointer.
if (action != NULL)
{
action->widget.parent = &window->table.widget;
}
}
txt_window_t *TXT_NewWindow(char *title)
{
int i;
txt_window_t *win;
win = malloc(sizeof(txt_window_t));
TXT_InitTable(&win->table, 1);
if (title == NULL)
{
win->title = NULL;
}
else
{
win->title = strdup(title);
}
win->x = TXT_SCREEN_W / 2;
win->y = TXT_SCREEN_H / 2;
win->horiz_align = TXT_HORIZ_CENTER;
win->vert_align = TXT_VERT_CENTER;
win->key_listener = NULL;
win->mouse_listener = NULL;
TXT_AddWidget(win, TXT_NewSeparator(NULL));
for (i=0; i<3; ++i)
win->actions[i] = NULL;
TXT_AddDesktopWindow(win);
// Default actions
TXT_SetWindowAction(win, TXT_HORIZ_LEFT, TXT_NewWindowEscapeAction(win));
TXT_SetWindowAction(win, TXT_HORIZ_RIGHT, TXT_NewWindowSelectAction(win));
return win;
}
void TXT_CloseWindow(txt_window_t *window)
{
int i;
TXT_EmitSignal(window, "closed");
free(window->title);
// Destroy all actions
for (i=0; i<3; ++i)
{
if (window->actions[i] != NULL)
{
TXT_DestroyWidget(window->actions[i]);
}
}
// Destroy table and window
TXT_DestroyWidget(window);
TXT_RemoveDesktopWindow(window);
}
static void CalcWindowPosition(txt_window_t *window)
{
switch (window->horiz_align)
{
case TXT_HORIZ_LEFT:
window->window_x = window->x;
break;
case TXT_HORIZ_CENTER:
window->window_x = window->x - (window->window_w / 2);
break;
case TXT_HORIZ_RIGHT:
window->window_x = window->x - (window->window_w - 1);
break;
}
switch (window->vert_align)
{
case TXT_VERT_TOP:
window->window_y = window->y;
break;
case TXT_VERT_CENTER:
window->window_y = window->y - (window->window_h / 2);
break;
case TXT_VERT_BOTTOM:
window->window_y = window->y - (window->window_h - 1);
break;
}
}
static void LayoutActionArea(txt_window_t *window)
{
txt_widget_t *widget;
int space_available;
int space_left_offset;
// We need to calculate the available horizontal space for the center
// action widget, so that we can center it within it.
// To start with, we have the entire action area available.
space_available = window->window_w;
space_left_offset = 0;
// Left action
if (window->actions[TXT_HORIZ_LEFT] != NULL)
{
widget = (txt_widget_t *) window->actions[TXT_HORIZ_LEFT];
TXT_CalcWidgetSize(widget);
widget->x = window->window_x + 1;
widget->y = window->window_y + window->window_h - widget->h - 1;
// Adjust available space:
space_available -= widget->w;
space_left_offset += widget->w;
}
// Draw the right action
if (window->actions[TXT_HORIZ_RIGHT] != NULL)
{
widget = (txt_widget_t *) window->actions[TXT_HORIZ_RIGHT];
TXT_CalcWidgetSize(widget);
widget->x = window->window_x + window->window_w - 1 - widget->w;
widget->y = window->window_y + window->window_h - widget->h - 1;
// Adjust available space:
space_available -= widget->w;
}
// Draw the center action
if (window->actions[TXT_HORIZ_CENTER] != NULL)
{
widget = (txt_widget_t *) window->actions[TXT_HORIZ_CENTER];
TXT_CalcWidgetSize(widget);
// The left and right widgets have left a space sandwiched between
// them. Center this widget within that space.
widget->x = window->window_x
+ space_left_offset
+ (space_available - widget->w) / 2;
widget->y = window->window_y + window->window_h - widget->h - 1;
}
}
static void DrawActionArea(txt_window_t *window)
{
int i;
for (i=0; i<3; ++i)
{
if (window->actions[i] != NULL)
{
TXT_DrawWidget(window->actions[i], 0);
}
}
}
static void CalcActionAreaSize(txt_window_t *window,
unsigned int *w, unsigned int *h)
{
txt_widget_t *widget;
int i;
*w = 0;
*h = 0;
// Calculate the width of all the action widgets and use this
// to create an overall min. width of the action area
for (i=0; i<3; ++i)
{
widget = (txt_widget_t *) window->actions[i];
if (widget != NULL)
{
TXT_CalcWidgetSize(widget);
*w += widget->w;
if (widget->h > *h)
{
*h = widget->h;
}
}
}
}
// Sets size and position of all widgets in a window
void TXT_LayoutWindow(txt_window_t *window)
{
txt_widget_t *widgets = (txt_widget_t *) window;
unsigned int widgets_w;
unsigned int actionarea_w, actionarea_h;
// Calculate size of table
TXT_CalcWidgetSize(window);
// Widgets area: add one character of padding on each side
widgets_w = widgets->w + 2;
// Calculate the size of the action area
// Make window wide enough to action area
CalcActionAreaSize(window, &actionarea_w, &actionarea_h);
if (actionarea_w > widgets_w)
widgets_w = actionarea_w;
// Set the window size based on widgets_w
window->window_w = widgets_w + 2;
window->window_h = widgets->h + 1;
// If the window has a title, add an extra two lines
if (window->title != NULL)
{
window->window_h += 2;
}
// If the window has an action area, add extra lines
if (actionarea_h > 0)
{
window->window_h += actionarea_h + 1;
}
// Use the x,y position as the centerpoint and find the location to
// draw the window.
CalcWindowPosition(window);
// Set the table size and position
widgets->w = widgets_w - 2;
// widgets->h (already set)
widgets->x = window->window_x + 2;
widgets->y = window->window_y;
if (window->title != NULL)
{
widgets->y += 2;
}
// Layout the table and action area
LayoutActionArea(window);
TXT_LayoutWidget(widgets);
}
void TXT_DrawWindow(txt_window_t *window, int selected)
{
txt_widget_t *widgets;
TXT_LayoutWindow(window);
// Draw the window
TXT_DrawWindowFrame(window->title,
window->window_x, window->window_y,
window->window_w, window->window_h);
// Draw all widgets
TXT_DrawWidget(window, selected);
// Draw an action area, if we have one
widgets = (txt_widget_t *) window;
if (widgets->y + widgets->h < window->window_y + window->window_h - 1)
{
// Separator for action area
TXT_DrawSeparator(window->window_x, widgets->y + widgets->h,
window->window_w);
// Action area at the window bottom
DrawActionArea(window);
}
}
void TXT_SetWindowPosition(txt_window_t *window,
txt_horiz_align_t horiz_align,
txt_vert_align_t vert_align,
int x, int y)
{
window->vert_align = vert_align;
window->horiz_align = horiz_align;
window->x = x;
window->y = y;
}
static void MouseButtonPress(txt_window_t *window, int b)
{
int x, y;
int i;
txt_widget_t *widgets;
txt_widget_t *widget;
// Lay out the window, set positions and sizes of all widgets
TXT_LayoutWindow(window);
// Get the current mouse position
TXT_GetMousePosition(&x, &y);
// Try the mouse button listener
// This happens whether it is in the window range or not
if (window->mouse_listener != NULL)
{
// Mouse listener can eat button presses
if (window->mouse_listener(window, x, y, b,
window->mouse_listener_data))
{
return;
}
}
// Is it within the table range?
widgets = (txt_widget_t *) window;
if (x >= widgets->x && x < (signed) (widgets->x + widgets->w)
&& y >= widgets->y && y < (signed) (widgets->y + widgets->h))
{
TXT_WidgetMousePress(window, x, y, b);
}
// Was one of the action area buttons pressed?
for (i=0; i<3; ++i)
{
widget = (txt_widget_t *) window->actions[i];
if (widget != NULL
&& x >= widget->x && x < (signed) (widget->x + widget->w)
&& y >= widget->y && y < (signed) (widget->y + widget->h))
{
TXT_WidgetMousePress(widget, x, y, b);
break;
}
}
}
void TXT_WindowKeyPress(txt_window_t *window, int c)
{
int i;
// Is this a mouse button ?
if (c >= TXT_MOUSE_BASE && c < TXT_MOUSE_BASE + TXT_MAX_MOUSE_BUTTONS)
{
MouseButtonPress(window, c);
return;
}
// Try the window key spy
if (window->key_listener != NULL)
{
// key listener can eat keys
if (window->key_listener(window, c, window->key_listener_data))
{
return;
}
}
// Send to the currently selected widget
if (TXT_WidgetKeyPress(window, c))
{
return;
}
// Try all of the action buttons
for (i=0; i<3; ++i)
{
if (window->actions[i] != NULL
&& TXT_WidgetKeyPress(window->actions[i], c))
{
return;
}
}
}
void TXT_SetKeyListener(txt_window_t *window, TxtWindowKeyPress key_listener,
void *user_data)
{
window->key_listener = key_listener;
window->key_listener_data = user_data;
}
void TXT_SetMouseListener(txt_window_t *window,
TxtWindowMousePress mouse_listener,
void *user_data)
{
window->mouse_listener = mouse_listener;
window->mouse_listener_data = user_data;
}

View File

@ -0,0 +1,181 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#ifndef TXT_WINDOW_H
#define TXT_WINDOW_H
/**
* @file txt_window.h
*
* Windows.
*/
/**
* A window.
*
* A window contains widgets, and may also be treated as a table
* (@ref txt_table_t) containing a single column.
*
* Windows can be created using @ref TXT_NewWindow and closed using
* @ref TXT_CloseWindow. When a window is closed, it emits the
* "closed" signal.
*
* In addition to the widgets within a window, windows also have
* a "tray" area at their bottom containing window action widgets.
* These widgets allow keyboard shortcuts to trigger common actions.
* Each window has three slots for keyboard shortcuts. By default,
* the left slot contains an action to close the window when the
* escape button is pressed, while the right slot contains an
* action to activate the currently-selected widget.
*/
typedef struct txt_window_s txt_window_t;
#include "txt_widget.h"
#include "txt_table.h"
#include "txt_window_action.h"
// Callback function for window key presses
typedef int (*TxtWindowKeyPress)(txt_window_t *window, int key, void *user_data);
typedef int (*TxtWindowMousePress)(txt_window_t *window,
int x, int y, int b,
void *user_data);
struct txt_window_s
{
// Base class: all windows are tables with one column.
txt_table_t table;
// Window title
char *title;
// Screen coordinates of the window
txt_vert_align_t vert_align;
txt_horiz_align_t horiz_align;
int x, y;
// Actions that appear in the box at the bottom of the window
txt_window_action_t *actions[3];
// Callback functions to invoke when keys/mouse buttons are pressed
TxtWindowKeyPress key_listener;
void *key_listener_data;
TxtWindowMousePress mouse_listener;
void *mouse_listener_data;
// These are set automatically when the window is drawn
int window_x, window_y;
unsigned int window_w, window_h;
};
/**
* Open a new window.
*
* @param title Title to display in the titlebar of the new window.
* @return Pointer to a new @ref txt_window_t structure
* representing the new window.
*/
txt_window_t *TXT_NewWindow(char *title);
/**
* Close a window.
*
* @param window Tine window to close.
*/
void TXT_CloseWindow(txt_window_t *window);
/**
* Set the position of a window on the screen.
*
* The window is specified as coordinates relative to a predefined
* position on the screen (eg. center of the screen, top left of the
* screen, etc).
*
* @param window The window.
* @param horiz_align Horizontal position on the screen to which the
* coordinates are relative (left side, right side
* or center).
* @param vert_align Vertical position on the screen to which the
* coordinates are relative (top, bottom or center).
* @param x X coordinate (horizonal axis) for window position.
* @param y Y coordinate (vertical axis) for window position.
*/
void TXT_SetWindowPosition(txt_window_t *window,
txt_horiz_align_t horiz_align,
txt_vert_align_t vert_align,
int x, int y);
/**
* Set a window action for a given window.
*
* Each window can have up to three window actions, which provide
* keyboard shortcuts that can be used within a given window.
*
* @param window The window.
* @param position The window action slot to set (left, center or right).
* @param action The window action widget. If this is NULL, any
* current window action in the given slot is removed.
*/
void TXT_SetWindowAction(txt_window_t *window, txt_horiz_align_t position,
txt_window_action_t *action);
/**
* Set a callback function to be invoked whenever a key is pressed within
* a window.
*
* @param window The window.
* @param key_listener Callback function.
* @param user_data User-specified pointer to pass to the callback
* function.
*/
void TXT_SetKeyListener(txt_window_t *window,
TxtWindowKeyPress key_listener,
void *user_data);
/**
* Set a callback function to be invoked whenever a mouse button is pressed
* within a window.
*
* @param window The window.
* @param mouse_listener Callback function.
* @param user_data User-specified pointer to pass to the callback
* function.
*/
void TXT_SetMouseListener(txt_window_t *window,
TxtWindowMousePress mouse_listener,
void *user_data);
#endif /* #ifndef TXT_WINDOW_T */

View File

@ -0,0 +1,178 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#include <stdlib.h>
#include <string.h>
#include "doomkeys.h"
#include "txt_window_action.h"
#include "txt_gui.h"
#include "txt_io.h"
#include "txt_main.h"
#include "txt_window.h"
static void TXT_WindowActionSizeCalc(TXT_UNCAST_ARG(action))
{
TXT_CAST_ARG(txt_window_action_t, action);
char buf[10];
TXT_GetKeyDescription(action->key, buf);
// Width is label length, plus key description length, plus '='
// and two surrounding spaces.
action->widget.w = strlen(action->label) + strlen(buf) + 3;
action->widget.h = 1;
}
static void TXT_WindowActionDrawer(TXT_UNCAST_ARG(action), int selected)
{
TXT_CAST_ARG(txt_window_action_t, action);
char buf[10];
TXT_GetKeyDescription(action->key, buf);
if (TXT_HoveringOverWidget(action))
{
TXT_BGColor(TXT_COLOR_BLACK, 0);
}
else
{
TXT_BGColor(TXT_WINDOW_BACKGROUND, 0);
}
TXT_DrawString(" ");
TXT_FGColor(TXT_COLOR_BRIGHT_GREEN);
TXT_DrawString(buf);
TXT_FGColor(TXT_COLOR_BRIGHT_CYAN);
TXT_DrawString("=");
TXT_FGColor(TXT_COLOR_BRIGHT_WHITE);
TXT_DrawString(action->label);
TXT_DrawString(" ");
}
static void TXT_WindowActionDestructor(TXT_UNCAST_ARG(action))
{
TXT_CAST_ARG(txt_window_action_t, action);
free(action->label);
}
static int TXT_WindowActionKeyPress(TXT_UNCAST_ARG(action), int key)
{
TXT_CAST_ARG(txt_window_action_t, action);
if (tolower(key) == tolower(action->key))
{
TXT_EmitSignal(action, "pressed");
return 1;
}
return 0;
}
static void TXT_WindowActionMousePress(TXT_UNCAST_ARG(action),
int x, int y, int b)
{
TXT_CAST_ARG(txt_window_action_t, action);
// Simulate a press of the key
if (b == TXT_MOUSE_LEFT)
{
TXT_WindowActionKeyPress(action, action->key);
}
}
txt_widget_class_t txt_window_action_class =
{
TXT_AlwaysSelectable,
TXT_WindowActionSizeCalc,
TXT_WindowActionDrawer,
TXT_WindowActionKeyPress,
TXT_WindowActionDestructor,
TXT_WindowActionMousePress,
NULL,
};
txt_window_action_t *TXT_NewWindowAction(int key, const char *label)
{
txt_window_action_t *action;
action = malloc(sizeof(txt_window_action_t));
TXT_InitWidget(action, &txt_window_action_class);
action->key = key;
action->label = strdup(label);
return action;
}
static void WindowCloseCallback(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(window))
{
TXT_CAST_ARG(txt_window_t, window);
TXT_CloseWindow(window);
}
static void WindowSelectCallback(TXT_UNCAST_ARG(widget), TXT_UNCAST_ARG(window))
{
TXT_CAST_ARG(txt_window_t, window);
TXT_WidgetKeyPress(window, KEY_ENTER);
}
// An action with the name "close" the closes the window
txt_window_action_t *TXT_NewWindowEscapeAction(txt_window_t *window)
{
txt_window_action_t *action;
action = TXT_NewWindowAction(KEY_ESCAPE, "Close");
TXT_SignalConnect(action, "pressed", WindowCloseCallback, window);
return action;
}
// Exactly the same as the above, but the button is named "abort"
txt_window_action_t *TXT_NewWindowAbortAction(txt_window_t *window)
{
txt_window_action_t *action;
action = TXT_NewWindowAction(KEY_ESCAPE, "Abort");
TXT_SignalConnect(action, "pressed", WindowCloseCallback, window);
return action;
}
txt_window_action_t *TXT_NewWindowSelectAction(txt_window_t *window)
{
txt_window_action_t *action;
action = TXT_NewWindowAction(KEY_ENTER, "Select");
TXT_SignalConnect(action, "pressed", WindowSelectCallback, window);
return action;
}

View File

@ -0,0 +1,96 @@
// Emacs style mode select -*- C++ -*-
//-----------------------------------------------------------------------------
//
// Copyright(C) 2006 Simon Howard
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
#ifndef TXT_WINDOW_ACTION_H
#define TXT_WINDOW_ACTION_H
/**
* @file txt_window_action.h
*
* Window action widget.
*/
/**
* Window action widget.
*
* A window action is attached to a window and corresponds to a
* keyboard shortcut that is active within that window. When the
* key is pressed, the action is triggered.
*
* When a window action is triggered, the "pressed" signal is emitted.
*/
typedef struct txt_window_action_s txt_window_action_t;
#include "txt_widget.h"
#include "txt_window.h"
struct txt_window_action_s
{
txt_widget_t widget;
char *label;
int key;
};
/**
* Create a new window action.
*
* @param key The keyboard key that triggers this action.
* @param label Label to display for this action in the tray
* at the bottom of the window.
* @return Pointer to the new window action widget.
*/
txt_window_action_t *TXT_NewWindowAction(int key, const char *label);
/**
* Create a new window action that closes the window when the
* escape key is pressed. The label "Close" is used.
*
* @param window The window to close.
* @return Pointer to the new window action widget.
*/
txt_window_action_t *TXT_NewWindowEscapeAction(txt_window_t *window);
/**
* Create a new window action that closes the window when the
* escape key is pressed. The label "Abort" is used.
*
* @param window The window to close.
* @return Pointer to the new window action widget.
*/
txt_window_action_t *TXT_NewWindowAbortAction(txt_window_t *window);
/**
* Create a new "select" window action. This does not really do
* anything, but reminds the user that "enter" can be pressed to
* activate the currently-selected widget.
*
* @param window The window.
* @return Pointer to the new window action widget.
*/
txt_window_action_t *TXT_NewWindowSelectAction(txt_window_t *window);
#endif /* #ifndef TXT_WINDOW_ACTION_H */