DIRECTORY CD, CDBasics, CDCells, CDImports, CDOldInterestRects, CDIO, CDRepetitions, CDProperties, TokenIO; CDOldInterestRectsImpl: CEDAR PROGRAM IMPORTS CD, CDBasics, CDCells, CDImports, CDIO, CDProperties, CDRepetitions, TokenIO EXPORTS CDOldInterestRects = BEGIN SetInterestProc: TYPE = PROC [ob: CD.Object, r: CD.Rect]; AdjustInterest: PUBLIC PROC [h: TokenIO.Handle, ob: CD.Object] = { IF ob.class.mutable AND CDIO.VersionKey[h]<8 THEN { WITH CDProperties.GetObjectProp[from: ob, prop: interestRectProperty] SELECT FROM pp: REF CD.Rect => { IF CDBasics.NonEmpty[pp^] THEN SetInterest[ob, pp^]; CDProperties.PutProp[ob, interestRectProperty, NIL]; }; ENDCASE => NULL; }; }; InternalReadProperty: PROC [h: TokenIO.Handle, prop: ATOM] RETURNS [val: REF] = { x1: INT = TokenIO.ReadInt[h]; y1: INT = TokenIO.ReadInt[h]; x2: INT = TokenIO.ReadInt[h]; y2: INT = TokenIO.ReadInt[h]; val _ NEW[CD.Rect_[x1, y1, x2, y2]] }; InsideRect: PUBLIC PROC [ob: CD.Object] RETURNS [CD.Rect] = { RETURN [CD.InterestRect[ob]] }; SetInterest: SetInterestProc = { RepOldSetInterest: PROC [ob: CD.Object, r: CD.Rect] = { cptr: CDRepetitions.RepSpecific = NARROW[ob.specific]; cptr.ir _ r; }; ImpOldSetInterest: PROC [ob: CD.Object, r: CD.Rect] = { cptr: CDImports.ImportSpecific = NARROW[ob.specific]; cptr.ir _ r; }; CellOldSetInterest: PROC [ob: CD.Object, r: CD.Rect] = { cptr: CD.CellSpecific = NARROW[ob.specific]; cptr.ir _ r; }; IF CDCells.IsCell[ob] THEN CellOldSetInterest[ob, r] ELSE IF CDImports.IsImport[ob] THEN ImpOldSetInterest[ob, r] ELSE IF CDRepetitions.IsRepetition[ob] THEN RepOldSetInterest[ob, r] ELSE WITH CDProperties.GetProp[ob.class.properties, $SetInterestProc] SELECT FROM sp: REF SetInterestProc => sp^[ob, r]; ENDCASE => NULL; }; InstallOldSetInterest: PROC [type: REF CD.ObjectClass, proc: SetInterestProc] = { CDProperties.PutProp[onto: type, prop: $SetInterestProc, val: NEW[SetInterestProc_proc]]; }; InternalReadOrigin: PROC [h: TokenIO.Handle, prop: ATOM] RETURNS [val: REF] = { x: INT = TokenIO.ReadInt[h]; y: INT = TokenIO.ReadInt[h]; val _ NIL }; originProperty: ATOM = $origin; interestRectProperty: ATOM = $interestRect; [] _ CDProperties.RegisterProperty[interestRectProperty]; CDProperties.InstallProcs[prop: interestRectProperty, procs: CDProperties.PropertyProcsRec[ makeCopy: CDProperties.DontCopy, internalRead: InternalReadProperty, exclusive: TRUE ] ]; [] _ CDProperties.RegisterProperty[originProperty]; CDProperties.InstallProcs[prop: originProperty, procs: CDProperties.PropertyProcsRec[ makeCopy: CDProperties.DontCopy, internalRead: InternalReadOrigin, exclusive: TRUE ] ]; [] _ CDProperties.RegisterProperty[$SetInterestProc]; END. dCDOldInterestRectsImpl.mesa Copyright c 1984, 1985, 1986 by Xerox Corporation. All rights reserved. Created by: Christian Jacobi, September 13, 1984 3:21:36 pm PDT Last edited by: Christian Jacobi, September 23, 1986 4:21:17 pm PDT WITH ob.specific SELECT FROM cp: CD.CellSpecific => RETURN [cp.dIr]; ENDCASE => RETURN [CD.InterestRect[ob]]; ??? Κ?˜šœ™Jšœ Οmœ=™HJ™?Icode™C—J˜šΟk œ˜ Jšžœ˜Jšœ ˜ Jšœ ˜ Jšœ ˜ Jšœ˜Jšœ˜Jšœ˜Jšœ ˜ Jšœ ˜ J˜—šΟbœžœžœ˜&JšžœM˜TJšžœ˜—Jšž˜J˜Jš œžœžœžœ žœ˜9J˜šΟnœžœžœžœ ˜Bšžœžœžœžœ˜3šžœBžœž˜Qšœžœžœ ˜Jšžœžœ˜4Jšœ/žœ˜4J˜—Jšžœžœ˜—J˜—Jšœ˜—š  œžœžœžœžœ˜QJšœžœ˜Jšœžœ˜Jšœžœ˜Jšœžœ˜Jšœžœžœ˜#Jšœ˜—J˜š   œžœžœžœ žœžœ ˜=šžœ žœž™Jšœžœžœ ™'Jšžœžœžœ™(—Jšœ™Jšžœžœ˜Jšœ˜J™—šŸ œ˜ K˜š œžœžœ žœ ˜7Kšœ"žœ˜6Kšœ ˜ Kšœ˜K˜—š œžœžœ žœ ˜7Kšœ!žœ˜5Kšœ ˜ Kšœ˜K˜—š œžœžœ žœ ˜8Kšœžœžœ˜,Kšœ ˜ Kšœ˜K˜—Jšžœžœ˜4Jšžœžœžœ˜žœ˜YJšœ˜—J˜š  œžœžœžœžœ˜OJšœžœ˜Jšœžœ˜Jšœž˜ Jšœ˜—J˜Jšœžœ ˜Jšœžœ˜+Jšœ9˜9šœ6˜6šœ%˜%Jšœ ˜ Jšœ#˜#Jšœ ž˜Jšœ˜—Jšœ˜—Jšœ3˜3šœ0˜0šœ%˜%Jšœ!˜!Jšœ!˜!Jšœ ž˜Jšœ˜—Jšœ˜—Jšœ5˜5Jšžœ˜J˜J˜—…— ˆ+