PK_TOPOL_render_line   


PK_ERROR_code_t                 PK_TOPOL_render_line
(
--- received arguments ---
const int                       n_topols,        --- number of entities
const PK_TOPOL_t                topols[],        --- entities to rendered
const PK_TRANSF_t               topol_transfs[], --- applied transformations
const PK_TRANSF_t               view_transf,     --- viewing transformation
const PK_TOPOL_render_line_o_t *options          --- options structure
)


Render an array of topological entities through GO as
       a) a view independant wire frame drawing
       b) a view dependant wire frame drawing
   or  c) a hidden line drawing,
according to values supplied in an options structure.


Specific Errors:
    PK_ERROR_duplicate_array_item   topol has duplicates but no transf array
                                    (MILD)
    PK_ERROR_bad_component          topol or view transf is inappropriate
                                    (MILD)
    PK_ERROR_field_of_wrong_type    options are inconsistent with each other
                                    (MILD)
    PK_ERROR_unsuitable_topology    entity in topols array is not an edge, face
                                    or body (MILD)
    PK_ERROR_bad_tolerance          is_<tol> is true but used with a bad <tol>
                                    (MILD)
    PK_ERROR_distance_too_small     unsuitable hatch line separation (MILD)



This function produces a 3D line drawing of topological entities in the world
coordinate system via GO. Each topological entity may be a body, face or edge,
if any other type of topological entity appears in 'topols' the error
PK_ERROR_unsuitable_topology will be returned.

The function arguments determine what type of line drawing is created :

       -   a view independant wire frame drawing
       -   a view dependant wire frame drawing
       -   a hidden line drawing

View independent drawings are created using the default visibility and
silhouette settings defined by the macro PK_TOPOL_render_line_o_m.

View dependent drawings require the 'silhouette' option switched to a value
other than PK_render_silhouette_no_c and for a view entity argument to be
given.

Hidden line drawings require the same arguments as for view dependent drawings
and the 'visibility' option switched to a value other than PK_render_vis_no_c


topol_transfs
If topol_transfs is set to NULL, entities in topols are not transformed.
The topols array may not contain duplicates in this case.

If topol_transfs is not set to NULL, it refers to an array of TRANSFs of
length n_topols. The topols array may contain duplicates in this case.
Each entity in topols is transformed by the corresponding entry in
topol_transfs.

The 'topol_transfs' matrices may not contain perspective terms. They may only
contain translation and rotation components. Reflections, scales and shears are
not allowed.

If a topol_transfs entry is set to PK_ENTITY_null, it implies that the
corresponding entity in topols is not to be transformed.

view_transf
The view_transf argument is needed when generating silhouettes for view
dependent and hidden line drawings. The application frustrum must apply a
copy of its underlying view matrix to all graphics data passed through GO
(which are output in a world coordinate system). A view_transf argument
of PK_ENTITY_null is equivalent to providing a unit matrix. A perspective
view is generated if view_transf contains non-zero perspective terms.

restrictions
The following restrictions apply when generating view independant drawings:

    -  the 'smoothness' option must not be set to PK_render_smooth_draft_c
    -  unfixed blends cannot be drawn when a viewport is specified

The following restrictions apply when generating view dependant drawings:

    -  the 'smoothness' option must not be set to PK_render_smooth_draft_c
    -  unfixed blends are drawn using the original unblended edge

The following restrictions apply when generating hidden line drawings:

    -   only complete bodies are drawn
        (any other topological entities in the topols array are ignored).
    -   if using PK_render_vis_inv_draft_c ( or PK_render_vis_extended_c
            with invisible set to PK_render_invisible_yes_c and drafting
            set to PK_render_drafting_yes_c ) the view_transf matrix
            must not contain non-zero perspective terms
    -   the 'silhouette' option must not be set to PK_render_silhouette_no_c
    -   unfixed blends are drawn using the original unblended edge