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