DIRECTORY CD, CDCurves, CDImports, CDTexts, CDMakeProc, IO, Rope; CDMakeProcSomeImpl: CEDAR PROGRAM IMPORTS CDMakeProc, IO, Rope, CDTexts = BEGIN MakeCurves: PROC [env: CDMakeProc.Environment, ob: CD.Object, useW: BOOL, key: Rope.ROPE] RETURNS [Rope.ROPE] = { r: Rope.ROPE _ Rope.Cat["CDCurves.", key, "[points: "]; list: Rope.ROPE _ NIL; pp: CDCurves.CurveSpecific _ NARROW[ob.specific]; n: INT _ 0; CDMakeProc.MakePreamble[env, "CDCurves"]; FOR pl: LIST OF CD.Position _ pp.points, pl.rest WHILE pl#NIL DO n _ n+1; IF n=1 THEN list _ "LIST[" ELSE list _ Rope.Cat[list, ", "]; list _ Rope.Cat[list, CDMakeProc.PosToRope[pl.first]]; ENDLOOP; r _ Rope.Cat[r, list, "]"]; IF useW THEN r _ Rope.Cat[r, IO.PutFR[", w: %g", [integer[pp.w]]]]; r _ Rope.Cat[r, ", layer: ", CDMakeProc.MakeLayer[env, ob.layer], "].ob"]; RETURN [r]; }; MakeSplines: CDMakeProc.ObjectExpressionProc = { RETURN [ MakeCurves[env, NARROW[x], TRUE, "CreateSpline"] ]; }; MakeLines: CDMakeProc.ObjectExpressionProc = { RETURN [ MakeCurves[env, NARROW[x], TRUE, "CreateLine"] ]; }; MakePolygon: CDMakeProc.ObjectExpressionProc = { RETURN [ MakeCurves[env, NARROW[x], FALSE, "CreatePolygon"] ]; }; MakeFilledCurve: CDMakeProc.ObjectExpressionProc = { RETURN [ MakeCurves[env, NARROW[x], FALSE, "CreateFilledCurve"] ]; }; MakeText: CDMakeProc.ObjectExpressionProc = { SupportFont: PROC [env: CDMakeProc.Environment, font: CDTexts.CDFont] RETURNS [r: Rope.ROPE] = { x: REF; TRUSTED { x _ LOOPHOLE[font] }; r _ CDMakeProc.GetGlobalIdent[env, x]; IF r=NIL THEN { decl: Rope.ROPE; CDMakeProc.MakePreamble[env, "CDTexts"]; r _ CDMakeProc.ForceGlobalIdent[env, "font", x]; decl _ Rope.Cat[r, ": CDTexts.CDFont _ CDTexts.MakeFont[name: "]; decl _ Rope.Cat[decl, CDMakeProc.RopeToRope[tp.cdFont.supposedName], ", scale: ", IO.PutFR1["%g", IO.int[tp.cdFont.scaleI]]]; decl _ Rope.Cat[decl, "];"]; CDMakeProc.PlaceDeclarationM1[env, decl]; }; }; r: Rope.ROPE _ "CDTexts.Create[text: "; fontIdent: Rope.ROPE; ob: CD.Object _ NARROW[x]; tp: CDTexts.TextSpecific _ NARROW[ob.specific]; flip: BOOL _ CDTexts.IsFlipText[ob]; fontIdent _ SupportFont[env, tp.cdFont]; CDMakeProc.MakePreamble[env, "CDTexts"]; r _ Rope.Cat[r, CDMakeProc.RopeToRope[tp.text], ", font: ", fontIdent]; r _ Rope.Cat[r, ", layer: ", CDMakeProc.MakeLayer[env, ob.layer]]; r _ Rope.Cat[r, ", flip: ", (IF flip THEN "TRUE" ELSE "FALSE"), "]"]; RETURN [r]; }; MakeImport: CDMakeProc.ObjectExpressionProc = { MakeImpGenerator: PROC [env: CDMakeProc.Environment] = { IF CDMakeProc.GetEnvironmentProp[env, $hasImports]=NIL THEN { CDMakeProc.PutEnvironmentProp[env, $hasImports, $hasImports]; CDMakeProc.PlaceDeclarationM2[env, "imports: CDGenerate.Context _ CDGenerate.AssertTable[""IMPORT""];"]; } }; r: Rope.ROPE; ob: CD.Object _ NARROW[x]; ip: CDImports.ImportSpecific _ NARROW[ob.specific]; IF Rope.Find[ip.designName, "."]>=0 THEN RETURN [NIL]; MakeImpGenerator[env]; r _ Rope.Cat["CDGenerate.FetchNCall[imports, design, ", CDMakeProc.RopeToRope[Rope.Cat[ip.designName, ".", ip.objectName]], "]"]; RETURN [r]; }; CDMakeProc.RegisterObjectExpressionProc[$Polygon0, MakePolygon]; CDMakeProc.RegisterObjectExpressionProc[$FilledCurve0, MakeFilledCurve]; CDMakeProc.RegisterObjectExpressionProc[$Line0, MakeLines]; CDMakeProc.RegisterObjectExpressionProc[$Spline0, MakeSplines]; CDMakeProc.RegisterObjectExpressionProc[$RigidText, MakeText]; CDMakeProc.RegisterObjectExpressionProc[$FlipText, MakeText]; CDMakeProc.RegisterObjectExpressionProc[$Import, MakeImport]; END. ϊCDMakeProcSomeImpl.mesa (module for ChipNDale) Copyright c 1985, 1986, 1987 by Xerox Corporation. All rights reserved. Created by Christian Jacobi, May 9, 1985 1:58:40 pm PDT Last edited by: Christian Jacobi, January 5, 1987 8:13:06 pm PST Κk˜codešœ0™0Kšœ Οmœ=™HKšœ8™8K™@K˜—šΟk ˜ Kšžœ˜Kšœ ˜ Kšœ ˜ Kšœ˜Kšœ ˜ Kšœ˜Kšœ˜—K˜šΟnœžœž˜!Kšžœ žœ˜(—Kšž˜K˜šΠbn œžœ#žœžœ žœžœžœ˜qKšœžœ Πfs œ‘ œ˜7Kšœ žœžœ˜Kšœžœ˜1Kšœžœ˜ Kšœ)˜)š žœžœžœžœžœžœž˜@Kšœ˜Kš žœžœ ‘œžœ‘œ˜Kšœ˜—K˜š Ÿ œ%˜4Kšžœžœžœ‘œ˜BKšœ˜—K˜š’œ%˜-K˜šŸ œžœ5žœ žœ˜`Kšœžœ˜Kšžœžœ ˜Kšœ&˜&šžœžœžœ˜Kšœ ž˜Kšœ(˜(Kšœ0˜0Kšœ‘*œ˜AKšœF‘ œžœžœ˜}Kšœ‘œ˜Kšœ)˜)Kšœ˜—Kšœ˜—K˜Kšœžœ‘œ˜'Kšœžœ˜Kšœžœ žœ˜Kšœžœ˜/Kšœžœ˜$Kšœ)˜)Kšœ(˜(Kšœ1‘œ˜GKšœB˜BKš œžœžœžœ ‘œ˜EKšžœ˜ Kšœ˜—K˜š  œ%˜/šŸœžœ"˜8šžœ1žœžœ˜=Kšœ=˜=Kšœ$‘Aœ˜hKšœ˜—Kšœ˜—Kšœžœ˜ Kšœžœ žœ˜Kšœžœ˜3Kšžœ"žœžœžœ˜7Kšœ˜Kšœ‘(œE‘œ‘˜Kšžœ˜ Kšœ˜—K˜K˜Kšœ@˜@KšœH˜HKšœ;˜;Kšœ?˜?Kšœ>˜>Kšœ=˜=Kšœ=˜=Kšžœ˜K˜K˜K˜—…— Έ