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 stylesDictsNames: REF ARRAY OfStyle OF ATOM; stylesDicts: REF ARRAY OfStyle OF TJaM.Dict; bindingDictName: ATOM; -- TiogaBindingDictionary bindingDict: TJaM.Dict; attachmentsDictName: ATOM; -- TiogaAttachedStylesDictionary attachmentsDict: TJaM.Dict; styledictName: ATOM; 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]; executingName: ATOM; -- for debugging 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. pNodeStyleWorks.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 Michael Plass, March 26, 1985 9:33:58 am 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šœ Οmœ1™