Object Type:	xcoredraw

Description:	Foundation object class for displaying pixes. All other
		draw classes (at present: dumbdraw, draw, and graph) are
		subclassed from coredraw. Therefore these subclasses perform
		a superset of the operations described here.
		Coredraw and its subclasses can be thought of as providing
		a window into a space where pixes reside, or a screen onto
		which pixes are projected. One can select the size,
		orientation and other parameters of this window/screen 
		according to the set of functions described below.
		The functions provided by coredraw, which are inherited or
		overridden by its subclasses, include:
			Displaying and managing pixes.
			Handling forward transforms for drawing pixes
			Handling backward transforms for identifying
				location of mouse events
			Keyboard control over transformation parameters
				such as zoom and pan.
			Providing a mechanism for deciding which child
				pix should recieve mouse events

		Coredraw and subclassses do not display anything on their own.
		The pixes provide the actual images and drawing routines
		displayed in a coredraw widget/subclasses. It is important
		to note that since the pix display, transformation and event
		handling functions are present in the coredraw class, any pix
		can be displayed in any draw subclass.

		The coredraw widget can only display pixes using planar
		orthographic projections in the xy plane. In other
		words, x is to the right, y is up and the z coordinate
		of pixes is ignored.

		In a future revision the z coordinate will be used to determine
		the order of redrawing pixes to enable pixes to obscure
		each other according to depth.

		Unless flexibility in transformation options would be
		a handicap (e.g., in displaying a simulation layout where
		alternative projections would just confuse matters) the
		coredraw widget is not especially useful for displays.
		The draw widget is recommended for all cases where
		flexibility is desired, since the overhead in performing
		the general transformations is minimal.

Author:		Upi Bhalla Caltech April 93

-----------------------------------------------------------------------------

ELEMENT PARAMETERS

DataStructure:	xcoredraw_type [in src/Xodus/draw/xcoredraw_struct.h

Size:		?

Fields:		fg	Foreground color of coredraw (not used)
		bg	Background color.
		xgeom	Position of left edge of coredraw.
		ygeom	Position of upper edge of coredraw.
		wgeom	Width of coredraw
		hgeom	Height of coredraw
		xmin	left edge of window for displaying pixes.
		ymin	bottom edge of window for displaying pixes.
		xmax	right edge of window for displaying pixes.
		ymax	top edge of window for displaying pixes.
		script	Script operation(s) to perform on a mouse
			click. The script calls to the coredraw widget
			are only made if none of the child pixes has
			expressed an interest in the event.

----------------------------------------------------------------------------

SIMULATION PARAMETERS

Function:	XCoreDraw [in src/Xodus/widg/xcoredraw.c]

Classes:	widget output

Actions:	XUPDATE: update internal fields when
			displayed widget is changed.
		XOCOMMAND: an action that can invoke the functions
			in the 'script' field
		XODROP: Called when a pix is dropped into the widget.

Messages:	none.
			
----------------------------------------------------------------------------

Notes:		Can only be displayed in a form widget
		The xcoredraw does not perform any computational operations
		driven by the simulation clock.

Example:
		create xform /form [0,0,500,500]
		create xcoredraw /form/coredraw [0,0,100%,100%] \
			-bg red -script "echo Hello, I am a coredraw widget" 
		setfield /form/coredraw xmin -2 xmax 2 ymin -2 ymax 2
		// display the pixes here
		create xsphere /form/coredraw/sphere -fg green -r 1\
			-script "echo Hello, I am a sphere pix"
		xshow /form

See also:	XODUS documentation, pix documentation, documentation
		for coredraw subclasses.

