| Index: cairo/src/cairo-win32-surface.c |
| =================================================================== |
| --- cairo/src/cairo-win32-surface.c (revision 14498) |
| +++ cairo/src/cairo-win32-surface.c (working copy) |
| @@ -824,8 +824,13 @@ |
| * to figure out when we can use GDI. We don't have that checking |
| * anywhere at the moment, so just bail and use the fallback |
| * paths. */ |
| - if (surface->format != CAIRO_FORMAT_RGB24) |
| - return CAIRO_INT_STATUS_UNSUPPORTED; |
| + //if (surface->format != CAIRO_FORMAT_RGB24) |
| + // return CAIRO_INT_STATUS_UNSUPPORTED; |
| + // FIXME: We'll go ahead and optimize this now and just assume we're ok if |
| + // the color has no alpha. Probably need to check various composite operators to |
| + // get this exactly right. |
| + if (color->alpha != 1.0) |
| + return CAIRO_INT_STATUS_UNSUPPORTED; |
| |
| /* Optimize for no destination alpha (surface->pixman_image is non-NULL for all |
| * surfaces with alpha.) |
| @@ -1016,8 +1021,9 @@ |
| |
| /* We can only handle operator SOURCE or OVER with the destination |
| * having no alpha */ |
| - if ((op != CAIRO_OPERATOR_SOURCE && op != CAIRO_OPERATOR_OVER) || |
| - (dst->format != CAIRO_FORMAT_RGB24)) |
| + if ((op != CAIRO_OPERATOR_SOURCE && op != CAIRO_OPERATOR_OVER)) |
| + // FIXME: It's not clear why ExtTextOut can't be called when the |
| + // destination has alpha. Remove the RGB24 restriction. || (dst->format != CAIRO_FORMAT_RGB24)) |
| return CAIRO_INT_STATUS_UNSUPPORTED; |
| |
| /* If we have a fallback mask clip set on the dst, we have |