home *** CD-ROM | disk | FTP | other *** search
- /*
- * Vdi drawing primitives library interface
- *
- * v_bar bar
- * v_arc arc
- * v_pieslice pie
- * v_circle circle
- * v_ellarc elliptical arc
- * v_ellpie elliptical pie
- * v_ellipse ellipse
- * v_rbox rounded rect
- * v_rfbox rounded filled rect
- * v_justified justified text
- *
- * ++jrb bammi@cadence.com
- * modified: mj -- ntomczak@vm.ucs.ualberta.ca
- */
- #include <stddef.h>
- #include "common.h"
-
- #ifdef __DEF_ALL__
-
- #define L_v_bar
- #define L_v_arc
- #define L_v_piesli
- #define L_v_circle
- #define L_v_ellarc
- #define L_v_ellpie
- #define L_v_ellips
- #define L_v_rbox
- #define L_v_rfbox
- #define L_v_justif
-
- #endif /* __DEF_ALL__ */
-
-
- #ifdef L_v_bar
-
- /* v_bar bar
- * returns void
- */
- void v_bar(int handle, int pxyarray[])
- {
- #ifdef __MSHORT__ /* we have 16 bit ints, just change vdi params */
- _vdiparams[2] = (void *) &pxyarray[0];
- #else /* 32 bit ints - let's copy */
- register int i;
-
- for(i = 0; i < 4; i++)
- _ptsin[i] = pxyarray[i];
- #endif
-
- __vdi__(VDI_CONTRL_ENCODE(11, 2, 0, 1), handle);
-
- #ifdef __MSHORT__
- _vdiparams[2] = (void *)&_ptsin[0]; /* restore vdi parameters */
- #endif
- }
- #endif /* L_v_bar */
-
- #ifdef L_v_arc
-
- /* v_arc arc
- * returns void
- */
- void v_arc(int handle, int x, int y, int radius, int begang, int endang)
- {
- extern void bzero(void *, size_t);
-
- bzero(_ptsin, 8 * sizeof(short));
- _ptsin[0] = x;
- _ptsin[1] = y;
- _ptsin[6] = radius;
- _intin[0] = begang;
- _intin[1] = endang;
-
- __vdi__(VDI_CONTRL_ENCODE(11, 4, 2, 2), handle);
- }
- #endif /* L_v_arc */
-
- #ifdef L_v_piesli
-
- /* v_pieslice pie
- * returns void
- */
- void v_pieslice(int handle, int x, int y, int radius, int begang, int endang)
- {
- extern void bzero(void *, size_t);
-
- bzero(_ptsin, 8 * sizeof(short));
- _ptsin[0] = x;
- _ptsin[1] = y;
- _ptsin[6] = radius;
- _intin[0] = begang;
- _intin[1] = endang;
-
- __vdi__(VDI_CONTRL_ENCODE(11, 4, 2, 3), handle);
- }
- #endif /* L_v_piesli */
-
- #ifdef L_v_circle
-
- /* v_circle circle
- * returns void
- */
- void v_circle(int handle, int x, int y, int radius)
- {
- extern void bzero(void *, size_t);
-
- bzero(_ptsin, 6 * sizeof(short));
- _ptsin[0] = x;
- _ptsin[1] = y;
- _ptsin[4] = radius;
-
- __vdi__(VDI_CONTRL_ENCODE(11, 3, 0, 4), handle);
- }
- #endif /* L_v_circle */
-
- #ifdef L_v_ellarc
-
- /* v_ellarc elliptical arc
- * return void
- */
- void v_ellarc(int handle, int x, int y, int xrad, int yrad,
- int begang, int endang)
- {
- _ptsin[0] = x;
- _ptsin[1] = y;
- _ptsin[2] = xrad;
- _ptsin[3] = yrad;
- _intin[0] = begang;
- _intin[1] = endang;
-
- __vdi__(VDI_CONTRL_ENCODE(11, 2, 2, 6), handle);
- }
- #endif /* L_v_ellarc */
-
- #ifdef L_v_ellpie
-
- /* v_ellpie elliptical pie
- * return void
- */
- void v_ellpie(int handle, int x, int y, int xrad, int yrad,
- int begang, int endang)
- {
- _ptsin[0] = x;
- _ptsin[1] = y;
- _ptsin[2] = xrad;
- _ptsin[3] = yrad;
- _intin[0] = begang;
- _intin[1] = endang;
-
- __vdi__(VDI_CONTRL_ENCODE(11, 2, 2, 7), handle);
- }
- #endif /* L_v_ellpie */
-
- #ifdef L_v_ellips
-
- /* v_ellipse ellipse
- * returns void
- */
- void v_ellipse(int handle, int x, int y, int xrad, int yrad)
- {
- _ptsin[0] = x;
- _ptsin[1] = y;
- _ptsin[2] = xrad;
- _ptsin[3] = yrad;
-
- __vdi__(VDI_CONTRL_ENCODE(11, 2, 0, 5), handle);
- }
- #endif /* L_v_ellips */
-
- #ifdef L_v_rbox
-
- /* v_rbox rounded rect
- * returns void
- */
- void v_rbox(int handle, int pxyarray[])
- {
- #ifdef __MSHORT__ /* we have 16 bit ints, just change vdi params */
- _vdiparams[2] = (void *) &pxyarray[0];
- #else /* 32 bit ints - let's copy */
- register int i;
-
- for(i = 0; i < 4; i++)
- _ptsin[i] = pxyarray[i];
- #endif
-
- __vdi__(VDI_CONTRL_ENCODE(11, 2, 0, 8), handle);
-
- #ifdef __MSHORT__
- _vdiparams[2] = (void *)&_ptsin[0]; /* restore vdi parameters */
- #endif
- }
- #endif /* L_v_rbox */
-
- #ifdef L_v_rfbox
-
- /* v_rfbox rounded filled rect
- * returns void
- */
- void v_rfbox(int handle, int pxyarray[])
- {
- #ifdef __MSHORT__ /* we have 16 bit ints, just change vdi params */
- _vdiparams[2] = (void *) &pxyarray[0];
- #else /* 32 bit ints - let's copy */
- register int i;
-
- for(i = 0; i < 4; i++)
- _ptsin[i] = pxyarray[i];
- #endif
-
- __vdi__(VDI_CONTRL_ENCODE(11, 2, 0, 9), handle);
-
- #ifdef __MSHORT__
- _vdiparams[2] = (void *)&_ptsin[0]; /* restore vdi parameters */
- #endif
- }
- #endif /* L_v_rfbox */
-
- #ifdef L_v_justif
-
- /* v_justified justified text
- * returns void
- */
- void v_justified(int handle, int x, int y, char *str, int len,
- int word_space, int char_space)
- {
- register short *wptr = _intin;
-
- _ptsin[0] = x;
- _ptsin[1] = y;
- _ptsin[2] = len;
- _ptsin[3] = 0;
- *wptr++ = word_space;
- *wptr++ = char_space;
- while (0 != (*wptr = (unsigned char) *str++))
- wptr += 1;
-
- __vdi__(VDI_CONTRL_ENCODE(11, 2, (int)(wptr - _intin), 10), handle);
- }
- #endif /* L_v_justif */
-
- /* -eof- */
-