DIRECTORY Atom USING [GetPName], CD, CDBasics, CDDrawQueue, CDOps, CDProperties, CDViewerBackdoor, CDVPrivate, CDViewer, CDVScale, Cursors, Imager, Rope USING [ROPE], VFonts, ViewerClasses USING [Viewer]; CDVSpecialPainters: CEDAR PROGRAM IMPORTS Atom, CD, CDBasics, CDDrawQueue, CDOps, CDProperties, CDViewerBackdoor, CDVScale, CDViewer, CDVPrivate, Imager, VFonts = BEGIN VRef: TYPE = CDVPrivate.VRef; FurtherPaintProc: TYPE = CDViewerBackdoor.FurtherPaintProc; --PROC [me: CDVPrivate.VRef, whatChanged: REF]; ShowViewers: FurtherPaintProc = { OutlineViewer: PROC [me: VRef, other: ViewerClasses.Viewer] = { otherMe: VRef = NARROW[other.data]; r: CD.Rect = otherMe.dClip; p1: CD.Position = CDVScale.DesignToViewerPosition[me.scale, [r.x1, r.y1]]; p2: CD.Position = CDVScale.DesignToViewerPosition[me.scale, [r.x2, r.y2]]; CDVPrivate.InvertArea[me, p1.x, p1.y, p1.x+1, p2.y]; CDVPrivate.InvertArea[me, p1.x, p2.y, p2.x, p2.y+1]; CDVPrivate.InvertArea[me, p2.x, p2.y, p2.x+1, p1.y]; CDVPrivate.InvertArea[me, p2.x, p1.y, p1.x, p1.y+1]; }; FOR l: CDViewer.ViewerList _ CDViewer.ViewersOf[me.actualDesign], l.rest WHILE l#NIL DO IF ~l.first.iconic AND l.first#me.viewer THEN OutlineViewer[me: me, other: l.first]; ENDLOOP }; PaintSignalNames: FurtherPaintProc = { PaintProperties[me, $SignalName] }; PaintInstanceNames: FurtherPaintProc = { PaintProperties[me, $InstanceName] }; PaintProperties: PROC [me: CDVPrivate.VRef, key: ATOM] = { nameDevice: REF NameDevice _ NEW[NameDevice_[propKey: key, vPriv: me]]; internalPr: CD.DrawRef = CD.CreateDrawRef[[ design: me.actualDesign, interestClip: me.dClip, devicePrivate: nameDevice, drawChild: NamedDrawChild, drawRect: DontDrawRect, drawContext: DontDrawContext, stopFlag: me.stoprequest ]]; Imager.SetColor[me.viewContext, Imager.black]; Imager.SetFont[me.viewContext, defaultFont]; CDOps.DrawDesign[me.actualDesign, internalPr]; }; NameDevice: TYPE = RECORD [propKey: ATOM, vPriv: VRef]; defaultFont: Imager.Font = VFonts.DefaultFont[]; NamedDrawChild: CD.DrawProc = { dev: REF NameDevice = NARROW[pr.devicePrivate]; text: Rope.ROPE _ NIL; ob.class.drawMe[pr, ob, trans, readOnlyInstProps]; WITH CDProperties.GetListProp[readOnlyInstProps, dev.propKey] SELECT FROM r: Rope.ROPE => text _ r; a: ATOM => text _ Atom.GetPName[a]; ENDCASE => NULL; IF text#NIL THEN { r: CD.Rect _ CDBasics.MapRect[CD.InterestRect[ob], trans]; p: CD.Position _ CDVScale.DesignToViewerPosition[dev.vPriv.scale, CDBasics.BaseOfRect[r]]; Imager.SetXY[dev.vPriv.viewContext, [p.x+1, p.y+1]]; Imager.SetColor[dev.vPriv.viewContext, Imager.black]; Imager.SetFont[dev.vPriv.viewContext, defaultFont]; Imager.ShowRope[dev.vPriv.viewContext, text]; }; }; DontDrawRect: CD.DrawRectProc = { }; DontDrawContext: CD.DrawContextProc = { }; PaintTemporaries: FurtherPaintProc = { }; DrawSignalNames: FurtherPaintProc = { CDDrawQueue.QueueInsertDrawCommand[me.ct, [$SignalNames, CDBasics.universe]]; }; DrawInstanceNames: FurtherPaintProc = { CDDrawQueue.QueueInsertDrawCommand[me.ct, [$InstanceNames, CDBasics.universe]]; }; Init: PROC [] = { CDViewerBackdoor.InstallFurtherPaint[keyValue: $ShowViewers, proc: ShowViewers]; CDViewerBackdoor.InstallFurtherPaint[keyValue: $SignalNames, proc: PaintSignalNames]; CDViewerBackdoor.InstallFurtherPaint[keyValue: $InstanceNames, proc: PaintInstanceNames]; CDViewerBackdoor.InstallFurtherPaint[keyValue: $Temporaries, proc: PaintTemporaries]; CDViewerBackdoor.InstallFurtherPaint[keyValue: $DrawSignalNames, proc: DrawSignalNames]; CDViewerBackdoor.InstallFurtherPaint[keyValue: $DrawInstanceNames, proc: DrawInstanceNames]; }; Init[]; END. rCDVSpecialPainters.mesa (part of ChipNDale) Copyright c 1984, 1987 by Xerox Corporation. All rights reserved. Created by Christian Jacobi August 29, 1984 4:58:52 pm PDT Last edited by: Christian Jacobi, March 3, 1987 3:41:47 pm PST -- CDVSpecialPainters implements some procedures which are called by the (viewers)-draw -- proc of ChipNDale viewers --PROC [me: CDVPrivate.VRef, key: REF] --monitored by ProtectedRepaint --PROC [me: CDVPrivate.VRef, key: REF] --monitored by ProtectedRepaint --PROC [me: CDVPrivate.VRef, key: REF] --monitored by ProtectedRepaint PROC [me: CDVPrivate.VRef, key: REF] --eg. former paints ticks --called through ProtectedRepaint only -- PROC [me: CDVPrivate.VRef, key: REF] -- called from anywhere, not monitored -- PROC [me: CDVPrivate.VRef, key: REF] -- called from anywhere, not monitored --protected procedures --unprotected procedures Κ§˜codešœ-™-Kšœ Οmœ7™BKšœ;™;K™>—K˜šΟk ˜ Kšœžœ ˜Kšžœ˜K˜ Kšœ ˜ Kšœ˜Kšœ ˜ Kšœ˜Kšœ ˜ Kšœ ˜ K˜ K˜Kšœ˜Kšœžœžœ˜Kšœ˜Kšœžœ ˜—K˜šΟnœžœžœ˜"Kšžœžœp˜€—Kšž˜K˜KšœX™XKšœ™K˜K˜Kšœžœ˜šœžœ%˜;KšΟc/˜/—K˜šΠbn œ˜!KšœΟiœ™&Kšœ™K˜šŸ œžœ,˜?Kšœžœ ˜#Kšœžœ˜KšœžœD˜JKšœžœD˜JKšœ4˜4Kšœ4˜4Kšœ4˜4Kšœ4˜4Kšœ˜—K˜šžœFžœžœž˜WKšžœžœžœ'˜TKšž˜—Kšœ˜—K˜K˜š‘œ˜&Kšœ’œ™&Kšœ™Kšœ ˜ Kšœ˜—K˜š‘œ˜(Kšœ’œ™&Kšœ™Kšœ"˜"Kšœ˜—K˜šŸœžœžœ˜:Kšœ žœžœ'˜Gšœ žœ žœ˜+Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜Kšœ˜—Kšœ.˜.Kšœ,˜,Kšœ.˜.Kšœ˜—K™Kšœ žœžœ žœ˜7Kšœ0˜0K˜šŸœ˜Kšœžœžœ˜/Kšœ žœžœ˜Kšœ2˜2šžœ:žœž˜IKšœžœ ˜Kšœžœ˜#Kšžœžœ˜—šžœžœžœ˜Kšœžœ5˜:KšœžœU˜ZKšœ4˜4Kšœ5˜5Kšœ3˜3Kšœ-˜-Kšœ˜—Kšœ˜K˜—šŸ œžœ˜!Kšœ˜—K˜šŸœžœ˜'Kšœ˜—K˜šŸœ˜&Kšœ’œ™$Kšœ™Kšœ œ™&Kšœ˜K˜—š‘œ˜%Kšœ’œ™'Kšœ&™&KšœM˜MKšœ˜K˜—š‘œ˜'Kšœ’œ™'Kšœ&™&KšœO˜OKšœ˜K˜—šŸœžœ˜Kšœ™KšœP˜PKšœU˜UKšœY˜YKšœU˜UKšœ™KšœX˜XKšœ\˜\Kšœ˜—Kšœ˜Kšžœ˜K˜—…—&?