/* * Vdi attribute funcs library interface * * vswr_mode set writing mode * vs_color set color index to rgb * vsl_type set polyline type * vsl_udsty set user defined line style * vsl_width set polyline width * vsl_color set polyline color index * vsl_ends set polyline end styles * vsm_type set polymarker type * vsm_height set polymarker height (in y coord units) * vsm_color set polymarker color index * vst_height set text height (baseline to top of char cell) * vst_point set char cell point size * vst_rotation set char baseline rot * vst_font set text face * vst_color set text color * vst_effects set text atribs * vst_alignment set text alignment * vsf_interior set fill interior style * vsf_fill set fill style (alias vsf_style) * vsf_color set fill color * vsf_perimeter set fill perimeter visibility * vsf_udpat set user defied fill pattern * * ++jrb bammi@cadence.com * modified: mj -- ntomczak@vm.ucs.ualberta.ca * * 92/03/10 mmn -- Markus_Nick@mz.maus.de * changed return type of vst_height from void to int * because vst_height returns the selected height */ #include "common.h" #ifdef __DEF_ALL__ #define L_vswr_mod #define L_vs_color #define L_vsl_type #define L_vsl_udst #define L_vsl_widt #define L_vsl_colo #define L_vsl_ends #define L_vsm_type #define L_vsm_heig #define L_vsm_colo #define L_vst_heig #define L_vst_poin #define L_vst_rota #define L_vst_font #define L_vst_colo #define L_vst_effe #define L_vst_alig #define L_vsf_inte #define L_vsf_fill /* synonymous to vsf_style */ #define L_vsf_colo #define L_vsf_peri #define L_vsf_udpa #endif /* __DEF_ALL__ */ #ifdef L_vswr_mod /* vswr_mode set writing mode * returns writing mode */ int vswr_mode(int handle, int mode) { _intin[0] = mode; __vdi__(VDI_CONTRL_ENCODE(32, 0, 1, 0), handle); return (int)_intout[0]; } #endif /* L_vswr_mod */ #ifdef L_vs_color /* vs_color set color index to rgb * returns void */ void vs_color(int handle, int index, int rgb[]) { _intin[0] = index; _intin[1] = rgb[0]; _intin[2] = rgb[1]; _intin[3] = rgb[2]; __vdi__(VDI_CONTRL_ENCODE(14, 0, 4, 0), handle); } #endif /* L_vs_color */ #ifdef L_vsl_type /* vsl_type set polyline type * returns type selected */ int vsl_type(int handle, int style) { _intin[0] = style; __vdi__(VDI_CONTRL_ENCODE(15, 0, 1, 0), handle); return (int)_intout[0]; } #endif /* L_vsl_type */ #ifdef L_vsl_udst /* vsl_udsty set user defined line style * returns void */ void vsl_udsty(int handle, int pat) { _intin[0] = pat; __vdi__(VDI_CONTRL_ENCODE(113, 0, 1, 0), handle); } #endif /* L_vsl_udst */ #ifdef L_vsl_widt /* vsl_width set polyline width * returns selected width in x-axis units */ int vsl_width(int handle, int width) { _ptsin[0] = width; _ptsin[1] = 0; __vdi__(VDI_CONTRL_ENCODE(16, 1, 0, 0), handle); return (int)_ptsout[0]; } #endif /* L_vsl_widt */ #ifdef L_vsl_colo /* vsl_color set polyline color index * returns setting */ int vsl_color(int handle, int index) { _intin[0] = index; __vdi__(VDI_CONTRL_ENCODE(17, 0, 1, 0), handle); return (int)_intout[0]; } #endif /* L_vsl_colo */ #ifdef L_vsl_ends /* vsl_ends set polyline end styles * returns void */ void vsl_ends(int handle, int begstyle, int endstyle) { _intin[0] = begstyle; _intin[1] = endstyle; __vdi__(VDI_CONTRL_ENCODE(108, 0, 2, 0), handle); } #endif /* L_vsl_ends */ #ifdef L_vsm_type /* vsm_type set polymarker type * returns type selected */ int vsm_type(int handle, int symbol) { _intin[0] = symbol; __vdi__(VDI_CONTRL_ENCODE(18, 0, 1, 0), handle); return (int)_intout[0]; } #endif /* L_vsm_type */ #ifdef L_vsm_heig /* vsm_height set polymarker height (in y coord units) * returns void (height in _ptsout [0][1]) */ void vsm_height(int handle, int height) { _ptsin[0] = 0; _ptsin[1] = height; __vdi__(VDI_CONTRL_ENCODE(19, 1, 0, 0), handle); } #endif /* L_vsm_heig */ #ifdef L_vsm_colo /* vsm_color set polymarker color index * returns selected color */ int vsm_color(int handle, int index) { _intin[0] = index; __vdi__(VDI_CONTRL_ENCODE(20, 0, 1, 0), handle); return (int)_intout[0]; } #endif /* L_vsm_colo */ #ifdef L_vst_heig /* vst_height set text height (baseline to top of char cell) * returns void (char info args) */ int vst_height(int handle, int height, int *charw, int *charh, int *cellw, int *cellh) { _ptsin[0] = 0; _ptsin[1] = height; __vdi__(VDI_CONTRL_ENCODE(12, 1, 0, 0), handle); *charw = _ptsout[0]; *charh = _ptsout[1]; *cellw = _ptsout[2]; *cellh = _ptsout[3]; return (int)_intout[0]; /* mmn */ } #endif /* L_vst_heig */ #ifdef L_vst_poin /* vst_point set char cell point size * returns selected cell height in points (and info in args) */ int vst_point(int handle, int point, int *charw, int *charh, int *cellw, int *cellh) { _intin[0] = point; __vdi__(VDI_CONTRL_ENCODE(107, 0, 1, 0), handle); *charw = _ptsout[0]; *charh = _ptsout[1]; *cellw = _ptsout[2]; *cellh = _ptsout[3]; return (int)_intout[0]; } #endif /* L_vst_poin */ #ifdef L_vst_rota /* vst_rotation set char baseline rot * returns angle selected */ int vst_rotation(int handle, int ang) { _intin[0] = ang; __vdi__(VDI_CONTRL_ENCODE(13, 0, 1, 0), handle); return (int)_intout[0]; } #endif /* L_vst_rota */ #ifdef L_vst_font /* vst_font set text face * returns face selected */ int vst_font(int handle, int font) { _intin[0] = font; __vdi__(VDI_CONTRL_ENCODE(21, 0, 1, 0), handle); return (int)_intout[0]; } #endif /* L_vst_font */ #ifdef L_vst_colo /* vst_color set text color * returns selected color */ int vst_color(int handle, int index) { _intin[0] = index; __vdi__(VDI_CONTRL_ENCODE(22, 0, 1, 0), handle); return (int)_intout[0]; } #endif /* L_vst_colo */ #ifdef L_vst_effe /* vst_effects set text atribs * returns style actually selected */ int vst_effects(int handle, int effects) { _intin[0] = effects; __vdi__(VDI_CONTRL_ENCODE(106, 0, 1, 0), handle); return (int)_intout[0]; } #endif /* L_vst_effe */ #ifdef L_vst_alig /* vst_alignment set text alignment * returns void (results in args) */ void vst_alignment(int handle, int hin, int vin, int *hout, int *vout) { _intin[0] = hin; _intin[1] = vin; __vdi__(VDI_CONTRL_ENCODE(39, 0, 2, 0), handle); *hout = _intout[0]; *vout = _intout[1]; } #endif /* L_vst_alig */ #ifdef L_vsf_inte /* vsf_interior set fill interior style * returns style selected */ int vsf_interior(int handle, int style) { _intin[0] = style; __vdi__(VDI_CONTRL_ENCODE(23, 0, 1, 0), handle); return (int)_intout[0]; } #endif /* L_vsf_inte */ #ifdef L_vsf_fill /* vsf_fill set fill style * returns style selected */ __asm__(".stabs \"_vsf_style\",5,0,0,_vsf_fill"); /* dept of clean tricks */ int vsf_fill(int handle, int style) { _intin[0] = style; __vdi__(VDI_CONTRL_ENCODE(24, 0, 1, 0), handle); return (int)_intout[0]; } #endif /* L_vsf_fill */ #ifdef L_vsf_colo /* vsf_color set fill color * returns color index selected */ int vsf_color(int handle, int index) { _intin[0] = index; __vdi__(VDI_CONTRL_ENCODE(25, 0, 1, 0), handle); return (int)_intout[0]; } #endif /* L_vsf_colo */ #ifdef L_vsf_peri /* vsf_perimeter set fill perimeter visibility * returns visibility */ int vsf_perimeter(int handle, int vis) { _intin[0] = vis; __vdi__(VDI_CONTRL_ENCODE(104, 0, 1, 0), handle); return (int)_intout[0]; } #endif /* L_vsf_peri */ #ifdef L_vsf_udpa /* vsf_udpat set user defined fill pattern * returns void */ void vsf_udpat(int handle, int pat[], int planes) { #ifndef __MSHORT__ register int i, j; j = planes << 4; for(i = 0; i < j; i++) _intin[i] = pat[i]; __vdi__(VDI_CONTRL_ENCODE(112, 0, j, 0), handle); #else _vdiparams[1] = &pat[0]; __vdi__(VDI_CONTRL_ENCODE(112, 0, (planes << 4), 0), handle); _vdiparams[1] = (void *)&_intin[0]; #endif } #endif /* L_vsf_udpa */ /* -eof- */