-- file: MFEnvelopesImpl4.mesa -- Pascal-to-Mesa translator output, translated at October 31, 1985 4:28:01 pm PST DIRECTORY PascalBasic, PascalWizardFiles, MFTypes, MFProcArray, MFInteraction, MFMath, MFSymbols, MFMoves, MFEdges, MFOctants, MFContours, MFEnvelopes; MFEnvelopesImpl4: PROGRAM IMPORTS MFProcArray, MFInteraction, MFMath, MFSymbols, MFMoves, MFEdges, MFOctants, MFContours, MFEnvelopes EXPORTS MFEnvelopes = PUBLIC BEGIN OPEN PascalBasic, PascalWizardFiles, MFTypes, MFProcArray, MFInteraction, MFMath, MFSymbols, MFMoves, MFEdges, MFOctants, MFContours, MFEnvelopes; DualMoves: PROCEDURE[H,P,Q: Halfword] = BEGIN R, S:Halfword;--511: M, N:PascalInteger;Mm0, Mm1:PascalInteger;K:PascalInteger;W, Ww:Halfword; SmoothBot, SmoothTop:PascalInteger[0..MoveSize];Xx, Yy, Xp, Yp, Delx, Dely, Tx, Ty:Scaled; --:511----519:--K_ INT[Mem[H]^.Hh.Lh]+1;Ww_Mem[H]^.Hh.Rh;W_Mem[Ww]^.Hh.Lh; Mm0_FloorUnscaled[Mem[ INT[P]+1]^.Int+Mem[ INT[W]+1]^.Int-XyCorr^[Octant]]; Mm1_FloorUnscaled[Mem[ INT[Q]+1]^.Int+Mem[ INT[Ww]+1]^.Int-XyCorr^[Octant]]; FOR i:INT IN [ INT[1 ].. INT[N1-N0+1 ]] DO N _ i; EnvMove^[N]_Mm1 ENDLOOP;EnvMove^[0]_Mm0;MovePtr_0; M_Mm0--:519--;R_P;{WHILE TRUE DO BEGIN IF R=Q THEN SmoothTop_MovePtr; WHILE Mem[R]^.Hh.B1#K DO--521:--BEGIN Xx_Mem[ INT[R]+1]^.Int+Mem[ INT[W]+1]^.Int; Yy_Mem[ INT[R]+2]^.Int+Mem[ INT[W]+2]^.Int+32768; IF Internal^[10]>65536 THEN BEGIN PrintNl[453];PrintInt[K];Print[454]; Unskew[Xx,Yy-32768,Octant];PrintTwo[CurX,CurY]; END; IF Mem[R]^.Hh.B1=65536 THEN BEGIN Delx_Xp-Xx;Yy_65536-Yy; {WHILE TRUE DO BEGIN IF M0 THEN Tx_Tx-1; M_FloorUnscaled[Xx+Tx];Ty_Ty-65536;MovePtr_MovePtr+1; IF Ty<65536 THEN GOTO Label31;Yy_Yy+65536; END ENDLOOP ; EXITS Label31 => NULL};IF M65536 THEN BEGIN Print[451];Unskew[Xp,Yp-32768,Octant]; PrintTwo[CurX,CurY];PrintNl[157]; END; M_FloorUnscaled[Xp-XyCorr^[Octant]]; MovePtr_FloorUnscaled[Yp-YCorr^[Octant]]-N0; IF MMovePtr--:520-- THEN EXIT; ENDLOOP;R_S; END ENDLOOP ;EXITS Label30 => NULL};--523: IF(M#Mm1)OR (MovePtr#N1-N0) THEN Confusion[50]; Move^[0]_D0+EnvMove^[1]-Mm0; FOR i:INT IN [ INT[1 ].. INT[MovePtr ]] DO N _ i; Move^[N]_EnvMove^[N+1]-EnvMove^[N]+1 ENDLOOP; Move^[MovePtr]_Move^[MovePtr]-D1; IF Internal^[35]>0 THEN SmoothMoves[SmoothBot,SmoothTop]; MoveToEdges[M0,N0,M1,N1];IF Mem[ INT[Q]+6]^.Int=1 THEN BEGIN W_Mem[H]^.Hh.Rh; SkewLineEdges[Q,W,Mem[W]^.Hh.Lh]; END--:523--; END;--:518 END.