DIRECTORY NodeStyle USING [NameParam, RealParam, Ref], NodeStyleOps USING [OfStyle], Rope USING [ROPE], TextLooks USING [Looks], TJaM USING [Frame, PushInteger, PushReal, PopReal]; NodeStyleWorks: CEDAR DEFINITIONS IMPORTS TJaM = BEGIN OPEN NodeStyle; Object: TYPE = TJaM.Object; OfStyle: TYPE = NodeStyleOps.OfStyle; Frame: TYPE = TJaMInternal.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: Object]; InitStyleDict: PROC; InitStylesDict: PROC; InitBindingDict: PROC; InitAttachmentsDict: PROC; GetStyleDict: PROC [frame: Frame, styleName: ATOM, kind: OfStyle, def: Rope.ROPE _ NIL] RETURNS [d: dict Object]; 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: Object; -- system dictionary userdict: Object; -- user dictionary with helpful stuff and errordefs styledict: Object; -- style dictionary has Tioga style machinery names stylesDictsNames: REF ARRAY OfStyle OF ATOM; stylesDicts: REF ARRAY OfStyle OF dict Object; bindingDictName: ATOM; -- TiogaBindingDictionary attachmentsDictName: ATOM; -- TiogaAttachedStylesDictionary 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, styleName: 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: Object; get: Object; run: Object; start: Object; 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: REF READONLY TEXT, 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 ]; opsList: LIST OF RECORD[name: REF READONLY TEXT, op: PROC [frame: Frame]]; Preregister: PROC [param: Param, op: PROC [frame: Frame]] RETURNS [Param]; 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 [command Object]; GetObject: PROC [frame: Frame, name: ATOM] RETURNS [ob: Object]; ForceLowerName: PUBLIC PROC [n: ATOM] RETURNS [ATOM]; PushText: PROC [frame: Frame, txt: LONG STRING]; PushObject: PROC [frame: Frame, ob: Object]; PopObject: PROC [frame: Frame] RETURNS [Object]; PushName: PROC [frame: Frame, name: ATOM]; PopName: PROC [frame: Frame] RETURNS [ATOM]; 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: ATOM, ok: BOOL]; TryToPopReal: PROC [frame: Frame] RETURNS [value: REAL _ 0.0, ok: BOOL]; TryToPopString: PROC [frame: Frame] RETURNS [string: string TJaMBasic.Object, ok: BOOL]; TypeCheckName: PROC [obj: Object] RETURNS [ATOM]; TypeCheckDict: PROC [obj: Object] RETURNS [dict Object]; TypeCheckCommand: PROC [obj: Object] RETURNS [command Object]; SpecialOpArray: PROC [name: ATOM, op: Object] RETURNS [key: ATOM, array: array Object]; StyleParamKey: PROC [name: ATOM] RETURNS [key: ATOM]; DefineSpecialOp: PROC [frame: Frame, name: ATOM, proc: TJaM.CommandProc] RETURNS [op: Object]; RegisterStyleCommand: PROC [frame: Frame, name: ATOM, proc: TJaM.CommandProc]; RegisterStyleLiteral: PROC [frame: Frame, name: ATOM]; 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 Doug Wyatt, March 2, 1985 5:43:49 pm PST Michael Plass, March 14, 1985 4:51:01 pm PST Rick Beach, March 19, 1985 6:10:20 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™Kšžœ"˜(K˜—š   œžœžœžœžœ˜AK˜—š   œžœžœ žœ žœ˜HK˜—š œžœžœ'žœ˜XK˜—š  œžœžœžœ˜1K˜—š  œžœžœ˜8K˜—Kš œžœžœ˜>—šœ)™)Kš  œžœžœ žœžœž˜WKš   œžœžœžœžœ˜5Kš œžœžœžœ˜^š œžœžœ˜NK™—š œžœžœ˜6K˜——K˜Kšžœ˜—…—ds