Re: [g-a-devel]gnome-mag patch ..
- From: Bill Haneman <bill haneman sun com>
- To: Bill Haneman <bill haneman sun com>
- Cc: Michael Meeks <michael ximian com>, accessibility mailing list <gnome-accessibility-devel gnome org>
- Subject: Re: [g-a-devel]gnome-mag patch ..
- Date: 16 Aug 2002 20:32:28 +0100
Sorry for replying to myself...
> I can prepare such a patch on Monday, or if you want to do this first
> Michael (i.e. include the proper dependency in configure.in, and other
> cruft removal), then feel free. You will see, if you look at this diff,
> that it's only about halfway done from a point of migrating fully from
> gtk+2 to gtk+2.1, so we should remove "old_get_root_subimage", etc.
> altogether.
Since it's not ideal for people to commit one anothers' patches, I will
try to get this out tomorrow. If you (Michael) see stuff that I missed,
then go ahead and fix it, I'm just giving a heads-up to avoid
duplication of effort.
regards,
Bill
> Regards,
>
> -Bill
>
>
> ----
>
> ? gnome-mag.diff
> ? magnifier/Magnifier-stubs.c
> ? magnifier/Magnifier-skels.c
> ? magnifier/Magnifier-common.c
> ? magnifier/Magnifier.h
> ? magnifier/Magnifier.server
> Index: ChangeLog
> ===================================================================
> RCS file: /cvs/gnome/gnome-mag/ChangeLog,v
> retrieving revision 1.9
> diff -u -r1.9 ChangeLog
> --- ChangeLog 15 Aug 2002 16:46:31 -0000 1.9
> +++ ChangeLog 16 Aug 2002 19:10:01 -0000
> @@ -1,3 +1,11 @@
> +<<<<<<< ChangeLog
> +2002-07-16 Bill Haneman <bill haneman sun com>
> +
> + * magnifier/mag_image.c:
> + rgbconvert():
> + Removed unused method; we now use gdkpixbuf to do this.
> +
> +=======
> 2002-08-15 Michael Meeks <michael ximian com>
>
> * magnifier/Makefile.am: install generated header.
> @@ -30,6 +38,7 @@
>
> * magnifier/Makefile.am: add POPT_LIBS to LDADD.
>
> +>>>>>>> 1.9
> 2002-06-30 Bill Haneman <bill haneman sun com>
>
> * magnifier/magnifier.c:
> Index: magnifier/mag_image.c
> ===================================================================
> RCS file: /cvs/gnome/gnome-mag/magnifier/mag_image.c,v
> retrieving revision 1.5
> diff -u -r1.5 mag_image.c
> --- magnifier/mag_image.c 30 Jun 2002 21:36:36 -0000 1.5
> +++ magnifier/mag_image.c 16 Aug 2002 19:10:03 -0000
> @@ -22,7 +22,8 @@
>
> #include "mag_image.h"
>
> -#define GDK_PIXBUF_ROOT_SUPPORT_IS_BROKEN /* undef when bug 86931 is fixed */
> +#undef GDK_PIXBUF_ROOT_SUPPORT_IS_BROKEN /* undef when bug 86931 is fixed */
> +#undef GTK_2_0_BRANCH
>
> static int get_num(char* msg);
> static void get_coord(char* msg,point *p);
> @@ -1507,80 +1508,10 @@
> };
>
> static void
> -rgbconvert (XImage *image, guchar *pixels, int rowstride, int alpha, xlib_colormap *cmap,
> - MagnifierData *mag_data)
> -{
> - int index = (image->byte_order == MSBFirst) | (alpha != 0) << 1;
> - int bank=5; /* default fallback converter */
> - Visual *v = cmap->visual;
> - if (mag_data->fast_rgb_convert)
> - {
> - switch (v->class) {
> - /* I assume this is right for static & greyscale's too? */
> - case StaticGray:
> - case GrayScale:
> - case StaticColor:
> - case PseudoColor:
> - switch (image->bits_per_pixel) {
> - case 1:
> - bank = 0;
> - break;
> - case 8:
> - bank = 1;
> - break;
> - }
> - break;
> - case TrueColor:
> - switch (image->depth) {
> - case 15:
> - if (v->red_mask == 0x7c00 && v->green_mask == 0x3e0 && v->blue_mask == 0x1f
> - && image->bits_per_pixel == 16)
> - bank = 2;
> - break;
> - case 16:
> - if (v->red_mask == 0xf800 && v->green_mask == 0x7e0 && v->blue_mask == 0x1f
> - && image->bits_per_pixel == 16)
> - bank = 3;
> - break;
> - case 24:
> - case 32:
> - if (v->red_mask == 0xff0000 && v->green_mask == 0xff00 && v->blue_mask == 0xff
> - && image->bits_per_pixel == 32)
> - bank = 4;
> - break;
> - }
> - break;
> - case DirectColor:
> - /* always use the slow version */
> - break;
> - }
> - }
> -
> - if (bank==5) {
> - convert_real_slow(image, pixels, rowstride, cmap, alpha);
> - } else {
> - index |= bank << 2;
> -#ifdef DEBUG_VERBOSE
> - fprintf (stderr, "using fast conversion func %d\n", index);
> -#endif
> - (* convert_map[index]) (image, pixels, rowstride, cmap);
> - }
> -}
> -
> -XImage *
> -get_root_image (Window src, GdkPixbuf *dest, int x, int y, int width, int height,
> - MagnifierData *mag_data)
> -{
> - return XGetSubImage (mag_data->source_display, src, x, y,
> - width, height, AllPlanes, ZPixmap,
> - ximage, x, y);
> -}
> -
> -static void
> get_root_subimage (Window src, GdkPixbuf *dest, int src_x, int src_y,
> int width, int height, MagnifierData *mag_data)
> {
> -#ifdef GDK_PIXBUF_ROOT_SUPPORT_IS_BROKEN
> +#ifdef GTK_2_0_BRANCH
> old_get_root_subimage (src, dest, src_x, src_y, width, height, mag_data);
> #else
> new_get_root_subimage (src, dest, src_x, src_y, width, height, mag_data);
> @@ -1588,12 +1519,12 @@
> }
>
> static void
> -new_get_root_subimage (Window src, GdkPixbuf *dest, int src_x, int src_y,
> +old_get_root_subimage (Window src, GdkPixbuf *dest, int src_x, int src_y,
> int width, int height, MagnifierData *mag_data)
> {
> GdkColormap *cmap = gdk_rgb_get_colormap ();
> gdk_pixbuf_xlib_get_from_drawable (dest,
> - gdk_x11_get_default_root_xwindow (),
> + src,
> GDK_COLORMAP_XCOLORMAP (cmap),
> GDK_VISUAL_XVISUAL (gdk_visual_get_system ()),
> src_x, src_y,
> @@ -1602,51 +1533,17 @@
> }
>
> static void
> -old_get_root_subimage (Window src, GdkPixbuf *dest, int src_x, int src_y,
> +new_get_root_subimage (Window src, GdkPixbuf *dest, int src_x, int src_y,
> int width, int height, MagnifierData *mag_data)
> {
> - if (ximage == NULL) {
> -#ifdef DEBUG_VERBOSE
> - fprintf (stderr, "creating root ximage\n");
> -#endif
> - ximage = XGetImage (mag_data->source_display, src, 0, 0,
> - DisplayWidth (mag_data->source_display,
> - mag_data->source_screen_num),
> - DisplayHeight (mag_data->source_display,
> - mag_data->source_screen_num),
> - AllPlanes, ZPixmap);
> -
> - /* Get image in ZPixmap format (packed bits). */
> - } else {
> -#ifdef DEBUG_VERBOSE
> - fprintf (stderr, "Getting X subimage\n");
> -#endif
> - ximage = get_root_image (src, dest, src_x, src_y, width, height, mag_data);
> - }
> -
> - g_assert(image != NULL);
> + GdkColormap *cmap = gdk_rgb_get_colormap ();
>
> - if(x_cmap == NULL) {
> - XWindowAttributes wa;
> - XVisualInfo vi;
> - int xgwaret;
> - xgwaret = XGetWindowAttributes (mag_data->source_display,
> - src, &wa);
> - g_assert (xgwaret);
> - /* XGetVisualInfo (mag_data->source_display, src, &vi); */
> -#ifdef DEBUG_VERBOSE
> - fprintf (stderr, "colormap %d, visual cmap entries %d\n",
> - wa.colormap, wa.visual->map_entries);
> -#endif
> - x_cmap = xlib_get_colormap (wa.colormap, wa.visual, mag_data); }
> -
> - /* we offset into the image data based on the position
> - we are retrieving from */
> - rgbconvert (ximage, gdk_pixbuf_get_pixels(dest),
> - gdk_pixbuf_get_rowstride(dest),
> - gdk_pixbuf_get_has_alpha(dest),
> - x_cmap,
> - mag_data);
> + gdk_pixbuf_get_from_drawable (dest,
> + spi_source_root_window,
> + cmap,
> + src_x, src_y,
> + src_x, src_y,
> + width, height);
> }
>
>
> Index: magnifier/mag_image.h
> ===================================================================
> RCS file: /cvs/gnome/gnome-mag/magnifier/mag_image.h,v
> retrieving revision 1.4
> diff -u -r1.4 mag_image.h
> --- magnifier/mag_image.h 30 Jun 2002 21:36:37 -0000 1.4
> +++ magnifier/mag_image.h 16 Aug 2002 19:10:03 -0000
> @@ -65,7 +65,8 @@
> point curpos; /* Position of the magnified cursor */
> GdkPixbuf* image;
> GdkPixbuf* scaled_image;
> -Window spi_image_root_window;
> +GdkWindow* spi_source_root_window;
> +Window spi_image_root_window;
> int screen_num;
> int old_factor_x;
> int old_factor_y;
> Index: magnifier/magnifier.c
> ===================================================================
> RCS file: /cvs/gnome/gnome-mag/magnifier/magnifier.c,v
> retrieving revision 1.8
> diff -u -r1.8 magnifier.c
> --- magnifier/magnifier.c 15 Aug 2002 16:18:27 -0000 1.8
> +++ magnifier/magnifier.c 16 Aug 2002 19:10:04 -0000
> @@ -297,6 +297,11 @@
>
> spi_image_root_window = RootWindow(magnifier->mag_data->source_display,
> magnifier->mag_data->source_screen_num);
> +
> + spi_source_root_window = gdk_screen_get_root_window (
> + gdk_display_get_screen (gdk_display_open (global_options.source_display),
> + magnifier->mag_data->source_screen_num));
> +
> gdk_pixbuf_xlib_init (magnifier->mag_data->target_display,
> magnifier->mag_data->target_screen_num);
> image = gdk_pixbuf_new (GDK_COLORSPACE_RGB,FALSE, 8,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]