From dac2f4d57f0c06faa14f8e17419aebe64508163c Mon Sep 17 00:00:00 2001 From: Sam Hocevar <sam@hocevar.net> Date: Mon, 13 Nov 2006 23:33:49 +0000 Subject: [PATCH] * Implemented caca_set_display_title() for ncurses and S-Lang. --- caca/driver_ncurses.c | 14 +++++++++++++- caca/driver_slang.c | 15 +++++++++++++-- caca/graphics.c | 2 +- doc/migrating.dox | 4 ++-- 4 files changed, 29 insertions(+), 6 deletions(-) diff --git a/caca/driver_ncurses.c b/caca/driver_ncurses.c index 663b15f..ae50615 100644 --- a/caca/driver_ncurses.c +++ b/caca/driver_ncurses.c @@ -59,6 +59,7 @@ static caca_display_t *sigwinch_d; /* FIXME: we ought to get rid of this */ #if defined HAVE_GETENV && defined HAVE_PUTENV static void ncurses_check_terminal(void); #endif +static void ncurses_set_title(char const *); static void ncurses_write_utf32(uint32_t); struct driver_private @@ -109,6 +110,8 @@ static int ncurses_init_graphics(caca_display_t *dp) setlocale(LC_ALL, ""); #endif + ncurses_set_title("caca for ncurses"); + initscr(); keypad(stdscr, TRUE); nonl(); @@ -166,6 +169,7 @@ static int ncurses_init_graphics(caca_display_t *dp) static int ncurses_end_graphics(caca_display_t *dp) { + ncurses_set_title(""); mousemask(dp->drv.p->oldmask, NULL); curs_set(1); noraw(); @@ -178,7 +182,9 @@ static int ncurses_end_graphics(caca_display_t *dp) static int ncurses_set_display_title(caca_display_t *dp, char const *title) { - return -1; + ncurses_set_title(title); + + return 0; } static unsigned int ncurses_get_display_width(caca_display_t *dp) @@ -429,6 +435,12 @@ static void ncurses_check_terminal(void) } #endif +static void ncurses_set_title(char const *str) +{ + fprintf(stdout, "\x1b]0;%s\x07\n", str); + fflush(stdout); +} + static void ncurses_write_utf32(uint32_t ch) { #if defined HAVE_NCURSESW_NCURSES_H diff --git a/caca/driver_slang.c b/caca/driver_slang.c index 04169a3..ba52969 100644 --- a/caca/driver_slang.c +++ b/caca/driver_slang.c @@ -103,6 +103,7 @@ static int const slang_assoc[16*16] = * Local functions */ static void slang_init_palette(void); +static void slang_set_title(char const *); static void slang_write_utf32(uint32_t); #if defined(HAVE_SIGNAL) @@ -124,6 +125,8 @@ static int slang_init_graphics(caca_display_t *dp) signal(SIGWINCH, sigwinch_handler); #endif + slang_set_title("caca for S-Lang"); + /* Initialise slang library */ SLsig_block_signals(); SLtt_get_terminfo(); @@ -172,6 +175,7 @@ static int slang_init_graphics(caca_display_t *dp) static int slang_end_graphics(caca_display_t *dp) { + slang_set_title(""); SLtt_set_mouse_mode(0, 0); SLtt_set_cursor_visibility(1); SLang_reset_tty(); @@ -182,8 +186,9 @@ static int slang_end_graphics(caca_display_t *dp) static int slang_set_display_title(caca_display_t *dp, char const *title) { - /* FIXME */ - return -1; + slang_set_title(title); + + return 0; } static unsigned int slang_get_display_width(caca_display_t *dp) @@ -442,6 +447,12 @@ static void slang_init_palette(void) #endif } +static void slang_set_title(char const *str) +{ + fprintf(stdout, "\x1b]0;%s\x07\n", str); + fflush(stdout); +} + static void slang_write_utf32(uint32_t ch) { #ifdef HAVE_SLSMG_UTF8_ENABLE diff --git a/caca/graphics.c b/caca/graphics.c index 7dc304d..c353ed2 100644 --- a/caca/graphics.c +++ b/caca/graphics.c @@ -26,7 +26,7 @@ /** \brief Set the display title. * * If libcaca runs in a window, try to change its title. This works with - * the OpenGL, X11 and Win32 drivers. + * the ncurses, S-Lang, OpenGL, X11 and Win32 drivers. * * If an error occurs, -1 is returned and \b errno is set accordingly: * - \c ENOSYS Display driver does not support setting the window title. diff --git a/doc/migrating.dox b/doc/migrating.dox index 77d67c6..ab22324 100644 --- a/doc/migrating.dox +++ b/doc/migrating.dox @@ -187,12 +187,12 @@ int main(void) completely deprecated. - \b caca_load_sprite(): use cucul_import_file(). - - \b caca_get_sprite_frames(): use cucul_get_canvas_frame_count(). + - \b caca_get_sprite_frames(): use cucul_get_frame_count(). - \b caca_get_sprite_width(): use cucul_get_canvas_width(). - \b caca_get_sprite_height(): use cucul_get_canvas_height(). - \b caca_get_sprite_dx(): use cucul_get_canvas_handle_x(). - \b caca_get_sprite_dy(): use cucul_get_canvas_handle_y(). - - \b caca_draw_sprite(): use cucul_set_canvas_frame() and cucul_blit(). + - \b caca_draw_sprite(): use cucul_set_frame() and cucul_blit(). - \b caca_free_sprite(): use cucul_free_canvas(). \subsection bar7 Bitmap handling