GDtrack_edit


Synopsis

define a virtual trackball editor for the Graphics Display Kit transform

GDtrack_edit_notify_templ


group  GDtrack_edit_notify_templ
{
int  event;
int  x;
int  y;
int time;
int reset, normalize, center;
GDview_ref_templ+read+nonotify &view;
method+notify_inst+notify_val upd_func = "GDtrack_edit_update";
method+notify_deinst del_func() = "GDtrack_edit_delete";
};

 

GDtrack_edit_templ


GDtrack_edit_notify_templ GDtrack_edit_templ
{
int  mode;
enum rot_mode { choices = {"Arbitrary", "XY", "Z"}; } = 0;
enum scale_mode { choices = {"Uniform", "Non-Uniform"}; } = 0;
enum xlate_mode { choices = {"Arbitrary", "X", "Y". "XY"}; } = 0;
enum trans_mode { choices = {"Object", "Camera", "Light"}; };
enum space { choices = {"Global", "Local"}; } = 0;
int cur_light = 0;
func+virtual track_func;
GDcamera_templ  *camera;
GDobject_templ  *obj;
};

 

PDRrotate


GDtrack_edit_templ  PDRrotate
{
mode = 0;
func+virtual  track_func = "GDtrack_rotate";
};


 

PDRscale


GDtrack_edit_templ  PDRscale
{
mode = 1;
func+virtual  track_func = "GDtrack_scale";
};


 

PDRtranslate


GDtrack_edit_templ  PDRtranslate
{
mode = 2;
func+virtual  track_func = "GDtrack_xlate";
};


PDRzlate


GDtrack_edit_templ  PDRzlate
{
mode = 3;
func+virtual  track_func = "GDtrack_zlate";
};


 

GDtrack_edit


GDtrack_edit_templ  GDtrack_edit
{
mode = 0;
ptr+nonotify  local_ptr;
};

 

Description

These templates define the virtual trackball editor for the Graphics Display Kit. GDtrack_edit_notify_templ define the elements that cause the editor's update method to execute. PDRrotate, PDRscale, PDRtranslate, and PDRzlate define the virtual functions that perform the rotation, scaling, XY translation, and Z translation. GDtrack_edit, which sets the intial value of mode, is the template that should be instanced.

The virtual trackball editor takes in screen space XY coordinates, a view, a camera, and an object and produces a transformation matrix that rotates, scales, or translates the input object.

As an alternative to defining your own user interface for a track editor, you can use TrackEditor, an application component. TrackEditor contains GDtrack_edit and defines a user interface.

Input Ports

event

This input is the event. It is typically connected to the UItwoPoint's state subobject.

 

Value

 

Meaning

 

0

Start event

1

Run event

2

Stop event

 

x
y

These inputs are the XY screen space position of the cursor at the time of the event. They are typically connected to the x and y subobjects of the UItwoPoint to which event is connected.

view

A connection to a view.

camera

A connection to a camera. Typically, you connect the camera to the view's picked camera.

obj

A connection to an object. Typically, you connect obj to the current object from an object selector. Alternatively, you can connect the object to the view's picked object.

Parameters

time

This parameter is the time at which the event occurred. This is used to determine if track rolling should be enabled.

reset

This parameter when set causes the object, camera or light transformation to be reset to its default -- the identity matrix.

normalize

This parameter when set causes the object to be normalized to the view.

center

This parameter when set causes the object's center of rotation to be set to the extents of the data.

mode

This parameter controls which of the virtual functions is called when the track editor's update method executes. The following values are valid:

 

Value

 

Meaning

 

0

Rotate

1

Scale

2

XY Translate

3

Z Translate

 

rot_mode

This parameter affects the transformation matrix produced when the mode is set to "rotate". The following values are valid:

 

Value

 

Meaning

 

Symbolic constant

 

0

Allow arbitrary rotation.

GD_ROTATE_ARBITRARY

1

Constrain rotation to the XY axis. Select the largest angle of rotation.

GD_ROTATE_CONSTRAIN_XY

2

Constrain rotation to the Z axis.

GD_ROTATE_Z

 

scale_mode

This parameter affects the transformation matrix produced when the mode is set to "scale". The following values are valid:

 

Value

 

Meaning

 

Symbolic constant

 

0

Allow uniform scaling

GD_SCALE_UNIFORM

1

Allow non-uniform scaling

GD_SCALE_NON_UNIFORM

 

xlate_mode

This parameter affects the transformation matrix produced when the mode is set to "translate". The following values are valid:

 

Value

 

Meaning

 

Symbolic constant

 

0

Allow arbitrary translation

GD_XLATE_ARBITRARY

1

Constrain translation to the X axis

GD_XLATE_CONSTRAIN_X

2

Constrain translation to the Y axis

GD_XLATE_CONSTRAIN_Y

3

Constrain translation to the closest axis

GD_XLATE_CONSTRAIN_CLOSE

 

trans_mode

This parameter affects which transform is affected. The following values are valid:

 

Value

 

Meaning

 

Symbolic constant

 

0

Edit object transform.

GD_TRANS_OBJECT

1

Edit camera transform

GD_TRANS_CAMERA

2

Edit light transform

GD_TRANS_LIGHT

 

space

This parameter controls the coordinate system in which the object is edited. The following values are valid:

 

Value

 

Meaning

 

Symbolic constant

 

0

Edit in global coordinate system

GD_XFORM_GLOBAL

1

Edit in object's local coordinate system

GD_XFORM_LOCAL

 

Example

Libraries.Graphics_Display.Editors.UI_Editors.TrackEditor

File

v/gd.v