DIRECTORY IO, NodeProps USING [PutProp, GetSpecs, GetProp], Rope, TAProperties, TextNode USING [Ref]; TAPropertiesImpl: CEDAR PROGRAM IMPORTS IO, NodeProps, Rope EXPORTS TAProperties = { OPEN TAProperties; ROPE: TYPE = Rope.ROPE; artworkAtom: ATOM = $ArtworkClass; artworkFileNameAtom: ATOM = $ArtworkFileName; artworkPathAtom: ATOM = $ArtworkPath; artworkImageAtom: ATOM = $ArtworkImage; boundingBoxAtom: ATOM = $BoundingBox; originAtom: ATOM = $Origin; trueRope: ROPE = "TRUE"; artworkNode: ROPE = "ArtworkNode"; artworkFileName: ROPE = "ArtworkFileName"; artworkImage: ROPE = "ArtworkImage"; AnArtworkNode: PUBLIC PROCEDURE [node: TextNode.Ref] RETURNS [BOOLEAN] = { propValue: REF; IF node#NIL THEN IF (propValue _ NodeProps.GetProp[node, artworkAtom])#NIL THEN IF Rope.Equal[artworkNode, NodeProps.GetSpecs[artworkAtom, propValue]] THEN RETURN[TRUE]; RETURN[FALSE]; }; SetArtworkProp: PUBLIC PROCEDURE [node: TextNode.Ref] = { NodeProps.PutProp[node, artworkAtom, artworkNode]}; AnArtworkFileName: PUBLIC PROCEDURE [node: TextNode.Ref] RETURNS [BOOLEAN] = { propValue: REF; IF node#NIL THEN IF (propValue _ NodeProps.GetProp[node, artworkAtom])#NIL THEN IF Rope.Equal[artworkFileName, NodeProps.GetSpecs[artworkAtom, propValue]] THEN RETURN[TRUE]; RETURN[FALSE]; }; SetArtworkFileNameProp: PUBLIC PROCEDURE [node: TextNode.Ref] = { NodeProps.PutProp[node, artworkAtom, artworkFileName]}; AnArtworkImage: PUBLIC PROCEDURE [node: TextNode.Ref] RETURNS [BOOLEAN] = { propValue: REF; IF node#NIL THEN IF (propValue _ NodeProps.GetProp[node, artworkAtom])#NIL THEN IF Rope.Equal[artworkImage, NodeProps.GetSpecs[artworkAtom, propValue]] THEN RETURN[TRUE]; RETURN[FALSE]; }; SetArtworkImageProp: PUBLIC PROCEDURE [node: TextNode.Ref] = { NodeProps.PutProp[node, artworkAtom, artworkImage]}; AnArtworkPath: PUBLIC PROCEDURE [node: TextNode.Ref] RETURNS [BOOLEAN] = { propValue: REF; IF node#NIL THEN IF (propValue _ NodeProps.GetProp[node, artworkPathAtom])#NIL THEN IF Rope.Equal[trueRope, NodeProps.GetSpecs[artworkPathAtom, propValue]] THEN RETURN[TRUE]; RETURN[FALSE]; }; SetArtworkPathProp: PUBLIC PROCEDURE [node: TextNode.Ref] = { NodeProps.PutProp[node, artworkPathAtom, trueRope]}; GetBoundingBox: PUBLIC PROCEDURE [node: TextNode.Ref] RETURNS [x,y: REAL _ 0] = { propValue: REF; IF node#NIL THEN IF (propValue _ NodeProps.GetProp[node, boundingBoxAtom])#NIL THEN { s: IO.STREAM _ IO.RIS[ NodeProps.GetSpecs[boundingBoxAtom, propValue]]; x _ s.GetReal[]; y _ s.GetReal[]}; RETURN[x,y]}; SetBoundingBoxProp: PUBLIC PROCEDURE [node: TextNode.Ref, x,y: REAL] = { NodeProps.PutProp[node, boundingBoxAtom, IO.PutFR["%g %g", IO.real[x], IO.real[y]]]}; GetOrigin: PUBLIC PROCEDURE [node: TextNode.Ref] RETURNS [x,y: REAL _ 0] = { propValue: REF; IF node#NIL THEN IF (propValue _ NodeProps.GetProp[node, originAtom])#NIL THEN { s: IO.STREAM _ IO.RIS[ NodeProps.GetSpecs[originAtom, propValue]]; x _ s.GetReal[]; y _ s.GetReal[]}; RETURN[x,y]}; SetOriginProp: PUBLIC PROCEDURE [node: TextNode.Ref, x,y: REAL] = { NodeProps.PutProp[node, originAtom, IO.PutFR["%g %g", IO.real[x], IO.real[y]]]}; }. ¼TAPropertiesImpl.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. written by Beach, February 9, 1985 9:36:46 pm PST last edited by Stone, November 19, 1982 5:09 pm ʃ˜šœ™Jšœ Ïmœ1™šžœEž˜KJšžœžœ˜ ———Jšžœžœ˜J˜J˜—šŸœžœž œ˜9J˜3J˜—š Ÿœžœž œžœžœ˜NJšœ žœ˜šžœžœž˜šžœ4žœž˜>šžœIž˜OJšžœžœ˜ ———Jšžœžœ˜J˜J˜—šŸœžœž œ˜AJ˜7J˜—š Ÿœžœž œžœžœ˜KJšœ žœ˜šžœžœž˜šžœ4žœž˜>šžœFž˜LJšžœžœ˜ ———Jšžœžœ˜J˜J˜—šŸœžœž œ˜>J˜4J˜—š Ÿ œžœž œžœžœ˜JJšœ žœ˜šžœžœž˜šžœ8žœž˜BšžœFž˜LJšžœžœ˜ ———Jšžœžœ˜J˜J˜—šŸœžœž œ˜=J˜4J˜—š Ÿœžœž œžœžœ ˜QJšœ žœ˜šžœžœž˜šžœ8žœžœ˜DJš œžœžœžœžœ2˜GJ˜J˜——Jšžœ˜ J˜—šŸœžœž œžœ˜HJšœ)žœžœ žœ ˜UJ˜—š Ÿ œžœž œžœžœ ˜LJšœ žœ˜šžœžœž˜šžœ3žœžœ˜?Jš œžœžœžœžœ-˜BJ˜J˜——Jšžœ˜ J˜—šŸ œžœž œžœ˜CJšœ$žœžœ žœ ˜PJ˜—J˜—…— .m