diff options
author | Raph Levien <raph@src.gnome.org> | 1998-09-01 05:29:45 +0000 |
---|---|---|
committer | Raph Levien <raph@src.gnome.org> | 1998-09-01 05:29:45 +0000 |
commit | 1fe35dda560642a0183dc58a44f2d2ab7ce02ab8 (patch) | |
tree | b2223757a92c493eb8fe02d956c98204428c9503 /gdk | |
parent | 4bb5d92a02a6ce4ddfbc34980209b40dac41dcff (diff) | |
download | gtk+-1fe35dda560642a0183dc58a44f2d2ab7ce02ab8.tar.gz |
Minor improvements to gdkrgb, added testrgb to the gtk directory.
Diffstat (limited to 'gdk')
-rw-r--r-- | gdk/gdkrgb.c | 37 |
1 files changed, 24 insertions, 13 deletions
diff --git a/gdk/gdkrgb.c b/gdk/gdkrgb.c index 9c235fdd4d..4923d2c5fc 100644 --- a/gdk/gdkrgb.c +++ b/gdk/gdkrgb.c @@ -2500,6 +2500,7 @@ gdk_rgb_select_conv (GdkImage *image) GdkRgbConvFunc conv_32, conv_32_d; GdkRgbConvFunc conv_gray, conv_gray_d; GdkRgbConvFunc conv_indexed, conv_indexed_d; + gboolean lsb_24, msb_24; depth = image_info->visual->depth; bpp = image->bpp; @@ -2524,6 +2525,17 @@ gdk_rgb_select_conv (GdkImage *image) green_mask = image_info->visual->green_mask; blue_mask = image_info->visual->blue_mask; + lsb_24 = + (byte_order == GDK_LSB_FIRST && + red_mask == 0xff0000 && green_mask == 0xff00 && blue_mask == 0xff) || + (byte_order == GDK_MSB_FIRST && + red_mask == 0xff && green_mask == 0xff00 && blue_mask == 0xff0000); + msb_24 = + (byte_order == GDK_MSB_FIRST && + red_mask == 0xff0000 && green_mask == 0xff00 && blue_mask == 0xff) || + (byte_order == GDK_LSB_FIRST && + red_mask == 0xff && green_mask == 0xff00 && blue_mask == 0xff0000); + conv = NULL; conv_d = NULL; @@ -2563,23 +2575,22 @@ gdk_rgb_select_conv (GdkImage *image) red_mask == 0x7c00 && green_mask == 0x3e0 && blue_mask == 0x1f) conv = gdk_rgb_convert_555_br; - /* I'm not 100% sure about the 24bpp tests */ - else if (bpp == 3 && depth == 24 && - vtype == GDK_VISUAL_TRUE_COLOR && byte_order == GDK_LSB_FIRST && - red_mask == 0xff0000 && green_mask == 0xff00 && blue_mask == 0xff) + /* I'm not 100% sure about the 24bpp tests - but testing will show*/ + else if (bpp == 3 && depth == 24 && vtype == GDK_VISUAL_TRUE_COLOR && lsb_24) conv = gdk_rgb_convert_888_lsb; - else if (bpp == 3 && depth == 24 && - vtype == GDK_VISUAL_TRUE_COLOR && byte_order == GDK_MSB_FIRST && - red_mask == 0xff0000 && green_mask == 0xff00 && blue_mask == 0xff) + else if (bpp == 3 && depth == 24 && vtype == GDK_VISUAL_TRUE_COLOR && msb_24) conv = gdk_rgb_convert_888_msb; - else if (bpp == 4 && depth == 24 && - vtype == GDK_VISUAL_TRUE_COLOR && !byterev && - red_mask == 0xff0000 && green_mask == 0xff00 && blue_mask == 0xff) +#ifdef WORDS_BIGENDIAN + else if (bpp == 4 && depth == 24 && vtype == GDK_VISUAL_TRUE_COLOR && lsb_24) + conv = gdk_rgb_convert_0888_br; + else if (bpp == 4 && depth == 24 && vtype == GDK_VISUAL_TRUE_COLOR && msb_24) conv = gdk_rgb_convert_0888; - else if (bpp == 4 && depth == 24 && - vtype == GDK_VISUAL_TRUE_COLOR && byterev && - red_mask == 0xff0000 && green_mask == 0xff00 && blue_mask == 0xff) +#else + else if (bpp == 4 && depth == 24 && vtype == GDK_VISUAL_TRUE_COLOR && lsb_24) + conv = gdk_rgb_convert_0888; + else if (bpp == 4 && depth == 24 && vtype == GDK_VISUAL_TRUE_COLOR && msb_24) conv = gdk_rgb_convert_0888_br; +#endif else if (vtype == GDK_VISUAL_TRUE_COLOR && byte_order == GDK_LSB_FIRST) { |