home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-07-19 | 79.8 KB | 2,046 lines |
- /* $XConsortium: basestat.c,v 5.2 91/07/19 14:13:23 hersh Exp $ */
- /***********************************************************
- Copyright (c) 1989,1990, 1991 by Sun Microsystems, Inc. and the X Consortium at M.I.T.
-
- All Rights Reserved
-
- Permission to use, copy, modify, and distribute this software and its
- documentation for any purpose and without fee is hereby granted,
- provided that the above copyright notice appear in all copies and that
- both that copyright notice and this permission notice appear in
- supporting documentation, and that the names of Sun Microsystems,
- the X Consortium, and MIT not be used in advertising or publicity
- pertaining to distribution of the software without specific, written
- prior permission.
-
- SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
- INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
- SHALL SUN MICROSYSTEMS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
- DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- SOFTWARE.
-
- ******************************************************************/
-
- /*--------------------------------------------------------------------*\
- | Copyright (C) 1989,1990, 1991, National Computer Graphics Association
- |
- | Permission is granted to any individual or institution to use, copy, or
- | redistribute this software so long as it is not sold for profit, provided
- | this copyright notice is retained.
- |
- | Developed for the
- | National Computer Graphics Association
- | 2722 Merrilee Drive
- | Fairfax, VA 22031
- | (703) 698-9600
- |
- | by
- | SimGraphics Engineering Corporation
- | 1137 Huntington Drive Unit A
- | South Pasadena, CA 91030
- | (213) 255-0900
- |---------------------------------------------------------------------
- |
- | Author : MJF / SimGraphics Engineering Corportation
- |
- | File : basestat.c
- | Date : Fri Feb 9 10:46:55 PST 1990
- | Project : PLB
- | Description :
- | These functions (eg. do_markertype) will be called by
- | execute_traverser any time their bif namesake (ie.
- | MARKER_TYPE) is encountered within a bif verb file or
- | if their bif namesake is encountered within a bif
- | structure which in encountered within a bif test loop.
- | These functions should be executed only if the push_level
- | at the time encountered is 0. The push_level is
- | incremented each time the traverser begins a called
- | structure (ie. attributes are pushed), and decremented
- | each time the traverser returns from a called structure.
- |
- | If a non-retained structure is open the non-retained
- | must be closed before proceeding and reopened when
- | finished.
- | Status : Version 1.0
- |
- | Revisions :
- | 1/90 Various bugs found and solved
- |
- | 2/90 MFC Tektronix, Inc.: PEX-SI API implementation.
- |
- | 5/90 MFC Tektronix, Inc.: PEX-SI API Binding change.
- |
- | 12/90 MFC Tektronix, Inc.: PEX-SI PEX5R1 Release.
- |
- \*--------------------------------------------------------------------*/
-
- /*--------------------------------------------------------------------*\
- | Table of Contents
- |
- | ifdef USING_PHIGS
- | do_2_generic_i(*BIF_Traverser_state, int, *int,
- | (*void)(), (*void)(), int)
- | : Generic integer value basestate update function
- | do_generic_i(*BIF_Traverser_state, int, *int, (*void)(), int)
- | : Generic integer value basestate update function
- | do_generic_f(*BIF_Traverser_state, int, *int, (*void)(), float)
- | : Generic float value basestate update function
- | do_generic_c3(*BIF_Traverser_state, *BIF_All, *int, *int, *int,
- | (*void)())
- | : Generic true color basestate update function
- | do_generic_colorindex(*BIF_Traverser_state, int, *int, *int,
- | *int, (*void)(), int)
- | : Generic index color basestate update function
- | endif USING_PHIGS
- |
- | do_markertype(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_markersize(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_markercolorindex(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_linetype(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_linewidth(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_linecolorindex(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_interiorstyle(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_interiorcolorindex(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_interiorshading(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_interiorlighting(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_surfaceproperties(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_edgeflag(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_edgewidth(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_textfont(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_textprec(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_textcolorindex(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_textpath(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_textalign(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_charheight(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_charupvector(* BIF_Traverser_state,
- | : Edit basestate value for this BIF attribute
- | do_hlhsremoval(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_globaltransformation3(* BIF_Traverser_state,
- | : Edit basestate value for this BIF attribute
- | do_localtransformation3(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_applytoglobal3(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_applytolocal3(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_interiorcolor(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_markercolor(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_linecolor(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_textcolor(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_backfaceinteriorcolor(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_edgecolor(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_annotextstyle(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_backfaceinteriorcolorindex( * BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_annotextcharheight(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_charexp(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_charspace(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_depthcueindex(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_edgecolorindex(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_edgetype(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_interiorpatternindex(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_lineshading(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_annotextcharupvector(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_backfaceprocessing(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_backfaceproperties(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_lightstate(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | do_activeview(* BIF_Traverser_state, *BIF_All)
- | : Edit basestate value for this BIF attribute
- | void init_base_state(int, int)
- | : Set up the base_state structure.
- |
- \*--------------------------------------------------------------------*/
-
- /*--------------------------------------------------------------------*\
- |Include files
- \*--------------------------------------------------------------------*/
- #include <stdio.h>
- #include "biftypes.h"
- #include "bifmacro.h"
- #include "globals.h"
- #include "ph_map.h"
-
-
- /*----------------------------------------------------------------------*\
- |Local #define
- \*----------------------------------------------------------------------*/
- #ifndef FALSE
- #define FALSE 0
- #endif
- #ifndef TRUE
- #define TRUE (!FALSE)
- #endif
-
- #define BBS_PSVWI 1 /* Set base active view */
- #define BBS_PSCHH 2 /* char_height */
- #define BBS_PSCHUP 3 /* char_up_vector */
- #define BBS_PSEDCI 4 /* edge_color_index */
- #define BBS_PSEDFG 5 /* edge_flag */
- #define BBS_PSEWSC 6 /* edge_width */
- #define BBS_PSGLT3 7 /* global_transformation3 */
- #define BBS_PXSZBM 8 /* hlhs_removal */
- #define BBS_PSICI 9 /* interior_color_index */
- #define BBS_PSIRE 10 /* interior_lighting */
- #define BBS_PSISM 11 /* interior_shading */
- #define BBS_FPSBFCI 12 /* backface_interior_color_index*/
- #define BBS_PSPLCI 13 /* line_color_index */
- #define BBS_PSLN 14 /* line_type */
- #define BBS_PSLWSC 15 /* line_width */
- #define BBS_PSLOT3 16 /* local_transformation3 */
- #define BBS_PSPMCI 17 /* marker_color_index */
- #define BBS_PSMKSC 18 /* marker_size */
- #define BBS_PSMK 19 /* marker_type */
- #define BBS_PSAP 20 /* surface_properties */
- #define BBS_PSTXAL 21 /* text_align */
- #define BBS_PSTXCI 22 /* text_color_index */
- #define BBS_PSTXFN 23 /* text_font */
- #define BBS_PSTXP 24 /* text_path */
- #define BBS_PSTXPR 25 /* text_prec */
- #define BBS_PSIS 26 /* interior_style */
- #define BBS_PSICO 27 /* interior_color */
- #define BBS_PSPLCO 28 /* marker_color */
- #define BBS_PSPMCO 29 /* line_color */
- #define BBS_PSTXCO 30 /* text_color */
- #define BBS_FPSBFIC 31 /* backface_interior_color */
- #define BBS_PSECO 32 /* edge_color */
- #define BBS_PSANS 33 /* */
- #define BBS_PSATCH 34 /* */
- #define BBS_PSCHXP 35 /* */
- #define BBS_PSCHSP 36 /* */
- #define BBS_PSDCI 37 /* */
- #define BBS_PSEDT 38 /* */
- #define BBS_FPSIPI 39 /* */
- #define BBS_PSPLSM 40 /* */
- #define BBS_PSATCHUP 41 /* */
- #define BBS_FPBFPR 42 /* */
- #define BBS_FPBFP 43 /* */
- #define BBS_PSLSS 44 /* light_state */
- #define BBS_END 45 /* end of base state */
-
-
- #define DEFAULT_AL3_CONCATTYPE BIF_REPLACE
- #define DEFAULT_AL3matrix identityMatrix
- #define DEFAULT_ANNOTCHUPV_X 0.0
- #define DEFAULT_ANNOTCHUPV_Y 1.0
- #define DEFAULT_ANNOTEXTCHARHEIGHT 0.01
- #define DEFAULT_ANNOTEXTSTYLE 1
- #define DEFAULT_ATG3matrix identityMatrix
- #define DEFAULT_BACKFACEINTERIORCOLORINDEX 1
- #define DEFAULT_BACKFACEP_CULLF 0
- #define DEFAULT_BACKFACEP_IDENTIFYF 0
- #define DEFAULT_CHAREXP 1.0
- #define DEFAULT_CHARHEIGHT 0.01
- #define DEFAULT_CHARSPACE 0
- #define DEFAULT_CHARUPCLASS_VEC_X 0.0
- #define DEFAULT_CHARUPCLASS_VEC_Y 1.0
- #define DEFAULT_COLORMODEL BIF_RGB
- #define DEFAULT_DEPTHCUEINDEX 0
- #define DEFAULT_EDGECOLORINDEX 1
- #define DEFAULT_EDGEFLAG BIF_OFF
- #define DEFAULT_EDGETYPE 1
- #define DEFAULT_EDGEWIDTH 1.0
- #define DEFAULT_GT3matrix identityMatrix
- #define DEFAULT_HLHSREMOVAL BIF_HLHS_DISABLE
- #define DEFAULT_INTERIORCOLORINDEX 1
- #define DEFAULT_INTERIORLIGHTING 1
- #define DEFAULT_INTERIORPATTERNINDEX 1
- #define DEFAULT_INTERIORSHADING 1
- #define DEFAULT_INTERIORSTYLE BIF_HOLLOW
- #define DEFAULT_LINECOLORINDEX 1
- #define DEFAULT_LINESHADING 0
- #define DEFAULT_LINETYPE 1
- #define DEFAULT_LINEWIDTH 1.0
- #define DEFAULT_LT3_CONCATTYPE BIF_REPLACE
- #define DEFAULT_LT3matrix identityMatrix
- #define DEFAULT_MARKERCOLORINDEX 1
- #define DEFAULT_MARKERSIZE 1.0
- #define DEFAULT_MARKERTYPE 3
- #define DEFAULT_SP_AMBIENT 0.2
- #define DEFAULT_SP_COLOR_MODEL BIF_RGB
- #define DEFAULT_SP_DEFFUSE 0.8
- #define DEFAULT_SP_HIGHLIGHT 0.0
- #define DEFAULT_SP_SPECULAR 0.0
- #define DEFAULT_SP_SPEC_COLOR1 1.0
- #define DEFAULT_SP_SPEC_COLOR2 1.0
- #define DEFAULT_SP_SPEC_COLOR3 1.0
- #define DEFAULT_SP_TRANSPARENCY 1.0
- #define DEFAULT_TEXTALIGN_H 0
- #define DEFAULT_TEXTALIGN_V 0
- #define DEFAULT_TEXTCOLORINDEX 1
- #define DEFAULT_TEXTFONT 1
- #define DEFAULT_TEXTPATH 1
- #define DEFAULT_TEXTPREC BIF_STRING
- /* We don't allow for a default COLOR TRIPLET 'cause PHIGS don't like it! */
- #define DEFAULT_TRUEC1 -1.0
- #define DEFAULT_TRUEC2 -1.0
- #define DEFAULT_TRUEC3 -1.0
- #define DEFAULT_VIEWINDEX 0
-
- /*--------------------------------------------------------------------*\
- | Static Variables
- \*--------------------------------------------------------------------*/
- static matrix4 identityMatrix =
- {
- 1., 0., 0., 0.,
- 0., 1., 0., 0.,
- 0., 0., 1., 0.,
- 0., 0., 0., 1.
- };
-
- /*--------------------------------------------------------------------*\
- | BEGIN PROCEDURE CODE
- \*--------------------------------------------------------------------*/
-
- /*--------------------------------------------------------------------*\
- | Local Utility Functions
- \*--------------------------------------------------------------------*/
- #ifdef USING_PHIGS
- /*--------------------------------------------------------------------*\
- | Procedure : do_2_generic_i(*BIF_Traverser_state, int, *int,
- | (*void)(), (*void)(), int)
- |---------------------------------------------------------------------
- | Description : Generic integer value basestate update function
- | to support two calls per value
- |---------------------------------------------------------------------
- | Return : None.
- \*--------------------------------------------------------------------*/
- do_2_generic_i(traverser_state,inew_value,label,figs1_call,figs2_call,idefault)
- BIF_Traverser_state *traverser_state;
- int inew_value;
- int label;
- void (*figs1_call)(),(*figs2_call)();
- int idefault;
-
- {/* do_2_generic_i */
- int next_label;
-
- if (traverser_state->push_level == 0) {
- next_label = label + 1;
- if (traverser_state->nrs_state) fxclns();
- popen_struct((Pint)base_state_stid);
-
- pset_elem_ptr((Pint)0);
- pdel_elems_labels((Pint)label,(Pint)next_label);
- if ( inew_value != idefault ) {
- (*figs1_call)((Pint)inew_value);
- (*figs2_call)((Pint)inew_value);
- }
-
- pclose_struct();
- if (traverser_state->nrs_state) fxopns();
- }
- }/* do_2_generic_i */
-
- /*--------------------------------------------------------------------*\
- | Procedure : do_generic_i(*BIF_Traverser_state, int, *int,
- | (*void)(), int)
- |---------------------------------------------------------------------
- | Description : Generic integer value basestate update function
- |---------------------------------------------------------------------
- | Return : None.
- \*--------------------------------------------------------------------*/
- do_generic_i(traverser_state,inew_value,label,figs_call,idefault)
- BIF_Traverser_state *traverser_state;
- int inew_value;
- int label;
- void (*figs_call)();
- int idefault;
-
- {/* do_generic_i */
- int next_label;
-
- if (traverser_state->push_level == 0) {
- next_label = label + 1;
- if (traverser_state->nrs_state) fxclns();
- popen_struct((Pint)base_state_stid);
-
- pset_elem_ptr((Pint)0);
- pdel_elems_labels((Pint)label,(Pint)next_label);
- if ( inew_value != idefault )
- (*figs_call)((Pint)inew_value);
-
- pclose_struct();
- if (traverser_state->nrs_state) fxopns();
- }
- }/* do_generic_i */
-
- /*--------------------------------------------------------------------*\
- | Procedure : do_generic_f(*BIF_Traverser_state, int, *int,
- | (*void)(), float)
- |---------------------------------------------------------------------
- | Description : Generic float value basestate update function
- |---------------------------------------------------------------------
- | Return :
- \*--------------------------------------------------------------------*/
- do_generic_f(traverser_state,fnew_value,label,figs_call,fdefault)
- BIF_Traverser_state *traverser_state;
- float fnew_value;
- int label;
- void (*figs_call)();
- float fdefault;
-
- {
- int next_label;
- if (traverser_state->push_level == 0) {
- next_label = label + 1;
- if (traverser_state->nrs_state) fxclns();
- popen_struct((Pint)base_state_stid);
- pset_elem_ptr((Pint)0);
- pdel_elems_labels((Pint)label,(Pint)next_label);
- if ( fnew_value != fdefault )
- (*figs_call)(fnew_value);
- pclose_struct();
- if (traverser_state->nrs_state) fxopns();
- }
- }
-
- /*--------------------------------------------------------------------*\
- | Procedure : do_generic_c3(*BIF_Traverser_state, *BIF_All,
- | *int, *int, *int, (*void)())
- |---------------------------------------------------------------------
- | Description : Generic true color basestate update function
- |---------------------------------------------------------------------
- | Return :
- \*--------------------------------------------------------------------*/
- do_generic_c3(traverser_state,entity,label,figs_call)
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- int label;
- void (*figs_call)();
-
- {/* do_generic_c3 */
- int next_label,color_model;
- Pgcolr gcolor;
-
- if (traverser_state->push_level == 0) {
- color_model = entity->truecolor.color_model;
-
- next_label = label + 1;
- if (traverser_state->nrs_state) fxclns();
- popen_struct((Pint)base_state_stid);
-
- pset_elem_ptr((Pint)0);
- pdel_elems_labels((Pint)label,(Pint)next_label);
- /* WORKING: ADD CONVERSIONS FOR DIFFERENT COLOR_MODELS */
- if ( color_model != DEFAULT_COLORMODEL ||
- entity->truecolor.color[0] != DEFAULT_TRUEC1 ||
- entity->truecolor.color[1] != DEFAULT_TRUEC2 ||
- entity->truecolor.color[2] != DEFAULT_TRUEC3) {
-
- gcolor.type = color_model;
- gcolor.val.general.x = (Pfloat)entity->truecolor.color[0];
- gcolor.val.general.y = (Pfloat)entity->truecolor.color[1];
- gcolor.val.general.z = (Pfloat)entity->truecolor.color[2];
- (*figs_call)(&gcolor);
- }
-
- pclose_struct();
-
- if (traverser_state->nrs_state) fxopns();
- }
- }/* do_generic_c3 */
-
- /*--------------------------------------------------------------------*\
- | Procedure : do_generic_colorindex(*BIF_Traverser_state, int,
- | *int, *int, *int, (*void)(), int)
- |---------------------------------------------------------------------
- | Description : Generic index color basestate update function
- |---------------------------------------------------------------------
- | Return :
- \*--------------------------------------------------------------------*/
- do_generic_colorindex(traverser_state,inew_value,label,
- figs_call,idefault)
- BIF_Traverser_state *traverser_state;
- int inew_value;
- int label;
- void (*figs_call)();
- int idefault;
-
- {/* do_generic_colorindex */
- int next_label;
- Pgcolr gcolor;
- if (traverser_state->push_level == 0) {
- next_label = label + 1;
- if (traverser_state->nrs_state) fxclns();
- popen_struct((Pint)base_state_stid);
-
- pset_elem_ptr((Pint)0);
- pdel_elems_labels((Pint)label,(Pint)next_label);
- if ( inew_value != idefault )
- gcolor.type = PINDIRECT;
- gcolor.val.ind = (Pint)inew_value;
- (*figs_call)(&gcolor);
-
- pclose_struct();
- if (traverser_state->nrs_state) fxopns();
- }
- }/* do_generic_colorindex */
- #endif /* ifdef USING_PHIGS */
-
- /*----------------------------------------------------------------------*\
- | Procedure : do_markertype(* BIF_Traverser_state, *BIF_All)
- |------------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity markertype to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |------------------------------------------------------------------------
- | Return :
- \*----------------------------------------------------------------------*/
- int do_markertype( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
-
- {
- #ifdef USING_PHIGS
- do_generic_i(traverser_state,entity->markertype.markertype,
- BBS_PSMK,pset_marker_type, DEFAULT_MARKERTYPE);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_markertype */
-
- /*----------------------------------------------------------------------*\
- | Procedure : do_markersize(* BIF_Traverser_state, *BIF_All)
- |------------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity markersize to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |------------------------------------------------------------------------
- | Return :
- \*----------------------------------------------------------------------*/
- int do_markersize( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_f(traverser_state,entity->markersize.size,
- BBS_PSMKSC,pset_marker_size, DEFAULT_MARKERSIZE);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_markersize */
-
- /*----------------------------------------------------------------------*\
- | Procedure : do_markercolorindex(* BIF_Traverser_state,
- | *BIF_All)
- |------------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity markercolorindex to
- | the phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |------------------------------------------------------------------------
- | Return :
- \*----------------------------------------------------------------------*/
- int do_markercolorindex( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_colorindex(traverser_state,entity->ind.ind,
- BBS_PSPMCI, pset_marker_colr,
- DEFAULT_MARKERCOLORINDEX);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_markercolorindex */
-
- /*----------------------------------------------------------------------*\
- | Procedure : do_linetype(* BIF_Traverser_state, *BIF_All)
- |------------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity linetype to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |------------------------------------------------------------------------
- | Return :
- \*----------------------------------------------------------------------*/
- int do_linetype( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_i(traverser_state,entity->linetype.linetype,
- BBS_PSLN,pset_linetype, DEFAULT_LINETYPE);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_linetype */
-
- /*----------------------------------------------------------------------*\
- | Procedure : do_linewidth(* BIF_Traverser_state, *BIF_All)
- |------------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity linewidth to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |------------------------------------------------------------------------
- | Return :
- \*----------------------------------------------------------------------*/
- int do_linewidth( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_f(traverser_state,entity->linewidth.width,
- BBS_PSLWSC,pset_linewidth, DEFAULT_LINEWIDTH);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_linewidth */
-
- /*----------------------------------------------------------------------*\
- | Procedure : do_linecolorindex(* BIF_Traverser_state,
- | *BIF_All)
- |------------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity linecolorindex to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |------------------------------------------------------------------------
- | Return :
- \*----------------------------------------------------------------------*/
- int do_linecolorindex( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_colorindex(traverser_state,entity->ind.ind,
- BBS_PSPLCI, pset_line_colr,
- DEFAULT_LINECOLORINDEX);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_linecolorindex */
-
- /*----------------------------------------------------------------------*\
- | Procedure : do_interiorstyle(* BIF_Traverser_state,
- | *BIF_All)
- |------------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity interiorcolorindex to
- | the phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |------------------------------------------------------------------------
- | Return :
- \*----------------------------------------------------------------------*/
- int do_interiorstyle( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- /* Do back interior style also */
- do_2_generic_i(traverser_state,entity->interiorstyle.ind,
- BBS_PSIS,pset_int_style,
- pset_back_int_style,
- DEFAULT_INTERIORSTYLE);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_interiorstyle */
-
- /*----------------------------------------------------------------------*\
- | Procedure : do_interiorcolorindex(* BIF_Traverser_state,
- | *BIF_All)
- |------------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity interiorcolorindex to
- | the phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |------------------------------------------------------------------------
- | Return :
- \*----------------------------------------------------------------------*/
- int do_interiorcolorindex( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_colorindex(traverser_state,entity->ind.ind,
- BBS_PSICI, pset_int_colr,
- DEFAULT_INTERIORCOLORINDEX);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_interiorcolorindex */
-
- /*----------------------------------------------------------------------*\
- | Procedure : do_interiorshading(* BIF_Traverser_state,
- | *BIF_All)
- |------------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity interiorshading
- | to the phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |------------------------------------------------------------------------
- | Return :
- \*----------------------------------------------------------------------*/
- int do_interiorshading( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- /* Do back interior shading also */
- do_2_generic_i(traverser_state,entity->interiorshading.meth,
- BBS_PSISM,pset_int_shad_meth,
- pset_back_int_shad_meth,
- DEFAULT_INTERIORSHADING);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_interiorshading */
-
- /*----------------------------------------------------------------------*\
- | Procedure : do_interiorlighting(* BIF_Traverser_state,
- | *BIF_All)
- |------------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity interiorlighting to
- | the phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |------------------------------------------------------------------------
- | Return :
- \*----------------------------------------------------------------------*/
- int do_interiorlighting( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- /* Do back interior lighting also */
- do_2_generic_i(traverser_state,entity->interiorlighting.equation,
- BBS_PSIRE,pset_refl_eqn,
- pset_back_refl_eqn,
- DEFAULT_INTERIORLIGHTING);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_interiorlighting */
-
- /*----------------------------------------------------------------------*\
- | Procedure : do_surfaceproperties(* BIF_Traverser_state,
- | *BIF_All)
- |------------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity surfaceproperties to
- | the phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |------------------------------------------------------------------------
- | Return :
- \*----------------------------------------------------------------------*/
- int do_surfaceproperties( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- float ambient, diffuse, specular;
- int color_model;
- float specular_color[3]; /* Specular color components */
- float highlight, transparency;
- int next_label;
-
- #ifdef USING_PHIGS
- if (traverser_state->push_level == 0) {
- ambient = entity->surfaceproperties.props.ambient_coef;
- diffuse = entity->surfaceproperties.props.diffuse_coef;
- specular = entity->surfaceproperties.props.specular_coef;
- color_model =
- entity->surfaceproperties.props.specular_colr.type;
- switch (color_model) {
- case PINDIRECT:
- specular_color[0] =
- (float)entity->surfaceproperties.props.specular_colr.val.ind;
- break;
- default:
- specular_color[0] =
- entity->surfaceproperties.props.specular_colr.val.general.x;
- specular_color[1] =
- entity->surfaceproperties.props.specular_colr.val.general.y;
- specular_color[2] =
- entity->surfaceproperties.props.specular_colr.val.general.z;
- break;
- }
- highlight = entity->surfaceproperties.props.specular_exp;
- transparency = 0.0;
-
- next_label = BBS_PSAP + 1;
- if (traverser_state->nrs_state) fxclns();
- popen_struct((Pint)base_state_stid);
-
- pset_elem_ptr((Pint)0);
- pdel_elems_labels((Pint)BBS_PSAP,(Pint)next_label);
-
- #ifdef TEMPOUT
- if ( ambient != DEFAULT_SP_AMBIENT ||
- diffuse != DEFAULT_SP_DEFFUSE ||
- specular != DEFAULT_SP_SPECULAR ||
- color_model != DEFAULT_SP_COLOR_MODEL ||
- specular_color[0] != DEFAULT_SP_SPEC_COLOR1 ||
- specular_color[1] != DEFAULT_SP_SPEC_COLOR2 ||
- specular_color[2] != DEFAULT_SP_SPEC_COLOR3 ||
- highlight != DEFAULT_SP_HIGHLIGHT ||
- transparency != DEFAULT_SP_TRANSPARENCY
- )
- #endif
- pset_refl_props((Prefl_props *)&entity->surfaceproperties.props);
-
- pclose_struct();
- if (traverser_state->nrs_state) fxopns();
- }
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_surfaceproperties */
-
- /*----------------------------------------------------------------------*\
- | Procedure : do_edgeflag(* BIF_Traverser_state, *BIF_All)
- |------------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity edgeflag to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |------------------------------------------------------------------------
- | Return :
- \*----------------------------------------------------------------------*/
- int do_edgeflag( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_i(traverser_state,entity->edgeflag.edge_flag,
- BBS_PSEDFG,pset_edge_flag, DEFAULT_EDGEFLAG);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_edgeflag */
-
- /*----------------------------------------------------------------------*\
- | Procedure : do_edgewidth(* BIF_Traverser_state, *BIF_All)
- |------------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity edgewidth to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |------------------------------------------------------------------------
- | Return :
- \*----------------------------------------------------------------------*/
- int do_edgewidth( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_f(traverser_state,entity->edgewidth.scale,
- BBS_PSEWSC,pset_edgewidth, DEFAULT_EDGEWIDTH);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_edgewidth */
-
- /*----------------------------------------------------------------------*\
- | Procedure : do_textfont(* BIF_Traverser_state, *BIF_All)
- |------------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity textfont to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |------------------------------------------------------------------------
- | Return :
- \*----------------------------------------------------------------------*/
- int do_textfont( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_i(traverser_state,entity->textfont.font,
- BBS_PSTXFN,pset_text_font, DEFAULT_TEXTFONT);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_textfont */
-
- /*----------------------------------------------------------------------*\
- | Procedure : do_textprec(* BIF_Traverser_state, *BIF_All)
- |------------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity textprec to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |------------------------------------------------------------------------
- | Return :
- \*----------------------------------------------------------------------*/
- int do_textprec( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_i(traverser_state,entity->textprec.precision,
- BBS_PSTXPR,pset_text_prec, DEFAULT_TEXTPREC);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_textprec */
-
- /*----------------------------------------------------------------------*\
- | Procedure : do_textcolorindex(* BIF_Traverser_state, *BIF_All)
- |------------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity textcolorindex to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |------------------------------------------------------------------------
- | Return :
- \*----------------------------------------------------------------------*/
- int do_textcolorindex( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_colorindex(traverser_state,entity->ind.ind,
- BBS_PSTXCI, pset_text_colr,
- DEFAULT_TEXTCOLORINDEX);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_textcolorindex */
-
- /*----------------------------------------------------------------------*\
- | Procedure : do_textpath(* BIF_Traverser_state, *BIF_All)
- |------------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity textpath to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |------------------------------------------------------------------------
- | Return :
- \*----------------------------------------------------------------------*/
- int do_textpath( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- extern void fxsattxp();
- do_generic_i(traverser_state,entity->textpath.path_list,
- BBS_PSTXP,fxsattxp, DEFAULT_TEXTPATH);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_textpath */
-
- /*----------------------------------------------------------------------*\
- | Procedure : do_textalign(* BIF_Traverser_state, *BIF_All)
- |------------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity textalign to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |------------------------------------------------------------------------
- | Return :
- \*----------------------------------------------------------------------*/
- int do_textalign( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- int horizontal_alignment, vertical_alignment;
- int next_label;
- #ifdef USING_PHIGS
- if (traverser_state->push_level == 0) {
- next_label = BBS_PSTXAL + 1;
- if (traverser_state->nrs_state) fxclns();
- horizontal_alignment = (int)entity->textalign.text_align.hor;
- vertical_alignment = (int)entity->textalign.text_align.vert;
- popen_struct((Pint)base_state_stid);
- pset_elem_ptr((Pint)0);
- pdel_elems_labels((Pint)BBS_PSTXAL,(Pint)next_label);
- if ( horizontal_alignment!= DEFAULT_TEXTALIGN_H ||
- vertical_alignment != DEFAULT_TEXTALIGN_V )
- fxsattxal((Ptext_align *)&entity->textalign.text_align);
- pclose_struct();
- if (traverser_state->nrs_state) fxopns();
- }
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_textalign */
-
- /*----------------------------------------------------------------------*\
- | Procedure : do_charheight(* BIF_Traverser_state, *BIF_All)
- |------------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity charheight to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |------------------------------------------------------------------------
- | Return :
- \*----------------------------------------------------------------------*/
- int do_charheight( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_f(traverser_state,entity->charheight.height,
- BBS_PSCHH,pset_char_ht, DEFAULT_CHARHEIGHT);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_charheight */
-
- /*----------------------------------------------------------------------*\
- | Procedure : do_charupvector(* BIF_Traverser_state,
- *BIF_All)
- |------------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity charupvector to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |------------------------------------------------------------------------
- | Return :
- \*----------------------------------------------------------------------*/
- int do_charupvector( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- float x, y;
- int next_label;
- #ifdef USING_PHIGS
- if (traverser_state->push_level == 0) {
- next_label = BBS_PSCHUP + 1;
- if (traverser_state->nrs_state) fxclns();
- x = entity->charupvector.up_vect.delta_x;
- y = entity->charupvector.up_vect.delta_y;
- popen_struct((Pint)base_state_stid);
- pset_elem_ptr((Pint)0);
- pdel_elems_labels((Pint)BBS_PSCHUP,(Pint)next_label);
- if ( x != DEFAULT_CHARUPCLASS_VEC_X ||
- y != DEFAULT_CHARUPCLASS_VEC_Y
- )
- pset_char_up_vec((Pvec *)&entity->charupvector.up_vect);
- pclose_struct();
- if (traverser_state->nrs_state) fxopns();
- }
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_charupvector */
-
- /*----------------------------------------------------------------------*\
- | Procedure : do_hlhsremoval(* BIF_Traverser_state, *BIF_All)
- |------------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity hlhsremoval to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |------------------------------------------------------------------------
- | Return :
- \*----------------------------------------------------------------------*/
- int do_hlhsremoval( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_i(traverser_state,entity->hlhsremoval.id,
- BBS_PXSZBM,pset_hlhsr_id, DEFAULT_HLHSREMOVAL);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_hlhsremoval */
-
-
- /*----------------------------------------------------------------------*\
- | Procedure : do_globaltransformation3(* BIF_Traverser_state,
- *BIF_All)
- |------------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity globaltransformation3
- | to the phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |------------------------------------------------------------------------
- | Return :
- \*----------------------------------------------------------------------*/
- int do_globaltransformation3( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- float matrix[4][4];
- int next_label;
- #ifdef USING_PHIGS
- if (traverser_state->push_level == 0) {
- next_label = BBS_PSGLT3 + 1;
- if (traverser_state->nrs_state) fxclns();
- Transpose44(entity->globaltransformation3.xform,matrix);
- popen_struct((Pint)base_state_stid);
- pset_elem_ptr((Pint)0);
- pdel_elems_labels((Pint)BBS_PSGLT3,(Pint)next_label);
- if ( !mx_comp(entity->globaltransformation3.xform,DEFAULT_GT3matrix) )
- pset_global_tran3(matrix);
- pclose_struct();
- if (traverser_state->nrs_state) fxopns();
- }
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
-
- /*------------------------------------------------------------*\
- | Update the data in the traverser_state to reflect this
- | matrix operation on G and C.
- \*------------------------------------------------------------*/
- /* Global */
- copy44f(entity->globaltransformation3.xform,traverser_state->global);
- /* Composite */
- mx_mult(traverser_state->local,traverser_state->global,
- traverser_state->composite);
-
- return(0);
- } /* End do_globaltransformation3 */
-
- /*----------------------------------------------------------------------*\
- | Procedure : do_localtransformation3(* BIF_Traverser_state,
- | *BIF_All)
- |------------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity localtransformation3
- | to the phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |------------------------------------------------------------------------
- | Return :
- \*----------------------------------------------------------------------*/
- int do_localtransformation3( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- float matrix[4][4];
- int concat_type;
- int next_label;
- concat_type = (int)entity->localtransformation3.compose_type;
- #ifdef USING_PHIGS
- if (traverser_state->push_level == 0) {
- next_label = BBS_PSLOT3 + 1;
- if (traverser_state->nrs_state) fxclns();
- Transpose44(entity->localtransformation3.xform,matrix);
- popen_struct((Pint)base_state_stid);
- pset_elem_ptr((Pint)0);
- pdel_elems_labels((Pint)BBS_PSLOT3,(Pint)next_label);
- if ( !mx_comp(entity->localtransformation3.xform,DEFAULT_LT3matrix) ||
- concat_type != DEFAULT_LT3_CONCATTYPE
- )
- pset_local_tran3(matrix,concat_type);
- pclose_struct();
- if (traverser_state->nrs_state) fxopns();
- }
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
-
- /*------------------------------------------------------------*\
- | Update the data in the traverser_state to reflect this
- | matrix operation on G, L, and C.
- \*------------------------------------------------------------*/
- /* Local */
- matcat(entity->localtransformation3.xform,
- traverser_state->local,concat_type);
- /* Composite */
- mx_mult(traverser_state->local,traverser_state->global,
- traverser_state->composite);
-
- return(0);
- } /* End do_localtransformation3 */
-
- /*----------------------------------------------------------------------*\
- | Procedure : do_applytoglobal3(* BIF_Traverser_state,
- | *BIF_All)
- |------------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity localtransformation3
- | to the phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |------------------------------------------------------------------------
- | Return :
- \*----------------------------------------------------------------------*/
- int do_applytoglobal3( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- float matrix[4][4];
- int matrix_id;
- int next_label;
- matrix_id = entity->applytoglobal3.matrix_id;
-
- #ifdef USING_PHIGS
- if (traverser_state->nrs_state) fxclns();
- Transpose44(matrix_table[matrix_id],matrix);
- #ifdef TEST_PRINT
- #ifdef TEST_PRINT2
- printf("A2G3: mx_id = %d label = %d\n",matrix_id,
- entity->applytoglobal3.matrix_label);
- PRINT_MATRIX44f(matrix);
- #endif /* TEST_PRINT2 */
- #endif /* TEST_PRINT */
- if (traverser_state->push_level == 0) {
- next_label = BBS_PSGLT3 + 1;
- popen_struct((Pint)base_state_stid);
- pset_elem_ptr((Pint)0);
- pdel_elems_labels((Pint)BBS_PSGLT3,(Pint)next_label);
- if ( !mx_comp(matrix_table[matrix_id],DEFAULT_ATG3matrix))
- pset_global_tran3(matrix);
- pclose_struct();
- }
-
- #ifdef REFER_STRUCTURE_EXISTS
- /* Ordinary PHIGs Open */
- popen_struct((Pint)entity->applytoglobal3.structure_id);
- pset_elem_ptr((Pint)0);
- #else /* REFER_STRUCTURE_EXISTS */
- /*------------------------------------------------------------*\
- | Using the link list built up by call and execute open
- | and shift to the appropriate BIF structure in the
- | expanded PHIGs structures.
- \*------------------------------------------------------------*/
- openUsingLinkList(traverser_state->tol);
- #endif /* REFER_STRUCTURE_EXISTS */
- pset_elem_ptr_label((Pint)entity->applytoglobal3.matrix_label);
- poffset_elem_ptr((Pint)1);
- pdel_elem();
- pset_global_tran3(matrix);
- pclose_struct();
- if (traverser_state->nrs_state) fxopns();
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
-
- /*------------------------------------------------------------*\
- | Update the data in the traverser_state to reflect this
- | matrix operation on G and C.
- \*------------------------------------------------------------*/
- /* Global */
- copy44f(matrix_table[matrix_id],traverser_state->global);
- /* Composite */
- mx_mult(traverser_state->local,traverser_state->global,
- traverser_state->composite);
-
- return(0);
- } /* End do_applytoglobal3 */
-
- /*----------------------------------------------------------------------*\
- | Procedure : do_applytolocal3(* BIF_Traverser_state,
- | *BIF_All)
- |------------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity localtransformation3
- | to the phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |------------------------------------------------------------------------
- | Return :
- \*----------------------------------------------------------------------*/
- int do_applytolocal3( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- float matrix[4][4];
- int matrix_id;
- int concat_type;
- int next_label;
- matrix_id = entity->applytolocal3.matrix_id;
- concat_type = entity->applytolocal3.concat_type;
- #ifdef USING_PHIGS
- if (traverser_state->nrs_state) fxclns();
- Transpose44(matrix_table[matrix_id],matrix);
- #ifdef TEST_PRINT
- #ifdef TEST_PRINT2
- printf("A2L3: mx_id = %d concat = %d label = %d\n",matrix_id, concat_type,
- entity->applytolocal3.matrix_label);
- PRINT_MATRIX44f(matrix);
- #endif /* TEST_PRINT2 */
- #endif /* TEST_PRINT */
- if (traverser_state->push_level == 0) {
- next_label = BBS_PSLOT3 + 1;
- popen_struct((Pint)base_state_stid);
-
- pset_elem_ptr((Pint)0);
- pdel_elems_labels((Pint)BBS_PSLOT3,(Pint)next_label);
- if ( !mx_comp(matrix_table[matrix_id],DEFAULT_AL3matrix)||
- concat_type != DEFAULT_AL3_CONCATTYPE)
- pset_local_tran3(matrix,concat_type);
-
- pclose_struct();
- }
- /* WORKING: Add the CALL Structure "fancy open" here */
-
- #ifdef REFER_STRUCTURE_EXISTS
- /* Ordinary PHIGs Open */
- popen_struct((Pint)entity->applytolocal3.structure_id);
-
- pset_elem_ptr((Pint)0);
- #else /* REFER_STRUCTURE_EXISTS */
- /*------------------------------------------------------------*\
- | Using the link list built up by call and execute open
- | and shift to the appropriate BIF structure in the
- | expanded PHIGs structures.
- \*------------------------------------------------------------*/
- openUsingLinkList(traverser_state->tol);
- #endif /* REFER_STRUCTURE_EXISTS */
- pset_elem_ptr_label((Pint)entity->applytolocal3.matrix_label);
- poffset_elem_ptr((Pint)1);
- pdel_elem();
- pset_local_tran3(matrix,concat_type);
-
- pclose_struct();
- if (traverser_state->nrs_state) fxopns();
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
-
- /*------------------------------------------------------------*\
- | Update the data in the traverser_state to reflect this
- | matrix operation on G, L, and C.
- \*------------------------------------------------------------*/
- /* Local */
- matcat(matrix_table[matrix_id],
- traverser_state->local,concat_type);
- /* Composite */
- mx_mult(traverser_state->local,traverser_state->global,
- traverser_state->composite);
-
- return(0);
- } /* End do_applytolocal3 */
-
- /*--------------------------------------------------------------------*\
- | Procedure : do_interiorcolor(* BIF_Traverser_state,
- | *BIF_All)
- |----------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity interiorcolor to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |----------------------------------------------------------------------
- | Return :
- \*--------------------------------------------------------------------*/
- int do_interiorcolor( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_c3(traverser_state,entity,BBS_PSICO, pset_int_colr);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_markertype */
-
- /*--------------------------------------------------------------------*\
- | Procedure : do_markercolor(* BIF_Traverser_state, *BIF_All)
- |----------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity markercolor to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |----------------------------------------------------------------------
- | Return :
- \*--------------------------------------------------------------------*/
- int do_markercolor( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_c3(traverser_state,entity,BBS_PSPMCO, pset_marker_colr);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_markertype */
-
- /*--------------------------------------------------------------------*\
- | Procedure : do_linecolor(* BIF_Traverser_state, *BIF_All)
- |----------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity linecolor to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |----------------------------------------------------------------------
- | Return :
- \*--------------------------------------------------------------------*/
- int do_linecolor( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_c3(traverser_state,entity,BBS_PSPLCO, pset_line_colr);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_markertype */
-
- /*--------------------------------------------------------------------*\
- | Procedure : do_textcolor(* BIF_Traverser_state, *BIF_All)
- |----------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity textcolor to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |----------------------------------------------------------------------
- | Return :
- \*--------------------------------------------------------------------*/
- int do_textcolor( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_c3(traverser_state,entity,BBS_PSTXCO, pset_text_colr);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_markertype */
-
- /*--------------------------------------------------------------------*\
- | Procedure : do_backfaceinteriorcolor(* BIF_Traverser_state,
- | *BIF_All)
- |----------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity
- | backfaceinteriorcolor to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |----------------------------------------------------------------------
- | Return :
- \*--------------------------------------------------------------------*/
- int do_backfaceinteriorcolor( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_c3(traverser_state,entity,BBS_FPSBFIC, pset_back_int_colr);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_markertype */
-
- /*--------------------------------------------------------------------*\
- | Procedure : do_edgecolor(* BIF_Traverser_state, *BIF_All)
- |----------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity edgecolor to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |----------------------------------------------------------------------
- | Return :
- \*--------------------------------------------------------------------*/
- int do_edgecolor( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_c3(traverser_state,entity,BBS_PSECO, pset_edge_colr);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_markertype */
-
- /*--------------------------------------------------------------------*\
- | Procedure : do_annotextstyle(* BIF_Traverser_state,
- | *BIF_All)
- |----------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity annotextstyle to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |----------------------------------------------------------------------
- | Return :
- \*--------------------------------------------------------------------*/
- int do_annotextstyle( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_i(traverser_state, entity->ind.ind,
- BBS_PSANS, pset_anno_style,
- DEFAULT_ANNOTEXTSTYLE);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_annoteststyle */
-
- /*--------------------------------------------------------------------*\
- | Procedure : do_backfaceinteriorcolorindex(
- | * BIF_Traverser_state, *BIF_All)
- |----------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity backfaceinteriorcolorindex to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |----------------------------------------------------------------------
- | Return :
- \*--------------------------------------------------------------------*/
- int do_backfaceinteriorcolorindex( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_colorindex(traverser_state,entity->ind.ind,
- BBS_FPSBFCI, pset_back_int_colr,
- DEFAULT_BACKFACEINTERIORCOLORINDEX);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_backfaceinteriorcolorindex */
-
- /*--------------------------------------------------------------------*\
- | Procedure : do_annotextcharheight(* BIF_Traverser_state,
- | *BIF_All)
- |----------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity annotextcharheight to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |----------------------------------------------------------------------
- | Return :
- \*--------------------------------------------------------------------*/
- int do_annotextcharheight( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_f(traverser_state,entity->size.size,
- BBS_PSATCH,pset_anno_char_ht,
- DEFAULT_ANNOTEXTCHARHEIGHT);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_annotextcharheight */
-
- /*--------------------------------------------------------------------*\
- | Procedure : do_charexp(* BIF_Traverser_state, *BIF_All)
- |----------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity charexp to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |----------------------------------------------------------------------
- | Return :
- \*--------------------------------------------------------------------*/
- int do_charexp( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_f(traverser_state,entity->size.size,
- BBS_PSCHXP,pset_char_expan, DEFAULT_CHAREXP);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_charexp */
-
- /*--------------------------------------------------------------------*\
- | Procedure : do_charspace(* BIF_Traverser_state, *BIF_All)
- |----------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity charspace to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |----------------------------------------------------------------------
- | Return :
- \*--------------------------------------------------------------------*/
- int do_charspace( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_f(traverser_state,entity->size.size,
- BBS_PSCHSP,pset_char_space, DEFAULT_CHARSPACE);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_charspace */
-
- /*--------------------------------------------------------------------*\
- | Procedure : do_depthcueindex(* BIF_Traverser_state,
- | *BIF_All)
- |----------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity depthcueindex to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |----------------------------------------------------------------------
- | Return :
- \*--------------------------------------------------------------------*/
- int do_depthcueindex( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_i(traverser_state,entity->ind.ind,
- BBS_PSDCI,pset_dcue_ind, DEFAULT_DEPTHCUEINDEX);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_depthcueindex */
-
- /*--------------------------------------------------------------------*\
- | Procedure : do_edgecolorindex(* BIF_Traverser_state,
- | *BIF_All)
- |----------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity edgecolorindex to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |----------------------------------------------------------------------
- | Return :
- \*--------------------------------------------------------------------*/
- int do_edgecolorindex( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_colorindex(traverser_state,entity->ind.ind,
- BBS_PSEDCI, pset_edge_colr,
- DEFAULT_EDGECOLORINDEX);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_edgecolorindex */
-
- /*--------------------------------------------------------------------*\
- | Procedure : do_edgetype(* BIF_Traverser_state, *BIF_All)
- |----------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity edgetype to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |----------------------------------------------------------------------
- | Return :
- \*--------------------------------------------------------------------*/
- int do_edgetype( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_i(traverser_state,entity->ind.ind,
- BBS_PSEDT,pset_edgetype, DEFAULT_EDGETYPE);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_edgetype */
-
- /*--------------------------------------------------------------------*\
- | Procedure : do_interiorpatternindex(* BIF_Traverser_state,
- | *BIF_All)
- |----------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity interiorpatternindex to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |----------------------------------------------------------------------
- | Return :
- \*--------------------------------------------------------------------*/
- int do_interiorpatternindex( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- /* Do back interior pattern index also */
- do_2_generic_i(traverser_state,entity->ind.ind,
- BBS_FPSIPI,pset_int_style_ind,
- pset_back_int_style_ind,
- DEFAULT_INTERIORPATTERNINDEX);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_interiorpatternindex */
-
- /*--------------------------------------------------------------------*\
- | Procedure : do_lineshading(* BIF_Traverser_state, *BIF_All)
- |----------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity lineshading to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |----------------------------------------------------------------------
- | Return :
- \*--------------------------------------------------------------------*/
- int do_lineshading( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- #ifdef USING_PHIGS
- do_generic_i(traverser_state,entity->ind.ind,
- BBS_PSPLSM,pset_line_shad_meth,
- DEFAULT_LINESHADING);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_lineshading */
-
- /*--------------------------------------------------------------------*\
- | Procedure : do_annotextcharupvector(* BIF_Traverser_state,
- | *BIF_All)
- |----------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity annotextcharupvector to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |----------------------------------------------------------------------
- | Return :
- \*--------------------------------------------------------------------*/
- int do_annotextcharupvector( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- float x, y;
- int next_label;
- #ifdef USING_PHIGS
- if (traverser_state->push_level == 0) {
- next_label = BBS_PSATCHUP + 1;
- if (traverser_state->nrs_state) fxclns();
- x = entity->charupvector.up_vect.delta_x;
- y = entity->charupvector.up_vect.delta_y;
- popen_struct((Pint)base_state_stid);
- pset_elem_ptr((Pint)0);
- pdel_elems_labels((Pint)BBS_PSATCHUP,(Pint)next_label);
- if ( x != DEFAULT_ANNOTCHUPV_X ||
- y != DEFAULT_ANNOTCHUPV_Y )
- pset_anno_char_up_vec((Pvec *)&entity->charupvector.up_vect);
- pclose_struct();
- if (traverser_state->nrs_state) fxopns();
- }
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_annotextcharupvector */
-
-
- /*--------------------------------------------------------------------*\
- | Procedure : do_backfaceprocessing(* BIF_Traverser_state,
- | *BIF_All)
- |----------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity backfaceprocessing to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |----------------------------------------------------------------------
- | Return :
- \*--------------------------------------------------------------------*/
- int do_backfaceprocessing ( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- int next_label;
- #ifdef USING_PHIGS
- if (traverser_state->push_level == 0) {
- next_label = BBS_FPBFPR + 1;
- if (traverser_state->nrs_state) fxclns();
- popen_struct((Pint)base_state_stid);
- pset_elem_ptr((Pint)0);
- pdel_elems_labels((Pint)BBS_FPBFPR,(Pint)next_label);
- if ( (int)(entity->backfaceprocessing.g_mode)
- != DEFAULT_BACKFACEP_IDENTIFYF ||
- (int)(entity->backfaceprocessing.cull_mode)
- != DEFAULT_BACKFACEP_CULLF ) {
- pset_face_disting_mode(entity->backfaceprocessing.g_mode);
- pset_face_cull_mode(entity->backfaceprocessing.cull_mode);
- }
- pclose_struct();
- if (traverser_state->nrs_state) fxopns();
- }
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_backfaceprocessing */
-
- /*--------------------------------------------------------------------*\
- | Procedure : do_backfaceproperties(* BIF_Traverser_state,
- | *BIF_All)
- |----------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity backfaceproperties to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |----------------------------------------------------------------------
- | Return :
- \*--------------------------------------------------------------------*/
- int do_backfaceproperties( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- float ambient, diffuse, specular;
- int color_model;
- float specular_color[3]; /* Specular color components */
- float highlight, transparency;
- int next_label;
-
- #ifdef USING_PHIGS
- if (traverser_state->push_level == 0) {
- ambient = entity->surfaceproperties.props.ambient_coef;
- diffuse = entity->surfaceproperties.props.diffuse_coef;
- specular = entity->surfaceproperties.props.specular_coef;
- color_model =
- entity->surfaceproperties.props.specular_colr.type;
- switch (color_model) {
- case PINDIRECT:
- specular_color[0] =
- (float)entity->surfaceproperties.props.specular_colr.val.ind;
- break;
- default:
- specular_color[0] =
- (float)entity->surfaceproperties.props.specular_colr.val.general.x;
- specular_color[1] =
- (float)entity->surfaceproperties.props.specular_colr.val.general.y;
- specular_color[2] =
- (float)entity->surfaceproperties.props.specular_colr.val.general.z;
- break;
- }
- highlight = (float)entity->surfaceproperties.props.specular_exp;
- transparency = 0.0;
-
- next_label = BBS_FPBFP + 1;
- if (traverser_state->nrs_state) fxclns();
- popen_struct((Pint)base_state_stid);
- pset_elem_ptr((Pint)0);
- pdel_elems_labels((Pint)BBS_FPBFP,(Pint)next_label);
- if ( ambient != DEFAULT_SP_AMBIENT ||
- diffuse != DEFAULT_SP_DEFFUSE ||
- specular != DEFAULT_SP_SPECULAR ||
- color_model != DEFAULT_SP_COLOR_MODEL ||
- specular_color[0]!= DEFAULT_SP_SPEC_COLOR1 ||
- specular_color[1]!= DEFAULT_SP_SPEC_COLOR2 ||
- specular_color[2]!= DEFAULT_SP_SPEC_COLOR3 ||
- highlight != DEFAULT_SP_HIGHLIGHT ||
- transparency != DEFAULT_SP_TRANSPARENCY)
- pset_back_refl_props(&entity->surfaceproperties.props);
- pclose_struct();
- if (traverser_state->nrs_state) fxopns();
- }
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- return(0);
- } /* End do_backfaceproperties */
-
-
- /*----------------------------------------------------------------------*\
- | Procedure : do_lightstate(* BIF_Traverser_state, *BIF_All)
- |------------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- | Patches the contents of the entity lightstate to the
- | phigs base_state structure. For further details
- | see the Descriptions block at the top of this file.
- |------------------------------------------------------------------------
- | Return :
- \*----------------------------------------------------------------------*/
- int do_lightstate( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- int next_label;
-
- #ifdef USING_PHIGS
- if (traverser_state->push_level == 0) {
- next_label = BBS_PSLSS + 1;
- if (traverser_state->nrs_state) fxclns();
-
- #ifdef EXTERNALNOTE
-
- The following block of code has been changed to reflect an error
- in the original code for the GPC benchmark.
-
- The code to update the base state active lights list is redundant
- and is no longer needed. The original call to pslss passed the
- incorrect light pointers, which is why lighting declared outside
- the test loop would not work. The corrected pslss needs to be
- communicated to all users of the current source code.
- #endif
-
-
- popen_struct((Pint)base_state_stid);
-
- pset_elem_ptr((Pint)0);
- pdel_elems_labels((Pint)BBS_PSLSS,(Pint)next_label);
-
- pset_light_src_state((Pint_list *)&entity->lightstate.activation,
- (Pint_list *)&entity->lightstate.deactivation);
-
- pclose_struct();
-
- if (traverser_state->nrs_state) fxopns();
- }
- #else /* USING_PHIGS */
- #endif /* USING_PHIGS */
- return(0);
- } /* End do_lightstate */
-
- /*----------------------------------------------------------------------*\
- | Procedure : do_activeview(* BIF_Traverser_state, *BIF_All)
- |------------------------------------------------------------------------
- | Description : Edit basestate value for this BIF attribute
- |------------------------------------------------------------------------
- | Return : Error code
- \*----------------------------------------------------------------------*/
- int do_activeview( traverser_state, entity )
- BIF_Traverser_state *traverser_state;
- BIF_All *entity;
- {
- /* Set this because GET_MATRIX3 needs it */
- traverser_state->id_active_view = entity->ind.ind;
-
- #ifdef USING_PHIGS
- do_generic_i(traverser_state,entity->ind.ind,
- BBS_PSVWI,pset_view_ind, DEFAULT_VIEWINDEX);
- #else /* ifdef USING_PHIGS */
- #endif /* ifdef USING_PHIGS */
- /* Return Error Code */
- return(0); /* No Error */
- } /* End do_activeview */
-
-
- /*----------------------------------------------------------------------*\
- | Procedure : void init_base_state(int, int)
- |--------------------------------------------------------------------------|
- | Description : Set up the base_state structure.
- | This structure contains all the
- | attributes which are allowed outside of bif structures but not
- | allowed outside of phigs structures
- |--------------------------------------------------------------------------|
- | Return: |
- \*----------------------------------------------------------------------*/
- /*ARGSUSED*/
- void init_base_state(base_state_stid,base_state_vid)
- int base_state_stid, base_state_vid;
- {
-
- #ifdef USING_PHIGS
- Pgcolr gcolr;
-
- /* Always use general color which supports indirect and RGB */
- gcolr.type = PINDIRECT;
- gcolr.val.ind = 2;
-
- /*------------------------------------------------------------*\
- | Make the sure the base is empty
- \*------------------------------------------------------------*/
- pempty_struct((Pint)base_state_stid);
-
-
- popen_struct((Pint)base_state_stid);
- plabel((Pint) BBS_PSVWI); /* Use Default active view */
- fxnoop(1); /* */
- plabel((Pint)BBS_PSCHH); /* char_height */
- fxnoop(1); /* pschh char_height */
- plabel((Pint)BBS_PSCHUP); /* char_up_vector */
- fxnoop(2); /* pschup char_up_vector */
- plabel((Pint)BBS_PSEDCI); /* edgecolorindex */
- pset_edge_colr(&gcolr); /* */
- plabel((Pint)BBS_PSEDFG); /* edge_flag */
- fxnoop(1); /* psedfg edge_flag */
- plabel((Pint)BBS_PSEWSC); /* edge_width */
- fxnoop(1); /* psewsc edge_width */
- plabel((Pint)BBS_PSGLT3); /* global_transformation3 */
- fxnoop(16); /* psgmt3 global_transformation3*/
- plabel((Pint)BBS_PXSZBM); /* hlhs_removal */
- fxnoop(2); /* pshir hlhs_removal */
- plabel((Pint)BBS_PSICI); /* interior_color_index */
- pset_int_colr(&gcolr); /* psici interior_color_index*/
- plabel((Pint)BBS_PSIRE); /* interior_lighting */
- fxnoop(2); /* psilm interior_lighting */
- plabel((Pint)BBS_PSISM); /* interior_shading */
- fxnoop(2); /* psism interior_shading */
- plabel((Pint)BBS_FPSBFCI); /* backfaceinteriorcolorindex*/
- pset_back_int_colr(&gcolr); /* */
- plabel((Pint)BBS_PSPLCI); /* line_color_index */
- pset_line_colr(&gcolr); /* psplci line_color_index */
- plabel((Pint)BBS_PSLN); /* line_type */
- fxnoop(1); /* psln line_type */
- plabel((Pint)BBS_PSLWSC); /* line_width */
- fxnoop(1); /* pslwsc line_width */
- plabel((Pint)BBS_PSLOT3); /* local_transformation3 */
- fxnoop(17); /* pslmt3 local_transformation3*/
- plabel((Pint)BBS_PSPMCI); /* marker_color_index */
- pset_marker_colr(&gcolr); /* pspmci marker_color_index*/
- plabel((Pint)BBS_PSMKSC); /* marker_size */
- fxnoop(1); /* psmksc marker_size */
- plabel((Pint)BBS_PSMK); /* marker_type */
- fxnoop(1); /* psmk marker_type */
- plabel((Pint)BBS_PSAP); /* surface_properties */
- fxnoop(7); /* pssp surface_properties*/
- plabel((Pint)BBS_PSTXAL); /* text_align */
- fxnoop(2); /* fxsattxal text_align */
- plabel((Pint)BBS_PSTXCI); /* text_color_index */
- pset_text_colr(&gcolr); /* pstxci text_color_index */
- plabel((Pint)BBS_PSTXFN); /* text_font */
- fxnoop(1); /* pstxfn text_font */
- plabel((Pint)BBS_PSTXP); /* text_path */
- fxnoop(1); /* fxsattxp text_path */
- plabel((Pint)BBS_PSTXPR); /* text_prec */
- fxnoop(1); /* pstxpr text_prec */
- plabel((Pint)BBS_PSIS); /* interior_style */
- fxnoop(2); /* psis interior_style */
- plabel((Pint)BBS_PSICO); /* interior_color */
- fxnoop(3); /* */
- plabel((Pint)BBS_PSPLCO); /* marker_color */
- fxnoop(3); /* */
- plabel((Pint)BBS_PSPMCO); /* line_color */
- fxnoop(3); /* */
- plabel((Pint)BBS_PSTXCO); /* text_color */
- fxnoop(3); /* */
- plabel((Pint)BBS_FPSBFIC); /* do_backfaceinteriorcolor */
- fxnoop(1); /* */
- plabel((Pint)BBS_PSECO); /* edge_color */
- fxnoop(3); /* */
- plabel((Pint)BBS_PSANS); /* annotextstyle */
- fxnoop(1); /* */
- plabel((Pint)BBS_PSATCH); /* annotextcharheight */
- fxnoop(1); /* */
- plabel((Pint)BBS_PSCHXP); /* charexp */
- fxnoop(1); /* */
- plabel((Pint)BBS_PSCHSP); /* charspace */
- fxnoop(1); /* */
- plabel((Pint)BBS_PSDCI); /* depthcueindex */
- fxnoop(1); /* */
- plabel((Pint)BBS_PSEDT); /* edgetype */
- fxnoop(1); /* */
- plabel((Pint)BBS_FPSIPI); /* interiorpatternindex */
- fxnoop(2); /* */
- plabel((Pint)BBS_PSPLSM); /* lineshading */
- fxnoop(1); /* */
- plabel((Pint)BBS_PSATCHUP);/* */
- fxnoop(2); /* */
- plabel((Pint)BBS_FPBFPR); /* */
- fxnoop(1); /* */
- plabel((Pint)BBS_FPBFP); /* */
- fxnoop(7); /* pssp surface_properties*/
- plabel((Pint)BBS_PSLSS); /* light_state */
- fxnoop(20); /* pslss light_state */
-
- plabel((Pint)BBS_END ); /* end of base state */
- pclose_struct();
- setNextLabel(BBS_END + 1);
- #endif /* USING_PHIGS */
- }
-