Mercurial > hg > xemacs-beta
diff src/balloon-x.c @ 134:34a5b81f86ba r20-2b1
Import from CVS: tag r20-2b1
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:30:11 +0200 |
parents | |
children | b980b6286996 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/balloon-x.c Mon Aug 13 09:30:11 2007 +0200 @@ -0,0 +1,135 @@ +#include <config.h> +#include "lisp.h" + +#include "device.h" +#include "console-x.h" + +#include "balloon_help.h" + +/* ### start of hack */ + +static unsigned long alloc_color( Display* dpy, const char* colorname, int light ) +{ + Colormap cmap = DefaultColormap( dpy, DefaultScreen(dpy) ); + unsigned long pixel = 0; + XColor color; + + if( XParseColor(dpy, cmap, colorname, &color) && XAllocColor(dpy, cmap, &color) ) + { + pixel = color.pixel; + } + else + { + if( light ) + { + printf("Warning: could not allocate color \"%s\", using \"white\"\n", colorname); + pixel = alloc_color( dpy, "white", True ); + } + else + { + printf("Warning: could not allocate color \"%s\", using \"black\"\n", colorname); + pixel = alloc_color( dpy, "black", True ); + } + } + return pixel; +} + +static XFontStruct* open_font( Display* dpy, const char* font_name ) +{ + XFontStruct* fontStruct = NULL; + + fontStruct = XLoadQueryFont( dpy, font_name ? font_name : "fixed" ); + if( fontStruct == NULL ) + { + printf("Warning: could not load font \"%s\", using \"fixed\".\n", font_name); + fontStruct = XLoadQueryFont( dpy, "fixed" ); + assert( fontStruct != NULL ); + } + return fontStruct; +} + +static void init( void ) +{ + static int init; + + if( !init ) + { + Pixel fg, bg, shine, shadow; + XFontStruct* font; + Display *dpy = DEVICE_X_DISPLAY (XDEVICE (Vdefault_x_device)); + + fg = alloc_color( dpy, "grey60", 1 ); + bg = alloc_color( dpy, "black", 0 ); + + shine = alloc_color( dpy, "grey80", 1 ); + shadow = alloc_color( dpy, "grey40", 0 ); + + font = open_font( dpy, "-adobe-helvetica-medium-r-normal--12-*" ); + + balloon_help_create( dpy, bg, fg, shine, shadow, font ); + init = 1; + } +} + +/* ### end of hack */ + +DEFUN( "show-balloon-help", Fshow_balloon_help, 1, 1, 0, /* +Show balloon help. +*/ + (string)) +{ + char *p; + CHECK_STRING (string); + + p = (char *) XSTRING_DATA (string); + + init(); + + balloon_help_show( p ); + + return Qnil; +} + +DEFUN( "hide-balloon-help", Fhide_balloon_help, 0, 0, 0, /* +Hide balloon help. +*/ + ()) +{ + init(); + + balloon_help_hide(); + + return Qnil; +} + +DEFUN( "balloon-help-move-to-pointer", Fballoon_help_move_to_pointer, 0, 0, 0, /* +Hide balloon help. +*/ + ()) +{ + init(); + + balloon_help_move_to_pointer(); + + return Qnil; +} + + + +/************************************************************************/ +/* initialization */ +/************************************************************************/ + +void +syms_of_balloon_x (void) +{ + DEFSUBR( Fshow_balloon_help ); + DEFSUBR( Fhide_balloon_help ); + DEFSUBR( Fballoon_help_move_to_pointer ); +} + +void +vars_of_balloon_x (void) +{ + Fprovide (intern ("balloon-help")); +}