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:
Activate the operator
Double click on a piece of geometry to activate the handles
Click and drag the handles to transform the selected geometry
Click on the background to dismiss the handles
To use this operator on a touch-driven device:
Activate the operator
Double tap on a piece of geometry to activate the handles
Tap and drag the handles to move the selected geometry
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.
-
enumerator Rotation
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.
-
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 char const *ClassName() const override
-
inline virtual Event *Clone() const override
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.
-
inline GeometryTransformedEvent(HPS::View const &in_view, HPS::SegmentKey const &in_segment_key, HPS::MatrixKit const &in_transform)
-
~GeometryTransformedEvent()
-
inline virtual char const *ClassName() const override