mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-04-30 07:30:56 +02:00
xlib: Make code not complain about every new format
This commit is contained in:
parent
ebc9cc46fe
commit
1d753b2f4d
1 changed files with 18 additions and 28 deletions
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue