<> <> <> DIRECTORY Draw2d, BasicTime, Commander, Imager, IO, RealFns, Rope, ViewerClasses, ViewerOps; Draw2dTestsImpl: CEDAR PROGRAM IMPORTS BasicTime, Commander, Draw2d, Imager, IO, RealFns, Rope, ViewerOps ~ BEGIN Draw2dTest: Commander.CommandProc ~ { viewer: ViewerClasses.Viewer _ ViewerOps.CreateViewer[ flavor: $Lines, paint: FALSE, info: [ name: "Draw2d Tests", openHeight: 330, scrollable: FALSE, column: left, iconic: TRUE] ]; ViewerOps.OpenIcon[viewer]; }; Paint: ViewerClasses.PaintProc ~ { p, q: ARRAY [0..100) OF Imager.VEC; ImagerTestLine: PROC ~ { FOR i: NAT IN [0..100) DO Imager.MaskVector[context, p[i], [150.0, 145.0]]; ENDLOOP; }; Draw2dTestLine: PROC ~ { FOR i: NAT IN [0..100) DO Draw2d.Line[context, q[i], [450.0, 145.0]]; ENDLOOP; }; <> <> <> <> <> <> <<};>> < 1.0 DO>> <> <> <<};>> <> < 1.0 DO>> <> <> <<};>> Time: PROC [proc: PROC, name: Rope.ROPE, label: Imager.VEC] RETURNS [REAL] ~ { time: REAL _ BasicTime.PulsesToSeconds[BasicTime.GetClockPulses[]]; proc[]; time _ BasicTime.PulsesToSeconds[BasicTime.GetClockPulses[]]-time; Draw2d.Label[context, label, IO.PutFR[Rope.Concat[name, ": %6.4f seconds"], IO.real[time]]]; RETURN[time]; }; FOR i: NAT IN[0..100) DO t: REAL _ REAL[i]*2.0*3.1415926535/100.0; p[i] _ [150.0+120.0*RealFns.Cos[t], 135.0+120.0*RealFns.Sin[t]]; q[i] _ [p[i].x+300.0, p[i].y]; ENDLOOP; Draw2d.Label[context, [200, 295], IO.PutFR["Line/MaskVector Factor: %6.4f", IO.real[ Time[ImagerTestLine, "Imager.MaskVector", [65, 270]]/ Time[Draw2dTestLine, "Draw2d.Line", [345, 270]]]]]; <> <> <> }; ViewerOps.RegisterViewerClass[$Lines, NEW[ViewerClasses.ViewerClassRec _ [paint: Paint]]]; Commander.Register["Draw2dTest", Draw2dTest, "\nTest Draw2d.Line and Draw2d.Circle."]; END.