// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
-#include "wx/defs.h"
+#ifndef WX_PRECOMP
+ #include "wx/app.h"
+ #include "wx/dcmemory.h"
+#endif
#include "wx/bitmap.h"
#include "wx/palette.h"
#include "wx/icon.h"
#include "wx/filefn.h"
#include "wx/image.h"
-#include "wx/dcmemory.h"
-#include "wx/app.h"
-#ifdef __WXGTK20__
#include "wx/rawbmp.h"
// need this to get gdk_image_new_bitmap()
#define GDK_ENABLE_BROKEN
-#endif
#include <gdk/gdk.h>
#include <gtk/gtk.h>
#include <gdk/gdkx.h>
-#ifdef __WXGTK20__
- #include <gdk/gdkimage.h>
-#else // GTK+ 1.2
- #include <gdk/gdkrgb.h>
-#endif // GTK+ 2.0/1.2
+#include <gdk/gdkimage.h>
#include "wx/math.h"
wxMask::~wxMask()
{
if (m_bitmap)
- gdk_bitmap_unref( m_bitmap );
+ g_object_unref (G_OBJECT (m_bitmap));
}
bool wxMask::Create( const wxBitmap& bitmap,
{
if (m_bitmap)
{
- gdk_bitmap_unref( m_bitmap );
+ g_object_unref (G_OBJECT (m_bitmap));
m_bitmap = (GdkBitmap*) NULL;
}
gdk_draw_line( m_bitmap, gc, start_x, j, i, j );
}
- gdk_gc_unref( gc );
+ g_object_unref (G_OBJECT (gc));
return true;
}
{
if (m_bitmap)
{
- gdk_bitmap_unref( m_bitmap );
+ g_object_unref (G_OBJECT (m_bitmap));
m_bitmap = (GdkBitmap*) NULL;
}
gdk_wx_draw_bitmap( m_bitmap, gc, bitmap.GetBitmap(), 0, 0, 0, 0, bitmap.GetWidth(), bitmap.GetHeight() );
- gdk_gc_unref( gc );
+ g_object_unref (G_OBJECT (gc));
return true;
}
GdkPixmap *m_pixmap;
GdkBitmap *m_bitmap;
-#ifdef __WXGTK20__
GdkPixbuf *m_pixbuf;
-#endif
wxMask *m_mask;
int m_width;
int m_height;
{
m_pixmap = (GdkPixmap *) NULL;
m_bitmap = (GdkBitmap *) NULL;
-#ifdef __WXGTK20__
m_pixbuf = (GdkPixbuf *) NULL;
-#endif
m_mask = (wxMask *) NULL;
m_width = 0;
m_height = 0;
wxBitmapRefData::~wxBitmapRefData()
{
if (m_pixmap)
- gdk_pixmap_unref( m_pixmap );
+ g_object_unref (G_OBJECT (m_pixmap));
if (m_bitmap)
- gdk_bitmap_unref( m_bitmap );
-#ifdef __WXGTK20__
+ g_object_unref (G_OBJECT (m_bitmap));
if (m_pixbuf)
- gdk_pixbuf_unref( m_pixbuf );
-#endif
+ g_object_unref (G_OBJECT (m_pixbuf));
delete m_mask;
#if wxUSE_PALETTE
delete m_palette;
depth = visual->depth;
wxCHECK_MSG( (depth == visual->depth) || (depth == 1) || (depth == 32), false,
- wxT("invalid bitmap depth") )
+ wxT("invalid bitmap depth") );
m_refData = new wxBitmapRefData();
M_BMPDATA->m_mask = (wxMask *) NULL;
M_BMPDATA->m_bitmap = gdk_pixmap_new( wxGetRootWindow()->window, width, height, 1 );
M_BMPDATA->m_bpp = 1;
}
-#ifdef __WXGTK20__
else if (depth == 32)
{
M_BMPDATA->m_pixbuf = gdk_pixbuf_new( GDK_COLORSPACE_RGB, true,
8, width, height);
M_BMPDATA->m_bpp = 32;
}
-#endif
else
{
M_BMPDATA->m_pixmap = gdk_pixmap_new( wxGetRootWindow()->window, width, height, depth );
{
UnRef();
- wxCHECK_MSG( bits != NULL, false, wxT("invalid bitmap data") )
+ wxCHECK_MSG( bits != NULL, false, wxT("invalid bitmap data") );
GdkVisual *visual = wxTheApp->GetGdkVisual();
M_BMPDATA->m_mask->m_bitmap = mask;
}
- gdk_window_get_size( M_BMPDATA->m_pixmap, &(M_BMPDATA->m_width), &(M_BMPDATA->m_height) );
+ gdk_drawable_get_size( M_BMPDATA->m_pixmap, &(M_BMPDATA->m_width), &(M_BMPDATA->m_height) );
M_BMPDATA->m_bpp = visual->depth; // Can we get a different depth from create_from_xpm_d() ?
wxBitmap bmp;
-#ifdef __WXGTK20__
if (HasPixbuf())
{
bmp.SetWidth(width);
GDK_INTERP_BILINEAR);
}
else
-#endif // __WXGTK20__
{
GdkImage *img = (GdkImage*) NULL;
if (GetPixmap())
GdkPixmap *dstpix = NULL;
if (GetPixmap())
{
- GdkVisual *visual = gdk_window_get_visual( GetPixmap() );
+ GdkVisual *visual = gdk_drawable_get_visual( GetPixmap() );
if (visual == NULL)
visual = wxTheApp->GetGdkVisual();
old_x = x;
}
- if (bpp == 1)
+ if ( dst )
{
if (!pixval)
{
}
// do not forget the last byte
- if ((bpp == 1) && (width % 8 != 0))
+ if ( dst && (width % 8 != 0) )
dst[h*dstbyteperline+width/8] = outbyte;
}
- gdk_image_destroy( img );
- if (gc) gdk_gc_unref( gc );
+ g_object_unref (G_OBJECT (img));
+ if (gc) g_object_unref (G_OBJECT (gc));
- if (bpp == 1)
+ if ( dst )
{
bmp = wxBitmap( (const char *)dst, width, height, 1 );
free( dst );
bmp.SetMask(mask);
free( dst );
- gdk_image_destroy( img );
+ g_object_unref (G_OBJECT (img));
}
free( tablex );
{
UnRef();
- wxCHECK_MSG( image.Ok(), false, wxT("invalid image") )
- wxCHECK_MSG( depth == -1 || depth == 1, false, wxT("invalid bitmap depth") )
+ wxCHECK_MSG( image.Ok(), false, wxT("invalid image") );
+ wxCHECK_MSG( depth == -1 || depth == 1, false, wxT("invalid bitmap depth") );
if (image.GetWidth() <= 0 || image.GetHeight() <= 0)
return false;
}
else
{
-#ifdef __WXGTK20__
if (image.HasAlpha())
return CreateFromImageAsPixbuf(image);
-#endif
+
return CreateFromImageAsPixmap(image);
}
}
gdk_draw_image( GetBitmap(), data_gc, data_image, 0, 0, 0, 0, width, height );
- gdk_image_destroy( data_image );
- gdk_gc_unref( data_gc );
+ g_object_unref (G_OBJECT (data_image));
+ g_object_unref (G_OBJECT (data_gc));
// Blit mask
gdk_draw_image( GetMask()->GetBitmap(), mask_gc, mask_image, 0, 0, 0, 0, width, height );
- gdk_image_destroy( mask_image );
- gdk_gc_unref( mask_gc );
+ g_object_unref (G_OBJECT (mask_image));
+ g_object_unref (G_OBJECT (mask_gc));
}
return true;
image.GetData(),
width*3 );
- gdk_gc_unref( gc );
+ g_object_unref (G_OBJECT (gc));
return true;
}
gdk_draw_image( GetPixmap(), data_gc, data_image, 0, 0, 0, 0, width, height );
- gdk_image_destroy( data_image );
- gdk_gc_unref( data_gc );
+ g_object_unref (G_OBJECT (data_image));
+ g_object_unref (G_OBJECT (data_gc));
// Blit mask
gdk_draw_image( GetMask()->GetBitmap(), mask_gc, mask_image, 0, 0, 0, 0, width, height );
- gdk_image_destroy( mask_image );
- gdk_gc_unref( mask_gc );
+ g_object_unref (G_OBJECT (mask_image));
+ g_object_unref (G_OBJECT (mask_gc));
}
return true;
}
-#ifdef __WXGTK20__
bool wxBitmap::CreateFromImageAsPixbuf(const wxImage& image)
{
int width = image.GetWidth();
return true;
}
-#endif // __WXGTK20__
wxImage wxBitmap::ConvertToImage() const
{
return wxNullImage;
}
-#ifdef __WXGTK20__
if (HasPixbuf())
{
GdkPixbuf *pixbuf = GetPixbuf();
}
}
else
-#endif // __WXGTK20__
{
// the colour used as transparent one in wxImage and the one it is
// replaced with when it really occurs in the bitmap
if (GetPixmap())
{
- GdkVisual *visual = gdk_window_get_visual( GetPixmap() );
+ GdkVisual *visual = gdk_drawable_get_visual( GetPixmap() );
if (visual == NULL)
visual = wxTheApp->GetGdkVisual();
}
}
- gdk_image_destroy( gdk_image );
- if (gdk_image_mask) gdk_image_destroy( gdk_image_mask );
+ g_object_unref (G_OBJECT (gdk_image));
+ if (gdk_image_mask) g_object_unref (G_OBJECT (gdk_image_mask));
}
return image;
}
-wxBitmap::wxBitmap( const wxBitmap& bmp )
- : wxBitmapBase()
-{
- Ref( bmp );
-}
-
wxBitmap::wxBitmap( const wxString &filename, wxBitmapType type )
{
LoadFile( filename, type );
{
}
-wxBitmap& wxBitmap::operator = ( const wxBitmap& bmp )
-{
- if ( m_refData != bmp.m_refData )
- Ref( bmp );
-
- return *this;
-}
-
bool wxBitmap::operator == ( const wxBitmap& bmp ) const
{
return m_refData == bmp.m_refData;
{
return (m_refData != NULL) &&
(
-#ifdef __WXGTK20__
M_BMPDATA->m_pixbuf ||
-#endif
M_BMPDATA->m_bitmap || M_BMPDATA->m_pixmap
);
}
wxBitmap ret( rect.width, rect.height, M_BMPDATA->m_bpp );
wxASSERT_MSG( ret.Ok(), wxT("GetSubBitmap error") );
-#ifdef __WXGTK20__
if (HasPixbuf())
{
GdkPixbuf *pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB,
pixbuf, 0, 0);
}
else
-#endif // __WXGTK20__
{
if (ret.GetPixmap())
{
GdkGC *gc = gdk_gc_new( ret.GetPixmap() );
- gdk_draw_pixmap( ret.GetPixmap(), gc, GetPixmap(), rect.x, rect.y, 0, 0, rect.width, rect.height );
- gdk_gc_destroy( gc );
+ gdk_draw_drawable( ret.GetPixmap(), gc, GetPixmap(), rect.x, rect.y, 0, 0, rect.width, rect.height );
+ g_object_unref (G_OBJECT (gc));
}
else
{
col.pixel = 0;
gdk_gc_set_background( gc, &col );
gdk_wx_draw_bitmap( ret.GetBitmap(), gc, GetBitmap(), rect.x, rect.y, 0, 0, rect.width, rect.height );
- gdk_gc_destroy( gc );
+ g_object_unref (G_OBJECT (gc));
}
}
col.pixel = 0;
gdk_gc_set_background( gc, &col );
gdk_wx_draw_bitmap( mask->m_bitmap, gc, M_BMPDATA->m_mask->m_bitmap, rect.x, rect.y, 0, 0, rect.width, rect.height );
- gdk_gc_destroy( gc );
+ g_object_unref (G_OBJECT (gc));
ret.SetMask( mask );
}
M_BMPDATA->m_mask->m_bitmap = mask;
}
- gdk_window_get_size( M_BMPDATA->m_pixmap, &(M_BMPDATA->m_width), &(M_BMPDATA->m_height) );
+ gdk_drawable_get_size( M_BMPDATA->m_pixmap, &(M_BMPDATA->m_width), &(M_BMPDATA->m_height) );
M_BMPDATA->m_bpp = visual->depth;
}
m_refData = new wxBitmapRefData();
M_BMPDATA->m_pixmap = pixmap;
-#ifdef __WXGTK20__
PurgeOtherRepresentations(Pixmap);
-#endif
}
void wxBitmap::SetBitmap( GdkPixmap *bitmap )
m_refData = new wxBitmapRefData();
M_BMPDATA->m_bitmap = bitmap;
-#ifdef __WXGTK20__
PurgeOtherRepresentations(Pixmap);
-#endif
}
GdkPixmap *wxBitmap::GetPixmap() const
{
wxCHECK_MSG( Ok(), (GdkPixmap *) NULL, wxT("invalid bitmap") );
-#ifdef __WXGTK20__
// create the pixmap on the fly if we use Pixbuf representation:
if (HasPixbuf() && !HasPixmap())
{
&M_BMPDATA->m_mask->m_bitmap,
128 /*threshold*/);
}
-#endif // __WXGTK20__
return M_BMPDATA->m_pixmap;
}
return M_BMPDATA->m_bitmap;
}
-#ifdef __WXGTK20__
GdkPixbuf *wxBitmap::GetPixbuf() const
{
wxCHECK_MSG( Ok(), NULL, wxT("invalid bitmap") );
}
}
- gdk_pixbuf_unref(pmask);
+ g_object_unref (G_OBJECT (pmask));
}
}
}
{
if (keep == Pixmap && HasPixbuf())
{
- gdk_pixbuf_unref( M_BMPDATA->m_pixbuf );
+ g_object_unref (G_OBJECT (M_BMPDATA->m_pixbuf));
M_BMPDATA->m_pixbuf = NULL;
}
if (keep == Pixbuf && HasPixmap())
{
- gdk_pixmap_unref( M_BMPDATA->m_pixmap );
+ g_object_unref (G_OBJECT (M_BMPDATA->m_pixmap));
M_BMPDATA->m_pixmap = NULL;
}
}
-#endif // __WXGTK20__
-
void *wxBitmap::GetRawData(wxPixelDataBase& data, int bpp)
{
-#ifdef __WXGTK20__
if (bpp != 32)
return NULL;
data.m_stride = gdk_pixbuf_get_rowstride( pixbuf );
return gdk_pixbuf_get_pixels( pixbuf );
-#else
- return NULL;
-#endif
}
void wxBitmap::UngetRawData(wxPixelDataBase& WXUNUSED(data))
bool wxBitmap::HasAlpha() const
{
-#ifdef __WXGTK20__
return HasPixbuf();
-#else
- return false;
-#endif
}
void wxBitmap::UseAlpha()
{
-#ifdef __WXGTK20__
GetPixbuf();
-#endif
}
//-----------------------------------------------------------------------------