2012-05-21 04:12:37 -07:00
|
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
#ifndef nsCursorManager_h_
|
|
|
|
#define nsCursorManager_h_
|
|
|
|
|
|
|
|
#import <Foundation/Foundation.h>
|
|
|
|
#include "nsIWidget.h"
|
|
|
|
#include "nsMacCursor.h"
|
|
|
|
|
|
|
|
/*! @class nsCursorManager
|
|
|
|
@abstract Singleton service provides access to all cursors available in the application.
|
|
|
|
@discussion Use <code>nsCusorManager</code> to set the current cursor using an XP <code>nsCusor</code> enum value.
|
|
|
|
<code>nsCursorManager</code> encapsulates the details of setting different types of cursors, animating
|
|
|
|
cursors and cleaning up cursors when they are no longer in use.
|
|
|
|
*/
|
|
|
|
@interface nsCursorManager : NSObject
|
|
|
|
{
|
|
|
|
@private
|
|
|
|
NSMutableDictionary *mCursors;
|
2010-03-11 08:44:31 -08:00
|
|
|
nsMacCursor *mCurrentMacCursor;
|
2007-03-22 10:30:00 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
/*! @method setCursor:
|
|
|
|
@abstract Sets the current cursor.
|
|
|
|
@discussion Sets the current cursor to the cursor indicated by the XP cursor constant given as an argument.
|
|
|
|
Resources associated with the previous cursor are cleaned up.
|
|
|
|
@param aCursor the cursor to use
|
|
|
|
*/
|
2010-03-11 08:44:31 -08:00
|
|
|
- (nsresult) setCursor: (nsCursor) aCursor;
|
|
|
|
|
|
|
|
/*! @method setCursorWithImage:hotSpotX:hotSpotY:
|
|
|
|
@abstract Sets the current cursor to a custom image
|
|
|
|
@discussion Sets the current cursor to the cursor given by the aCursorImage argument.
|
|
|
|
Resources associated with the previous cursor are cleaned up.
|
|
|
|
@param aCursorImage the cursor image to use
|
|
|
|
@param aHotSpotX the x coordinate of the cursor's hotspot
|
|
|
|
@param aHotSpotY the y coordinate of the cursor's hotspot
|
2013-12-04 14:46:19 -08:00
|
|
|
@param scaleFactor the scale factor of the target display (2 for a retina display)
|
2010-03-11 08:44:31 -08:00
|
|
|
*/
|
2013-12-04 14:46:19 -08:00
|
|
|
- (nsresult) setCursorWithImage: (imgIContainer*) aCursorImage hotSpotX: (uint32_t) aHotspotX hotSpotY: (uint32_t) aHotspotY scaleFactor: (CGFloat) scaleFactor;
|
2010-03-11 08:44:31 -08:00
|
|
|
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/*! @method sharedInstance
|
|
|
|
@abstract Get the Singleton instance of the cursor manager.
|
|
|
|
@discussion Use this method to obtain a reference to the cursor manager.
|
|
|
|
@result a reference to the cursor manager
|
|
|
|
*/
|
|
|
|
+ (nsCursorManager *) sharedInstance;
|
|
|
|
|
|
|
|
/*! @method dispose
|
|
|
|
@abstract Releases the shared instance of the cursor manager.
|
|
|
|
@discussion Use dispose to clean up the cursor manager and associated cursors.
|
|
|
|
*/
|
|
|
|
+ (void) dispose;
|
|
|
|
@end
|
|
|
|
|
2014-01-14 06:36:41 -08:00
|
|
|
@interface NSCursor (Undocumented)
|
|
|
|
// busyButClickableCursor is an undocumented NSCursor API, but has been in use since
|
|
|
|
// at least OS X 10.4 and through 10.9.
|
|
|
|
+ (NSCursor*)busyButClickableCursor;
|
|
|
|
@end
|
|
|
|
|
2007-03-22 10:30:00 -07:00
|
|
|
#endif // nsCursorManager_h_
|