summaryrefslogtreecommitdiffstats
path: root/widget/cocoa/nsMacCursor.h
diff options
context:
space:
mode:
Diffstat (limited to 'widget/cocoa/nsMacCursor.h')
-rw-r--r--widget/cocoa/nsMacCursor.h129
1 files changed, 129 insertions, 0 deletions
diff --git a/widget/cocoa/nsMacCursor.h b/widget/cocoa/nsMacCursor.h
new file mode 100644
index 0000000000..d68ebcf387
--- /dev/null
+++ b/widget/cocoa/nsMacCursor.h
@@ -0,0 +1,129 @@
+/* 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_