comparison src/glyphs-x.c @ 124:9b50b4588a93 r20-1b15

Import from CVS: tag r20-1b15
author cvs
date Mon, 13 Aug 2007 09:26:39 +0200
parents d2f30a177268
children 6608ceec7cf8
comparison
equal deleted inserted replaced
123:c77884c6318d 124:9b50b4588a93
108 108
109 static void cursor_font_instantiate (Lisp_Object image_instance, 109 static void cursor_font_instantiate (Lisp_Object image_instance,
110 Lisp_Object instantiator, 110 Lisp_Object instantiator,
111 Lisp_Object pointer_fg, 111 Lisp_Object pointer_fg,
112 Lisp_Object pointer_bg, 112 Lisp_Object pointer_bg,
113 int dest_mask); 113 int dest_mask,
114 Lisp_Object domain);
114 115
115 #include "bitmaps.h" 116 #include "bitmaps.h"
116 117
117 118
118 /************************************************************************/ 119 /************************************************************************/
1032 /* Instantiate method for XBM's. */ 1033 /* Instantiate method for XBM's. */
1033 1034
1034 static void 1035 static void
1035 xbm_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, 1036 xbm_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
1036 Lisp_Object pointer_fg, Lisp_Object pointer_bg, 1037 Lisp_Object pointer_fg, Lisp_Object pointer_bg,
1037 int dest_mask) 1038 int dest_mask, Lisp_Object domain)
1038 { 1039 {
1039 Lisp_Object data = find_keyword_in_vector (instantiator, Q_data); 1040 Lisp_Object data = find_keyword_in_vector (instantiator, Q_data);
1040 CONST char *gcc_go_home; 1041 CONST char *gcc_go_home;
1041 1042
1042 assert (!NILP (data)); 1043 assert (!NILP (data));
1268 /* The code in this routine is based on example.c from the JPEG library 1269 /* The code in this routine is based on example.c from the JPEG library
1269 source code and from gif_instantiate() */ 1270 source code and from gif_instantiate() */
1270 static void 1271 static void
1271 jpeg_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, 1272 jpeg_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
1272 Lisp_Object pointer_fg, Lisp_Object pointer_bg, 1273 Lisp_Object pointer_fg, Lisp_Object pointer_bg,
1273 int dest_mask) 1274 int dest_mask, Lisp_Object domain)
1274 { 1275 {
1275 struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance); 1276 struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
1276 Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii); 1277 Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii);
1277 Display *dpy; 1278 Display *dpy;
1278 Screen *scr; 1279 Screen *scr;
1745 #endif 1746 #endif
1746 1747
1747 static void 1748 static void
1748 gif_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, 1749 gif_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
1749 Lisp_Object pointer_fg, Lisp_Object pointer_bg, 1750 Lisp_Object pointer_fg, Lisp_Object pointer_bg,
1750 int dest_mask) 1751 int dest_mask, Lisp_Object domain)
1751 { 1752 {
1752 struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance); 1753 struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
1753 Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii); 1754 Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii);
1754 Display *dpy; 1755 Display *dpy;
1755 Screen *scr; 1756 Screen *scr;
2030 #endif 2031 #endif
2031 2032
2032 static void 2033 static void
2033 png_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, 2034 png_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
2034 Lisp_Object pointer_fg, Lisp_Object pointer_bg, 2035 Lisp_Object pointer_fg, Lisp_Object pointer_bg,
2035 int dest_mask) 2036 int dest_mask, Lisp_Object domain)
2036 { 2037 {
2037 struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance); 2038 struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
2038 Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii); 2039 Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii);
2039 Display *dpy; 2040 Display *dpy;
2040 Screen *scr; 2041 Screen *scr;
2324 } 2325 }
2325 2326
2326 static void 2327 static void
2327 tiff_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, 2328 tiff_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
2328 Lisp_Object pointer_fg, Lisp_Object pointer_bg, 2329 Lisp_Object pointer_fg, Lisp_Object pointer_bg,
2329 int dest_mask) 2330 int dest_mask, Lisp_Object domain)
2330 { 2331 {
2331 abort (); 2332 abort ();
2332 } 2333 }
2333 2334
2334 #endif /* HAVE_TIFF */ 2335 #endif /* HAVE_TIFF */
2554 Upgrade to version 3.2g or better or compile with --with-xpm=no. 2555 Upgrade to version 3.2g or better or compile with --with-xpm=no.
2555 #endif /* !XPM_DOES_BUFFERS */ 2556 #endif /* !XPM_DOES_BUFFERS */
2556 2557
2557 static XpmColorSymbol * 2558 static XpmColorSymbol *
2558 extract_xpm_color_names (XpmAttributes *xpmattrs, Lisp_Object device, 2559 extract_xpm_color_names (XpmAttributes *xpmattrs, Lisp_Object device,
2560 Lisp_Object domain,
2559 Lisp_Object color_symbol_alist) 2561 Lisp_Object color_symbol_alist)
2560 { 2562 {
2561 /* This function can GC */ 2563 /* This function can GC */
2562 Screen *xs = LISP_DEVICE_TO_X_SCREEN (device); 2564 Screen *xs = LISP_DEVICE_TO_X_SCREEN (device);
2563 Display *dpy = DisplayOfScreen (xs); 2565 Display *dpy = DisplayOfScreen (xs);
2586 value = 2588 value =
2587 Fmake_color_instance 2589 Fmake_color_instance
2588 (value, device, encode_error_behavior_flag (ERROR_ME_NOT)); 2590 (value, device, encode_error_behavior_flag (ERROR_ME_NOT));
2589 else 2591 else
2590 { 2592 {
2591 Lisp_Object frame = DEVICE_SELECTED_FRAME(XDEVICE(device));
2592 Lisp_Object window = FRAME_SELECTED_WINDOW(XFRAME(frame));
2593 assert (COLOR_SPECIFIERP (value)); 2593 assert (COLOR_SPECIFIERP (value));
2594 value = Fspecifier_instance (value, window, Qnil, Qnil); 2594 value = Fspecifier_instance (value, domain, Qnil, Qnil);
2595 } 2595 }
2596 if (NILP (value)) 2596 if (NILP (value))
2597 continue; 2597 continue;
2598 results = noseeum_cons (noseeum_cons (name, value), results); 2598 results = noseeum_cons (noseeum_cons (name, value), results);
2599 i++; 2599 i++;
2638 } 2638 }
2639 2639
2640 static void 2640 static void
2641 xpm_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, 2641 xpm_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
2642 Lisp_Object pointer_fg, Lisp_Object pointer_bg, 2642 Lisp_Object pointer_fg, Lisp_Object pointer_bg,
2643 int dest_mask) 2643 int dest_mask, Lisp_Object domain)
2644 { 2644 {
2645 /* This function can GC */ 2645 /* This function can GC */
2646 struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance); 2646 struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
2647 Lisp_Object data = find_keyword_in_vector (instantiator, Q_data); 2647 Lisp_Object data = find_keyword_in_vector (instantiator, Q_data);
2648 Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii); 2648 Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii);
2699 { 2699 {
2700 xpmattrs.closeness = 65535; 2700 xpmattrs.closeness = 65535;
2701 xpmattrs.valuemask |= XpmCloseness; 2701 xpmattrs.valuemask |= XpmCloseness;
2702 } 2702 }
2703 2703
2704 color_symbols = extract_xpm_color_names (&xpmattrs, device, 2704 color_symbols = extract_xpm_color_names (&xpmattrs, device, domain,
2705 color_symbol_alist); 2705 color_symbol_alist);
2706 2706
2707 result = XpmCreatePixmapFromBuffer (dpy, 2707 result = XpmCreatePixmapFromBuffer (dpy,
2708 RootWindowOfScreen (xs), 2708 RootWindowOfScreen (xs),
2709 (char *) XSTRING_DATA (data), 2709 (char *) XSTRING_DATA (data),
3050 #undef SYSV32 3050 #undef SYSV32
3051 3051
3052 static void 3052 static void
3053 xface_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, 3053 xface_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
3054 Lisp_Object pointer_fg, Lisp_Object pointer_bg, 3054 Lisp_Object pointer_fg, Lisp_Object pointer_bg,
3055 int dest_mask) 3055 int dest_mask, Lisp_Object domain)
3056 { 3056 {
3057 Lisp_Object data = find_keyword_in_vector (instantiator, Q_data); 3057 Lisp_Object data = find_keyword_in_vector (instantiator, Q_data);
3058 int i, stattis; 3058 int i, stattis;
3059 char *p, *bits, *bp; 3059 char *p, *bits, *bp;
3060 CONST char * volatile emsg = 0; 3060 CONST char * volatile emsg = 0;
3218 static void 3218 static void
3219 autodetect_instantiate (Lisp_Object image_instance, 3219 autodetect_instantiate (Lisp_Object image_instance,
3220 Lisp_Object instantiator, 3220 Lisp_Object instantiator,
3221 Lisp_Object pointer_fg, 3221 Lisp_Object pointer_fg,
3222 Lisp_Object pointer_bg, 3222 Lisp_Object pointer_bg,
3223 int dest_mask) 3223 int dest_mask, Lisp_Object domain)
3224 { 3224 {
3225 Lisp_Object data = find_keyword_in_vector (instantiator, Q_data); 3225 Lisp_Object data = find_keyword_in_vector (instantiator, Q_data);
3226 struct gcpro gcpro1, gcpro2, gcpro3; 3226 struct gcpro gcpro1, gcpro2, gcpro3;
3227 Lisp_Object alist = Qnil; 3227 Lisp_Object alist = Qnil;
3228 Lisp_Object result = Qnil; 3228 Lisp_Object result = Qnil;
3246 result = alist_to_tagged_vector (Qstring, alist); 3246 result = alist_to_tagged_vector (Qstring, alist);
3247 free_alist (alist); 3247 free_alist (alist);
3248 3248
3249 if (is_cursor_font) 3249 if (is_cursor_font)
3250 cursor_font_instantiate (image_instance, result, pointer_fg, 3250 cursor_font_instantiate (image_instance, result, pointer_fg,
3251 pointer_bg, dest_mask); 3251 pointer_bg, dest_mask, domain);
3252 else 3252 else
3253 string_instantiate (image_instance, result, pointer_fg, 3253 string_instantiate (image_instance, result, pointer_fg,
3254 pointer_bg, dest_mask); 3254 pointer_bg, dest_mask, domain);
3255 3255
3256 UNGCPRO; 3256 UNGCPRO;
3257 } 3257 }
3258 3258
3259 3259
3315 } 3315 }
3316 3316
3317 static void 3317 static void
3318 font_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, 3318 font_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
3319 Lisp_Object pointer_fg, Lisp_Object pointer_bg, 3319 Lisp_Object pointer_fg, Lisp_Object pointer_bg,
3320 int dest_mask) 3320 int dest_mask, Lisp_Object domain)
3321 { 3321 {
3322 /* This function can GC */ 3322 /* This function can GC */
3323 Lisp_Object data = find_keyword_in_vector (instantiator, Q_data); 3323 Lisp_Object data = find_keyword_in_vector (instantiator, Q_data);
3324 struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance); 3324 struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
3325 Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii); 3325 Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii);
3413 } 3413 }
3414 3414
3415 static void 3415 static void
3416 cursor_font_instantiate (Lisp_Object image_instance, Lisp_Object instantiator, 3416 cursor_font_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
3417 Lisp_Object pointer_fg, Lisp_Object pointer_bg, 3417 Lisp_Object pointer_fg, Lisp_Object pointer_bg,
3418 int dest_mask) 3418 int dest_mask, Lisp_Object domain)
3419 { 3419 {
3420 /* This function can GC */ 3420 /* This function can GC */
3421 Lisp_Object data = find_keyword_in_vector (instantiator, Q_data); 3421 Lisp_Object data = find_keyword_in_vector (instantiator, Q_data);
3422 struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance); 3422 struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
3423 Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii); 3423 Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii);