- rMask = image.GetMaskRed();
- gMask = image.GetMaskGreen();
- bMask = image.GetMaskBlue();
- }
-
- GdkPixbuf *pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, true, 8, w, h);
- unsigned char *alpha = image.HasAlpha() ? image.GetAlpha() : NULL;
- unsigned char *out = gdk_pixbuf_get_pixels(pixbuf);
- int rowpad = gdk_pixbuf_get_rowstride(pixbuf) - 4 * w;
- for ( int y = 0; y < h; y++, out += rowpad )
- {
- for ( int x = 0; x < w; x++, out += 4, rgbBits += 3 )
- {
- out[0] = rgbBits[0];
- out[1] = rgbBits[1];
- out[2] = rgbBits[2];
- if (bHasMask &&
- out[0] == rMask && out[1] == gMask && out[2] == bMask)
- out[3] = 0;
- else
- out[3] = alpha ? *alpha : 255;
- if ( alpha )
- ++alpha;
- }
+ // add alpha, so wxBitmap will convert to pixbuf format
+ image_copy.InitAlpha();