We often need the logical bitmap size when using it in size computations involving window size, so add a function returning it directly to wxBitmapBundle, similarly to wxBitmap::GetLogicalSize(), to avoid using FromPhys() everywhere. Also rename the existing wxBitmapBundle::GetPreferredSizeFor() to GetPreferredBitmapSizeFor() to make it more clear that this is similar to wxBitmap::GetSize() and so returns the size in physical units. Closes #22056.
141 lines
4.0 KiB
C++
141 lines
4.0 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: src/common/statbmpcmn.cpp
|
|
// Purpose: wxStaticBitmap common code
|
|
// Author: Julian Smart
|
|
// Modified by:
|
|
// Created: 04/01/98
|
|
// Copyright: (c) Julian Smart
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// ===========================================================================
|
|
// declarations
|
|
// ===========================================================================
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// headers
|
|
// ---------------------------------------------------------------------------
|
|
|
|
// For compilers that support precompilation, includes "wx.h".
|
|
#include "wx/wxprec.h"
|
|
|
|
|
|
#if wxUSE_STATBMP
|
|
|
|
#include "wx/statbmp.h"
|
|
|
|
extern WXDLLEXPORT_DATA(const char) wxStaticBitmapNameStr[] = "staticBitmap";
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// XTI
|
|
// ---------------------------------------------------------------------------
|
|
|
|
wxDEFINE_FLAGS( wxStaticBitmapStyle )
|
|
wxBEGIN_FLAGS( wxStaticBitmapStyle )
|
|
// new style border flags, we put them first to
|
|
// use them for streaming out
|
|
wxFLAGS_MEMBER(wxBORDER_SIMPLE)
|
|
wxFLAGS_MEMBER(wxBORDER_SUNKEN)
|
|
wxFLAGS_MEMBER(wxBORDER_DOUBLE)
|
|
wxFLAGS_MEMBER(wxBORDER_RAISED)
|
|
wxFLAGS_MEMBER(wxBORDER_STATIC)
|
|
wxFLAGS_MEMBER(wxBORDER_NONE)
|
|
|
|
// old style border flags
|
|
wxFLAGS_MEMBER(wxSIMPLE_BORDER)
|
|
wxFLAGS_MEMBER(wxSUNKEN_BORDER)
|
|
wxFLAGS_MEMBER(wxDOUBLE_BORDER)
|
|
wxFLAGS_MEMBER(wxRAISED_BORDER)
|
|
wxFLAGS_MEMBER(wxSTATIC_BORDER)
|
|
wxFLAGS_MEMBER(wxBORDER)
|
|
|
|
// standard window styles
|
|
wxFLAGS_MEMBER(wxTAB_TRAVERSAL)
|
|
wxFLAGS_MEMBER(wxCLIP_CHILDREN)
|
|
wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW)
|
|
wxFLAGS_MEMBER(wxWANTS_CHARS)
|
|
wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE)
|
|
wxFLAGS_MEMBER(wxALWAYS_SHOW_SB )
|
|
wxFLAGS_MEMBER(wxVSCROLL)
|
|
wxFLAGS_MEMBER(wxHSCROLL)
|
|
|
|
wxEND_FLAGS( wxStaticBitmapStyle )
|
|
|
|
wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxStaticBitmap, wxControl, "wx/statbmp.h");
|
|
|
|
wxBEGIN_PROPERTIES_TABLE(wxStaticBitmap)
|
|
wxPROPERTY_FLAGS( WindowStyle, wxStaticBitmapStyle, long, \
|
|
SetWindowStyleFlag, GetWindowStyleFlag, \
|
|
wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, wxT("Helpstring"), \
|
|
wxT("group")) // style
|
|
wxEND_PROPERTIES_TABLE()
|
|
|
|
wxEMPTY_HANDLERS_TABLE(wxStaticBitmap)
|
|
|
|
wxCONSTRUCTOR_5( wxStaticBitmap, wxWindow*, Parent, wxWindowID, Id, \
|
|
wxBitmap, Bitmap, wxPoint, Position, wxSize, Size )
|
|
|
|
/*
|
|
TODO PROPERTIES :
|
|
bitmap
|
|
*/
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// wxStaticBitmap
|
|
// ----------------------------------------------------------------------------
|
|
|
|
wxStaticBitmapBase::~wxStaticBitmapBase()
|
|
{
|
|
// this destructor is required for Darwin
|
|
}
|
|
|
|
wxSize wxStaticBitmapBase::DoGetBestSize() const
|
|
{
|
|
if ( m_bitmapBundle.IsOk() )
|
|
return m_bitmapBundle.GetPreferredLogicalSizeFor(this);
|
|
|
|
// the fall back size is completely arbitrary
|
|
return wxSize(16, 16);
|
|
}
|
|
|
|
wxBitmap wxStaticBitmapBase::GetBitmap() const
|
|
{
|
|
return m_bitmapBundle.GetBitmapFor(this);
|
|
}
|
|
|
|
// Only wxMSW handles icons and bitmaps differently, in all the other ports
|
|
// they are exactly the same thing.
|
|
#ifdef wxICON_IS_BITMAP
|
|
|
|
void wxStaticBitmapBase::SetIcon(const wxIcon& icon)
|
|
{
|
|
SetBitmap(icon);
|
|
}
|
|
|
|
wxIcon wxStaticBitmapBase::GetIcon() const
|
|
{
|
|
wxIcon icon;
|
|
icon.CopyFromBitmap(GetBitmap());
|
|
return icon;
|
|
}
|
|
|
|
#else // !wxICON_IS_BITMAP
|
|
|
|
// Just provide the stabs for them, they're never used anyhow as they're
|
|
// overridden in wxMSW implementation of this class.
|
|
void wxStaticBitmapBase::SetIcon(const wxIcon& WXUNUSED(icon))
|
|
{
|
|
wxFAIL_MSG(wxS("unreachable"));
|
|
}
|
|
|
|
wxIcon wxStaticBitmapBase::GetIcon() const
|
|
{
|
|
wxFAIL_MSG(wxS("unreachable"));
|
|
|
|
return wxIcon();
|
|
}
|
|
|
|
#endif // wxICON_IS_BITMAP/!wxICON_IS_BITMAP
|
|
|
|
#endif // wxUSE_STATBMP
|