Mercurial > hg > xemacs-beta
comparison 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 |
comparison
equal
deleted
inserted
replaced
133:b27e67717092 | 134:34a5b81f86ba |
---|---|
1 #include <config.h> | |
2 #include "lisp.h" | |
3 | |
4 #include "device.h" | |
5 #include "console-x.h" | |
6 | |
7 #include "balloon_help.h" | |
8 | |
9 /* ### start of hack */ | |
10 | |
11 static unsigned long alloc_color( Display* dpy, const char* colorname, int light ) | |
12 { | |
13 Colormap cmap = DefaultColormap( dpy, DefaultScreen(dpy) ); | |
14 unsigned long pixel = 0; | |
15 XColor color; | |
16 | |
17 if( XParseColor(dpy, cmap, colorname, &color) && XAllocColor(dpy, cmap, &color) ) | |
18 { | |
19 pixel = color.pixel; | |
20 } | |
21 else | |
22 { | |
23 if( light ) | |
24 { | |
25 printf("Warning: could not allocate color \"%s\", using \"white\"\n", colorname); | |
26 pixel = alloc_color( dpy, "white", True ); | |
27 } | |
28 else | |
29 { | |
30 printf("Warning: could not allocate color \"%s\", using \"black\"\n", colorname); | |
31 pixel = alloc_color( dpy, "black", True ); | |
32 } | |
33 } | |
34 return pixel; | |
35 } | |
36 | |
37 static XFontStruct* open_font( Display* dpy, const char* font_name ) | |
38 { | |
39 XFontStruct* fontStruct = NULL; | |
40 | |
41 fontStruct = XLoadQueryFont( dpy, font_name ? font_name : "fixed" ); | |
42 if( fontStruct == NULL ) | |
43 { | |
44 printf("Warning: could not load font \"%s\", using \"fixed\".\n", font_name); | |
45 fontStruct = XLoadQueryFont( dpy, "fixed" ); | |
46 assert( fontStruct != NULL ); | |
47 } | |
48 return fontStruct; | |
49 } | |
50 | |
51 static void init( void ) | |
52 { | |
53 static int init; | |
54 | |
55 if( !init ) | |
56 { | |
57 Pixel fg, bg, shine, shadow; | |
58 XFontStruct* font; | |
59 Display *dpy = DEVICE_X_DISPLAY (XDEVICE (Vdefault_x_device)); | |
60 | |
61 fg = alloc_color( dpy, "grey60", 1 ); | |
62 bg = alloc_color( dpy, "black", 0 ); | |
63 | |
64 shine = alloc_color( dpy, "grey80", 1 ); | |
65 shadow = alloc_color( dpy, "grey40", 0 ); | |
66 | |
67 font = open_font( dpy, "-adobe-helvetica-medium-r-normal--12-*" ); | |
68 | |
69 balloon_help_create( dpy, bg, fg, shine, shadow, font ); | |
70 init = 1; | |
71 } | |
72 } | |
73 | |
74 /* ### end of hack */ | |
75 | |
76 DEFUN( "show-balloon-help", Fshow_balloon_help, 1, 1, 0, /* | |
77 Show balloon help. | |
78 */ | |
79 (string)) | |
80 { | |
81 char *p; | |
82 CHECK_STRING (string); | |
83 | |
84 p = (char *) XSTRING_DATA (string); | |
85 | |
86 init(); | |
87 | |
88 balloon_help_show( p ); | |
89 | |
90 return Qnil; | |
91 } | |
92 | |
93 DEFUN( "hide-balloon-help", Fhide_balloon_help, 0, 0, 0, /* | |
94 Hide balloon help. | |
95 */ | |
96 ()) | |
97 { | |
98 init(); | |
99 | |
100 balloon_help_hide(); | |
101 | |
102 return Qnil; | |
103 } | |
104 | |
105 DEFUN( "balloon-help-move-to-pointer", Fballoon_help_move_to_pointer, 0, 0, 0, /* | |
106 Hide balloon help. | |
107 */ | |
108 ()) | |
109 { | |
110 init(); | |
111 | |
112 balloon_help_move_to_pointer(); | |
113 | |
114 return Qnil; | |
115 } | |
116 | |
117 | |
118 | |
119 /************************************************************************/ | |
120 /* initialization */ | |
121 /************************************************************************/ | |
122 | |
123 void | |
124 syms_of_balloon_x (void) | |
125 { | |
126 DEFSUBR( Fshow_balloon_help ); | |
127 DEFSUBR( Fhide_balloon_help ); | |
128 DEFSUBR( Fballoon_help_move_to_pointer ); | |
129 } | |
130 | |
131 void | |
132 vars_of_balloon_x (void) | |
133 { | |
134 Fprovide (intern ("balloon-help")); | |
135 } |