gdk: canonicalize RGB destination formats

This commit is contained in:
Daemonratte 2026-09-01 14:32:14 +02:00
commit 513338248d

View file

@ -57,11 +57,11 @@ typedef enum
GDK_RGB_FORMAT_888_MSB,
GDK_RGB_FORMAT_0888,
GDK_RGB_FORMAT_0888_BR,
GDK_RGB_FORMAT_RGB0_NATIVE,
GDK_RGB_FORMAT_101010_R_LOW_LE,
GDK_RGB_FORMAT_101010_B_LOW_LE,
GDK_RGB_FORMAT_101010_R_LOW_BE,
GDK_RGB_FORMAT_101010_B_LOW_BE
GDK_RGB_FORMAT_8880_BR,
GDK_RGB_FORMAT_101010_R_LOW_LSB,
GDK_RGB_FORMAT_101010_B_LOW_LSB,
GDK_RGB_FORMAT_101010_R_LOW_MSB,
GDK_RGB_FORMAT_101010_B_LOW_MSB
} GdkRgbFormat;
typedef void (*GdkRgbConvFunc) (GdkRgbInfo *image_info, GdkImage *image,
@ -3724,7 +3724,8 @@ gdk_rgb_select_conv (GdkRgbInfo *image_info)
if (image_info->bitmap)
conv = gdk_rgb_convert_1;
else if (bpp == 16 && depth == 16 && !byterev &&
else if (bpp == 16 && depth == 16 &&
vtype == GDK_VISUAL_TRUE_COLOR && !byterev &&
red_mask == 0xf800 && green_mask == 0x7e0 && blue_mask == 0x1f)
{
SET_CONV (gdk_rgb_convert_565, GDK_RGB_FORMAT_565);
@ -3779,11 +3780,11 @@ gdk_rgb_select_conv (GdkRgbInfo *image_info)
#if G_BYTE_ORDER == G_BIG_ENDIAN
else if (bpp == 32 && depth == 24 && vtype == GDK_VISUAL_TRUE_COLOR &&
(mask_bgr && byte_order == GDK_MSB_FIRST))
SET_CONV (gdk_rgb_convert_8880_br, GDK_RGB_FORMAT_RGB0_NATIVE);
SET_CONV (gdk_rgb_convert_8880_br, GDK_RGB_FORMAT_8880_BR);
#else
else if (bpp == 32 && depth == 24 && vtype == GDK_VISUAL_TRUE_COLOR &&
(mask_bgr && byte_order == GDK_LSB_FIRST))
SET_CONV (gdk_rgb_convert_8880_br, GDK_RGB_FORMAT_RGB0_NATIVE);
SET_CONV (gdk_rgb_convert_8880_br, GDK_RGB_FORMAT_8880_BR);
#endif
else if (bpp == 32 && (depth == 30 || depth == 32) &&
vtype == GDK_VISUAL_TRUE_COLOR &&
@ -3798,15 +3799,15 @@ gdk_rgb_select_conv (GdkRgbInfo *image_info)
? gdk_rgb_convert_101010_r_low_lsb
: gdk_rgb_convert_101010_r_low_msb),
(byte_order == GDK_LSB_FIRST
? GDK_RGB_FORMAT_101010_R_LOW_LE
: GDK_RGB_FORMAT_101010_R_LOW_BE));
? GDK_RGB_FORMAT_101010_R_LOW_LSB
: GDK_RGB_FORMAT_101010_R_LOW_MSB));
else
SET_CONV ((byte_order == GDK_LSB_FIRST
? gdk_rgb_convert_101010_b_low_lsb
: gdk_rgb_convert_101010_b_low_msb),
(byte_order == GDK_LSB_FIRST
? GDK_RGB_FORMAT_101010_B_LOW_LE
: GDK_RGB_FORMAT_101010_B_LOW_BE));
? GDK_RGB_FORMAT_101010_B_LOW_LSB
: GDK_RGB_FORMAT_101010_B_LOW_MSB));
}
else if (vtype == GDK_VISUAL_TRUE_COLOR && byte_order == GDK_LSB_FIRST)
@ -4073,7 +4074,7 @@ gdk_rgb_get_info_from_drawable (GdkDrawable *drawable)
(p) += 4; \
} G_STMT_END
#define GDK_RGB16_STORE_RGB0_NATIVE(p, r, g, b, a) G_STMT_START { \
#define GDK_RGB16_STORE_8880_BR(p, r, g, b, a) G_STMT_START { \
guint32 pixel__ = (((b) >> 8) << 16) | \
(((g) >> 8) << 8) | \
((r) >> 8); \
@ -4115,7 +4116,7 @@ gdk_rgb_get_info_from_drawable (GdkDrawable *drawable)
(p) += 2; \
} G_STMT_END
#define GDK_RGB16_STORE_101010_R_LOW_LE(p, r, g, b, a) \
#define GDK_RGB16_STORE_101010_R_LOW_LSB(p, r, g, b, a) \
G_STMT_START { \
guint32 pixel__ = (a) | \
(((b) >> 6) << 20) | \
@ -4126,7 +4127,7 @@ G_STMT_START { \
(p) += 4; \
} G_STMT_END
#define GDK_RGB16_STORE_101010_B_LOW_LE(p, r, g, b, a) \
#define GDK_RGB16_STORE_101010_B_LOW_LSB(p, r, g, b, a) \
G_STMT_START { \
guint32 pixel__ = (a) | \
(((r) >> 6) << 20) | \
@ -4137,7 +4138,7 @@ G_STMT_START { \
(p) += 4; \
} G_STMT_END
#define GDK_RGB16_STORE_101010_R_LOW_BE(p, r, g, b, a) \
#define GDK_RGB16_STORE_101010_R_LOW_MSB(p, r, g, b, a) \
G_STMT_START { \
guint32 pixel__ = (a) | \
(((b) >> 6) << 20) | \
@ -4148,7 +4149,7 @@ G_STMT_START { \
(p) += 4; \
} G_STMT_END
#define GDK_RGB16_STORE_101010_B_LOW_BE(p, r, g, b, a) \
#define GDK_RGB16_STORE_101010_B_LOW_MSB(p, r, g, b, a) \
G_STMT_START { \
guint32 pixel__ = (a) | \
(((r) >> 6) << 20) | \
@ -4220,19 +4221,19 @@ DEFINE_GDK_RGB16_PAIR (rgb, 3, GDK_RGB16_STORE_RGB)
DEFINE_GDK_RGB16_PAIR (bgr, 3, GDK_RGB16_STORE_BGR)
DEFINE_GDK_RGB16_PAIR (bgra, 4, GDK_RGB16_STORE_BGRA)
DEFINE_GDK_RGB16_PAIR (argb, 4, GDK_RGB16_STORE_ARGB)
DEFINE_GDK_RGB16_PAIR (rgb0_native, 4, GDK_RGB16_STORE_RGB0_NATIVE)
DEFINE_GDK_RGB16_PAIR (8880_br, 4, GDK_RGB16_STORE_8880_BR)
DEFINE_GDK_RGB16_PAIR (565, 2, GDK_RGB16_STORE_565)
DEFINE_GDK_RGB16_PAIR (565_br, 2, GDK_RGB16_STORE_565_BR)
DEFINE_GDK_RGB16_PAIR (555, 2, GDK_RGB16_STORE_555)
DEFINE_GDK_RGB16_PAIR (555_br, 2, GDK_RGB16_STORE_555_BR)
DEFINE_GDK_RGB16_PAIR (101010_r_low_le, 4,
GDK_RGB16_STORE_101010_R_LOW_LE)
DEFINE_GDK_RGB16_PAIR (101010_b_low_le, 4,
GDK_RGB16_STORE_101010_B_LOW_LE)
DEFINE_GDK_RGB16_PAIR (101010_r_low_be, 4,
GDK_RGB16_STORE_101010_R_LOW_BE)
DEFINE_GDK_RGB16_PAIR (101010_b_low_be, 4,
GDK_RGB16_STORE_101010_B_LOW_BE)
DEFINE_GDK_RGB16_PAIR (101010_r_low_lsb, 4,
GDK_RGB16_STORE_101010_R_LOW_LSB)
DEFINE_GDK_RGB16_PAIR (101010_b_low_lsb, 4,
GDK_RGB16_STORE_101010_B_LOW_LSB)
DEFINE_GDK_RGB16_PAIR (101010_r_low_msb, 4,
GDK_RGB16_STORE_101010_R_LOW_MSB)
DEFINE_GDK_RGB16_PAIR (101010_b_low_msb, 4,
GDK_RGB16_STORE_101010_B_LOW_MSB)
#undef DEFINE_GDK_RGB16_PAIR
#undef DEFINE_GDK_RGB16_CONVERTER
@ -4241,15 +4242,15 @@ DEFINE_GDK_RGB16_PAIR (101010_b_low_be, 4,
#undef GDK_RGB16_STORE_BGR
#undef GDK_RGB16_STORE_BGRA
#undef GDK_RGB16_STORE_ARGB
#undef GDK_RGB16_STORE_RGB0_NATIVE
#undef GDK_RGB16_STORE_8880_BR
#undef GDK_RGB16_STORE_565
#undef GDK_RGB16_STORE_565_BR
#undef GDK_RGB16_STORE_555
#undef GDK_RGB16_STORE_555_BR
#undef GDK_RGB16_STORE_101010_R_LOW_LE
#undef GDK_RGB16_STORE_101010_B_LOW_LE
#undef GDK_RGB16_STORE_101010_R_LOW_BE
#undef GDK_RGB16_STORE_101010_B_LOW_BE
#undef GDK_RGB16_STORE_101010_R_LOW_LSB
#undef GDK_RGB16_STORE_101010_B_LOW_LSB
#undef GDK_RGB16_STORE_101010_R_LOW_MSB
#undef GDK_RGB16_STORE_101010_B_LOW_MSB
static void
@ -4416,20 +4417,20 @@ gdk_rgb16_select_converter (GdkRgbInfo *image_info,
case GDK_RGB_FORMAT_0888_BR:
SELECT_PAIR (argb);
case GDK_RGB_FORMAT_RGB0_NATIVE:
SELECT_PAIR (rgb0_native);
case GDK_RGB_FORMAT_8880_BR:
SELECT_PAIR (8880_br);
case GDK_RGB_FORMAT_101010_R_LOW_LE:
SELECT_PAIR (101010_r_low_le);
case GDK_RGB_FORMAT_101010_R_LOW_LSB:
SELECT_PAIR (101010_r_low_lsb);
case GDK_RGB_FORMAT_101010_B_LOW_LE:
SELECT_PAIR (101010_b_low_le);
case GDK_RGB_FORMAT_101010_B_LOW_LSB:
SELECT_PAIR (101010_b_low_lsb);
case GDK_RGB_FORMAT_101010_R_LOW_BE:
SELECT_PAIR (101010_r_low_be);
case GDK_RGB_FORMAT_101010_R_LOW_MSB:
SELECT_PAIR (101010_r_low_msb);
case GDK_RGB_FORMAT_101010_B_LOW_BE:
SELECT_PAIR (101010_b_low_be);
case GDK_RGB_FORMAT_101010_B_LOW_MSB:
SELECT_PAIR (101010_b_low_msb);
default:
break;