X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/658741180583e3219bdd26b83a798cf3c8a59df7..7977b62ae2b56a4ef73ea37659031d96d49f3333:/interface/cursor.h?ds=inline diff --git a/interface/cursor.h b/interface/cursor.h index e812b591b9..7ffa1fdf10 100644 --- a/interface/cursor.h +++ b/interface/cursor.h @@ -12,32 +12,91 @@ A cursor is a small bitmap usually used for denoting where the mouse pointer is, with a picture that might indicate the interpretation of a - mouse click. As with icons, cursors in X and MS Windows are created - in a different manner. Therefore, separate cursors will be created for the - different environments. Platform-specific methods for creating a @b wxCursor - object are catered for, and this is an occasion where - conditional compilation will probably be required (see wxIcon for - an example). + mouse click. As with icons, cursors in X and MS Windows are created in a + different manner. Therefore, separate cursors will be created for the + different environments. Platform-specific methods for creating a wxCursor + object are catered for, and this is an occasion where conditional + compilation will probably be required (see wxIcon for an example). A single cursor object may be used in many windows (any subwindow type). - The wxWidgets convention is to set the cursor for a window, as in X, - rather than to set it globally as in MS Windows, although a - global ::wxSetCursor is also available for MS Windows use. + The wxWidgets convention is to set the cursor for a window, as in X, rather + than to set it globally as in MS Windows, although a global wxSetCursor() + function is also available for MS Windows use. + + @section cursor_custom Creating a Custom Cursor + + The following is an example of creating a cursor from 32x32 bitmap data + (down_bits) and a mask (down_mask) where 1 is black and 0 is white for the + bits, and 1 is opaque and 0 is transparent for the mask. It works on + Windows and GTK+. + + @code + static char down_bits[] = { 255, 255, 255, 255, 31, + 255, 255, 255, 31, 255, 255, 255, 31, 255, 255, 255, + 31, 255, 255, 255, 31, 255, 255, 255, 31, 255, 255, + 255, 31, 255, 255, 255, 31, 255, 255, 255, 25, 243, + 255, 255, 19, 249, 255, 255, 7, 252, 255, 255, 15, 254, + 255, 255, 31, 255, 255, 255, 191, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255 }; + + static char down_mask[] = { 240, 1, 0, 0, 240, 1, + 0, 0, 240, 1, 0, 0, 240, 1, 0, 0, 240, 1, 0, 0, 240, 1, + 0, 0, 240, 1, 0, 0, 240, 1, 0, 0, 255, 31, 0, 0, 255, + 31, 0, 0, 254, 15, 0, 0, 252, 7, 0, 0, 248, 3, 0, 0, + 240, 1, 0, 0, 224, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0 }; + + #ifdef __WXMSW__ + wxBitmap down_bitmap(down_bits, 32, 32); + wxBitmap down_mask_bitmap(down_mask, 32, 32); + + down_bitmap.SetMask(new wxMask(down_mask_bitmap)); + wxImage down_image = down_bitmap.ConvertToImage(); + down_image.SetOption(wxIMAGE_OPTION_CUR_HOTSPOT_X, 6); + down_image.SetOption(wxIMAGE_OPTION_CUR_HOTSPOT_Y, 14); + wxCursor down_cursor = wxCursor(down_image); + #else + wxCursor down_cursor = wxCursor(down_bits, 32, 32, 6, 14, + down_mask, wxWHITE, wxBLACK); + #endif + @endcode @library{wxcore} @category{gdi} @stdobjects - ::wxNullCursor, ::wxSTANDARD_CURSOR, ::wxHOURGLASS_CURSOR, ::wxCROSS_CURSOR + - ::wxNullCursor + - ::wxSTANDARD_CURSOR + - ::wxHOURGLASS_CURSOR + - ::wxCROSS_CURSOR - @see wxBitmap, wxIcon, wxWindow::SetCursor, ::wxSetCursor + @see wxBitmap, wxIcon, wxWindow::SetCursor(), wxSetCursor(), + ::wxStockCursor */ class wxCursor : public wxBitmap { public: - //@{ /** - Copy constructor, uses @ref overview_trefcount "reference counting". + Default constructor. + */ + wxCursor(); + /** + Constructs a cursor by passing an array of bits (Motif and GTK+ only). + @a maskBits is used only under Motif and GTK+. The parameters @a fg and + @a bg are only present on GTK+, and force the cursor to use particular + background and foreground colours. + + If either @a hotSpotX or @a hotSpotY is -1, the hotspot will be the + centre of the cursor image (Motif only). @param bits An array of bits. @@ -51,401 +110,87 @@ public: Hotspot x coordinate. @param hotSpotY Hotspot y coordinate. - @param type - Icon type to load. Under Motif, type defaults to wxBITMAP_TYPE_XBM. Under - Windows, - it defaults to wxBITMAP_TYPE_CUR_RESOURCE. Under MacOS, it defaults to - wxBITMAP_TYPE_MACCURSOR_RESOURCE. - Under X, the permitted cursor types are: - - - - - - - - wxBITMAP_TYPE_XBM - - - - - Load an X bitmap file. - - + */ + wxCursor(const char bits[], int width, int height, + int hotSpotX = -1, int hotSpotY = -1, + const char maskBits[] = NULL, + wxColour* fg = NULL, wxColour* bg = NULL); + /** + Constructs a cursor by passing a string resource name or filename. + On MacOS when specifying a string resource name, first the color + cursors 'crsr' and then the black/white cursors 'CURS' in the resource + chain are scanned through. + @a hotSpotX and @a hotSpotY are currently only used under Windows when + loading from an icon file, to specify the cursor hotspot relative to + the top left of the image. + @param type + Icon type to load. Under Motif, type defaults to wxBITMAP_TYPE_XBM. + Under Windows, it defaults to wxBITMAP_TYPE_CUR_RESOURCE. Under + MacOS, it defaults to wxBITMAP_TYPE_MACCURSOR_RESOURCE. + Under X, the permitted cursor types are: +