% This is
%		pkfootbows.mf
%
% Copyright (C) 1989-92  by Elmar Bartel.
%
% This program is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 1, or (at your option)
% any later version.
%
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this program; if not, write to the Free Software
% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
%
def DefineFootBows(
	% This macro depends on the values of qs and BottomSpace
	% and uses the makro ParallelPath.
	expr  BottomDist, %This is the space to BottomSpace
	     BowOneWidth, %This is the width of the main bow
	      FootHeight, %Distance from bottom of Bow0 to top of Bow3
	       BowTwoLoc, %Relative location of Bow2 between Bow3 and
	       		  % Bow1. 0 means position at position at Bow1,
			  % 1.0 means position at Bow3.
	   WidthToHeight, %Ratio of BowOneWidth/2 to Bowheight
	       BowTwoLen, %Length of Bow2 relative to Bow1
	     BowThreeLen  %Lenght of Bow3 relative to Bow1
	     ) =

	% All parameters are in pixels when not otherwise statet.
	% Points are numbered from 0 to 3 from lower to upper
	% Points to the left have suffix l, right suffix r
	% points without further suffix are in the center of the bows

	path    Bow[];
	numeric BowHeight;
	numeric l[],x[]l,x[]r,x[],y[]l,y[]r,y[];

	BowHeight = BowOneWidth*WidthToHeight/2;

	% We start with the first bow
	x1r + x1l = qs; x1r - x1l = BowOneWidth;
	y1 = BottomSpace + 2*BowHeight + BottomDist;
	x1 = .5qs;
	y1l = y1r = y1 - BowHeight;
	Bow1 = z1l .. {right} z1 .. z1r;

	z0 = z1 shifted (down*2*BowHeight);
	Bow0 = z1r .. {left} z0 .. z1l;

	Bow3= ParallelPath(Bow1,FootHeight-2*BowHeight);
	l3 = length(Bow3);
	cu:= (1-BowThreeLen)/2;
	Bow3:= subpath (cu*l3,(1-cu)*l3) of Bow3;
	z3l = point  0 of Bow3;
	z3  = point .5*length(Bow3) of Bow3;
	z3r = point infinity of Bow3;

	if proofing >0:
		show point 0 of reverse Bow3;
		show z3r;
	fi;

	Bow2= ParallelPath(Bow1,(FootHeight-2*BowHeight)*BowTwoLoc);
	l2 = length(Bow2);
	cu:= (1-BowTwoLen)/2;
	Bow2:= subpath (cu*l2,(1-cu)*l2) of Bow2;
	z2l = point  0 of Bow2;
	z2  = point .5length(Bow3) of Bow2;
	z2r = point  infinity of Bow2;
	labels(1l,1,1r,2l,2r,3l,3r);
enddef;

%DefineFootBows( .55qs,	% BowOneWidth
%		.25qs,	% FootHeight	
%		.40,	% BowTwoLoc
%		.13,	% WidthToHeight
%		.90,	% BowTwoLen
%		.95);	% BowThreeLen
