/* phline.f -- translated by f2c (version 19961017).
You must link the resulting object file with the libraries:
-lf2c -lm (in that order)
*/
#include "f2c.h"
/* Common Block Declarations */
extern struct {
integer ndash;
real xldash[8], xid;
} zzdash_;
#define zzdash_1 zzdash_
/* Subroutine */ int phline_(real *x1, real *y1, real *x2, real *y2)
{
/* System generated locals */
real r__1, r__2;
/* Local variables */
static real xleft;
static integer id;
static real dx1, dy1, dx2, dy2, dx3, dy3;
extern /* Subroutine */ int zzphph_(real *, real *, real *, real *);
static real fac, xyl;
/* Draw a dashed line between 2 internal coordinate points; */
/* replaces old PHLINE, which is now renamed ZZPHPH */
/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*/
dx1 = *x1;
dy1 = *y1;
dx2 = *x2;
dy2 = *y2;
if (zzdash_1.ndash <= 1) {
zzphph_(&dx1, &dy1, &dx2, &dy2);
goto L9000;
}
L100:
/* Computing 2nd power */
r__1 = dx2 - dx1;
/* Computing 2nd power */
r__2 = dy2 - dy1;
xyl = sqrt(r__1 * r__1 + r__2 * r__2);
if (xyl <= 1e-5f) {
goto L9000;
}
id = (integer) zzdash_1.xid + 1;
xleft = (id - zzdash_1.xid) * (r__1 = zzdash_1.xldash[id - 1], dabs(r__1))
;
if (xyl <= xleft) {
if (zzdash_1.xldash[id - 1] > 0.f) {
zzphph_(&dx1, &dy1, &dx2, &dy2);
}
zzdash_1.xid += xyl / (r__1 = zzdash_1.xldash[id - 1], dabs(r__1));
goto L9000;
} else {
fac = xleft / xyl;
dx3 = dx1 + fac * (dx2 - dx1);
dy3 = dy1 + fac * (dy2 - dy1);
if (zzdash_1.xldash[id - 1] > 0.f) {
zzphph_(&dx1, &dy1, &dx3, &dy3);
}
dx1 = dx3;
dy1 = dy3;
zzdash_1.xid = (real) (id % zzdash_1.ndash);
goto L100;
}
L9000:
return 0;
} /* phline_ */
syntax highlighted by Code2HTML, v. 0.9.1