mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-05-08 03:18:05 +02:00
[image] Make _cairo_image_analayze_transparency() more format agnostic
Use the content in preference to the format to determine CAIRO_IMAGE_IS_OPAQUE/CAIRO_IMAGE_HAS_ALPHA.
This commit is contained in:
parent
4be6de9fc6
commit
aac132a76a
1 changed files with 7 additions and 10 deletions
|
|
@ -1576,15 +1576,13 @@ _cairo_image_analyze_transparency (cairo_image_surface_t *image)
|
|||
if (image->transparency != CAIRO_IMAGE_UNKNOWN)
|
||||
return image->transparency;
|
||||
|
||||
if (image->format == CAIRO_FORMAT_RGB24) {
|
||||
image->transparency = CAIRO_IMAGE_IS_OPAQUE;
|
||||
return CAIRO_IMAGE_IS_OPAQUE;
|
||||
}
|
||||
if ((image->base.content & CAIRO_CONTENT_ALPHA) == 0)
|
||||
return image->transparency = CAIRO_IMAGE_IS_OPAQUE;
|
||||
if ((image->base.content & CAIRO_CONTENT_COLOR) == 0)
|
||||
return image->transparency = CAIRO_IMAGE_HAS_ALPHA;
|
||||
|
||||
if (image->format != CAIRO_FORMAT_ARGB32) {
|
||||
image->transparency = CAIRO_IMAGE_HAS_ALPHA;
|
||||
return CAIRO_IMAGE_HAS_ALPHA;
|
||||
}
|
||||
if (image->format != CAIRO_FORMAT_ARGB32)
|
||||
return image->transparency = CAIRO_IMAGE_HAS_ALPHA;
|
||||
|
||||
image->transparency = CAIRO_IMAGE_IS_OPAQUE;
|
||||
for (y = 0; y < image->height; y++) {
|
||||
|
|
@ -1593,8 +1591,7 @@ _cairo_image_analyze_transparency (cairo_image_surface_t *image)
|
|||
for (x = 0; x < image->width; x++, pixel++) {
|
||||
int a = (*pixel & 0xff000000) >> 24;
|
||||
if (a > 0 && a < 255) {
|
||||
image->transparency = CAIRO_IMAGE_HAS_ALPHA;
|
||||
return CAIRO_IMAGE_HAS_ALPHA;
|
||||
return image->transparency = CAIRO_IMAGE_HAS_ALPHA;
|
||||
} else if (a == 0) {
|
||||
image->transparency = CAIRO_IMAGE_HAS_BILEVEL_ALPHA;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue