DIRECTORY NodeStyle USING [NameParam, RealParam, Ref], NodeStyleOps USING [OfStyle], Rope USING [ROPE], TextLooks USING [Looks], TJaM USING [Cmd, CommandProc, Dict, Array, Frame, Object]; NodeStyleWorks: CEDAR DEFINITIONS ~ BEGIN OPEN NodeStyle; ROPE: TYPE ~ Rope.ROPE; Object: TYPE ~ TJaM.Object; OfStyle: TYPE ~ NodeStyleOps.OfStyle; Frame: TYPE ~ TJaM.Frame; 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: TextLooks.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: 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 ]; 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 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, April 14, 1985 4:38:50 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 สฑ˜codešœ™KšœH™HKšœ$™$Kšœ6™6Kšœ0™0K™/J™)K™)K˜™(K™——šฯk ˜ Jšœ œ˜,Jšœ œ ˜Jšœœœ˜Jšœ œ ˜Jšœœ0˜:—K˜Kšะblœœ ˜!šœœœ ˜K˜Kšœœœ˜Kšœœ˜Kšœ œ˜%—head™$Kšœœ˜K˜šฯnœœœœ˜SK˜—šŸ œœœ˜?K˜—KšŸ œœœ˜8—™š Ÿœœœœœ˜RK™BK™—Kš Ÿ œœœœœœ˜oKšŸ œœœ˜3Kš Ÿœœœœœ˜BKš Ÿœœœ œœœ˜XK˜Kšœฯc˜)Kšœ 3˜Išœ 3˜IK˜—šœ œœ œ ˜,K™\—Kšœ ˜2Kšœ  ˜=K˜KšŸœœ œœ œœœ˜^—™Kš Ÿ œœœœœ˜@Kš Ÿœœ&œœœ˜WKšŸœœ+œœ˜XšŸœœ3œœ˜_K˜—Kš Ÿœœœœœ ˜Qš Ÿœœœœœ ˜9K˜—šŸ œœœ ˜KK˜—Kšœ˜Kšœ˜Kšœ˜—™%Kšœ œœ&˜;Kšœ œœ&˜