DIRECTORY NodeStyle, Real, Rope, TextNode, TextLooks, NameSymbolTable, TJaMInternal, TJaMBasic, TJaMOps; NodeStyleExtra: CEDAR DEFINITIONS IMPORTS NameSymbolTable, TJaMOps, Real = BEGIN OPEN RealInterface: Real, NodeStyle; Object: TYPE = TJaMBasic.Object; LocalStyle: TYPE = REF LocalStyleRec; LocalStyleRec: TYPE = RECORD [ name: Name, def: Rope.ROPE ]; realTableOverflow: ERROR; lastIntegerAsReal: Real = LAST[INTEGER]; firstIntegerAsReal: Real = FIRST[INTEGER]; IntegerValue: PROC [value: Real] RETURNS [INTEGER] = INLINE { RETURN [SELECT value FROM > lastIntegerAsReal => LAST[INTEGER], < firstIntegerAsReal => FIRST[INTEGER], ENDCASE => RealInterface.RoundI[value]] }; EnterReal: PROC [value: Real] RETURNS [code: RealCode]; SetReal: PROC [ref: Ref, param: RealParam, value: Real]; Frame: TYPE = TJaMInternal.Frame; GetFrame: PROC [style: Ref, styleName: Name, kind: OfStyle] RETURNS [frame: Frame]; FreeFrame: PROC [frame: Frame, name: Name, kind: OfStyle]; StyleForFrame: PROC [frame: Frame] RETURNS [style: Ref]; StyleCommand: PROC [frame: Frame, text: REF READONLY TEXT, proc: PROC [Frame]] RETURNS [name: Name]; StyleLiteral: PROC [frame: Frame, text: REF READONLY TEXT] RETURNS [name: Name]; styleerror: Name; StyleError: PROC [frame: Frame, num: INTEGER]; -- number of things to print defaultStyleName: Name; defaultStyle: Ref; defaultStylesForExtensions: LIST OF ExtObjPair; ExtObjPair: TYPE = RECORD [ fileExtension: ATOM, styleObject: NameSymbolTable.Object ]; SetDefaultStyle: PROC [name: Rope.ROPE]; SetExtensionStyles: PROC [value: LIST OF Rope.ROPE]; GetCommand: PROC [frame: Frame, name: Name] RETURNS [command Object]; ForEachAttachedStyle: PROC [dictName: Name, proc: PROC [attached: Name] RETURNS [stop: BOOL]]; GetStyleParam: PROC [s: Ref, name: Name, styleName: Name, kind: OfStyle] RETURNS [Object]; LoadProc: TYPE = PROC [frame: Frame, p: Param, style: Ref]; StoreProc: TYPE = PROC [frame: Frame, p: Param, style: Ref]; -- gets value from TJaM stack AddRealProc: TYPE = PROC [frame: Frame, inc: REAL, p: Param, style: Ref]; PercentProc: TYPE = PROC [frame: Frame, percent: REAL, p: Param, style: Ref]; SetNameProc: TYPE = PROC [frame: Frame, name: Name, p: Param, style: Ref]; Param: TYPE = REF ParamRec; ParamRec: TYPE = RECORD [ ops: Ops, opName: Name, data: SELECT kind: OfParam FROM name => [ param: NameParam ], real => [ param: RealParam ], glue => [ size, stretch, shrink: RealParam ], color => [ hue, saturation, brightness: RealParam ], misc => [], ENDCASE ]; OfParam: TYPE = { name, real, glue, color, misc }; Ops: TYPE = REF OpsRec; OpsRec: TYPE = RECORD [ Load: LoadProc, Store: StoreProc, AddReal: AddRealProc, Percent: PercentProc, SetName: SetNameProc ]; StoreError: StoreProc; AddRealError: AddRealProc; PercentError: PercentProc; SetNameError: SetNameProc; StyleNameOp: PROC [frame: Frame]; LineFormattingOp: PROC [frame: Frame]; LineFormattingLoad: LoadProc; LineFormattingSetName: SetNameProc; FontFamilyOp: PROC [frame: Frame]; FontFaceOp: PROC [frame: Frame]; FontFaceLoad: LoadProc; FontFaceSetName: SetNameProc; FontSizeOp: PROC [frame: Frame]; RealOpLoad: LoadProc; RealOpSetReal: StoreProc; RealOpAddReal: AddRealProc; RealOpPercent: PercentProc; LeftIndentOp: PROC [frame: Frame]; RightIndentOp: PROC [frame: Frame]; FirstIndentOp: PROC [frame: Frame]; RestIndentOp: PROC [frame: Frame]; TopIndentOp: PROC [frame: Frame]; BottomIndentOp: PROC [frame: Frame]; LineLeadingSizeOp: PROC [frame: Frame]; TopLeadingSizeOp: PROC [frame: Frame]; BottomLeadingSizeOp: PROC [frame: Frame]; VShiftOp: PROC [frame: Frame]; RelativeTabStopsOp: PROC [frame: Frame]; DefaultTabStopsOp: PROC [frame: Frame]; TabStopOp: PROC [frame: Frame]; TabStopsOp: PROC [frame: Frame]; MinLineGapOp: PROC [frame: Frame]; LoadNameParam: LoadProc; SetNameParam: SetNameProc; NameError: PROC [frame: Frame, name: Name, p: Param]; DoStyleOperation: PROC [frame: Frame, p: Param]; IsComment: PROC [frame: Frame]; IsPrint: PROC [frame: Frame]; NestingLevel: PROC [frame: Frame]; executingName: Name; EvalFreeVars: PROC [style: Ref, node: TextNode.Ref]; PushText: PROC [frame: Frame, txt: LONG STRING]; PushObject: PROC [frame: Frame, ob: Object]; PopObject: PROC [frame: Frame] RETURNS [Object]; PushName: PROC [frame: Frame, name: Name]; PopName: PROC [frame: Frame] RETURNS [Name]; PushInteger: PROC [frame: Frame, val: INTEGER] = TRUSTED INLINE { TJaMOps.PushInteger[frame.opstk,val] }; PushReal: PROC [frame: Frame, val: REAL] = TRUSTED INLINE { TJaMOps.PushReal[frame.opstk,val] }; PopReal: PROC [frame: Frame] RETURNS [REAL] = TRUSTED INLINE { RETURN [TJaMOps.PopReal[frame.opstk]] }; TryToPopName: PROC [frame: Frame] RETURNS [name: Name, ok: BOOL]; TryToPopReal: PROC [frame: Frame] RETURNS [value: Real, ok: BOOL]; TryToPopString: PROC [frame: Frame] RETURNS [string: string TJaMBasic.Object, ok: BOOL]; MakeName: PROC [txt: REF READONLY TEXT] RETURNS [Name] = INLINE { RETURN [NameSymbolTable.MakeName[txt]] }; CVX: PROC [obj: Object] RETURNS [Object] = INLINE { obj.tag _ X; RETURN [obj] }; CVLit: PROC [obj: Object] RETURNS [Object] = INLINE { obj.tag _ L; RETURN [obj] }; NameToObject: PROC [name: Name] RETURNS [obj: Object] = INLINE { nameObj: name Object _ [L,name[LOOPHOLE[name]]]; RETURN [nameObj] }; TypeCheckName: PROC [obj: Object] RETURNS [Name]; TypeCheckDict: PROC [obj: Object] RETURNS [dict Object]; TypeCheckCommand: PROC [obj: Object] RETURNS [command Object]; END. ˜NodeStyleExtra.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Written by Bill Paxton, January 1981 Last changed by Bill Paxton, December 21, 1982 9:49 am Last Edited by: Maxwell, January 6, 1983 8:08 am Doug Wyatt, March 2, 1985 5:43:49 pm PST Plass, March 1, 1985 4:33:26 pm PST Internal defs for NodeStyle modules. support procs for NodeStyleImpl and NodeStyle2Impl support procs Κζ˜codešœ™Kšœ Οmœ1™Kšžœ"˜(K˜—Kš  œžœžœžœ˜AK˜Kš  œžœžœžœ˜BK˜Kš œžœžœ'žœ˜XK˜š œžœžœžœžœžœ žœ˜AKšžœ#˜)K˜—šžœžœžœ žœ˜3Kšœ žœžœ ˜K˜—š œžœžœ žœ˜5Kšœ žœžœ ˜K˜—š  œžœžœžœ˜@Kšœžœžœ ˜0Kšžœ ˜K˜—Kš  œžœžœ˜1K˜Kš  œžœžœ˜8K˜Kš œžœžœ˜>K˜Kšžœ˜—…—~ό