DIRECTORY CD, CDDraw USING [CommandTable], CDBasics USING [empty], CDColors, CDVScale USING [ScaleRec], ViewerClasses USING [Viewer], Graphics USING [Context], PrincOps USING [BBptr], Rope USING [ROPE]; CDVPrivate: CEDAR DEFINITIONS = BEGIN catchAny: BOOL; --catches low layer errors; set to false for debugging catchAnyWhichDeadlock: BOOL; --set to false for debugging notSupportedColorMode: ERROR; --catched by viewer paintproc SaveList: TYPE = LIST OF SavedRectArraySeq; saveListSize: INTEGER = 50; SavedRectArraySeq: TYPE = RECORD [next: [0..saveListSize]_0, x: ARRAY [0..saveListSize) OF SavedRect_TRASH]; SavedRect: TYPE = RECORD [r: CD.DesignRect, l: CD.Layer]; MyGraphicRef: TYPE = REF MyGraphicRec; -- for NEW use only NewAndLink MyGraphicRec: TYPE = RECORD [ viewer: ViewerClasses.Viewer _ NIL, pBBptr: PrincOps.BBptr, -- used for painting and background exclusively xBBptr: PrincOps.BBptr, -- used for all other purposes screen: LONG POINTER _ NIL, bpp: CARDINAL, -- bits per pixel (1, 4, 8) logbpp: CARDINAL, personalColors: REF CDColors.ColorDefinition, display: CDColors.DisplayType, colorTable: REF CDColors.ColorTable, --switch between fore- and back- ground greyTable: REF CDColors.ColorTable, scWidth: CARDINAL, -- Screen width in pixels scHeight: CARDINAL, -- Screen height in pixels=lines scWidthWords: CARDINAL, -- Screen width in words vx: CARDINAL, --distance from left of screen to left most pixel vy: CARDINAL, --distance from top of screen to bottom most pixel dClip: CD.DesignRect _ CDBasics.empty, -- no point outside is visible on viewer entered: BOOL _ FALSE, viewContext: Graphics.Context_NIL, ct: CDDraw.CommandTable_NIL, saveList: SaveList _ NIL, deviceDrawRef: CD.DrawRef_NIL, actualDesign: CD.Design_NIL, stoprequest: REF BOOL, hurryUp: BOOL _ FALSE, running: BOOL _ FALSE, environment: BOOL _ TRUE, symbolics: BOOL _ TRUE, b1: BOOL _ TRUE, b2: BOOL _ TRUE, suppressFactorForCells: REAL _ 1.0, contextFilter: REF CD.ContextFilter, scale: CDVScale.ScaleRec, painterList: PainterList _ NIL, usedCursor: OutLineProc, startVC, stopVC: CD.DesignPosition, onVC: BOOL _ FALSE, cursorInhibitations: CARDINAL_0, -- MONITORED firstHorizontalVC: BOOL _ TRUE, defaultWidthVC: CD.Number, -- width of cursored wire link: MyGraphicRef_NIL, designRec: REF PrivatePerDesign, properties: CD.Properties --these properties are not saved on files, but registration is expected ]; PainterList: TYPE = LIST OF REF PainterRec; PainterRec: TYPE = RECORD [ rect: CD.DesignRect _ CDBasics.empty, proc: PainterProc _ NIL, -- the painterproc data: REF _ NIL ]; PainterProc: TYPE = PROC [me: MyGraphicRef, paintRef: REF PainterRec, interrestRect: CD.DesignRect]; IncludeAPainterRec: PROC [me: MyGraphicRef, pr: REF PainterRec]; RemoveAPainterRec: PROC [me: MyGraphicRef, pr: REF PainterRec]; PrivatePerDesign: TYPE = RECORD [ startLCValid: BOOL_FALSE, -- Logical Cursors startLC: CD.DesignPosition_[0,0], stopLC: CD.DesignPosition_[0,0], firstHLC: BOOL_FALSE, widthLC: CD.DesignNumber_0, currentLayer: CD.Layer, usedCursor: REF_NIL, --key designating outlineProcLC outlineProcLC: OutLineProc, xMode: BOOL _ FALSE, -- usefull for wiring-, pendingdelete-mode, but only 1 per tip table... mark: CD.DesignPosition_[0,0] -- reserved for usage as logical mark, independent of visibility ]; linkBase: PRIVATE MyGraphicRef; NewAndLink: PROC [design: CD.Design] RETURNS [MyGraphicRef]; UnLink: PROC [me: MyGraphicRef]; --xx Drawing xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx CreateDrawInformation: PROC [me: MyGraphicRef]; RepaintRectAreaInViewer: PROC[me: MyGraphicRef, rect: CD.DesignRect, eraseFirst: BOOL]; RepaintBackground: PROC[me: MyGraphicRef, r: CD.DesignRect, eraseFirst: BOOL]; DrawCommentForViewers: PROCEDURE[r: CD.DesignRect, comment: Rope.ROPE, pr: CD.DrawRef]; cursoredCDViewer: READONLY ViewerClasses.Viewer; OutLineProc: TYPE = PROC[me: MyGraphicRef]; --type of cursoring procedure CursorModeProc: TYPE = PROC[me: MyGraphicRef, mode: REF]; --type of procedure to install a cursor mode SetCursorMode: PRIVATE PROC[me: MyGraphicRef, mode: REF]; ImplementACursor: PROC[mode: ATOM, proc: CursorModeProc]; InvertArea: PROC[me: MyGraphicRef, x1, y1, x2, y2: INT]; --xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx CreateViewer: PROC [design: CD.Design] RETURNS [ViewerClasses.Viewer]; LastViewer: PROC[] RETURNS [ViewerClasses.Viewer]; END. ìCDVPrivate.mesa (Viewer definitions for ChipNDale) Copyright c 1983, 1985 by Xerox Corporation. All rights reserved. by Christian Jacobi, July 15, 1983 11:16 am last edited by Christian Jacobi, April 22, 1985 11:03:49 am PST -- Non public chipndale interface defining viewer handling. --xx Data xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ----------- ----------- --scale --further drawings --cursor tracking information (Visible Cursors) --book keeping --xx linkage xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --callable from within viewer paintproc only --xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --Cursor --does not need to have the inputfocus; but has the chipndale cursor --sets outlineProcLC for the next time a cursor is fetched --teaches SetCursorMode to call proc if mode mode is set --x1, y1, x2, y2 in viewers coordinates; handy for cursor implementors --the data field has type MyGraphicRef Êœ˜šœ9™9Jšœ Ïmœ7™BJšœ,™,Jšœ?™?J˜—šÏk ˜ Jšžœ˜Jšœžœ˜Jšœ žœ ˜Jšœ ˜ Jšœ žœ ˜Jšœžœ ˜Jšœ žœ ˜Jšœ žœ ˜Jšœžœžœ˜J˜—JšÏn œžœž œ˜Jšž˜J˜Jšœ>™>Jšœ žœÏc6˜FJšœžœ ˜9Jšœžœ ˜;J™JšœL™LJ˜Jšœ žœžœžœ˜+Jšœžœ˜šœžœ˜Jšžœ žœžœ žœ˜R—š œ žœžœžœžœ˜9J˜—Jšœžœžœ ˜GJ˜šœžœžœ˜Jšœžœ˜#J™Jšœ ™ Jšœ /˜GJšœ ˜6Jšœžœžœžœ˜Jšœžœ ˜,Jšœžœ˜Jšœžœ˜-J˜Jšœ žœ '˜LJšœ žœ˜$Jšœ žœ ˜,Jšœ žœ  ˜4Jšœžœ ˜0Jšœž œ 1˜@Jšœžœ 2˜AJšœžœ (˜OJ™Jšœ ™ Jšœ žœžœ˜Jšœžœ˜#Jšœžœ˜Jšœžœ˜Jšœžœ žœ˜Jšœžœžœ˜Jšœ žœžœ˜Jšœ žœžœ˜Jšœ žœžœ˜Jšœ žœžœ˜Jšœ žœžœ˜Jšœžœžœ˜Jšœžœžœ˜Jšœžœ˜#Jšœžœžœ˜$J™Jšœ™Jšœ˜J™Jšœ™Jšœžœ˜J™Jšœ0™0J˜Jšœžœ˜#Jšœžœžœ˜Jšœžœ  ˜-Jšœžœžœ˜Jšœžœ  ˜4J™Jšœ™Jšœžœ˜Jšœ žœ˜ J™Jšœ žœ  G˜aJ˜J˜—Jš œ žœžœžœžœ ˜+šœ žœžœ˜Jšœžœ˜%Jšœžœ ˜,Jšœžœž˜J˜—J˜Jš œ žœžœžœžœ ˜dJ˜JšŸœžœžœ ˜@JšŸœžœžœ ˜?J˜šœžœžœ˜!Jšœžœžœ ˜.Jšœ žœ˜!Jšœžœ˜ Jšœ žœžœ˜Jšœ žœ˜Jšœžœ˜Jšœ žœžœ ˜4J˜J˜Jšœžœžœ G˜\Jšœžœ @˜^J˜J˜J˜—JšœO™OJ˜Jšœ žœ˜J˜JšŸ œžœ žœ žœ˜