DIRECTORY CD, CDCurves, CDImports, CDTexts, CDMakeProcPrivate, IO, Rope; CDMakeProcSomeImpl: CEDAR PROGRAM IMPORTS CDMakeProcPrivate, IO, Rope, CDTexts = BEGIN MakeCurves: PROC [env: CDMakeProcPrivate.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; CDMakeProcPrivate.IncludeDirectory[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, CDMakeProcPrivate.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: ", CDMakeProcPrivate.LayerIdent[env, ob.layer], "].ob"]; RETURN [r]; }; MakeSplines: CDMakeProcPrivate.ExpressionProc = { RETURN [ MakeCurves[env, NARROW[x], TRUE, "CreateSpline"] ]; }; MakeLines: CDMakeProcPrivate.ExpressionProc = { RETURN [ MakeCurves[env, NARROW[x], TRUE, "CreateLine"] ]; }; MakePolygon: CDMakeProcPrivate.ExpressionProc = { RETURN [ MakeCurves[env, NARROW[x], FALSE, "CreatePolygon"] ]; }; MakeFilledCurve: CDMakeProcPrivate.ExpressionProc = { RETURN [ MakeCurves[env, NARROW[x], FALSE, "CreateFilledCurve"] ]; }; MakeText: CDMakeProcPrivate.ExpressionProc = { SupportFont: PROC [env: CDMakeProcPrivate.Environment, font: CDTexts.CDFont] RETURNS [r: Rope.ROPE] = { x: REF; TRUSTED { x _ LOOPHOLE[font] }; r _ CDMakeProcPrivate.GlobalIdent[env, x]; IF r=NIL THEN { decl: Rope.ROPE; CDMakeProcPrivate.IncludeDirectory[env, "CDTexts"]; r _ CDMakeProcPrivate.RequestGlobalIdent[env, "font", x]; decl _ Rope.Cat[r, ": CDTexts.CDFont _ CDTexts.MakeFont[name: "]; decl _ Rope.Cat[decl, CDMakeProcPrivate.RopeToRope[tp.cdFont.supposedName], ", scale: ", IO.PutFR1["%g", IO.int[tp.cdFont.scaleI]]]; decl _ Rope.Cat[decl, "];"]; CDMakeProcPrivate.GlobalDeclaration1[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]; CDMakeProcPrivate.IncludeDirectory[env, "CDTexts"]; r _ Rope.Cat[r, CDMakeProcPrivate.RopeToRope[tp.text], ", font: ", fontIdent]; r _ Rope.Cat[r, ", layer: ", CDMakeProcPrivate.LayerIdent[env, ob.layer]]; r _ Rope.Cat[r, ", flip: ", (IF flip THEN "TRUE" ELSE "FALSE"), "]"]; RETURN [r]; }; MakeImport: CDMakeProcPrivate.ExpressionProc = { MakeImpGenerator: PROC [env: CDMakeProcPrivate.Environment] = { IF CDMakeProcPrivate.GetEnvironmentProp[env, $hasImports]=NIL THEN { CDMakeProcPrivate.PutEnvironmentProp[env, $hasImports, $hasImports]; CDMakeProcPrivate.GlobalDeclaration2[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, ", CDMakeProcPrivate.RopeToRope[Rope.Cat[ip.designName, ".", ip.objectName]], "]"]; RETURN [r]; }; CDMakeProcPrivate.RegisterExpressionProc[$Polygon0, MakePolygon]; CDMakeProcPrivate.RegisterExpressionProc[$FilledCurve0, MakeFilledCurve]; CDMakeProcPrivate.RegisterExpressionProc[$Line0, MakeLines]; CDMakeProcPrivate.RegisterExpressionProc[$Spline0, MakeSplines]; CDMakeProcPrivate.RegisterExpressionProc[$RigidText, MakeText]; CDMakeProcPrivate.RegisterExpressionProc[$FlipText, MakeText]; CDMakeProcPrivate.RegisterExpressionProc[$Import, MakeImport]; END. φCDMakeProcSomeImpl.mesa (module for ChipNDale) Copyright c 1985, 1986 by Xerox Corporation. All rights reserved. Created by Christian Jacobi, May 9, 1985 1:58:40 pm PDT Last edited by: Christian Jacobi, October 22, 1986 5:11:14 pm PDT Κl˜codešœ0™0Kšœ Οmœ7™BKšœ8™8K™AK˜—šΟk ˜ Kšžœ˜Kšœ ˜ Kšœ ˜ Kšœ˜Kšœ˜Kšœ˜Kšœ˜—K˜šΟnœžœž˜!Kšžœžœ˜/—Kšž˜K˜šΠbn œžœ*žœžœ žœžœžœ˜xKšœžœ Πfs œ‘ œ˜7Kšœ žœžœ˜Kšœžœ˜1Kšœžœ˜ Kšœ4˜4š žœžœžœžœžœžœž˜@Kšœ˜Kš žœžœ ‘œžœ‘œ˜Kšœ˜—K˜š Ÿ œ&˜5Kšžœžœžœ‘œ˜BKšœ˜—K˜š’œ&˜.K˜šŸ œžœ<žœ žœ˜gKšœžœ˜Kšžœžœ ˜Kšœ*˜*šžœžœžœ˜Kšœ ž˜Kšœ3˜3Kšœ9˜9Kšœ‘*œ˜AKšœM‘ œžœžœ˜„Kšœ‘œ˜Kšœ0˜0Kšœ˜—Kšœ˜—K˜Kšœžœ‘œ˜'Kšœžœ˜Kšœžœ žœ˜Kšœžœ˜/Kšœžœ˜$Kšœ)˜)Kšœ3˜3Kšœ8‘œ˜NKšœJ˜JKš œžœžœžœ ‘œ˜EKšžœ˜ Kšœ˜—K˜š  œ&˜0šŸœžœ)˜?šžœ8žœžœ˜DKšœD˜DKšœ+‘Aœ˜oKšœ˜—Kšœ˜—Kšœžœ˜ Kšœžœ žœ˜Kšœžœ˜3Kšžœ"žœžœžœ˜7Kšœ˜Kšœ‘(œL‘œ‘˜ˆKšžœ˜ Kšœ˜—K˜K˜KšœA˜AKšœI˜IKšœ<˜˜>Kšœ>˜>Kšžœ˜K˜K˜K˜—…—^ΐ