X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/eefa26bed1ef371bf618b48ea1d21096e71ea465..2bc1aa1174ee3ddd68615827c3531549cf204918:/src/gtk/bitmap.cpp diff --git a/src/gtk/bitmap.cpp b/src/gtk/bitmap.cpp index 80ecdcddac..0918af1707 100644 --- a/src/gtk/bitmap.cpp +++ b/src/gtk/bitmap.cpp @@ -31,16 +31,19 @@ wxMask::wxMask() m_bitmap = (GdkBitmap *) NULL; } -wxMask::wxMask( const wxBitmap& WXUNUSED(bitmap), const wxColour& WXUNUSED(colour) ) +wxMask::wxMask( const wxBitmap& bitmap, const wxColour& colour ) { + Create( bitmap, colour ); } -wxMask::wxMask( const wxBitmap& WXUNUSED(bitmap), int WXUNUSED(paletteIndex) ) +wxMask::wxMask( const wxBitmap& bitmap, int paletteIndex ) { + Create( bitmap, paletteIndex ); } -wxMask::wxMask( const wxBitmap& WXUNUSED(bitmap) ) +wxMask::wxMask( const wxBitmap& bitmap ) { + Create( bitmap ); } wxMask::~wxMask() @@ -48,7 +51,60 @@ wxMask::~wxMask() if (m_bitmap) gdk_bitmap_unref( m_bitmap ); } -GdkBitmap *wxMask::GetBitmap(void) const +bool wxMask::Create( const wxBitmap& WXUNUSED(bitmap), + const wxColour& WXUNUSED(colour) ) +{ + if (m_bitmap) + { + gdk_bitmap_unref( m_bitmap ); + m_bitmap = (GdkBitmap*) NULL; + } + + wxFAIL_MSG( wxT("TODO") ); + + return FALSE; +} + +bool wxMask::Create( const wxBitmap& WXUNUSED(bitmap), + int WXUNUSED(paletteIndex) ) +{ + if (m_bitmap) + { + gdk_bitmap_unref( m_bitmap ); + m_bitmap = (GdkBitmap*) NULL; + } + + wxFAIL_MSG( wxT("not implemented") ); + + return FALSE; +} + +bool wxMask::Create( const wxBitmap& bitmap ) +{ + if (m_bitmap) + { + gdk_bitmap_unref( m_bitmap ); + m_bitmap = (GdkBitmap*) NULL; + } + + if (!bitmap.Ok()) return FALSE; + + wxCHECK_MSG( bitmap.GetBitmap(), FALSE, wxT("Cannot create mask from colour bitmap") ); + + m_bitmap = gdk_pixmap_new( (GdkWindow*) &gdk_root_parent, bitmap.GetWidth(), bitmap.GetHeight(), 1 ); + + if (!m_bitmap) return FALSE; + + GdkGC *gc = gdk_gc_new( m_bitmap ); + + gdk_draw_bitmap( m_bitmap, gc, bitmap.GetBitmap(), 0, 0, 0, 0, bitmap.GetWidth(), bitmap.GetHeight() ); + + gdk_gc_unref( gc ); + + return TRUE; +} + +GdkBitmap *wxMask::GetBitmap() const { return m_bitmap; } @@ -60,8 +116,8 @@ GdkBitmap *wxMask::GetBitmap(void) const class wxBitmapRefData: public wxObjectRefData { public: - wxBitmapRefData(void); - ~wxBitmapRefData(void); + wxBitmapRefData(); + ~wxBitmapRefData(); GdkPixmap *m_pixmap; GdkBitmap *m_bitmap; @@ -104,13 +160,13 @@ wxBitmap::wxBitmap() wxBitmap::wxBitmap( int width, int height, int depth ) { - wxCHECK_RET( (width > 0) && (height > 0), _T("invalid bitmap size") ) - + wxCHECK_RET( (width > 0) && (height > 0), wxT("invalid bitmap size") ) + GdkWindow *parent = (GdkWindow*) &gdk_root_parent; if (depth == -1) depth = gdk_window_get_visual( parent )->depth; - + wxCHECK_RET( (depth == gdk_window_get_visual( parent )->depth) || - (depth == 1), _T("invalid bitmap depth") ) + (depth == 1), wxT("invalid bitmap depth") ) m_refData = new wxBitmapRefData(); M_BMPDATA->m_mask = (wxMask *) NULL; @@ -132,7 +188,7 @@ wxBitmap::wxBitmap( int width, int height, int depth ) wxBitmap::wxBitmap( const char **bits ) { - wxCHECK_RET( bits != NULL, _T("invalid bitmap data") ) + wxCHECK_RET( bits != NULL, wxT("invalid bitmap data") ) m_refData = new wxBitmapRefData(); @@ -155,7 +211,7 @@ wxBitmap::wxBitmap( const char **bits ) wxBitmap::wxBitmap( char **bits ) { - wxCHECK_RET( bits != NULL, _T("invalid bitmap data") ) + wxCHECK_RET( bits != NULL, wxT("invalid bitmap data") ) m_refData = new wxBitmapRefData(); @@ -164,7 +220,7 @@ wxBitmap::wxBitmap( char **bits ) M_BMPDATA->m_pixmap = gdk_pixmap_create_from_xpm_d( parent, &mask, NULL, (gchar **) bits ); - wxCHECK_RET( M_BMPDATA->m_pixmap, _T("couldn't create pixmap") ); + wxCHECK_RET( M_BMPDATA->m_pixmap, wxT("couldn't create pixmap") ); if (mask) { @@ -203,7 +259,7 @@ wxBitmap::wxBitmap( const char bits[], int width, int height, int WXUNUSED(depth M_BMPDATA->m_height = height; M_BMPDATA->m_bpp = 1; - wxCHECK_RET( M_BMPDATA->m_bitmap, _T("couldn't create bitmap") ); + wxCHECK_RET( M_BMPDATA->m_bitmap, wxT("couldn't create bitmap") ); if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this); } @@ -230,42 +286,42 @@ bool wxBitmap::operator != ( const wxBitmap& bmp ) return m_refData != bmp.m_refData; } -bool wxBitmap::Ok(void) const +bool wxBitmap::Ok() const { return (m_refData != NULL); } -int wxBitmap::GetHeight(void) const +int wxBitmap::GetHeight() const { - wxCHECK_MSG( Ok(), -1, _T("invalid bitmap") ); + wxCHECK_MSG( Ok(), -1, wxT("invalid bitmap") ); return M_BMPDATA->m_height; } -int wxBitmap::GetWidth(void) const +int wxBitmap::GetWidth() const { - wxCHECK_MSG( Ok(), -1, _T("invalid bitmap") ); + wxCHECK_MSG( Ok(), -1, wxT("invalid bitmap") ); return M_BMPDATA->m_width; } -int wxBitmap::GetDepth(void) const +int wxBitmap::GetDepth() const { - wxCHECK_MSG( Ok(), -1, _T("invalid bitmap") ); + wxCHECK_MSG( Ok(), -1, wxT("invalid bitmap") ); return M_BMPDATA->m_bpp; } -wxMask *wxBitmap::GetMask(void) const +wxMask *wxBitmap::GetMask() const { - wxCHECK_MSG( Ok(), (wxMask *) NULL, _T("invalid bitmap") ); + wxCHECK_MSG( Ok(), (wxMask *) NULL, wxT("invalid bitmap") ); return M_BMPDATA->m_mask; } void wxBitmap::SetMask( wxMask *mask ) { - wxCHECK_RET( Ok(), _T("invalid bitmap") ); + wxCHECK_RET( Ok(), wxT("invalid bitmap") ); if (M_BMPDATA->m_mask) delete M_BMPDATA->m_mask; @@ -274,12 +330,12 @@ void wxBitmap::SetMask( wxMask *mask ) bool wxBitmap::SaveFile( const wxString &name, int type, wxPalette *WXUNUSED(palette) ) { - wxCHECK_MSG( Ok(), FALSE, _T("invalid bitmap") ); + wxCHECK_MSG( Ok(), FALSE, wxT("invalid bitmap") ); if (type == wxBITMAP_TYPE_PNG) { wxImage image( *this ); - if (image.Ok()) return image.SaveFile( name, type ); + if (image.Ok()) return image.SaveFile( name, type ); } return FALSE; @@ -327,7 +383,7 @@ bool wxBitmap::LoadFile( const wxString &name, int type ) return TRUE; } -wxPalette *wxBitmap::GetPalette(void) const +wxPalette *wxBitmap::GetPalette() const { if (!Ok()) return (wxPalette *) NULL; @@ -362,16 +418,16 @@ void wxBitmap::SetPixmap( GdkPixmap *pixmap ) M_BMPDATA->m_pixmap = pixmap; } -GdkPixmap *wxBitmap::GetPixmap(void) const +GdkPixmap *wxBitmap::GetPixmap() const { - wxCHECK_MSG( Ok(), (GdkPixmap *) NULL, _T("invalid bitmap") ); + wxCHECK_MSG( Ok(), (GdkPixmap *) NULL, wxT("invalid bitmap") ); return M_BMPDATA->m_pixmap; } -GdkBitmap *wxBitmap::GetBitmap(void) const +GdkBitmap *wxBitmap::GetBitmap() const { - wxCHECK_MSG( Ok(), (GdkBitmap *) NULL, _T("invalid bitmap") ); + wxCHECK_MSG( Ok(), (GdkBitmap *) NULL, wxT("invalid bitmap") ); return M_BMPDATA->m_bitmap; }