-- TAPrivateImpl.mesa -- Rick Beach, July 6, 1982 8:15 pm -- Maureen Stone April 21, 1983 10:09 am -- Rick Beach, November 27, 1982 10:17 am DIRECTORY CIFS USING [Error], JaMBasic USING [Object], JaMInternal USING [Frame], JaMOps USING [defaultFrame, Execute, MakeString, Push, PushReal], PutGet USING [FromFile], Rope, TAPrivate, TEditDocument USING [TEditDocumentData], TextEdit USING [GetRope], TextNode USING [NarrowToTextNode, Ref], ViewerClasses, ViewerOps; TAPrivateImpl: PROGRAM IMPORTS CIFS, JaMOps, PutGet, Rope, TextEdit, TextNode, ViewerOps EXPORTS TAPrivate = { OPEN TAPrivate; ROPE: TYPE = Rope.ROPE; FileNotFound: PUBLIC SIGNAL = CODE; GetDocument: PUBLIC PROCEDURE[fileName: ROPE] RETURNS[node: TextNode.Ref, fromFile: BOOLEAN] = { viewer: ViewerClasses.Viewer; viewer _ IF Rope.Size[fileName]=0 THEN NIL ELSE ViewerOps.FindViewer[fileName]; IF viewer # NIL THEN { node _ NARROW[viewer.data, TEditDocument.TEditDocumentData].text; fromFile _ FALSE; } ELSE { node _ PutGet.FromFile[fileName ! CIFS.Error => TRUSTED {SIGNAL FileNotFound}]; -- catch directory error by caller fromFile _ TRUE; } }; FixFileName: PUBLIC PROCEDURE[oldname, extension: ROPE] RETURNS [newname:ROPE] = { dotPosition: INTEGER _ Rope.Find[oldname, "."]; IF dotPosition < 0 THEN newname _ Rope.Cat[oldname, extension] ELSE newname _ Rope.Cat[Rope.Substr[oldname, 0, dotPosition], extension]; }; getViewer: JaMBasic.Object = JaMOps.MakeString[".getviewer", X]; loadBCD: JaMBasic.Object = JaMOps.MakeString[".loadbcd", X]; pushDC: JaMBasic.Object = JaMOps.MakeString[".pushdc", X]; popDC: JaMBasic.Object = JaMOps.MakeString[".popdc", X]; setCP: JaMBasic.Object = JaMOps.MakeString[".setpos", X]; translate: JaMBasic.Object = JaMOps.MakeString[".translate", X]; drawArea: JaMBasic.Object = JaMOps.MakeString[".drawarea", X]; drawPath: JaMBasic.Object = JaMOps.MakeString[".drawpath", X]; drawBox: JaMBasic.Object = JaMOps.MakeString[".drawbox", X]; outlinePath: JaMBasic.Object = JaMOps.MakeString[".calligoutlinepath", X]; calligRoundPen: JaMBasic.Object = JaMOps.MakeString[".calligroundpen", X]; calligRectangularPen: JaMBasic.Object = JaMOps.MakeString[".calligrectangularpen", X]; calligItalicPen: JaMBasic.Object = JaMOps.MakeString[".calligitalicpen", X]; calligEllipticalPen: JaMBasic.Object = JaMOps.MakeString[".calligellipticalpen", X]; calligShadowPen: JaMBasic.Object = JaMOps.MakeString[".calligshadowpen", X]; calligShadowPath: JaMBasic.Object = JaMOps.MakeString[".calligshadowpath", X]; drawImage: JaMBasic.Object = JaMOps.MakeString[".drawimage", X]; drawText: JaMBasic.Object = JaMOps.MakeString[".drawtext", X]; setHSVColor: JaMBasic.Object = JaMOps.MakeString["hsvcolor", X]; calligDefined: BOOLEAN _ FALSE; NoJaMGraphicsViewer: PUBLIC SIGNAL = CODE; InitJaMGraphics: PUBLIC PROCEDURE = { jaMViewer: ViewerClasses.Viewer _ ViewerOps.FindViewer["JaM"]; IF jaMViewer=NIL THEN SIGNAL NoJaMGraphicsViewer; IF ~calligDefined THEN { -- Define the Calligraphy graphics functions which reside in TACallig.bcd JaMOps.Execute[JaMOps.defaultFrame, JaMOps.MakeString["(artwork) .dup 50 .dict .def .load .begin", X]]; JaMOps.Execute[JaMOps.defaultFrame, JaMOps.MakeString["(.moveto) (.calligmoveto).cvx .def", X]]; JaMOps.Execute[JaMOps.defaultFrame, JaMOps.MakeString["(.lineto) (.calliglineto).cvx .def", X]]; JaMOps.Execute[JaMOps.defaultFrame, JaMOps.MakeString["(.curveto) (.calligcurveto).cvx .def", X]]; JaMOps.Execute[JaMOps.defaultFrame, JaMOps.MakeString["(.drawpath) (.calligdrawpath).cvx .def", X]]; JaMOps.Execute[JaMOps.defaultFrame, JaMOps.MakeString["(.drawarea) (.calligdrawarea).cvx .def", X]]; JaMOps.Execute[JaMOps.defaultFrame, JaMOps.MakeString["(hsvcolor) (.hsvcolor) .cvx .def", X]]; calligDefined _ TRUE}; }; PushDC: PUBLIC PROCEDURE = { JaMOps.Execute[JaMOps.defaultFrame, pushDC] }; PopDC: PUBLIC PROCEDURE= { JaMOps.Execute[JaMOps.defaultFrame, popDC] }; PushReal: PUBLIC PROCEDURE[r: REAL] = { JaMOps.PushReal[JaMOps.defaultFrame.opstk, r] }; DrawArea: PUBLIC PROCEDURE = { JaMOps.Execute[JaMOps.defaultFrame, drawArea] }; DrawPath: PUBLIC PROCEDURE = { JaMOps.Execute[JaMOps.defaultFrame, drawPath] }; OutlinePath: PUBLIC PROCEDURE = { JaMOps.Execute[JaMOps.defaultFrame, outlinePath] }; DrawBox: PUBLIC PROCEDURE = { JaMOps.Execute[JaMOps.defaultFrame, drawBox] }; SetCP: PUBLIC PROCEDURE = { JaMOps.Execute[JaMOps.defaultFrame, setCP] }; Translate: PUBLIC PROCEDURE = { JaMOps.Execute[JaMOps.defaultFrame, translate] }; RoundPen: PUBLIC PROCEDURE = { JaMOps.Execute[JaMOps.defaultFrame, calligRoundPen] }; ItalicPen: PUBLIC PROCEDURE = { JaMOps.Execute[JaMOps.defaultFrame, calligItalicPen] }; RectangularPen: PUBLIC PROCEDURE = { JaMOps.Execute[JaMOps.defaultFrame, calligRectangularPen] }; EllipticalPen: PUBLIC PROCEDURE = { JaMOps.Execute[JaMOps.defaultFrame, calligEllipticalPen] }; ShadowPen: PUBLIC PROCEDURE = { JaMOps.Execute[JaMOps.defaultFrame, calligShadowPen] }; ShadowPath: PUBLIC PROCEDURE = { JaMOps.Execute[JaMOps.defaultFrame, calligShadowPath] }; DrawImage: PUBLIC PROCEDURE[imageFileName: Rope.ROPE] = { JaMOps.Push[JaMOps.defaultFrame.opstk, JaMOps.MakeString[ LOOPHOLE[Rope.Flatten[imageFileName]], L]]; JaMOps.Execute[JaMOps.defaultFrame, drawImage]; }; PushString: PUBLIC PROCEDURE[node: TextNode.Ref] = { rope: ROPE _ TextEdit.GetRope[TextNode.NarrowToTextNode[node]]; IF rope#NIL THEN JaMOps.Push[JaMOps.defaultFrame.opstk, JaMOps.MakeString[LOOPHOLE[Rope.Flatten[rope]]]] }; DrawText: PUBLIC PROCEDURE = { JaMOps.Execute[JaMOps.defaultFrame, drawText] }; ExecuteNode: PUBLIC PROCEDURE[node: TextNode.Ref] = { rope: ROPE _ TextEdit.GetRope[TextNode.NarrowToTextNode[node]]; IF rope#NIL THEN JaMOps.Execute[JaMOps.defaultFrame, JaMOps.MakeString[LOOPHOLE[Rope.Flatten[rope]], X]]; }; SetHSV: PUBLIC PROCEDURE[h, s, v: REAL] = { JaMOps.PushReal[JaMOps.defaultFrame.opstk, h]; JaMOps.PushReal[JaMOps.defaultFrame.opstk, s]; JaMOps.PushReal[JaMOps.defaultFrame.opstk, v]; JaMOps.Execute[JaMOps.defaultFrame, setHSVColor]; }; }. }. ĘؘJ˜JšÖĪcœĪk œžœžœžœžœžœ>žœ/žœ žœžœFžœžœžœ7žœžœ žœžœžœžœžœžœĪn œžœž œ žœžœžœ/žœžœžœžœ"žœ žœžœ žœBžœžœ'žœ žœžœ#œ žœ Ÿ œžœž œžœžœ žœžœžœžœ+žœŠžœ<žœ:žœ8žœ9žœ@žœ>žœ>žœ<žœJžœJžœVžœLžœTžœLžœNžœ@žœ>žœ@žœžœžœžœžœžœŸœžœž œFžœ žœžœžœžœžœJœežœbžœbžœdžœfžœfžœ`žœžœŸœžœž œ6Ÿœžœž œ4Ÿœžœž œžœ9Ÿœžœž œ8Ÿœžœž œ8Ÿ œžœž œ;Ÿœžœž œ7Ÿœžœž œ5Ÿ œžœž œ9Ÿœžœž œ>Ÿ œžœž œ?Ÿœžœž œDŸ œžœž œCŸ œžœž œ?Ÿ œžœž œ@Ÿ œžœž œžœCžœžœ:Ÿ œžœž œ žœ7žœžœžœ?žœŸœžœž œ8Ÿ œžœž œ žœ7žœžœžœ<žœžœ Ÿœžœž œ žœĶ˜Ū/J˜—…—âĀ