]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/bitmap.cpp
Seems it works reasonably stable...
[wxWidgets.git] / src / gtk1 / bitmap.cpp
index 05c3136acc931d021e1589e97e9bc9ede7f71add..6f3e9146fb891ab4e64d61033712c774a8763809 100644 (file)
@@ -13,6 +13,7 @@
 #endif
 
 #include "wx/bitmap.h"
+#include "wx/icon.h"
 #include "gdk/gdkprivate.h"
 
 #ifdef USE_GDK_IMLIB
@@ -28,19 +29,19 @@ IMPLEMENT_DYNAMIC_CLASS(wxMask,wxObject)
 wxMask::wxMask(void)
 {
   m_bitmap = NULL;
-};
+}
 
 wxMask::wxMask( const wxBitmap& WXUNUSED(bitmap), const wxColour& WXUNUSED(colour) )
 {
-};
+}
 
 wxMask::wxMask( const wxBitmap& WXUNUSED(bitmap), int WXUNUSED(paletteIndex) )
 {
-};
+}
 
 wxMask::wxMask( const wxBitmap& WXUNUSED(bitmap) )
 {
-};
+}
 
 wxMask::~wxMask(void)
 {
@@ -49,12 +50,12 @@ wxMask::~wxMask(void)
 #else
   if (m_bitmap) gdk_bitmap_unref( m_bitmap );
 #endif  
-};
+}
 
 GdkBitmap *wxMask::GetBitmap(void) const
 {
   return m_bitmap;
-};
+}
   
 //-----------------------------------------------------------------------------
 // wxBitmap
@@ -89,20 +90,23 @@ wxBitmapRefData::wxBitmapRefData(void)
   m_height = 0;
   m_bpp = 0;
   m_palette = NULL;
-};
+#ifdef USE_GDK_IMLIB
+  m_image = NULL;
+#endif
+}
 
 wxBitmapRefData::~wxBitmapRefData(void)
 {
 #ifdef USE_GDK_IMLIB
   if (m_pixmap) gdk_imlib_free_pixmap( m_pixmap );
-  if (m_image) gdk_imlib_destroy_image( m_image );
+  if (m_image) gdk_imlib_kill_image( m_image );
 #else
   if (m_pixmap) gdk_pixmap_unref( m_pixmap );
 #endif
   if (m_bitmap) gdk_bitmap_unref( m_bitmap );
   if (m_mask) delete m_mask;
   if (m_palette) delete m_palette;
-};
+}
 
 //-----------------------------------------------------------------------------
 
@@ -113,7 +117,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxBitmap,wxGDIObject)
 wxBitmap::wxBitmap(void)
 {
   if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this);
-};
+}
   
 wxBitmap::wxBitmap( int width, int height, int depth )
 {
@@ -121,11 +125,12 @@ wxBitmap::wxBitmap( int width, int height, int depth )
   M_BMPDATA->m_mask = NULL;
   M_BMPDATA->m_pixmap = 
     gdk_pixmap_new( (GdkWindow*) &gdk_root_parent, width, height, depth );
-  gdk_window_get_size( M_BMPDATA->m_pixmap, &(M_BMPDATA->m_width), &(M_BMPDATA->m_height) );
+  M_BMPDATA->m_width = width;
+  M_BMPDATA->m_height = height;
   M_BMPDATA->m_bpp = depth;
    
   if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this);
-};
+}
 
 wxBitmap::wxBitmap( char **bits )
 {
@@ -142,7 +147,9 @@ wxBitmap::wxBitmap( char **bits )
   {
     M_BMPDATA->m_mask = new wxMask();
     M_BMPDATA->m_mask->m_bitmap = mask;
-  };
+  }
+  
+  gdk_window_get_size( M_BMPDATA->m_pixmap, &(M_BMPDATA->m_width), &(M_BMPDATA->m_height) );
   
 #else
 
@@ -151,30 +158,31 @@ wxBitmap::wxBitmap( char **bits )
   
 #endif
                                  
-  gdk_window_get_size( M_BMPDATA->m_pixmap, &(M_BMPDATA->m_width), &(M_BMPDATA->m_height) );
   M_BMPDATA->m_bpp = 24; // ?
    
   if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this);
-};
+}
   
 wxBitmap::wxBitmap( const wxBitmap& bmp )
 {
   Ref( bmp );
    
   if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this);
-};
+}
   
 wxBitmap::wxBitmap( const wxBitmap* bmp )
 {
   if (bmp) Ref( *bmp );
    
   if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this);
-};
+}
 
 wxBitmap::wxBitmap( const wxString &filename, int type )
 {
   LoadFile( filename, type );
-};
+  
+  if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this);
+}
 
 // CMB 15/5/98: add constructor for xbm bitmaps
 wxBitmap::wxBitmap( const char bits[], int width, int height, int WXUNUSED(depth))
@@ -184,7 +192,8 @@ wxBitmap::wxBitmap( const char bits[], int width, int height, int WXUNUSED(depth
   M_BMPDATA->m_mask = NULL;
   M_BMPDATA->m_bitmap = 
     gdk_bitmap_create_from_data( (GdkWindow*) &gdk_root_parent, (gchar *) bits, width, height );
-  gdk_window_get_size( M_BMPDATA->m_bitmap, &(M_BMPDATA->m_width), &(M_BMPDATA->m_height) );
+  M_BMPDATA->m_width = width;
+  M_BMPDATA->m_height = height;
   M_BMPDATA->m_bpp = 1;
 
   if (wxTheBitmapList) wxTheBitmapList->AddBitmap(this);
@@ -193,72 +202,72 @@ wxBitmap::wxBitmap( const char bits[], int width, int height, int WXUNUSED(depth
 wxBitmap::~wxBitmap(void)
 {
   if (wxTheBitmapList) wxTheBitmapList->DeleteObject(this);
-};
+}
   
 wxBitmap& wxBitmap::operator = ( const wxBitmap& bmp )
 {
   if (*this == bmp) return (*this); 
   Ref( bmp ); 
   return *this; 
-};
+}
   
 bool wxBitmap::operator == ( const wxBitmap& bmp )
 {
   return m_refData == bmp.m_refData; 
-};
+}
   
 bool wxBitmap::operator != ( const wxBitmap& bmp )
 {
   return m_refData != bmp.m_refData; 
-};
+}
   
 bool wxBitmap::Ok(void) const
 {
   return m_refData != NULL;
-};
+}
   
 int wxBitmap::GetHeight(void) const
 {
   if (!Ok()) return 0;
   return M_BMPDATA->m_height;
-};
+}
 
 int wxBitmap::GetWidth(void) const
 {
   if (!Ok()) return 0;
   return M_BMPDATA->m_width;
-};
+}
 
 int wxBitmap::GetDepth(void) const
 {
   if (!Ok()) return 0;
   return M_BMPDATA->m_bpp;
-};
+}
 
 void wxBitmap::SetHeight( int height )
 {
   if (!Ok()) return;
   M_BMPDATA->m_height = height;
-};
+}
 
 void wxBitmap::SetWidth( int width )
 {
   if (!Ok()) return;
   M_BMPDATA->m_width = width;
-};
+}
 
 void wxBitmap::SetDepth( int depth )
 {
   if (!Ok()) return;
   M_BMPDATA->m_bpp = depth;
-};
+}
 
 wxMask *wxBitmap::GetMask(void) const
 {
   if (!Ok()) return NULL;
   
   return M_BMPDATA->m_mask;
-};
+}
 
 void wxBitmap::SetMask( wxMask *mask )
 {
@@ -266,14 +275,12 @@ void wxBitmap::SetMask( wxMask *mask )
   
   if (M_BMPDATA->m_mask) delete M_BMPDATA->m_mask;
   M_BMPDATA->m_mask = mask;
-};
+}
 
 void wxBitmap::Resize( int height, int width )
 {
   if (!Ok()) return;
   
-  return;
-  
 #ifdef USE_GDK_IMLIB
   
   if (M_BMPDATA->m_bitmap) return;  // not supported for bitmaps
@@ -292,7 +299,7 @@ void wxBitmap::Resize( int height, int width )
   Render();
   
 #endif
-};
+}
 
 bool wxBitmap::SaveFile( const wxString &name, int WXUNUSED(type), 
   wxPalette *WXUNUSED(palette) )
@@ -308,7 +315,7 @@ bool wxBitmap::SaveFile( const wxString &name, int WXUNUSED(type),
 #endif
 
   return FALSE;
-};
+}
 
 bool wxBitmap::LoadFile( const wxString &name, int WXUNUSED(type) )
 {
@@ -323,7 +330,7 @@ bool wxBitmap::LoadFile( const wxString &name, int WXUNUSED(type) )
   {
     UnRef();
     return FALSE;
-  };
+  }
 
   Render();
                                  
@@ -334,26 +341,26 @@ bool wxBitmap::LoadFile( const wxString &name, int WXUNUSED(type) )
 #endif
 
   return FALSE;
-};
+}
         
 wxPalette *wxBitmap::GetPalette(void) const
 {
   if (!Ok()) return NULL;
   return M_BMPDATA->m_palette;
-};
+}
 
 GdkPixmap *wxBitmap::GetPixmap(void) const
 {
   if (!Ok()) return NULL;
   return M_BMPDATA->m_pixmap;
-};
+}
   
 GdkBitmap *wxBitmap::GetBitmap(void) const
 {
   if (!Ok()) return NULL;
   
   return M_BMPDATA->m_bitmap;
-};
+}
   
 void wxBitmap::DestroyImage(void)
 {
@@ -363,12 +370,12 @@ void wxBitmap::DestroyImage(void)
   {
     gdk_imlib_destroy_image( M_BMPDATA->m_image );
     M_BMPDATA->m_image = NULL;
-  };
-};
+  }
+}
 
 void wxBitmap::RecreateImage(void)
 {
-};
+}
 
 void wxBitmap::Render(void)
 {
@@ -377,16 +384,17 @@ void wxBitmap::Render(void)
 #ifdef USE_GDK_IMLIB
 
   gdk_imlib_render( M_BMPDATA->m_image, M_BMPDATA->m_image->rgb_width, M_BMPDATA->m_image->rgb_height );
-  
+  M_BMPDATA->m_width = M_BMPDATA->m_image->rgb_width;
+  M_BMPDATA->m_height = M_BMPDATA->m_image->rgb_height;
   M_BMPDATA->m_pixmap = gdk_imlib_move_image( M_BMPDATA->m_image );
   GdkBitmap *mask = gdk_imlib_move_mask( M_BMPDATA->m_image );
   if (mask)
   {
     M_BMPDATA->m_mask = new wxMask();
     M_BMPDATA->m_mask->m_bitmap = mask;
-  };
+  }
   
 #endif
-};
+}