Alphabetical Class Index  Class Hierarchy   File Members   Compound Members   File List  

HOpConstructCylinder Class Reference

The HOpConstructCylinder class provides support for constructing a cylinder and inserting it into the model. More...

#include <HOpConstructCylinder.h>

Inheritance diagram for HOpConstructCylinder:

HBaseOperator HOpCreateCylinder

List of all members.

Public Member Functions

virtual HBaseOperatorClone ()
virtual const char * GetName ()
 HOpConstructCylinder (HBaseView *view, int DoRepeat=0, int DoCapture=1)
virtual int OnLButtonDown (HEventInfo &hevent)
virtual int OnLButtonDownAndMove (HEventInfo &hevent)
virtual int OnLButtonUp (HEventInfo &hevent)
virtual int OnNoButtonDownAndMove (HEventInfo &hevent)

Protected Member Functions

void ConstructWireframeCylinder (HPoint center, float radius, float height)

Protected Attributes

float m_height
float m_RadiusLength
HVector m_WorldRadiusVector


Detailed Description

The HOpConstructCylinder class provides support for constructing a cylinder and inserting it into the model.

HOpConstructCylinder implements four of the mouse button event handlers defined on the base class and maps the event information to local methods that rubberband a cylinder and insert a corresponding HOOPS shell into the HOOPS database. This provides the basic functionality for drawing a temporary three-dimensional, tesselated cylinder with a circular base, a circular cap of equivalent size, and a number of rectangular, facetted sides with the default as 30. The operation consists of the following steps:

  1. Left Button Down: Register the center point of the cylinder base.
  2. Left Button Down and Drag: Rubberbands the circular base to the desired circumference.
  3. Left Button Up: The base circumference finalized.
  4. No Button Down and Drag: Rubberbands the cylinder to the desired height.
  5. Left Button Down: The height is finalized, the cylinder is cleared from the scene and the operation ends.
More Detailed Description: see event methods.

Constructor & Destructor Documentation

HOpConstructCylinder::HOpConstructCylinder ( HBaseView view,
int  DoRepeat = 0,
int  DoCapture = 1 
)

Constructs an HOpConstructCylinder object.

Parameters:
view A pointer to an HBaseView object.
DoRepeat An integer denoting whether this is a repeatable operator. This parameter has been deprecated.
DoCapture An integer denoting whether the mouse state should be captured, which means that all mouse events should be received after a mousedown, even if it leaves the window. This parameter has been deprecated.


Member Function Documentation

virtual HBaseOperator* HOpConstructCylinder::Clone (  )  [virtual]

Creates a new operator which is a copy of the current operator. The user is responsible for deleting the newly created operator.

Returns:
A pointer to the newly created HOpConstructCylinder object.

Reimplemented from HBaseOperator.

Reimplemented in HOpCreateCylinder.

void HOpConstructCylinder::ConstructWireframeCylinder ( HPoint  center,
float  radius,
float  height 
) [protected]

ConstructWireframeCylinder transforms the pointer coordinates from screen to world space and inserts a wireframe cylinder into the scene. This function is repeatedly called internally by OnNoButtonDownAndMove after the base dimensions have been finalized.

Parameters:
center The center of the circular top and base of the cylinder.
radius The radius of the cylinders's base.
height The height of the cylinder.

virtual const char* HOpConstructCylinder::GetName (  )  [virtual]

Returns:
A pointer to a character string denoting the name of the operator which is 'Construct Cylinder'.

Reimplemented from HBaseOperator.

Reimplemented in HOpCreateCylinder.

virtual int HOpConstructCylinder::OnLButtonDown ( HEventInfo hevent  )  [virtual]

OnLButtonDown records the first pointer position and initiates the cylinder-drawing mechanism. The first point is used as the center of the cylinder's circular base. If the drawing mechanism has already been started such as LButtonDown having been called once already, LButtonDown finalizes the height of the cylinder, clears the scene and ends the operation.

Parameters:
hevent An HEventInfo object containing information about the current event.
Returns:
An HOperatorReturn indicating the status of the event.

Reimplemented from HBaseOperator.

Reimplemented in HOpCreateCylinder.

virtual int HOpConstructCylinder::OnLButtonDownAndMove ( HEventInfo hevent  )  [virtual]

OnLButtonDownAndMove draws a rubberbanded line along the circumference of a circle centered on the first pointer position. Note that the basic drawing work is done by HUtility::CreateAxisCircle, while OnLButtonDownAndMove computes and keeps track of the radial vector that defines the cylinder's base.

Parameters:
hevent An HEventInfo object containing information about the current event.
Returns:
An HOperatorReturn indicating the status of the event.

Reimplemented from HBaseOperator.

virtual int HOpConstructCylinder::OnLButtonUp ( HEventInfo hevent  )  [virtual]

OnLButtonUp finalizes the size of the base, sets the value of m_RadiusLength and m_radius_world_vector, and cleans up. This function is not called after the second call to OnLButtonDown.

Parameters:
hevent An HEventInfo object containing information about the current event.
Returns:
An HOperatorReturn indicating the status of the event.

Reimplemented from HBaseOperator.

virtual int HOpConstructCylinder::OnNoButtonDownAndMove ( HEventInfo hevent  )  [virtual]

OnNoButtonDownAndMove draws rubberband lines from the base the cylinder to the cap. Note that the basic work is done by repeated internal calls to HOpConstructCylinder::ConstructWireframeCylinder.

Parameters:
hevent An HEventInfo object containing information about the current event.
Returns:
An HOperatorReturn indicating the status of the event.

Reimplemented from HBaseOperator.


Member Data Documentation

float HOpConstructCylinder::m_height [protected]

The height of the cylinder based on first and last pointer positions.

The magnitude of the base radius vector in screen coordinates.

The base radius vector in world coordinates.


The documentation for this class was generated from the following file: