<> <> <> <> DIRECTORY FitState, FitIO, FitJaM, FitBasic USING [Handle], Cubic, Complex, IO, BasicTime, --used implicitly by IO.time FS, JaMImager USING [Painter], JaM, Imager, Real, Rope USING [ROPE, Length], Seq, Vector; FitIOJaM: CEDAR PROGRAM IMPORTS JaMImager, JaM, IO, FS, Rope, FitIO, FitJaM EXPORTS = BEGIN OPEN FitState; all: BOOLEAN _ FALSE; fill: BOOLEAN _ FALSE; State: TYPE = JaM.State; DrawSamples: PROC[state: State]= { Paint: PROC[dc: Imager.Context] = { FitJaM.defaultFitIO.imager _ dc; FitIO.SetContext[FitJaM.defaultFitIO]; FitIO.DrawSamples[handle: FitJaM.defaultFitState, all: all, fill: fill]; }; JaMImager.Painter[Paint,state]; }; MarkSamples: PROC[state: State]= { Paint: PROC[dc: Imager.Context] = { FitJaM.defaultFitIO.imager _ dc; FitIO.SetContext[FitJaM.defaultFitIO]; FitIO.MarkSamples[FitJaM.defaultFitState, all]; }; JaMImager.Painter[Paint,state]; }; MarkNodes: PROC[state: State] = { Paint: PROC[dc: Imager.Context] = { FitJaM.defaultFitIO.imager _ dc; FitIO.SetContext[FitJaM.defaultFitIO]; FitIO.MarkNodes[FitJaM.defaultFitState, all]; }; JaMImager.Painter[Paint,state]; }; MarkLinks: PROC[state: State] = { Paint: PROC[dc: Imager.Context] = { FitJaM.defaultFitIO.imager _ dc; FitIO.SetContext[FitJaM.defaultFitIO]; FitIO.MarkJoints[FitJaM.defaultFitState, all]; }; JaMImager.Painter[Paint,state]; }; DrawLinks: PROC[state: JaM.State] = { Paint: PROC[dc: Imager.Context] = { FitJaM.defaultFitIO.imager _ dc; FitIO.SetContext[FitJaM.defaultFitIO]; FitIO.DrawContour[FitJaM.defaultFitState, all, fill]; }; JaMImager.Painter[Paint,state]; }; SetMarkSize: PROC[state: JaM.State] = { FitJaM.defaultFitIO.feedback.sampleSize _ JaM.PopReal[state]; }; SetScale: PROC[state: JaM.State] = { FitIO.SetContext[FitJaM.defaultFitIO]; FitIO.MagnifyData[JaM.PopReal[state]]; }; SetOffset: PROC[state: JaM.State] = { y: REAL _ JaM.PopReal[state]; x: REAL _ JaM.PopReal[state]; FitIO.SetContext[FitJaM.defaultFitIO]; FitIO.PositionData[[x,y]]; }; SetFill: PROC[state: State] = {fill _ JaM.PopBool[state]}; OpenLogFile: PROC[state: State] = { rope: Rope.ROPE _ JaM.PopRope[state]; stream: IO.STREAM; IF rope.Length[] > 0 THEN stream _ FS.StreamOpen[rope, append]; FitIO.SetContext[FitJaM.defaultFitIO]; FitIO.StartLog[stream]; }; CloseLogFile: PROC[state: State] = { FitIO.SetContext[FitJaM.defaultFitIO]; FitIO.StopLog[close: TRUE]; }; SetTypescript: PROC[state: State] = { IF JaM.PopBool[state] THEN { FitIO.SetContext[FitJaM.defaultFitIO]; FitIO.StartLog[! FitIO.NoLog => JaM.ExecuteRope[state, "(no log file) .print" ! JaM.Stop => CONTINUE]]; }; }; Note: PROC[state: State] = { c: Rope.ROPE _ JaM.PopRope[state]; IF FitJaM.defaultFitIO.logActions THEN PrintRope[c]; }; Notes: PROC[state: State] = { c: Rope.ROPE _ JaM.PopRope[state]; IF FitJaM.defaultFitIO.logActions THEN {PrintRope[c]; PrintRope[" "]}; }; Noter: PROC[state: State] = { c: Rope.ROPE _ JaM.PopRope[state]; IF FitJaM.defaultFitIO.logActions THEN {PrintLine[c]; FitJaM.defaultFitIO.log.Flush[]}; }; Time: PROC[state: State] = { IF FitJaM.defaultFitIO.logActions THEN {IO.Put[FitJaM.defaultFitIO.log,IO.time[]]; FitJaM.defaultFitIO.log.Flush[]}; }; PrintRope: PROC[s: Rope.ROPE] = {OPEN IO; Put[FitJaM.defaultFitIO.log,rope[s]]}; PrintLine: PROC[s: Rope.ROPE] = {OPEN IO; Put[FitJaM.defaultFitIO.log,rope[s],char[CR]]}; Init: FitJaM.InitProc = { JaM.Register[state,".drawsa", DrawSamples]; JaM.Register[state,".marksa", MarkSamples]; JaM.Register[state,".drawli", DrawLinks]; JaM.Register[state,".markli", MarkLinks]; JaM.Register[state,".marknodes", MarkNodes]; JaM.Register[state,".setfill", SetFill]; JaM.Register[state,".setlog", SetTypescript]; JaM.Register[state,".setscale", SetScale]; JaM.Register[state,".setoffset", SetOffset]; JaM.Register[state,".setmarksize", SetMarkSize]; JaM.Register[state,".note", Note]; JaM.Register[state,".notes", Notes]; JaM.Register[state,".noter", Noter]; JaM.Register[state,".time", Time]; JaM.Register[state,".openlogfile", OpenLogFile]; -- filename => . Switches the log file. JaM.Register[state,".closelogfile", CloseLogFile]; -- => . Closes the log file. }; FitJaM.RegisterInit[$FitIOJaM, Init]; END.