-
- if ((r == 255) && (b == 255) && (g == 255))
- gdk_image_put_pixel( data_image, x, y, 1 );
- else
- gdk_image_put_pixel( data_image, x, y, 0 );
-
- } // for
- } // for
-
- // Blit picture
-
- GdkGC *data_gc = gdk_gc_new( GetBitmap() );
-
- gdk_draw_image( GetBitmap(), data_gc, data_image, 0, 0, 0, 0, width, height );
-
- g_object_unref (data_image);
- g_object_unref (data_gc);
-
- // Blit mask
-
- if (image.HasMask())
- {
- GdkGC *mask_gc = gdk_gc_new( GetMask()->GetBitmap() );
-
- gdk_draw_image( GetMask()->GetBitmap(), mask_gc, mask_image, 0, 0, 0, 0, width, height );
-
- g_object_unref (mask_image);
- g_object_unref (mask_gc);
- }
-
- return true;
-}
-
-// conversion to colour bitmap:
-bool wxBitmap::CreateFromImageAsPixmap(const wxImage& img)
-{
- // convert alpha channel to mask, if it is present:
- wxImage image(img);
- image.ConvertAlphaToMask();
-
- int width = image.GetWidth();
- int height = image.GetHeight();
-
- SetHeight( height );
- SetWidth( width );
-
- SetPixmap( gdk_pixmap_new( wxGetRootWindow()->window, width, height, -1 ) );
-
- GdkVisual *visual = wxTheApp->GetGdkVisual();
-
- int bpp = visual->depth;
-
- SetDepth( bpp );
-
- GdkGC *gc = gdk_gc_new( GetPixmap() );
-
- gdk_draw_rgb_image( GetPixmap(),
- gc,
- 0, 0,
- width, height,
- GDK_RGB_DITHER_NONE,
- image.GetData(),
- width*3 );
-
- g_object_unref (gc);
-
- // Create mask image
-
- GdkImage *mask_image = (GdkImage*) NULL;
-
- if (!image.HasMask())
- return true;
-
- unsigned char *mask_data = (unsigned char*)malloc( ((width >> 3)+8) * height );
-
- mask_image = gdk_image_new_bitmap( visual, mask_data, width, height );
-
- wxMask *mask = new wxMask();
- mask->m_bitmap = gdk_pixmap_new( wxGetRootWindow()->window, width, height, 1 );
-
- SetMask( mask );
-
- int r_mask = image.GetMaskRed();
- int g_mask = image.GetMaskGreen();
- int b_mask = image.GetMaskBlue();
-
- unsigned char* data = image.GetData();
-
- int index = 0;
- for (int y = 0; y < height; y++)
- {
- for (int x = 0; x < width; x++)