Add wxBitmap ctor from wxCursor to wxGTK and wxMSW.

Allow converting wxCursor to wxBitmap in order to draw it, for example.

Closes #15699.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77537 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2014-09-04 19:44:52 +00:00
parent 23e431f0b6
commit 118e8e7286
5 changed files with 37 additions and 0 deletions

View File

@@ -76,6 +76,7 @@ All (GUI):
- Add wxGenericListCtrl::EndEditLabel() (Tim Kosse).
- Use native renderer for drawing check boxes in wxPropertyGrid (Eran Ifrah).
- Fix drawing custom colours of wxEnumProperty items in wxPG (Artur Wieczorek).
- Add wxBitmap ctor from wxCursor.
wxGTK:

View File

@@ -15,6 +15,7 @@ typedef struct _cairo_surface cairo_surface_t;
#endif
typedef struct _GdkPixbuf GdkPixbuf;
class WXDLLIMPEXP_FWD_CORE wxPixelDataBase;
class WXDLLIMPEXP_FWD_CORE wxCursor;
//-----------------------------------------------------------------------------
// wxMask
@@ -81,6 +82,7 @@ public:
wxBitmap(const wxImage& image, int depth = wxBITMAP_SCREEN_DEPTH);
#endif // wxUSE_IMAGE
wxBitmap(GdkPixbuf* pixbuf, int depth = 0);
wxEXPLICIT wxBitmap(const wxCursor& cursor);
virtual ~wxBitmap();
bool Create(int width, int height, int depth = wxBITMAP_SCREEN_DEPTH) wxOVERRIDE;

View File

@@ -97,6 +97,12 @@ public:
CopyFromIcon(icon, transp);
}
// Convert from wxCursor
wxEXPLICIT wxBitmap(const wxCursor& cursor)
{
(void)CopyFromCursor(cursor, wxBitmapTransparency_Auto);
}
wxBitmap& operator=(const wxIcon& icon)
{
(void)CopyFromIcon(icon);

View File

@@ -346,6 +346,21 @@ public:
*/
wxBitmap(const wxImage& img, int depth = wxBITMAP_SCREEN_DEPTH);
/**
Creates bitmap corresponding to the given cursor.
This can be useful to display a cursor as it cannot be drawn directly
on a window.
This constructor only exists in wxMSW and wxGTK (where it is
implemented for GTK+ 2.8 or later) only.
@param cursor A valid wxCursor.
@since 3.1.0
*/
explicit wxBitmap(const wxCursor& cursor);
/**
Destructor.
See @ref overview_refcount_destruct for more info.

View File

@@ -515,6 +515,19 @@ wxBitmap::wxBitmap(GdkPixmap* pixmap)
}
#endif
wxBitmap::wxBitmap(const wxCursor& cursor)
{
#if GTK_CHECK_VERSION(2,8,0)
if (gtk_check_version(2,8,0) == NULL)
{
GdkPixbuf *pixbuf = gdk_cursor_get_image(cursor.GetCursor());
*this = wxBitmap(pixbuf);
}
#else
wxUnusedVar(cursor);
#endif
}
wxBitmap::~wxBitmap()
{
}