HandlesOperator

class HPS::HandlesOperator : public HPS::Operator

The HandlesOperator class defines an operator which allows the user to translate geometry in the view plane or along an axis. This operator works for both mouse- and touch-driven devices.

To use this operator on a mouse-driven device:

  1. Activate the operator

  2. Double click on a piece of geometry to activate the handles

  3. Click and drag the handles to transform the selected geometry

  4. Click on the background to dismiss the handles

To use this operator on a touch-driven device:

  1. Activate the operator

  2. Double tap on a piece of geometry to activate the handles

  3. Tap and drag the handles to move the selected geometry

  4. Tap on the background to dismiss the handles

This operator works on the segment containing the geometry selected. An event of type GeometryTransformedEvent is dispatched after the handles are dismissed, containing the information on which segment was affected and what transform was applied to it.

This operator does not work on Exchange models which have a Drawing structure. This includes CATDrawing models and 2D DWG models loaded through Exchange. Any attempt to use this operator on such a model will produce a warning.

Public Types

enum HandleType

Values:

enumerator Rotation

Represents three all rotation handles.

enumerator RotationX

Represents handle for rotation around the X axis.

enumerator RotationY

Represents handle for rotation around the Y axis.

enumerator RotationZ

Represents handle for rotation around the Z axis.

enumerator AxisTranslation

Represents three all axis translation handles.

enumerator AxisTranslationX

Represents handle for translation along the X axis.

enumerator AxisTranslationY

Represents handle for translation along the Y axis.

enumerator AxisTranslationZ

Represents handle for translation along the Z axis.

enumerator PlaneTranslation

Represents three all plane translation handles.

enumerator PlaneTranslationXY

Represents handle for translation along the XY plane.

enumerator PlaneTranslationYZ

Represents handle for translation along the YZ plane.

enumerator PlaneTranslationZX

Represents handle for translation along the ZX plane.

enumerator CenterPoint

Represents handle for translation along the view plane.

Public Functions

void AddHandles(HandleType handle_type)

Add a type of handle to those displayed by this operator. Changes take place the next time handles are inserted, by either double clicking or double tapping on geometry.

Parameters

handle_type – The type of handle to be added to those displayed.

void DismissHandles()
inline CADModel GetCADModel() const

Returns the CADModel associated with this operator. If no CADModel was associated with this operator, the returned object will be invalid and have type HPS::Type::None.

Returns

The CADModel associated with this operator.

void GetHandlesAppearance(float &out_length, float &out_radius, size_t &out_handles_points) const

Returns the parameters used to decide the appearance of the handles.

Parameters
  • out_length – The length of the handles, specified as a percentage of the view containing it.

  • out_radius – The radius of the handles, specified as a percentage of the view containing it.

  • out_handles_points – The number of points used to draw the handles. A higher number will yield a smoother appearance.

inline MaterialKitArray GetHandlesColors() const

This function returns the materials used to color the handles. Only the diffuse color field of the materials is guaranteed to have a value. The materials are used as follows:

Entry 0 - translation handle in the x direction Entry 1 - translation handle in the y direction Entry 2 - translation handle in the z direction Entry 3 - rotation handle in the x direction Entry 4 - rotation handle in the y direction Entry 5 - rotation handle in the z direction Entry 6 - xz plane translation Entry 7 - xy plane translation Entry 8 - yz plane translation Entry 9 - center-sphere

Returns

An array of materials associated with the handles

inline RGBAColor GetHighlightColor() const

Returns the color used to highlight the handles then the user mouses over them.

Returns

the color used to highlight the handles then the user mouses over them.

inline virtual HPS::UTF8 GetName() const override

Returns the name of the operator.

void GetPlaneTranslationAppearance(float &out_plane_offset, float &out_plane_length, float &out_center_radius) const

Returns the parameters used to decide the appearance of the rotation handles.

Parameters
  • out_plane_offset – The distance between the axis translation handle and the start of the plane translation handle, specified as a percentage of handle length.

  • out_plane_length – The size of plane translation handles, specified as a percentage of handle length.

  • out_center_radius – The radius of the sphere at the center of the handles, specified as a percentage of handle length.

void GetRotationHandleAppearance(float &out_offset, float &out_angle, float &out_tip_size) const

Returns the parameters used to decide the appearance of the rotation handles.

Parameters
  • out_offset – The distance between the end of a translation handle and the rotation handle associated with it, specified as a percentage of handle length.

  • out_angle – The angle formed by the rotation handles, specified in degrees.

  • out_tip_size – The size of the tip at the end of the handles, specified as a percentage of handle length.

inline bool GetTrailingGeometry() const

Whether trailing geometry will be drawn when using the handles. Trailing geometry is geometry which shows you the path of the last movement operation you performed through the handles.

Returns

true if trailing geometry will be drawn, false otherwise.

HandlesOperator(MouseButtons in_mouse_trigger = MouseButtons::ButtonLeft(), ModifierKeys in_modifier_trigger = ModifierKeys())
virtual bool OnMouseDown(MouseState const &in_state) override

This function is called whenever HPS receives a MouseEvent that signals a mouse button was pressed. If the user double clicks on a piece of geometry, handles will be inserted there. If the user clicks on a handle, the segment containing that handle will be translated or rotated appropriately. The user can click on the background to remove the handles.

Parameters

in_state – A MouseState object describing the current mouse state.

Returns

true if the input event was handled, false otherwise.

virtual bool OnMouseMove(MouseState const &in_state) override

This function is called whenever HPS receives a MouseEvent that signals the mouse moved When users click and drag a handle, the associated geometry will be translated or rotated as appropriate.

Parameters

in_state – A MouseState object describing the current mouse state.

Returns

true if the input event was handled, false otherwise.

virtual bool OnMouseUp(MouseState const &in_state) override

This function is called whenever HPS receives a MouseEvent that signals a mouse button was released

Parameters

in_state – A MouseState object describing the current mouse state.

Returns

true if the input event was handled, false otherwise.

virtual bool OnTouchDown(TouchState const &in_state) override

This function is called whenever HPS receives a TouchEvent that signals the device was touched. If the user double taps a piece of geometry, handles will be inserted there. If the user taps on a handle, the segment containing that handle will be translated or rotated appropriately. The user can tap on the background to remove the handles.

Parameters

in_state – A TouchState object describing the current touch state.

Returns

true if the input event was handled, false otherwise.

virtual bool OnTouchMove(TouchState const &in_state) override

This function is called whenever HPS receives a TouchEvent that signals a point of contact has moved. When users click and drag a handle, the associated geometry will be translated or rotated as appropriate.

Parameters

in_state – A TouchState object describing the current touch state.

Returns

true if the input event was handled, false otherwise.

virtual bool OnTouchUp(TouchState const &in_state) override

This function is called whenever HPS receives a TouchEvent that signals a point of contact has been released.

Parameters

in_state – A TouchState object describing the current touch state.

Returns

true if the input event was handled, false otherwise.

virtual void OnViewAttached(HPS::View const &in_attached_view) override

This function is called whenever a view is attached to this operator.

Parameters

in_attached_view – The view attached to this operator.

virtual void OnViewDetached(HPS::View const &in_detached_view) override

This function is called whenever a view is detached from this operator.

Parameters

in_detached_view – The view detached from this operator.

void RemoveHandles(HandleType handle_type)

Remove a type of handle from those displayed by this operator. Changes take place the next time handles are inserted, by either double clicking or double tapping on geometry.

Parameters

handle_type – The type of handle to be removed from those displayed.

void SetCADModel(CADModel const &in_cad_model)

Sets the CADModel associated with this operator. If a CADModel is set, the underlying PRC or Parasolid data associated with any Components moved by the user with the handles operator will be changed to reflect how the CADModel appears on the user’s screen. This function needs to be called before the user starts transforming geometry through the handles operator.

Parameters

in_cad_model – The CADModel associated with this operator.

void SetHandlesAppearance(float in_length = 0.16f, float in_radius = 0.005f, size_t in_handles_points = 30)

This function can be used to modify the appearance of handles. Changes will take effect the next time handles are inserted.

Parameters
  • in_length – The length of the handles, specified as a percentage of the view containing it. Valid range is (0, 1].

  • in_radius – The radius of the handles, specified as a percentage of the view containing it. Valid range is (0, 1].

  • in_handles_points – The number of points used to draw the handles. A higher number will yield a smoother appearance. Valid range is > 0.

inline void SetHandlesColors(MaterialKitArray const &in_colors)

This function is used to provide a set of colors which will be applied to the handles. The changes will take effect the next time the handles are inserted. The materials need to contain a diffuse color, and will be applied as follows: Entry 0 - translation handle in the x direction Entry 1 - translation handle in the y direction Entry 2 - translation handle in the z direction Entry 3 - rotation handle in the x direction Entry 4 - rotation handle in the y direction Entry 5 - rotation handle in the z direction Entry 6 - xz plane translation Entry 7 - xy plane translation Entry 8 - yz plane translation Entry 9 - center-sphere

Parameters

in_colors – An array of materials to be applied to the handles.

void SetHighlightColor(RGBAColor const &in_highlight_color)

Sets the highlight color used when the user mouses over the handles. The default value for the highlight color is RGBAColor(1.0f, 0.55f, 0.0f)

Parameters

in_highlight_color – The color used to highlight handles when the user mouses over them.

void SetPlaneTranslationAppearance(float in_plane_offset = 0.2f, float in_plane_length = 0.6f, float in_center_radius = 0.2f)

This function can be used to modify the appearance of the handles used to perform plane-translation. Changes will take effect the next time handles are inserted.

Parameters
  • in_plane_offset – The distance between the axis translation handle and the start of the plane translation handle, specified as a percentage of handle length.

  • in_plane_length – The size of plane translation handles, specified as a percentage of handle length.

  • in_center_radius – The radius of the sphere at the center of the handles, specified as a percentage of handle length.

void SetRotationHandleAppearance(float in_offset = 0.045f, float in_angle = 25.0f, float in_tip_size = 0.15f)

This function can be used to modify the appearance of handles used to perform rotations. Changes will take effect the next time handles are inserted.

Parameters
  • in_offset – The distance between the end of a translation handle and the start of then rotation handle associated with it, specified as a percentage of handle length. Valid range is (0, 1].

  • in_angle – The angle formed by the rotation handles, specified in degrees. Valid range is > 0

  • in_tip_size – The size of the tip at the end of the handles, specified as a percentage of the handle length. Valid range is [0, 1].

inline void SetTrailingGeometry(bool in_state)

Whether to draw trailing geometry when using the handles. Trailing geometry is geometry which shows you the path of the last movement operation you performed through the handles.

Parameters

in_state – Whether to draw trailing geometry when using the handles.

~HandlesOperator()
class GeometryTransformedEvent : public HPS::Event

Public Functions

inline virtual Event *Clone() const

Allocates and returns a copy of this GeometryTransformedEvent.

Returns

A copy of this GeometryTransformedEvent.

inline GeometryTransformedEvent()

The default constructor creates an empty GeometryTransformedEvent object.

inline GeometryTransformedEvent(Event const &in_event)

This constructor converts an Event Object to a GeometryTransformedEvent object.

Parameters

in_event – The Event Object to be converted.

inline GeometryTransformedEvent(HPS::View const &in_view, HPS::SegmentKey const &in_segment_key, HPS::MatrixKit const &in_transform)
~GeometryTransformedEvent()

Public Members

SegmentKey segment_key
MatrixKit transform
View view