DIRECTORY Graphics, -- using lots GEditClasses, GEditPaint, GEditSelect USING [MarkSelection, selection], GEditViewer, TextNode USING [FirstChild, NarrowToOtherNode, Next], ViewerClasses USING [PaintProc, Viewer], ViewerOps USING [XYWH2Box]; GEditPaintImpl: PROGRAM IMPORTS GEditSelect, Graphics, TextNode, ViewerOps EXPORTS GEditPaint = BEGIN OPEN Graphics, GEditViewer, GEditClasses; GEditPainter: PUBLIC ViewerClasses.PaintProc = BEGIN ClipOutChildren: PROC = BEGIN FOR v: ViewerClasses.Viewer _ self.child, v.sibling UNTIL v=NIL DO Graphics.ClipBox[context, ViewerOps.XYWH2Box[v.wx, v.wy, v.ww, v.wh], TRUE]; ENDLOOP; END; PaintObject: PROC [object: Object] = INLINE BEGIN class: Class ~ NARROW[object.class]; IF class#NIL AND class.paintProc#NIL THEN class.paintProc[object, context]; END; gvd: GEditViewerData ~ NARROW[self.data]; Translate[context, gvd.hScroll, gvd.hScroll]; ClipOutChildren[]; IF whatChanged=NIL THEN BEGIN IF GEditSelect.selection.viewer=self AND ~clear THEN GEditSelect.MarkSelection[context]; FOR ref: Object _ TextNode.NarrowToOtherNode[TextNode.FirstChild[gvd.root]], TextNode.NarrowToOtherNode[TextNode.Next[ref]] UNTIL ref=NIL DO PaintObject[ref]; ENDLOOP; IF GEditSelect.selection.viewer=self THEN GEditSelect.MarkSelection[context]; END ELSE IF whatChanged=$XORSelection THEN BEGIN -- adjusting selected object [] _ Graphics.SetPaintMode[context, invert]; FOR ref: SelectedObject _ GEditSelect.selection.objects, ref.nextObject UNTIL ref=NIL DO PaintObject[ref.object]; ENDLOOP; END ELSE IF whatChanged=$Selection THEN GEditSelect.MarkSelection[context] ELSE BEGIN IF GEditSelect.selection.viewer=self AND ~clear THEN GEditSelect.MarkSelection[context]; PaintObject[NARROW[whatChanged]]; IF GEditSelect.selection.viewer=self THEN GEditSelect.MarkSelection[context]; END; END; END. JGEditPaintImpl.mesa; Edited by McGregor on December 9, 1982 9:58 am ΚŠ– "Mesa" style˜JšΟc+œ™CJ˜šΟk ˜ Jšœ˜Jšœ ˜ Jšœ ˜ Jšœ žœ˜-Jšœ ˜ Jšœ žœ'˜5Jšœžœ˜(Jšœ žœ ˜J˜—Jšœž˜J˜Jšžœ+˜2Jšžœ ˜J˜Jšžœžœ%˜/J˜šœžœž˜4J˜šΟnœžœž˜šžœ1žœžœž˜BJšœFžœ˜LJšžœ˜—Jšžœ˜—J˜šŸ œžœžœž˜1Jšœžœ˜$Jš žœžœžœžœžœ"˜KJšžœ˜—J˜Jšœžœ ˜)J˜Jšœ-˜-J˜J˜šžœ žœžœž˜Jšžœ#žœžœ$˜XšžœI˜LJšœ/žœžœž˜?Jšœ˜Jšžœ˜—Jšžœ#žœ$˜MJšž˜—š žœžœžœžœ˜IJšœ,˜,šžœEžœžœž˜XJšœ˜Jšžœ˜—Jšž˜—Jšžœžœžœ#˜Fšžœž˜ Jšžœ#žœžœ$˜XJšœ žœ˜!Jšžœ#žœ$˜MJšžœ˜—J˜Jšžœ˜—J˜Jšžœ˜J˜J˜—…—& ϊ