DECLARE SUB DrawBezier (x1!, y1!, x2!, y2!, c1x!, c1y!, c2x!, c2y!, col%) ' PRINT " http://www.moshplant.com/direct-or/bezier/math.html" ' DrawBezier x1!, y1!, x2!, y2!, c1x!, c1y!, c2x!, c2y!, 15 FOR f = 1 TO 75 file$ = LTRIM$(STR$(f) + ".txt") SCREEN 12 GOSUB drawit NEXT f END drawit: LOCATE 1, 1: PRINT file$, name$ OPEN "c:\fontnew\" + file$ FOR INPUT AS #1 DO UNTIL EOF(1) LINE INPUT #1, a$ 'LOCATE 2, 1: PRINT a$ IF LEFT$(a$, 4) = "NAME" THEN name$ = a$ END IF IF LEFT$(a$, 9) = "REFERENCE" THEN size = VAL(RIGHT$(a$, 6)) size = CINT(size / 300) SCREEN 12 WINDOW (size * -320, size * -240)-(size * 640, size * 480) END IF LOOP CLOSE 1 letter$ = "a" GOSUB doot letter$ = "b": GOSUB doot letter$ = "c" GOSUB doot letter$ = "d" GOSUB doot letter$ = "e" GOSUB doot letter$ = "f" GOSUB doot letter$ = "g" GOSUB doot doot: CLOSE 1 OPEN "c:\fontnew\" + file$ FOR INPUT AS #1 DO WHILE NOT EOF(1) LINE INPUT #1, a$ IF LEFT$(a$, 9) = "CHARACTER" THEN IF VAL(MID$(a$, 10, 4)) = ASC(letter$) THEN GOTO jumpover END IF END IF LOOP jumpover: SLEEP 1 CLS DO UNTIL EOF(1) LINE INPUT #1, a$ 'LOCATE 1, 1: PRINT file$, name$ LOCATE 2, 1: PRINT a$ IF LEFT$(a$, 7) = "CALLSUB" THEN PRINT a$ END IF IF LEFT$(a$, 7) = "SUBCHAR" THEN 'SLEEP 2 CLS END IF CIRCLE (0, 0), size * 8, 14 IF LEFT$(a$, 5) = "WIDTH" THEN wide = VAL(RIGHT$(a$, 6)) CIRCLE (wide, 0), size * 8, 14 END IF IF LEFT$(a$, 9) = "LINETO " THEN x2 = VAL(MID$(a$, 9, 9)) y2 = VAL(RIGHT$(a$, 9)) DrawBezier x, y, x2, y2, x2, y2, x2, y2, 14 x = x2 y = y2 'LINE -(x, y) END IF PSET (x, y) IF LEFT$(a$, 7) = "CURVETO" OR LEFT$(a$, 2) = "CT" THEN x1! = x y1! = y c1x! = VAL(MID$(a$, 9, 9)) c1y! = VAL(MID$(a$, 18, 9)) c2x! = VAL(MID$(a$, 27, 9)) c2y! = VAL(MID$(a$, 36, 9)) x2! = VAL(MID$(a$, 45, 9)) y2! = VAL(MID$(a$, 54, 9)) LINE -(c1x!, c1y!), 7 LINE -(c2x!, c2y!), 7 LINE -(x2!, y2!), 7 CIRCLE (c1x!, c1y!), size * 4, 7 CIRCLE (c2x!, c2y!), size * 4, 7 CIRCLE (x2!, y2!), size * 4, 7 DrawBezier x1!, y1!, x2!, y2!, c1x!, c1y!, c2x!, c2y!, 14 x = x2! y = y2! END IF IF LEFT$(a$, 9) = "MOVETO " THEN x = VAL(MID$(a$, 9, 9)) y = VAL(RIGHT$(a$, 9)) PSET (x, y) CIRCLE (x, y), size * 4, 7 END IF IF LEFT$(a$, 6) = "ENDSUB" THEN ' x = 0 ' y = 0 END IF IF LEFT$(a$, 7) = "ENDCHAR" THEN ' IF teest = ASC("@") THEN ' ' SLEEP ' END IF EXIT DO END IF LOOP CLOSE 1 RETURN SUB DrawBezier (x1!, y1!, x2!, y2!, c1x!, c1y!, c2x!, c2y!, col%) x! = x1! y! = y1! cx! = 3 * (c1x! - x1!) bx! = 3 * (c2x! - c1x!) - cx! ax! = x2! - x1! - cx! - bx! cy! = 3 * (c1y! - y1!) by! = 3 * (c2y! - c1y!) - cy! ay! = y2! - y1! - cy! - by! PSET (x!, y!), col% t! = 0 FOR t! = 0 TO 1 STEP .001 x! = ((ax! * t! + bx!) * t! + cx!) * t! + x1! y! = ((ay! * t! + by!) * t! + cy!) * t! + y1! PSET (x!, y!), col% LOCATE 4, 4: PRINT t! NEXT t! END SUB