PHIGS fuggvenyek a javasolt ill. lehetseges parameterezesekkel ============================================================== A tipusdefiniciokat lasd a phigs.h-ban! ============================================================== Controlling, Workstation ----------------------------- popen_phigs( /* phigs nyitasa es inicializalasa */ const char *error_file, /* PDEF_ERR_FILE errorfile neve*/ size_t buffer_size /* PDEF_MEM_SIZE pufferterulet */ ); pclose_phigs( /* PHIGS kornyezet lezarasa */ void ); popen_ws( Pint workstation_id, const void *connection_id, /* NULL */ Pint workstation_type /* phigs_ws_type_x_tool */ ); pclose_ws( /* lezarja az adott workstation-t */ Pint workstation_id );
Workstation Color Table ----------------------- pset_colr_rep( /*adott WS szinpalettajaban modosit adott indexu elemet*/ Pint ws_id, Pint color_index, Pcol_rep *rep ); Strukturak ---------- popen_struct( /* struktura nyitasa, ha nem volt, letrehozza */ Pint structure_id ); pclose_struct( /* aktualis struktura lezarasa */ void ); ppost_struct( /* struktura atkuldese a workstation-re */ Pint workstation_id, Pint structure_id, Pfoat priority /* (Pfloat) [0.0-1.0] */ ); punpost_struct( /* struktura visszavonása a workstation-rol */ Pint workstation_id, Pint structure_id, ); pupd_ws( /* WS megjelenitese*/ Pint workstation_id, Pregen_flag regeneration_flag /* {PFLAG_PERFORM, PFLAG_POSTPONE} */ ); pset_disp_upd_st( /* WS display update mod beallitasa */ Pint ws_id, Pint deferral_mode, /* {PDEFER_ASAP, PDEFER_BNIG, PDEFER_BNIL, PDEFER_ASTI, PDEFER_WAIT} */ Pint modification_mode /* {PMODE_NIVE, PMODE_UWOR, PMODE_UQUM} */ ); Strukturak szerkesztese -----------------------
pset_edit_mode( /*struktura editalashoz szerkesztesi mod beallitasa*/ Pint mode /* {PEDIT_INSERT, PEDIT_REPLACE} */ ); plabel( /*cimke hozzaadasa a strukturahoz*/ Pint label_id ); pset_elem_ptr( /*elempointer abszolut poziciojanak megadasa a strukturaban*/ Pint ep_value ); pset_elem_ptr_label( /* elempointer cimkere allitasa*/ Pint label_id ); poffset_elem_ptr( /* elempointer reletiv pozicionalasa*/ Pint ep_offset ); Vonal primitivek ----------------- ppolyline( /*2D: polyline primitiv hozzaadasa a strukturahoz */ const Ppoint_list *point_list ); ppolyline3( /*3D: polylin3 primitiv hozzaadasa a strukturahoz */ const Ppoint_list3 *point_list ); Vonal attributumok ------------------ pset_linecolr( /* vonal szinenek beallitasa*/ Pgcolr *col ); pset_linetype( /* vonaltipus beallitasa*/ Pint linetype /* {PLINE_SOLID (folytonos), PLINE_DASH (szaggatott), PLINE_DOT (pontozott),PLINE_DASH_DOT (pontvonal)} */ ); pset_linewidth( /* vonalvastagsag beallitasa */ Pfloat width /* >= 1.0 */ ); Teruleti primitivek -------------------- pfill_area( /* 2D: letrehoz egy 'fill_area' strukturaelemet, nincs ele */ Ppoint_list *point_list ); pfill_area3( /* 3D: letrehoz egy 'fill_area3' strukturaelemet, nincs ele */ Ppoint_list3 *point_list ); pfill_area_set( /* 2D: letrehoz egy 'fill_area_set' strukturaelemet, (van ele, tobb pontlistaval leirhato) */ Ppoint_list_list *point_list_set ); pfill_area_set3( /* 3D: letrehoz egy 'fill_area_set' strukturaelemet, (van ele, tobb pontlistaval leirhato) */ Ppoint_list_list3 *point_list_set ); Teruleti attributumok --------------------- pset_int_colr( /* kitoltes szinenek beallitasa*/ Pgcolr *col ); pset_int_style( /* kitoltes stilusanak beallitasa*/ Pint interior_style /* {PSTYLE_SOLID (tomor), PSTYLE_EMPTY (ures), PSTYLE_HOLLOW (ures,de az elek megjelennek a kitoltesi szinnel ), PSTYLE_HATCH (sraffozott), PSTYLE_PAT (minta)*/ ); pset_edge_flag( /*ellel rendelkezo teruleti primitiv elenek megjeleniteset engedelyezi/tiltja*/ Pint edge_flag /* {PEDGE_ON (engedelyezes), PEDGE_OFF (tiltas)} */ ); pset_edgetype( /* eltipus beallitasa*/ Pint linetype /* PLINE_SOLID(folytonos), PLINE_DASH(szaggatott),PLINE_ DOT(pontozott),PLINE_DASH_DOT(pont-vonal) */ ); Polymarker primitivek es attributumok ------------------------------------- ppolymarker( const Ppoint_list *point_list ); ppolymarker3( const Ppoint_list3 *point_list ); pset_marker_colr( Pgcolr *col ); pset_marker_size( Pfloat size ); pset_marker_type( Pint type /* PMARKER_DOT, PMARKER_PLUS, PMARKER_ASTERISK, PMARKER_CIRCLE, PMARKER_CROSS */ ); Text primitivek ---------------- ptext( Ppoint *location, char *text ); ptext3( Ppoint3 *location, Pvec dir[2], char *text ); Text attributumok ----------------- pset_char_ht( Pfloat char_height ); pset_text_align( Ptext_align *text_align /* .hor = {PHOR_NORM,PHOR_LEFT,PHOR_CTR,PHOR_RIGHT} */
/* .vert = {PVERT_NORM,PVERT_TOP(textbox teteje),PVERT_CAP(text teteje),*/
/* PVERT_HALF(textbox kozepe),PVERT_BASE(text alja),PVERT_BOTTOM(textbox alja)} */ ); pset_text_colr( /* text szinenek beallitasa*/ Pgcolr *col ); pset_char_expan( /* text expaziojanak beallitasa*/ Pfloat expan );
tovabbi text attributumok (gyakorlaton nem hasznaljuk):
------------------------------------------------
pset_text_font(Pint font);
pset_char_up_vect(Pvec *up_vec);
pset_text_path(Ptext_path path); /*text iranya:PPATH_RIGHT,PPATH_LEFT, PPATH_UP,PPATH_DOWN*/
pset_char_space(Pfloat spacing);
pset_text_prec (Ptext_prec pecision); /* PPREC_STRING,PPREC_CHAR,PPREC_STROKE*/
Modell transzformaciok ---------------------- ptranslate( /* 2D eltolashoz kitolti a transzformacios matrixot*/ Pvec *trans_vec, /*input: eltolasvektor (.del_x, .del_y*/ Pint *error, Pmatrix xform /*output: 2D forgato matrix*/ ); ptranslate3( /* 3D eltolashoz kitolti a transzformacios matrixot*/ Pvec3 *trans_vec, /*input: eltolasvektor (.del_x, .del_y, .del_z*/ Pint *error, Pmatrix3 xform /*output:3D forgato matrix*/ ); protate( /* 2D forgatashoz kitolti a transzformacios matrixot*/ Pfloat *theta_in_rad, /*forgatas szoge*/ Pint *error, Pmatrix xform ); protate_x( /* 3D x-tengely koruli forgatashoz kitolti a transzformacios matrixot*/ Pfloat *theta_in_rad, /*forgatas szoge*/ Pint *error, Pmatrix3 xform ); protate_y( /* 3D y-tengely koruli forgatashoz kitolti a transzformacios matrixot*/ Pfloat *theta_in_rad, /*forgatas szoge*/ Pint *error, Pmatrix3 xform ); protate_z( /* 3D z-tengely koruli forgatashoz kitolti a transzformacios matrixot*/ Pfloat *theta_in_rad, /*forgatas szoge*/ Pint *error, Pmatrix3 xform ); pscale( /* 2D skalazashoz kitolti a transzformacios matrixot*/ Pvec *scale_vec, Pint *error, Pmatrix xform ); pscale3( /* 3D skalazashoz kitolti a transzformacios matrixot*/ Pvec3 *scale_vec, Pint *error, Pmatrix3 xform ); pbuild_tran_matrix( /* altalanos 2D trafo megadasa fixponttal */
Ppoint *local_origin, /* fixpont (.x, .y) */ Pvec *tr_vec, /* eltolasvektor (.delta_x, .delta_y) */ Pfloat theta_in_rad, /* z-tengely koruli elforgatas szoge*/ Pvec *sc_vec, /* skalavektor (.delta_x, .delta_y) */ Pint *error, /* output: hibakod*/ Pmatrix xform /* output: 2D transzformacios matrix*/ ); /* a transzformaciok sorrendje: 1. skalazas es forgatas a fixpont korul; 2. eltolas */ pbuild_tran_matrix3( /* altalanos 3D trafo megadasa fixponttal */ Ppoint3 *local_origin, /* fixpont (.x, .y, .z) */ Pvec3 *tr_vec, /* eltolasvektor (.delta_x, .delta_y, .delta_z) */ Pfloat x_theta_in_rad, /* x-tengely koruli elforgatas szoge*/ Pfloat y_theta_in_rad, /* y-tengely koruli elforgatas szoge*/ Pfloat z_theta_in_rad, /* z-tengely koruli elforgatas szoge*/ Pvec3 *sc_vec, /* skalavektor (.delta_x, .delta_y, .delta_z) */ Pint *error, /* output: hibakod*/ Pmatrix3 xform /* output: 3D transzformacios matrix*/ ); pcompose_matrix( /*2D transzformacios matrixok kompozicioja (3*3)*/ Pmatrix left_matrix, /* baloldali matrix*/ Pmatrix right_matrix, /* jobboldali matrix*/ Pint *error, /* output: hibakod*/ Pmatrix result_matrix /* output: eredmeny matrix*/ ); pcompose_matrix3( /*3D transzformacios matrixok kompozicioja (3*3)*/ Pmatrix3 left_matrix, /* baloldali matrix*/ Pmatrix3 right_matrix, /* jobboldali matrix*/ Pint *error, /* output: hibakod*/ Pmatrix3 result_matrix /* output: eredmeny matrix*/ ); pcompose_tran_matrix( /*meglevo 2D trafomatrixhoz(A) tovabbi fix pont, skala, elforgatas es eltolas (B) hozzaadasa-> (C)*/ Pmatrix in_right_matrix, /*meglevo (jobboldali) matrix: A*/ /*B matrix megadasa. Sorrend: fixpont koruli skalazas es forg.; eltolas*/ Ppoint *local_origin, /* fixpont (.x, .y) */ Pvec *tr_vec, /* eltolasvektor (.delta_x, .delta_y) */ Pfloat theta_in_rad, /* z-tengely koruli elforgatas szoge*/ Pvec *sc_vec, /* skalavektor (.delta_x, .delta_y) */ Pint *error, /* output: hibakod*/ Pmatrix out_matrix /* output: B*A matrix */ ); pcompose_tran_matrix3( /*meglevo 3D trafomatrixhoz(A) tovabbi fix pont, skala, elforgatas es eltolas (B) hozzaadasa-> (C)*/ Pmatrix3 in_right_matrix, /*meglevo (jobboldali) matrix: A*/ /*B matrix megadasa. Sorrend: fixpont koruli skalazas es forg.; eltolas*/ Ppoint3 *local_origin, /* fixpont (.x, .y, .z) */ Pvec3 *tr_vec, /* eltolasvektor (.delta_x, .delta_y, .delta_z) */ Pfloat x_theta_in_rad, /* x-tengely koruli elforgatas szoge*/ Pfloat y_theta_in_rad, /* y-tengely koruli elforgatas szoge*/ Pfloat z_theta_in_rad, /* z-tengely koruli elforgatas szoge*/ Pvec3 *sc_vec, /* skalavektor (.delta_x, .delta_y, .delta_z) */ Pint *error, /* output: hibakod*/
Pmatrix3 out_matrix /* output: B*A matrix */ );
/****** modell trafo: Pvilag= G * L * Pmodell* *****/ pset_local_tran( /* lokalis modelltranszformacio 2D-ben a transzformacios matrix alapjan*/ Pmatrix xform, Pint compose_type /* PTYPE_REPLACE(L <= xform), PTYPE_PRECONCAT (L <= L * xform), PTYPE_POSTCONCAT (L <= xform * L) */ ); pset_local_tran3( /* lokalis modelltranszformacio 3D-ben a transzformacios matrix alapjan*/ Pmatrix3 xform, Pint compose_type /* PTYPE_REPLACE (L <= xform), PTYPE_PRECONCAT (L <= L * xform), PTYPE_POSTCONCAT (L <= xform * L)*/ ); pset_global_tran( /* globalis modelltranszformacio 2D-ben a transzformacios matrix alapjan*/ Pmatrix xform ); /* G <= xform*/ pset_global_tran3( /* globalis modelltranszformacio 2D-ben a transzformacios matrix alapjan*/ Pmatrix3 xform ); /* G <= xform*/ Viewing -------- peval_view_map_matrix( Pview_map *mapping, Pint *error, Pmatrix view_map_matrix ); peval_view_map_matrix( Pview_map3 *mapping, Pint *error, Pmatrix3 view_map_matrix ); peval_view_ori_matrix( Ppoint *view_ref_point, Pvec *view_up_vector, Pint *error, Pmatrix view_orient_matrix ); peval_view_ori_matrix( Ppoint3 *view_ref_point, Pvec3 *view_plane_normal, Pvec3 *view_up_vector, Pint *error, Pmatrix3 view_orient_matrix ); pset_view_rep( Pint ws_id, Pint view_index, Pview_rep *view_rep ); pset_view_rep3( Pint ws_id, Pint view_index, Pview_rep3 *view_rep ); Struktura halozatok ------------------- pexec_struct( Pint str_id );