TOC PREV NEXT INDEX

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<cxx_name="GDXtrack_edit"> {
mode = 0;
view<NEportLevels={0x2,0x1}>;
camera<NEportLevels={0x2,0x1}>;
obj<NEportLevels={0x2,0x1}>;
event<NEportLevels={0x2,0x0}>;
x<NEportLevels={0x2,0x0}>;
y<NEportLevels={0x2,0x0}>;
ptr+nonotify local_ptr<NEvisible=0>;
};

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

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

Output Port


Example

Libraries.Graphics_Display.Editors.UI_Editors.TrackEditor

File

v/gd.v

See also related modules

Not Applicable.

TOC PREV NEXT INDEX