[Bf-funboard] Cursor Set Proposal - Revision 2

Douglas Bischoff bf-funboard@blender.org
Thu, 4 Sep 2003 14:12:46 -0400


Hello, all:

Blender does not currently have a comprehensive set of cursors to=20
provide feedback to the user about the state of the program and what it=20=

is ready to do or capable of doing at any given moment with the mouse.=20=

In order to fix this, the first thing needed is a proposal on the=20
Blender Cursor Set.

This document will start the ball rolling in 3 areas: Needed Cursors,=20
Design Limitations, and Design. Naturally, the artistic among us want=20
to jump straight to Design, but without the first two items a lot of=20
time can be wasted. Note that I've started this off with the=20
understanding that the UI will not change as a result of this project,=20=

just the visual feedback that the mouse pointer can provide the user=20
based on various states.

This is the second revision, incorporating the input I've gotten so=20
far. Thanks, and please continue the dialog!

Blender Cursor Set
--------------------------
Needed Cursors:
These are the cursors which are needed and a brief description of the=20
visual cue they are intended to provide to the user.

GLOBALS:
* "Normal" Pointer - (use the default OS cursor here)
* WaitCursor - the program is running and the user should stand by.
* FrameCounter - display the current frame number while in playback or=20=

render mode
* Horizontal Window edge dragger - horizontal window boundary changes
* Vertical Window edge dragger - vertical window boundary changes

WINDOW/EDITOR RELATED:

* Normal pointer by default, unless one of the below cases apply (in=20
this order):
* Paintbrush - for vertexpaint / texturepaint / weightpaint modes
* Texture-Face selector - for FaceSelect mode
* Armature Selector - for Pose mode
* TextCursor - for texteditor
* Vertex Selector - default editmode cursor
	* Edge Selector - if editmode defaults to edge selection
	* Face Selector - if editmode defaults to face selection
* Boundary Selector - Appears when the program is in "boundary select"=20=

mode
* Transform cursor - for all sublooping transform calls (grab/size etc)
* HandCursor - for all (middlemouse) view manipulations

TO BE PHASED OUT:
* Viewport Selector - This is needed for such functions as "Spin," but=20=

will be obsoleted when contextual menus are implemented.

Design Limitations:
In order to operate in all supported operating systems, the cursor=20
definitions must adhere to the following criteria:
* 16 pixels high
* 16 pixels wide
* 2 colors

Designs:
Once the Design Limitations are agreed upon by all platform managers=20
and coders, and the Needed Cursors have been decided upon, proposals=20
for what the cursors should actually look like will be accepted. Some=20
guiding ideas that have been proposed:
* Matt Ebb proposes that cursors that operate on what may be very=20
precise locations (vertex selector especially) have a space at their=20
"hotspot" that allows the user to see exactly what will be affected=20
underneath the cursor.

** ALTERNATIVES **
Gregor M=FCckl suggests loading the default cursor from the UI as a=20
starting point, then appending the feedback info for each specific=20
cursor to that cursor instead of creating a whole library of new=20
cursors.
* Advantage is that it preserves some UI familiarity: the default=20
cursor is well-known to the user.
* Disadvantage is that a limited amount of modification can be done,=20
limiting what can be communicated by the cursor.
* Disadvantage in that Blender would have to be aware of the handling=20
of cursors on a per-system basis?

-Bish