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
  );