1///////////////////////////////////////////////////////////////////////////// 2// Name: statpict.h 3// Purpose: wxStaticPicture class 4// Author: Wade Brainerd 5// Modified by: 6// Created: 2003-05-01 7// RCS-ID: 8// Copyright: (c) Wade Brainerd 9// Licence: wxWindows licence 10///////////////////////////////////////////////////////////////////////////// 11 12#ifndef _WX_STATPICT_H_ 13#define _WX_STATPICT_H_ 14 15#include "wx/control.h" 16 17#include "wx/icon.h" 18#include "wx/bitmap.h" 19#include "wx/image.h" 20 21#include "wx/gizmos/gizmos.h" 22 23enum 24{ 25 wxSCALE_HORIZONTAL = 0x1, 26 wxSCALE_VERTICAL = 0x2, 27 wxSCALE_UNIFORM = 0x4, 28 wxSCALE_CUSTOM = 0x8 29}; 30 31WXDLLIMPEXP_GIZMOS extern const wxChar* wxStaticPictureNameStr; 32 33class WXDLLIMPEXP_GIZMOS wxStaticPicture : public wxControl 34{ 35 DECLARE_DYNAMIC_CLASS(wxStaticPicture) 36 37public: 38 wxStaticPicture() {} 39 40 wxStaticPicture( wxWindow* parent, wxWindowID id, 41 const wxBitmap& label, 42 const wxPoint& pos = wxDefaultPosition, 43 const wxSize& size = wxDefaultSize, 44 long style = 0, 45 const wxString& name = wxStaticPictureNameStr ) 46 { 47 Create( parent, id, label, pos, size, style, name ); 48 } 49 50 bool Create( wxWindow* parent, wxWindowID id, 51 const wxBitmap& label, 52 const wxPoint& pos = wxDefaultPosition, 53 const wxSize& size = wxDefaultSize, 54 long style = 0, 55 const wxString& name = wxStaticPictureNameStr ); 56 57 virtual void Command(wxCommandEvent& WXUNUSED(event)) {} 58 virtual bool ProcessCommand(wxCommandEvent& WXUNUSED(event)) {return true;} 59 void OnPaint(wxPaintEvent& event); 60 61 void SetBitmap( const wxBitmap& bmp ); 62 63 wxBitmap GetBitmap() const 64 { 65 return Bitmap; 66 } 67 68 // Icon interface for compatibility with wxStaticBitmap. 69 void SetIcon( const wxIcon& icon ) 70 { 71 wxBitmap bmp; 72 bmp.CopyFromIcon( icon ); 73 SetBitmap( bmp ); 74 } 75 76 wxIcon GetIcon() const 77 { 78 wxIcon icon; 79 icon.CopyFromBitmap( Bitmap ); 80 return icon; 81 } 82 83 void SetAlignment( int align ) 84 { 85 Align = align; 86 } 87 88 int GetAlignment() const 89 { 90 return Align; 91 } 92 93 void SetScale( int scale ) 94 { 95 Scale = scale; 96 } 97 98 int GetScale() const 99 { 100 return Scale; 101 } 102 103 void SetCustomScale( float sx, float sy ) 104 { 105 ScaleX = sx; 106 ScaleY = sy; 107 } 108 109 void GetCustomScale( float* sx, float* sy ) const 110 { 111 *sx = ScaleX; 112 *sy = ScaleY; 113 } 114 115protected: 116 wxBitmap Bitmap; 117 118 int Align; 119 120 int Scale; 121 float ScaleX; 122 float ScaleY; 123 124#ifndef __WXMSW__ 125 // When scaling is enabled, measures are taken to improve performance on non-Windows platforms. 126 // - The original bitmap is stored as a wxImage, because conversion from wxBitmap to wxImage is slow. 127 // - The latest scaled bitmap is cached, this improves performance when the control is repainted 128 // but the size hasn't changed (overlapping windows, movement, etc). 129 wxImage OriginalImage; 130 float LastScaleX; 131 float LastScaleY; 132 wxBitmap ScaledBitmap; 133#endif 134 135 DECLARE_EVENT_TABLE() 136}; 137 138#endif // #ifndef _WX_STATPICT_H_ 139