| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: cursor.h
- // Purpose: interface of wxCursor
- // Author: wxWidgets team
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- /**
- @class wxCursor
- 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 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()
- 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);
- #elif defined(__WXGTK__) or defined(__WXMOTIF__)
- 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
- @see wxBitmap, wxIcon, wxWindow::SetCursor(), wxSetCursor(), ::wxStockCursor
- */
- class wxCursor : public wxGDIObject
- {
- public:
- /**
- Default constructor.
- */
- wxCursor();
- /**
- Constructs a cursor by passing an array of bits (XBM data).
- The parameters @a fg and @a bg have an effect only 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 XBM data bits.
- @param width
- Cursor width.
- @param height
- Cursor height.
- @param hotSpotX
- Hotspot x coordinate (relative to the top left of the image).
- @param hotSpotY
- Hotspot y coordinate (relative to the top left of the image).
- @param maskBits
- Bits for a mask bitmap.
- @onlyfor{wxgtk,wxmotif}
- @beginWxPerlOnly
- In wxPerl use Wx::Cursor->newData(bits, width, height, hotSpotX = -1, hotSpotY = -1, maskBits = 0).
- @endWxPerlOnly
- */
- wxCursor(const char bits[], int width, int height,
- int hotSpotX = -1, int hotSpotY = -1,
- const char maskBits[] = NULL);
- /**
- Constructs a cursor by passing a string resource name or filename.
- The arguments @a hotSpotX and @a hotSpotY are only used when there's no
- hotspot info in the resource/image-file to load (e.g. when using
- @c wxBITMAP_TYPE_ICO under wxMSW or @c wxBITMAP_TYPE_XPM under wxGTK).
- @param cursorName
- The name of the resource or the image file to load.
- @param type
- Icon type to load. It defaults to @c wxCURSOR_DEFAULT_TYPE,
- which is a @#define associated to different values on different
- platforms:
- - under Windows, it defaults to @c wxBITMAP_TYPE_CUR_RESOURCE.
- Other permitted types under Windows are @c wxBITMAP_TYPE_CUR
- (to load a cursor from a .cur cursor file), @c wxBITMAP_TYPE_ICO
- (to load a cursor from a .ico icon file) and @c wxBITMAP_TYPE_ANI
- (to load a cursor from a .ani icon file).
- - under MacOS, it defaults to @c wxBITMAP_TYPE_MACCURSOR_RESOURCE;
- 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. Note that resource forks are deprecated on OS X so this
- is only available for legacy reasons and should not be used in
- new code.
- - under GTK, it defaults to @c wxBITMAP_TYPE_XPM.
- See the wxCursor(const wxImage& image) ctor for more info.
- - under X11, it defaults to @c wxBITMAP_TYPE_XPM.
- - under Motif, it defaults to @c wxBITMAP_TYPE_XBM.
- @param hotSpotX
- Hotspot x coordinate (relative to the top left of the image).
- @param hotSpotY
- Hotspot y coordinate (relative to the top left of the image).
- */
- wxCursor(const wxString& cursorName,
- wxBitmapType type = wxCURSOR_DEFAULT_TYPE,
- int hotSpotX = 0, int hotSpotY = 0);
- /**
- Constructs a cursor using a cursor identifier.
- @param cursorId
- A stock cursor identifier. See ::wxStockCursor.
- */
- wxCursor(wxStockCursor cursorId);
- /**
- Constructs a cursor from a wxImage. If cursor are monochrome on the
- current platform, colors with the RGB elements all greater than 127
- will be foreground, colors less than this background. The mask (if any)
- will be used to specify the transparent area.
- In wxMSW the foreground will be white and the background black.
- If the cursor is larger than 32x32 it is resized.
- In wxGTK, colour cursors and alpha channel are supported (starting from
- GTK+ 2.2). Otherwise the two most frequent colors will be used for
- foreground and background. In any case, the cursor will be displayed
- at the size of the image.
- Under wxMac (Cocoa), large cursors are supported.
- Notice that the @a image can define the cursor hot spot. To set it you
- need to use wxImage::SetOption() with @c wxIMAGE_OPTION_CUR_HOTSPOT_X
- or @c wxIMAGE_OPTION_CUR_HOTSPOT_Y, e.g.
- @code
- image.SetOption(wxIMAGE_OPTION_CUR_HOTSPOT_X, hotSpotX);
- image.SetOption(wxIMAGE_OPTION_CUR_HOTSPOT_X, hotSpotY);
- @endcode
- */
- wxCursor(const wxImage& image);
- /**
- Copy constructor, uses @ref overview_refcount "reference counting".
- @param cursor
- Pointer or reference to a cursor to copy.
- */
- wxCursor(const wxCursor& cursor);
- /**
- Destroys the cursor. See
- @ref overview_refcount_destruct "reference-counted object destruction"
- for more info.
- A cursor can be reused for more than one window, and does not get
- destroyed when the window is destroyed. wxWidgets destroys all cursors
- on application exit, although it is best to clean them up explicitly.
- */
- virtual ~wxCursor();
- /**
- Returns @true if cursor data is present.
- */
- virtual bool IsOk() const;
- /**
- Assignment operator, using @ref overview_refcount "reference counting".
- */
- wxCursor& operator =(const wxCursor& cursor);
- };
- /**
- @name Predefined cursors.
- @see wxStockCursor
- */
- //@{
- wxCursor wxNullCursor;
- wxCursor* wxSTANDARD_CURSOR;
- wxCursor* wxHOURGLASS_CURSOR;
- wxCursor* wxCROSS_CURSOR;
- //@}
|