1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        src/gtk/statbmp.cpp
3 // Purpose:
4 // Author:      Robert Roebling
5 // Copyright:   (c) 1998 Robert Roebling
6 // Licence:           wxWindows licence
7 /////////////////////////////////////////////////////////////////////////////
8 
9 // For compilers that support precompilation, includes "wx.h".
10 #include "wx/wxprec.h"
11 
12 #if wxUSE_STATBMP
13 
14 #include "wx/statbmp.h"
15 
16 #include "wx/gtk/private/wrapgtk.h"
17 #include "wx/gtk/private/image.h"
18 
19 //-----------------------------------------------------------------------------
20 // wxStaticBitmap
21 //-----------------------------------------------------------------------------
22 
wxStaticBitmap(void)23 wxStaticBitmap::wxStaticBitmap(void)
24 {
25 }
26 
wxStaticBitmap(wxWindow * parent,wxWindowID id,const wxBitmap & bitmap,const wxPoint & pos,const wxSize & size,long style,const wxString & name)27 wxStaticBitmap::wxStaticBitmap( wxWindow *parent, wxWindowID id, const wxBitmap &bitmap,
28       const wxPoint &pos, const wxSize &size,
29       long style, const wxString &name )
30 {
31     Create( parent, id, bitmap, pos, size, style, name );
32 }
33 
Create(wxWindow * parent,wxWindowID id,const wxBitmap & bitmap,const wxPoint & pos,const wxSize & size,long style,const wxString & name)34 bool wxStaticBitmap::Create( wxWindow *parent, wxWindowID id, const wxBitmap &bitmap,
35                              const wxPoint &pos, const wxSize &size,
36                              long style, const wxString &name )
37 {
38     if (!PreCreation( parent, pos, size ) ||
39         !CreateBase( parent, id, pos, size, style, wxDefaultValidator, name ))
40     {
41         wxFAIL_MSG( wxT("wxStaticBitmap creation failed") );
42         return false;
43     }
44 
45     m_widget = wxGtkImage::New(this);
46     g_object_ref(m_widget);
47 
48     if (bitmap.IsOk())
49         SetBitmap(bitmap);
50 
51     PostCreation(size);
52     m_parent->DoAddChild( this );
53 
54     return true;
55 }
56 
SetBitmap(const wxBitmap & bitmap)57 void wxStaticBitmap::SetBitmap( const wxBitmap &bitmap )
58 {
59     const wxSize sizeOld(m_bitmap.IsOk() ? m_bitmap.GetSize() : wxSize());
60     const wxSize sizeNew(bitmap.IsOk() ? bitmap.GetSize() : wxSize());
61 
62     m_bitmap = bitmap;
63     WX_GTK_IMAGE(m_widget)->Set(bitmap);
64 
65     if (sizeNew != sizeOld)
66     {
67         InvalidateBestSize();
68         SetSize(GetBestSize());
69     }
70 }
71 
72 // static
73 wxVisualAttributes
GetClassDefaultAttributes(wxWindowVariant WXUNUSED (variant))74 wxStaticBitmap::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))
75 {
76     return GetDefaultAttributesFromGTKWidget(gtk_image_new());
77 }
78 
79 #endif // wxUSE_STATBMP
80 
81