[Bf-committers] Cursor proposal and OSX Cursor size

Robert Wenzlaff bf-committers@blender.org
Mon, 1 Dec 2003 09:37:50 -0500


On Monday 01 December 2003 04:46, Ton Roosendaal wrote:

[Non mac stuff below, skip ahead if you want]

> - Robert Wenzlaff will work on new cursors for 2.32. Discussed was if
> all platforms support 32x32. After meeting was found OSX won't easily
> do this...

That may not be true (Depends what you mean by easy).  From the docs you 
showed me, it depends on what the default state of  
IOFB_ARBITRARY_SIZE_CURSOR is.  It may be set by default (but sounds like it 
isn't).  
 
If it isn't,  it looks like we can override this by setting the above define 
and calling IOFBCreateSharedCursor() with 32x32 during init.  The predefined 
structs are undef'd (they are now the wrong size) and we then create our own 
structs at the specified height/width (Which we have to do anyway to map the 
data in the Blender Cursor struct to an Apple Cursor struct).  Again, I'd 
probably make them all 32x32 and make a small cursor only fill 1 corner.

If only I had a mac to test it on...

> Robert will come with a further proposal to mailing list later.

************* Proposal ******************

To keep it simple for now, we'll keep the small cursor rule at 16x16, and only 
raise that limit when/if we get OSX working at 32x32.  After that, the 16x16 
rule gets degraded to a "moderately strict guideline".

That said, the rest of the proposal is:

	1) All cursors will become custom cursors so they match across platforms.
	2) Cursors will have a large and small version selectable by a userpref.
		This userpref will be disabled on platforms that cannot support large 	
		cursors.  The data will consist of a bitmap and transparency mask, as it 	
		does now. (My MakeCursor.py is available to paint Cursors. Can this be 
		put on Blender.org?).
	3) Cursors will have definable fg and bg colors.
	4) Cursors will have definable hot-spots.
	5) Each cursor will be a member in a global array of structs defined in 
		cursors.c
	6) Each cursor will have a define in cursor.h that is its index number in 		
		the array. 
	7) Cursor setting API code will go in cursor.c  And will be implimented with 
		the existing GHOST custom cursor calls (modified to handle the size 
		change). 	
	8)  API will be: 
			GetBlenderCursor() - returns defined number of current cursor.
			SetBlenderCursor(int i) - sets cursor to the ith cursor.
			Defines will be set so all cursors can be refered to by name. 
	9) Current cursor API will be phased out, but will remain active during 
		changeover so things don't get broken.
-- 
***********************************************
Robert Wenzlaff     rwenzlaff@soylent-green.com