Source code

Revision control

Copy as Markdown

Other Tools

/* 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/. */
#ifndef nsMacCursor_h_
#define nsMacCursor_h_
#import <Cocoa/Cocoa.h>
#import "nsIWidget.h"
/*! @class nsMacCursor
@abstract Represents a native Mac cursor.
@discussion <code>nsMacCursor</code> provides a simple API for creating and
working with native Macintosh cursors. Cursors can be created
used without needing to be aware of the way different cursors
are implemented, in particular the details of managing an
animated cursor are hidden.
*/
@interface nsMacCursor : NSObject {
@private
NSTimer* mTimer;
@protected
nsCursor mType;
int mFrameCounter;
}
/*! @method cursorWithCursor:
@abstract Create a cursor by specifying a Cocoa <code>NSCursor</code>.
@discussion Creates a cursor representing the given Cocoa built-in cursor.
@param aCursor the <code>NSCursor</code> to use
@param aType the corresponding <code>nsCursor</code> constant
@result an autoreleased instance of <code>nsMacCursor</code>
representing the given <code>NSCursor</code>
*/
+ (nsMacCursor*)cursorWithCursor:(NSCursor*)aCursor type:(nsCursor)aType;
/*! @method cursorWithImageNamed:hotSpot:type:
@abstract Create a cursor by specifying the name of an image resource to
use for the cursor and a hotspot.
@discussion Creates a cursor by loading the named image using the
<code>+[NSImage imageNamed:]</code> method.
<p>The image must be compatible with any restrictions laid down
by <code>NSCursor</code>. These vary by operating system
version.</p>
<p>The hotspot precisely determines the point where the user
clicks when using the cursor.</p>
@param aCursor the name of the image to use for the cursor
@param aPoint the point within the cursor to use as the hotspot
@param aType the corresponding <code>nsCursor</code> constant
@result an autoreleased instance of <code>nsMacCursor</code> that uses
the given image and hotspot
*/
+ (nsMacCursor*)cursorWithImageNamed:(NSString*)aCursorImage
hotSpot:(NSPoint)aPoint
type:(nsCursor)aType;
/*! @method cursorWithFrames:type:
@abstract Create an animated cursor by specifying the frames to use for
the animation.
@discussion Creates a cursor that will animate by cycling through the given
frames. Each element of the array must be an instance of
<code>NSCursor</code>
@param aCursorFrames an array of <code>NSCursor</code>, representing
the frames of an animated cursor, in the order they should be
played.
@param aType the corresponding <code>nsCursor</code> constant
@result an autoreleased instance of <code>nsMacCursor</code> that will
animate the given cursor frames
*/
+ (nsMacCursor*)cursorWithFrames:(NSArray*)aCursorFrames type:(nsCursor)aType;
/*! @method cocoaCursorWithImageNamed:hotSpot:
@abstract Create a Cocoa NSCursor object with a Gecko image resource name
and a hotspot point.
@discussion Create a Cocoa NSCursor object with a Gecko image resource name
and a hotspot point.
@param imageName the name of the gecko image resource, "tiff"
extension is assumed, do not append.
@param aPoint the point within the cursor to use as the hotspot
@result an autoreleased instance of <code>nsMacCursor</code> that will
animate the given cursor frames
*/
+ (NSCursor*)cocoaCursorWithImageNamed:(NSString*)imageName
hotSpot:(NSPoint)aPoint;
/*! @method isSet
@abstract Determines whether this cursor is currently active.
@discussion This can be helpful when the Cocoa NSCursor state can be
influenced without going through nsCursorManager.
@result whether the cursor is currently set
*/
- (BOOL)isSet;
/*! @method set
@abstract Set the cursor.
@discussion Makes this cursor the current cursor. If the cursor is
animated, the animation is started.
*/
- (void)set;
/*! @method unset
@abstract Unset the cursor. The cursor will return to the default
(usually the arrow cursor).
@discussion Unsets the cursor. If the cursor is animated, the animation is
stopped.
*/
- (void)unset;
/*! @method isAnimated
@abstract Tests whether this cursor is animated.
@discussion Use this method to determine whether a cursor is animated
@result YES if the cursor is animated (has more than one frame), NO if
it is a simple static cursor.
*/
- (BOOL)isAnimated;
/** @method cursorType
@abstract Get the cursor type for this cursor
@discussion This method returns the <code>nsCursor</code> constant that
corresponds to this cursor, which is equivalent to the CSS
name for the cursor.
@result The nsCursor constant corresponding to this cursor, or
nsCursor's 'eCursorCount' if the cursor is a custom cursor
loaded from a URI
*/
- (nsCursor)type;
@end
#endif // nsMacCursor_h_