- gdk_pixbuf_composite_color(src, dest,
- pb_x, pb_y, pb_w, pb_h,
- offset_x,
- offset_y,
- scale_x, scale_y,
- (scale_x == 1.0 && scale_y == 1.0) ? GDK_INTERP_NEAREST : interp_type,
- 255, check_x, check_y,
- PR_ALPHA_CHECK_SIZE,
- ((options->image.alpha_color_1.red << 8 & 0x00FF0000) +
- (options->image.alpha_color_1.green & 0x00FF00) +
- (options->image.alpha_color_1.blue >> 8 & 0x00FF)),
- ((options->image.alpha_color_2.red << 8 & 0x00FF0000) +
- (options->image.alpha_color_2.green & 0x00FF00) +
- (options->image.alpha_color_2.blue >> 8 & 0x00FF)));
+ if (ignore_alpha)
+ {
+ tmppixbuf = gdk_pixbuf_add_alpha(src, FALSE, 0, 0, 0);
+
+ pixbuf_ignore_alpha_rect(tmppixbuf, 0, 0, gdk_pixbuf_get_width(src), gdk_pixbuf_get_height(src));
+
+ gdk_pixbuf_composite_color(tmppixbuf, dest,
+ pb_x, pb_y, pb_w, pb_h,
+ offset_x,
+ offset_y,
+ scale_x, scale_y,
+ (scale_x == 1.0 && scale_y == 1.0) ? GDK_INTERP_NEAREST : interp_type,
+ 255, check_x, check_y,
+ PR_ALPHA_CHECK_SIZE,
+ ((options->image.alpha_color_1.red << 8 & 0x00FF0000) +
+ (options->image.alpha_color_1.green & 0x00FF00) +
+ (options->image.alpha_color_1.blue >> 8 & 0x00FF)),
+ ((options->image.alpha_color_2.red << 8 & 0x00FF0000) +
+ (options->image.alpha_color_2.green & 0x00FF00) +
+ (options->image.alpha_color_2.blue >> 8 & 0x00FF)));
+ g_object_unref(tmppixbuf);
+ }
+ else
+ {
+ gdk_pixbuf_composite_color(src, dest,
+ pb_x, pb_y, pb_w, pb_h,
+ offset_x,
+ offset_y,
+ scale_x, scale_y,
+ (scale_x == 1.0 && scale_y == 1.0) ? GDK_INTERP_NEAREST : interp_type,
+ 255, check_x, check_y,
+ PR_ALPHA_CHECK_SIZE,
+ ((options->image.alpha_color_1.red << 8 & 0x00FF0000) +
+ (options->image.alpha_color_1.green & 0x00FF00) +
+ (options->image.alpha_color_1.blue >> 8 & 0x00FF)),
+ ((options->image.alpha_color_2.red << 8 & 0x00FF0000) +
+ (options->image.alpha_color_2.green & 0x00FF00) +
+ (options->image.alpha_color_2.blue >> 8 & 0x00FF)));
+ }