Home

IHL_OUTPUT_MANAGER Class Reference
[Interactive Hidden Line]

Defines a class to control output from IHL. More...

#include <ihloutp.hxx>

Inheritance diagram for IHL_OUTPUT_MANAGER:

Inheritance graph
[legend]
Collaboration diagram for IHL_OUTPUT_MANAGER:

Collaboration graph
[legend]

List of all members.

Public Member Functions

virtual void add_seg_to_list (IHL_SEGMENT *seg)
 Adds the segment to the segment list.
virtual void announce_2D_segment (double *lseg, double *l3seg, double *lseguv, double *lsegt, void *tag, logical fVisible, double tpar, logical onsil, IHL_SEGMENT_JOIN_TYPE join)
 Announces to the draw routine that a 2D segment needs to be drawn.
virtual void announce_3D_segment (double *lseg, void *tag, logical fVisible)
 Announces to the draw routine that a 3D segment needs to be drawn.
virtual void announce_next_object ()
 Announces to the draw routine that IHL will compute line segments for the next object in the list of bodies (meshes).
virtual IHL_SEGMENTget_cur_seg ()
 Gets the current segment which is newly allocated.
 IHL_OUTPUT_MANAGER ()
 C++ allocation constructor requests memory for this object but does not populate it.
virtual logical need_3D_coordinates ()
 Overrides this method.
virtual logical need_hidden_segments ()
 Overrides this method.
virtual logical need_interior_segments ()
 Overrides this method.
virtual logical need_no_hidden_calc ()
 Overrides this method.
virtual void set_cur_seg (IHL_SEGMENT *seg)
 Sets the current segment which is newly allocated.
 ~IHL_OUTPUT_MANAGER ()
 C++ destructor for IHL_OUTPUT_MANAGER which deallocates memory.


Detailed Description

Defines a class to control output from IHL.


Role: By deriving a child of this class, the application can control output from IHL. (For example, the IHL_STDOUT_MANAGER class is a child of IHL_OUTPUT_MANAGER, whose methods have been written to define how output is processed in the default case where the application has not yet specified any output manager.)

The application controls what happens to the hidden line output by overriding the announce_2D_segment, announce_3D_segment, and announce_next_object methods.

The application activates a particular output manager by calling api_ihl_set_output_manager and passing it an instance of the IHL_OUTPUT_MANAGER class.

The application specifies the type of hidden line output needed by calling the need_3D_coordinates, need_hidden_segments, and need_interior_segments methods.

Hidden line output is then generated by calling the api_ihl_compute_from_meshes function and the resulting output is handled by the active output manager.

The IHL_OUTPUT_MANAGER class works similarly to the output manager of the faceter.


Constructor & Destructor Documentation

IHL_OUTPUT_MANAGER::IHL_OUTPUT_MANAGER (  )  [inline]

C++ allocation constructor requests memory for this object but does not populate it.

IHL_OUTPUT_MANAGER::~IHL_OUTPUT_MANAGER (  )  [inline]

C++ destructor for IHL_OUTPUT_MANAGER which deallocates memory.


Member Function Documentation

virtual void IHL_OUTPUT_MANAGER::add_seg_to_list ( IHL_SEGMENT seg  )  [inline, virtual]

Adds the segment to the segment list.



Parameters:
seg pointer to segment.

Reimplemented in IHL_STDOUT_MANAGER.

virtual void IHL_OUTPUT_MANAGER::announce_2D_segment ( double *  lseg,
double *  l3seg,
double *  lseguv,
double *  lsegt,
void *  tag,
logical  fVisible,
double  tpar,
logical  onsil,
IHL_SEGMENT_JOIN_TYPE  join 
) [virtual]

Announces to the draw routine that a 2D segment needs to be drawn.



Parameters:
lseg array of 4 doubles with start/end 2D-coordinates.
l3seg array of 6 doubles with start/end 3D-coordinates.
lseguv array of 4 doubles with start/end uv-coordinates.
lsegt array of 2 doubles with start/end tpars.
tag void* from the corresponding PE_EDGE.
fVisible TRUE if segment is visible.
tpar tpar from begin to end of segment(silh point).
onsil if segment on silhouette edge.
join how to connect to cur_seg.

Reimplemented in IHL_STDOUT_MANAGER.

virtual void IHL_OUTPUT_MANAGER::announce_3D_segment ( double *  lseg,
void *  tag,
logical  fVisible 
) [virtual]

Announces to the draw routine that a 3D segment needs to be drawn.



Parameters:
lseg array of 6 doubles with start/end.
tag void* from the corresponding PE_EDGE.
fVisible TRUE if segment is visible.

Reimplemented in IHL_STDOUT_MANAGER.

virtual void IHL_OUTPUT_MANAGER::announce_next_object (  )  [virtual]

Announces to the draw routine that IHL will compute line segments for the next object in the list of bodies (meshes).



Role: It is called once for each body/mesh but it is the responsibility of the derived class to keep track of the bodies.

Reimplemented in IHL_STDOUT_MANAGER.

virtual IHL_SEGMENT* IHL_OUTPUT_MANAGER::get_cur_seg (  )  [inline, virtual]

Gets the current segment which is newly allocated.

Reimplemented in IHL_STDOUT_MANAGER.

virtual logical IHL_OUTPUT_MANAGER::need_3D_coordinates (  )  [virtual]

Overrides this method.



Role: Returns TRUE if you wish IHL to output 3D coordinates in the line segments rather than 2D. The default is FALSE.

Reimplemented in IHL_STDOUT_MANAGER.

virtual logical IHL_OUTPUT_MANAGER::need_hidden_segments (  )  [virtual]

Overrides this method.



Role: Returns TRUE if you wish IHL to output visible and nonvisible line segments. The default is FALSE.

Reimplemented in IHL_STDOUT_MANAGER.

virtual logical IHL_OUTPUT_MANAGER::need_interior_segments (  )  [virtual]

Overrides this method.



Role: Returns TRUE if you wish IHL to output line segments interior to a face. The default is FALSE.

Reimplemented in IHL_STDOUT_MANAGER.

virtual logical IHL_OUTPUT_MANAGER::need_no_hidden_calc (  )  [virtual]

Overrides this method.



Role: Returns TRUE if you wish IHL to not calculate hidden line and only output silhouette segments. The default is FALSE.

Reimplemented in IHL_STDOUT_MANAGER.

virtual void IHL_OUTPUT_MANAGER::set_cur_seg ( IHL_SEGMENT seg  )  [inline, virtual]

Sets the current segment which is newly allocated.



Parameters:
seg pointer to segment.

Reimplemented in IHL_STDOUT_MANAGER.