for (gsize i = 0; i < n; i++) \
{ \
T *src = (T *) (src_data + i * bpp); \
- if (G >= 0) dest[0] = (float) src[G] / scale; else dest[0] = 1.0; \
- dest[1] = dest[2] = dest[0]; \
if (A >= 0) dest[3] = (float) src[A] / scale; else dest[3] = 1.0; \
+ if (G >= 0) dest[0] = (float) src[G] / scale; else dest[0] = dest[3]; \
+ dest[1] = dest[2] = dest[0]; \
dest += 4; \
} \
} \
g16_from_float,
},
[GDK_MEMORY_A8] = {
- GDK_MEMORY_ALPHA_STRAIGHT,
+ GDK_MEMORY_ALPHA_PREMULTIPLIED,
1,
G_ALIGNOF (guchar),
GDK_MEMORY_U8,
{ 0, 0, 3, 0 },
- { GL_R8, GL_RED, GL_UNSIGNED_BYTE, { GL_ONE, GL_ONE, GL_ONE, GL_RED } },
+ { GL_R8, GL_RED, GL_UNSIGNED_BYTE, { GL_RED, GL_RED, GL_RED, GL_RED } },
a8_to_float,
a8_from_float,
},
[GDK_MEMORY_A16] = {
- GDK_MEMORY_ALPHA_STRAIGHT,
+ GDK_MEMORY_ALPHA_PREMULTIPLIED,
2,
G_ALIGNOF (guint16),
GDK_MEMORY_U16,
{ 0, 0, 3, 0 },
- { GL_R16, GL_RED, GL_UNSIGNED_SHORT, { GL_ONE, GL_ONE, GL_ONE, GL_RED } },
+ { GL_R16, GL_RED, GL_UNSIGNED_SHORT, { GL_RED, GL_RED, GL_RED, GL_RED } },
a16_to_float,
a16_from_float,
},
case GDK_MEMORY_R32G32B32A32_FLOAT_PREMULTIPLIED:
case GDK_MEMORY_G8A8_PREMULTIPLIED:
case GDK_MEMORY_G16A16_PREMULTIPLIED:
+ case GDK_MEMORY_A8:
+ case GDK_MEMORY_A16:
case GDK_MEMORY_A16_FLOAT:
case GDK_MEMORY_A32_FLOAT:
return TRUE;
case GDK_MEMORY_G8A8:
case GDK_MEMORY_G16:
case GDK_MEMORY_G16A16:
- case GDK_MEMORY_A8:
- case GDK_MEMORY_A16:
return FALSE;
case GDK_MEMORY_N_FORMATS: