DIRECTORY NodeStyle USING [NameParam, RealParam, Style, StyleKind], Rope USING [ROPE], Tioga USING [Looks], TJaM USING [Cmd, CommandProc, Dict, Array, Frame, Object]; NodeStyleWorks: CEDAR DEFINITIONS ~ BEGIN ROPE: TYPE ~ Rope.ROPE; Object: TYPE ~ TJaM.Object; Frame: TYPE ~ TJaM.Frame; Style: TYPE ~ NodeStyle.Style; StyleKind: TYPE ~ NodeStyle.StyleKind; -- { screen, print, base } Ref: TYPE ~ Style; -- synonym for compatibility OfStyle: TYPE ~ StyleKind; -- synonym for compatibility defaultFrame: Frame; GetFrame: PROC [style: Ref, styleName: ATOM, kind: OfStyle] RETURNS [frame: Frame]; FreeFrame: PROC [frame: Frame, styleName: ATOM, kind: OfStyle]; StyleForFrame: PROC [frame: Frame] RETURNS [style: Ref]; InitDict: PROC [name: ATOM, size: CARDINAL ¬ 100] RETURNS [dictionary: TJaM.Dict]; GetStyleDict: PROC [frame: Frame, styleName: ATOM, kind: OfStyle, def: Rope.ROPE ¬ NIL] RETURNS [d: TJaM.Dict]; BadStyleFile: PROC [frame: Frame, styleName: ATOM]; RunStyle: PROC [frame: Frame, styleName: ATOM] RETURNS [ok: BOOL]; RunStyleString: PROC [frame: Frame, styleName: ATOM, def: Rope.ROPE] RETURNS [ok: BOOL]; sysdict: TJaM.Dict; -- system dictionary userdict: TJaM.Dict; -- user dictionary with helpful stuff and errordefs styledict: TJaM.Dict; -- style dictionary has Tioga style machinery names stylesDicts: REF ARRAY OfStyle OF TJaM.Dict; bindingDict: TJaM.Dict; -- TiogaBindingDictionary attachmentsDict: TJaM.Dict; -- TiogaAttachedStylesDictionary ForEachAttachedStyle: PROC [dictName: ATOM, proc: PROC [attached: ATOM] RETURNS [stop: BOOL]]; ExecuteName: PROC [frame: Frame, name: ATOM] RETURNS [ok: BOOL]; ExecuteNameInStyle: PROC [ref: Ref, kind: OfStyle, styleRule: ATOM] RETURNS [ok: BOOL]; ExecuteObjectInStyle: PROC [ref: Ref, kind: OfStyle, object: Object] RETURNS [ok: BOOL]; ExecuteLooksInStyle: PROC [ref: Ref, kind: OfStyle, looks: Tioga.Looks] RETURNS [ok: BOOL]; WhoIsExecuting: SIGNAL RETURNS [executingName: ATOM ¬ NIL]; -- for error messages Where: SIGNAL RETURNS [ROPE ¬ NIL]; -- for error messages StyleError: PROC [frame: Frame, num: INTEGER]; -- number of things to print load: TJaM.Cmd; get: TJaM.Cmd; run: TJaM.Cmd; LoadProc: TYPE ~ PROC [frame: Frame, p: Param, style: Ref]; StoreProc: TYPE ~ PROC [frame: Frame, p: Param, style: Ref]; 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: ATOM, p: Param, style: Ref]; Param: TYPE ~ REF ParamRec; ParamRec: TYPE ~ RECORD [ ops: Ops, opName: ATOM, data: SELECT kind: OfParam FROM name => [ param: NodeStyle.NameParam ], real => [ param: NodeStyle.RealParam ], glue => [ size, stretch, shrink: NodeStyle.RealParam ], color => [ hue, saturation, brightness: NodeStyle.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 ]; DoStyleOp: PROC [frame: Frame, p: Param]; StoreError: StoreProc; AddRealError: AddRealProc; PercentError: PercentProc; SetNameError: SetNameProc; nameOps: Ops; LoadNameParam: LoadProc; SetNameParam: SetNameProc; NameError: PROC [frame: Frame, name: ATOM, p: Param]; realOps: Ops; RealOpLoad: LoadProc; RealOpSetReal: StoreProc; RealOpAddReal: AddRealProc; RealOpPercent: PercentProc; glueOps: Ops; GlueOpLoad: LoadProc; GlueOpSetReal: StoreProc; GlueOpAddReal: AddRealProc; GlueOpPercent: PercentProc; colorOps: Ops; ColorOpLoad: LoadProc; ColorOpSetReal: StoreProc; ColorOpAddReal: AddRealProc; ColorOpPercent: PercentProc; GetCommand: PROC [frame: Frame, name: ATOM] RETURNS [TJaM.Cmd]; ForceLowerName: PUBLIC PROC [n: ATOM] RETURNS [ATOM]; ForceLowerRope: PUBLIC PROC [r: ROPE] RETURNS [ROPE]; PopName: PROC [frame: Frame] RETURNS [name: ATOM]; TryToPopName: PROC [frame: Frame] RETURNS [name: ATOM, ok: BOOL]; TryToPopReal: PROC [frame: Frame] RETURNS [value: REAL ¬ 0.0, ok: BOOL]; TryToPopRope: PROC [frame: Frame] RETURNS [rope: ROPE, ok: BOOL]; TypeCheckName: PROC [obj: Object] RETURNS [ATOM]; TypeCheckDict: PROC [obj: Object] RETURNS [TJaM.Dict]; TypeCheckCommand: PROC [obj: Object] RETURNS [TJaM.Cmd]; SpecialOpArray: PROC [name: ATOM, op: Object] RETURNS [key: ATOM, array: TJaM.Array]; StyleParamKey: PROC [name: ATOM] RETURNS [key: ATOM]; RegisterStyleCommand: PROC [frame: Frame, name: ATOM, proc: TJaM.CommandProc]; RegisterStyleLiteral: PROC [frame: Frame, name: ATOM]; RegisterWorks1: PROC [frame: Frame]; RegisterWorks2: PROC [frame: Frame]; RegisterWorks3: PROC [frame: Frame]; RegisterWorks4: PROC [frame: Frame]; StartTheWorks: PROC; END. Œ NodeStyleWorks.mesa Copyright Σ 1985, 1986, 1987, 1991, 1992 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 Michael Plass, November 20, 1987 4:47:09 pm PST Rick Beach, March 27, 1985 9:38:55 am PST Doug Wyatt, January 30, 1992 6:33 pm PST This is where the style machinery lives. Execution Frames for Style Machinery Style Dictionaries Create a dictionary and name it in the system dictionary, .sysdict names are TiogaBaseStylesDictionary, TiogaPrintStylesDictionary, TiogaScreenStylesDictionary Executing Style Rules Types for Implementing Style Commands Implementing Style Operations Named Attribute Parameter Operations Real Parameter Operations Glue Parameter Operations Color Parameter Operations Support Procs Support for initializing style parameters Κρ•NewlineDelimiter –(cedarcode) style™codešœ™Kšœ ΟeœI™TKšœ$™$Kšœ6™6Kšœ0™0K™/J™)K™(K˜™(K™——šΟk ˜ Kšœ žœ*˜9Kšœžœžœ˜Kšœžœ ˜Kšœžœ0˜:—K˜šΟnœžœž œž˜)K˜Kšžœžœžœ˜Kšœžœ˜Kšœžœ˜Kšœžœ˜Kšœ žœΟc˜AKšœžœ  ˜/Kšœ žœ ˜7—head™$˜K™—šŸœžœžœžœ˜SK˜—šŸ œžœžœ˜?K˜—KšŸ œžœžœ˜8—™š Ÿœžœžœžœžœ˜RK™BK™—Kš Ÿ œžœžœžœžœžœ˜oKšŸ œžœžœ˜3Kš Ÿœžœžœžœžœ˜BKš Ÿœžœžœ žœžœžœ˜XK˜Kšœ ˜)Kšœ 3˜Išœ 3˜IK˜—šœ žœžœ žœ ˜,K™\—Kšœ ˜2Kšœ  ˜=K˜KšŸœžœ žœžœ žœžœžœ˜^—™Kš Ÿ œžœžœžœžœ˜@Kš Ÿœžœ&žœžœžœ˜WKšŸœžœ+žœžœ˜XšŸœžœ/žœžœ˜[K˜—Kš Ÿœžœžœžœžœ ˜Qš Ÿœžœžœžœžœ ˜9K˜—šŸ œžœžœ ˜KK˜—Kšœ˜Kšœ˜Kšœ˜—™%Kšœ žœžœ&˜;Kšœ žœžœ&˜K˜ Kšž˜—šœ˜K˜——Kšœ žœ%˜2K˜Kšœžœžœ˜šœžœžœ˜K˜7K˜*K˜——šœ™KšŸ œžœ˜)KšŸ œ ˜KšŸ œ˜KšŸ œ˜KšŸ œ˜šœ$™$Kšœ ˜ KšŸ œ ˜KšŸ œ˜KšŸ œžœžœ ˜5—šœ™Kšœ ˜ KšŸ œ ˜KšŸ œ ˜KšŸ œ˜KšŸ œ˜—šœ™Kšœ ˜ KšŸ œ ˜KšŸ œ ˜KšŸ œ˜KšŸ œ˜—šœ™Kšœ˜KšŸ œ ˜KšŸœ ˜KšŸœ˜KšŸœ˜——™ šŸ œžœžœžœ ˜?K˜—š Ÿœžœžœžœžœžœ˜5K™—š Ÿœžœžœžœžœžœ˜5K™—šŸœžœžœžœ˜2K˜—š Ÿ œžœžœžœžœ˜AK˜—š Ÿ œžœžœ žœ žœ˜HK˜—š Ÿ œžœžœžœžœ˜AK˜—šŸ œžœžœžœ˜1K˜—šŸ œžœžœ ˜6K˜—KšŸœžœžœ ˜8—šœ)™)Kš Ÿœžœžœ žœžœž˜UKš Ÿ œžœžœžœžœ˜5KšŸœžœžœ˜NKšŸœžœžœ˜6KšŸœžœ˜$KšŸœžœ˜$KšŸœžœ˜$KšŸœžœ˜$šŸ œžœ˜K˜——K˜Kšžœ˜—…—tρ