Wiki source for ioSetCursorWithMask
======**sqInt ioSetCursorWithMask(sqInt cursorBitsIndex, sqInt cursorMaskIndex, sqInt offsetX, sqInt offsetY)**======
**Parms**:
cursorBitsIndex pointer to oops, data bits describing cursor
cursorMaskIndex pointer to oops, data bits describing mask
offsetX integer, offset to hot spot X, the pixel where the click is
offsetY integer, offset to hot spot Y, the pixel where the click is
**return**: NONE, fake return of zero
**From**: Interpreter
**Why**:
To set the host system cursor and host spot
**Responsibility**:
/* Set the 16x16 cursor bitmap. If cursorMaskIndex is nil, then make the mask the same as
the cursor bitmap. If not, then mask and cursor bits combined determine how cursor is
displayed:
mask cursor effect
0 0 transparent (underlying pixel shows through)
1 1 opaque black
1 0 opaque white
0 1 invert the underlying pixel
*/
Also see ioSetCursorARGB which is bigger cursor support
On the macintosh we have logic to set/reset the cursor depending on if the cursor is inside or outside of the drawing surface. Some platforms may do this automatically, others require support in the VM to enable this feature.
**MacIntosh**
//os-9/OSXCarbon//
If headless or not drawing in the browser yet then return
Set bigger cursors to off
Copy the data from the Squeak oops into a MacCursor, respect issues with powerpc/intel
Check to see if we need to send the cursor to the browser plugin, or we have to draw it because we are full screen in the browser, or running
not as a browser subtask. Then use OS-9 era call to set the cursor.
//Cocoa://
Grind thru the data to use NSCursor to set the cursor.
**iPhone**
The iPhone has no concept of a cursor, so the api does return 0
**Unix**
Use X-Windows to display the cursor in the proper endian
**Windows**
Use create and set cursor, return 1
**BUGS**
Platforms return 1 or 0 which are cheerfully ignored.
**Parms**:
cursorBitsIndex pointer to oops, data bits describing cursor
cursorMaskIndex pointer to oops, data bits describing mask
offsetX integer, offset to hot spot X, the pixel where the click is
offsetY integer, offset to hot spot Y, the pixel where the click is
**return**: NONE, fake return of zero
**From**: Interpreter
**Why**:
To set the host system cursor and host spot
**Responsibility**:
/* Set the 16x16 cursor bitmap. If cursorMaskIndex is nil, then make the mask the same as
the cursor bitmap. If not, then mask and cursor bits combined determine how cursor is
displayed:
mask cursor effect
0 0 transparent (underlying pixel shows through)
1 1 opaque black
1 0 opaque white
0 1 invert the underlying pixel
*/
Also see ioSetCursorARGB which is bigger cursor support
On the macintosh we have logic to set/reset the cursor depending on if the cursor is inside or outside of the drawing surface. Some platforms may do this automatically, others require support in the VM to enable this feature.
**MacIntosh**
//os-9/OSXCarbon//
If headless or not drawing in the browser yet then return
Set bigger cursors to off
Copy the data from the Squeak oops into a MacCursor, respect issues with powerpc/intel
Check to see if we need to send the cursor to the browser plugin, or we have to draw it because we are full screen in the browser, or running
not as a browser subtask. Then use OS-9 era call to set the cursor.
//Cocoa://
Grind thru the data to use NSCursor to set the cursor.
**iPhone**
The iPhone has no concept of a cursor, so the api does return 0
**Unix**
Use X-Windows to display the cursor in the proper endian
**Windows**
Use create and set cursor, return 1
**BUGS**
Platforms return 1 or 0 which are cheerfully ignored.