#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"
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;
gdk_pixmap_unref( m_pixmap );
if (m_bitmap)
gdk_bitmap_unref( m_bitmap );
-#ifdef __WXGTK20__
if (m_pixbuf)
gdk_pixbuf_unref( m_pixbuf );
-#endif
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();
wxBitmap bmp;
-#ifdef __WXGTK20__
if (HasPixbuf())
{
bmp.SetWidth(width);
GDK_INTERP_BILINEAR);
}
else
-#endif // __WXGTK20__
{
GdkImage *img = (GdkImage*) NULL;
if (GetPixmap())
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 );
- if (bpp == 1)
+ if ( dst )
{
bmp = wxBitmap( (const char *)dst, width, height, 1 );
free( dst );
{
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);
}
}
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
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())
{
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") );
}
}
-#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
}
//-----------------------------------------------------------------------------