mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-02-05 20:30:33 +01:00
Make _pixman_format_to_masks accept a cairo_format_masks_t structure
This makes it work similarly to _pixman_format_from_masks
This commit is contained in:
parent
cdb1ae97f2
commit
eb31c52feb
3 changed files with 29 additions and 36 deletions
|
|
@ -221,59 +221,55 @@ _pixman_format_from_masks (cairo_format_masks_t *masks,
|
|||
/* XXX: This function should really live inside pixman. */
|
||||
void
|
||||
_pixman_format_to_masks (pixman_format_code_t pixman_format,
|
||||
uint32_t *bpp,
|
||||
uint32_t *red,
|
||||
uint32_t *green,
|
||||
uint32_t *blue)
|
||||
cairo_format_masks_t *masks)
|
||||
{
|
||||
*red = 0x0;
|
||||
*green = 0x0;
|
||||
*blue = 0x0;
|
||||
masks->red_mask = 0x0;
|
||||
masks->green_mask = 0x0;
|
||||
masks->blue_mask = 0x0;
|
||||
|
||||
switch (pixman_format)
|
||||
{
|
||||
case PIXMAN_a8r8g8b8:
|
||||
case PIXMAN_x8r8g8b8:
|
||||
default:
|
||||
*bpp = 32;
|
||||
*red = 0x00ff0000;
|
||||
*green = 0x0000ff00;
|
||||
*blue = 0x000000ff;
|
||||
masks->bpp = 32;
|
||||
masks->red_mask = 0x00ff0000;
|
||||
masks->green_mask = 0x0000ff00;
|
||||
masks->blue_mask = 0x000000ff;
|
||||
break;
|
||||
|
||||
case PIXMAN_a8b8g8r8:
|
||||
case PIXMAN_x8b8g8r8:
|
||||
*bpp = 32;
|
||||
*red = 0x000000ff;
|
||||
*green = 0x0000ff00;
|
||||
*blue = 0x00ff0000;
|
||||
masks->bpp = 32;
|
||||
masks->red_mask = 0x000000ff;
|
||||
masks->green_mask = 0x0000ff00;
|
||||
masks->blue_mask = 0x00ff0000;
|
||||
break;
|
||||
|
||||
case PIXMAN_r5g6b5:
|
||||
*bpp = 16;
|
||||
*red = 0xf800;
|
||||
*green = 0x07e0;
|
||||
*blue = 0x001f;
|
||||
masks->bpp = 16;
|
||||
masks->red_mask = 0xf800;
|
||||
masks->green_mask = 0x07e0;
|
||||
masks->blue_mask = 0x001f;
|
||||
break;
|
||||
|
||||
case PIXMAN_x1r5g5b5:
|
||||
*bpp = 16;
|
||||
*red = 0x7c00;
|
||||
*green = 0x03e0;
|
||||
*blue = 0x001f;
|
||||
masks->bpp = 16;
|
||||
masks->red_mask = 0x7c00;
|
||||
masks->green_mask = 0x03e0;
|
||||
masks->blue_mask = 0x001f;
|
||||
break;
|
||||
|
||||
case PIXMAN_a8:
|
||||
*bpp = 8;
|
||||
masks->bpp = 8;
|
||||
break;
|
||||
|
||||
case PIXMAN_a1:
|
||||
*bpp = 1;
|
||||
masks->bpp = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* XXX: This function really should be eliminated. We don't really
|
||||
* want to advertise a cairo image surface that supports any possible
|
||||
* format. A minimal step would be to replace this function with one
|
||||
|
|
|
|||
|
|
@ -735,11 +735,11 @@ _draw_image_surface (cairo_xlib_surface_t *surface,
|
|||
int dst_y)
|
||||
{
|
||||
XImage ximage;
|
||||
uint32_t bpp, red, green, blue;
|
||||
cairo_format_masks_t image_masks;
|
||||
int native_byte_order = _native_byte_order_lsb () ? LSBFirst : MSBFirst;
|
||||
cairo_status_t status;
|
||||
|
||||
_pixman_format_to_masks (image->pixman_format, &bpp, &red, &green, &blue);
|
||||
_pixman_format_to_masks (image->pixman_format, &image_masks);
|
||||
|
||||
ximage.width = image->width;
|
||||
ximage.height = image->height;
|
||||
|
|
@ -751,10 +751,10 @@ _draw_image_surface (cairo_xlib_surface_t *surface,
|
|||
ximage.bitmap_pad = 32; /* always for libpixman */
|
||||
ximage.depth = image->depth;
|
||||
ximage.bytes_per_line = image->stride;
|
||||
ximage.bits_per_pixel = bpp;
|
||||
ximage.red_mask = red;
|
||||
ximage.green_mask = green;
|
||||
ximage.blue_mask = blue;
|
||||
ximage.bits_per_pixel = image_masks.bpp;
|
||||
ximage.red_mask = image_masks.red_mask;
|
||||
ximage.green_mask = image_masks.green_mask;
|
||||
ximage.blue_mask = image_masks.blue_mask;
|
||||
ximage.xoffset = 0;
|
||||
|
||||
XInitImage (&ximage);
|
||||
|
|
|
|||
|
|
@ -1854,10 +1854,7 @@ _pixman_format_from_masks (cairo_format_masks_t *masks,
|
|||
|
||||
cairo_private void
|
||||
_pixman_format_to_masks (pixman_format_code_t pixman_format,
|
||||
uint32_t *bpp,
|
||||
uint32_t *red,
|
||||
uint32_t *green,
|
||||
uint32_t *blue);
|
||||
cairo_format_masks_t *masks);
|
||||
|
||||
cairo_private cairo_surface_t *
|
||||
_cairo_image_surface_create_with_pixman_format (unsigned char *data,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue