91 lines
2.6 KiB
C
91 lines
2.6 KiB
C
#ifndef lint
|
|
static char sccsid[] = "@(#)polysubs.c 1.1 94/10/31 Copyr 1985-9 Sun Micro";
|
|
#endif
|
|
|
|
/*
|
|
* Copyright (c) 1985, 1986, 1987, 1988, 1989 by Sun Microsystems, Inc.
|
|
* Permission to use, copy, modify, and distribute this software 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 are retained, and that the name
|
|
* of Sun Microsystems, Inc., not be used in advertising or publicity
|
|
* pertaining to this software without specific, written prior permission.
|
|
* Sun Microsystems, Inc., makes no representations about the suitability
|
|
* of this software or the interface defined in this software for any
|
|
* purpose. It is provided "as is" without express or implied warranty.
|
|
*/
|
|
|
|
/*
|
|
bugs:
|
|
line endstyle
|
|
more vdipw atts
|
|
*/
|
|
|
|
#include "cgipriv.h"
|
|
|
|
View_surface *_cgi_vws; /* current view surface */
|
|
Outatt *_cgi_att; /* structure containing current attributes */
|
|
int _cgi_pix_mode; /* pixrect equivalent of drawing mode */
|
|
|
|
static short _cgi_tex_dotted[] = {1, 5, 1, 5, 1, 5, 1, 5, 0};
|
|
static short _cgi_tex_dashed[] = {7, 7, 7, 7, 0};
|
|
static short _cgi_tex_dashdot[] = {7, 3, 1, 3, 7, 3, 1, 3, 0};
|
|
static short _cgi_tex_dashdotdotted[] = {9, 3, 1, 3, 1, 3, 1, 3, 0};
|
|
static short _cgi_tex_longdashed[] = {13, 7, 0};
|
|
|
|
Pr_texture *_cgi_line_setup(texP, brushP, npts)
|
|
Pr_texture *texP;
|
|
Pr_brush *brushP;
|
|
int npts;
|
|
{
|
|
brushP->width = _cgi_vws->conv.line_width;
|
|
|
|
switch (_cgi_att->line.style)
|
|
{
|
|
case SOLID:
|
|
return ((Pr_texture *) 0);
|
|
case DOTTED:
|
|
texP->pattern = _cgi_tex_dotted;
|
|
break;
|
|
case DASHED:
|
|
texP->pattern = _cgi_tex_dashed;
|
|
break;
|
|
case DASHED_DOTTED:
|
|
texP->pattern = _cgi_tex_dashdot;
|
|
break;
|
|
case DASH_DOT_DOTTED:
|
|
texP->pattern = _cgi_tex_dashdotdotted;
|
|
break;
|
|
case LONG_DASHED:
|
|
texP->pattern = _cgi_tex_longdashed;
|
|
break;
|
|
}
|
|
texP->offset = 0;
|
|
texP->options.startpoint = 0;
|
|
texP->options.endpoint = 0;
|
|
texP->options.balanced = 0;
|
|
texP->options.givenpattern = 0;
|
|
texP->options.res_fat = 0;
|
|
texP->options.res_poly = 0;
|
|
texP->options.res_close = 0;
|
|
texP->options.res_mvlist = 0;
|
|
|
|
switch (_cgi_att->endstyle)
|
|
{
|
|
case NATURAL:
|
|
break;
|
|
case BEST_FIT:
|
|
/*
|
|
* Balancing is not currently done over the whole polyline. This
|
|
* produces ugly results, so drop through to POINT mode if so.
|
|
*/
|
|
if (npts <= 2)
|
|
texP->options.balanced = 1;
|
|
case POINT:
|
|
texP->options.startpoint = 1;
|
|
texP->options.endpoint = 1;
|
|
break;
|
|
}
|
|
return (texP);
|
|
}
|