xlib: Make code not complain about every new format

This commit is contained in:
Benjamin Otte 2010-02-23 21:53:31 +01:00
parent ebc9cc46fe
commit 1d753b2f4d

View file

@ -3747,6 +3747,18 @@ _native_byte_order_lsb (void)
return *((char *) &x) == 1;
}
static int
_cairo_xlib_get_glyphset_index_for_format (cairo_format_t format)
{
if (format == CAIRO_FORMAT_A8)
return GLYPHSET_INDEX_A8;
if (format == CAIRO_FORMAT_A1)
return GLYPHSET_INDEX_A1;
assert (format == CAIRO_FORMAT_ARGB32);
return GLYPHSET_INDEX_ARGB32;
}
static cairo_xlib_font_glyphset_info_t *
_cairo_xlib_scaled_font_get_glyphset_info_for_format (cairo_scaled_font_t *scaled_font,
cairo_format_t format)
@ -3755,17 +3767,7 @@ _cairo_xlib_scaled_font_get_glyphset_info_for_format (cairo_scaled_font_t *scale
cairo_xlib_font_glyphset_info_t *glyphset_info;
int glyphset_index;
switch (format) {
default:
case CAIRO_FORMAT_INVALID:
case CAIRO_FORMAT_RGB16_565:
case CAIRO_FORMAT_RGB24:
ASSERT_NOT_REACHED;
case CAIRO_FORMAT_ARGB32: glyphset_index = GLYPHSET_INDEX_ARGB32; break;
case CAIRO_FORMAT_A8: glyphset_index = GLYPHSET_INDEX_A8; break;
case CAIRO_FORMAT_A1: glyphset_index = GLYPHSET_INDEX_A1; break;
}
glyphset_index = _cairo_xlib_get_glyphset_index_for_format (format);
font_private = scaled_font->surface_private;
glyphset_info = &font_private->glyphset_info[glyphset_index];
if (glyphset_info->glyphset == None) {
@ -3819,16 +3821,7 @@ _cairo_xlib_scaled_font_get_glyphset_info_for_pending_free_glyph (
return NULL;
if (surface != NULL) {
switch (surface->format) {
default:
case CAIRO_FORMAT_INVALID:
case CAIRO_FORMAT_RGB16_565:
case CAIRO_FORMAT_RGB24:
ASSERT_NOT_REACHED;
case CAIRO_FORMAT_ARGB32: i = GLYPHSET_INDEX_ARGB32; break;
case CAIRO_FORMAT_A8: i = GLYPHSET_INDEX_A8; break;
case CAIRO_FORMAT_A1: i = GLYPHSET_INDEX_A1; break;
}
i = _cairo_xlib_get_glyphset_index_for_format (surface->format);
if (_cairo_xlib_glyphset_info_has_pending_free_glyph (
&font_private->glyphset_info[i],
glyph_index))
@ -3966,8 +3959,8 @@ _cairo_xlib_surface_add_glyph (Display *dpy,
data = glyph_surface->data;
/* flip formats around */
switch (scaled_glyph->surface->format) {
case CAIRO_FORMAT_A1:
switch (_cairo_xlib_get_glyphset_index_for_format (scaled_glyph->surface->format)) {
case GLYPHSET_INDEX_A1:
/* local bitmaps are always stored with bit == byte */
if (_native_byte_order_lsb() != (BitmapBitOrder (dpy) == LSBFirst)) {
int c = glyph_surface->stride * glyph_surface->height;
@ -3991,9 +3984,9 @@ _cairo_xlib_surface_add_glyph (Display *dpy,
data = new;
}
break;
case CAIRO_FORMAT_A8:
case GLYPHSET_INDEX_A8:
break;
case CAIRO_FORMAT_ARGB32:
case GLYPHSET_INDEX_ARGB32:
if (_native_byte_order_lsb() != (ImageByteOrder (dpy) == LSBFirst)) {
unsigned int c = glyph_surface->stride * glyph_surface->height / 4;
const uint32_t *d;
@ -4013,9 +4006,6 @@ _cairo_xlib_surface_add_glyph (Display *dpy,
data = (uint8_t *) new;
}
break;
case CAIRO_FORMAT_RGB16_565:
case CAIRO_FORMAT_RGB24:
case CAIRO_FORMAT_INVALID:
default:
ASSERT_NOT_REACHED;
break;