-- FitDisplayUtilitiesImpl.mesa -- Last Edited by Michael Plass August 24, 1982 3:47 pm DIRECTORY Cubic, TJaMGraphics USING [Painter], JaMFnsDefs, Graphics, SafeStorage, FitDisplayUtilities; FitDisplayUtilitiesImpl: PROGRAM IMPORTS TJaMGraphics, Graphics, JaMFnsDefs, SafeStorage EXPORTS FitDisplayUtilities = BEGIN octagonPath: Graphics.Path _ OctagonPath[]; OctagonPath: PROC RETURNS [path: Graphics.Path] = { path _ Graphics.NewPath[8]; Graphics.MoveTo[path, 1, 2]; Graphics.LineTo[path, 2, 1]; Graphics.LineTo[path, 2, -1]; Graphics.LineTo[path, 1, -2]; Graphics.LineTo[path, -1, -2]; Graphics.LineTo[path, -2, -1]; Graphics.LineTo[path, -2, 1]; Graphics.LineTo[path, -1, 2]; }; HiLight: PUBLIC PROC[x, y: REAL] = { Paint: PROC[dc: Graphics.Context] = { oldPaintMode: Graphics.PaintMode _ Graphics.SetPaintMode[dc, invert]; Graphics.Translate[dc, x, y]; Graphics.DrawArea[dc, octagonPath]; Graphics.Translate[dc, -x, -y]; [] _ Graphics.SetPaintMode[dc, oldPaintMode]; }; TJaMGraphics.Painter[Paint]; }; bezierPath: Graphics.Path _ Graphics.NewPath[4]; ShowBezierInverted: PUBLIC PROC[bezier: Cubic.Bezier] = { Paint: PROC[dc: Graphics.Context] = { oldPaintMode: Graphics.PaintMode _ Graphics.SetPaintMode[dc, invert]; Graphics.DrawStroke[dc, bezierPath, 0]; [] _ Graphics.SetPaintMode[dc, oldPaintMode]; }; Graphics.MoveTo[bezierPath, bezier.b0.x, bezier.b0.y]; Graphics.CurveTo[bezierPath, bezier.b1.x, bezier.b1.y, bezier.b2.x, bezier.b2.y, bezier.b3.x, bezier.b3.y]; TJaMGraphics.Painter[Paint]; }; CollectGarbage: PROC = { SafeStorage.ReclaimCollectibleObjects[suspendMe: TRUE, traceAndSweep: TRUE]; }; JaMFnsDefs.Register[".collectgarbage", CollectGarbage]; END. Michael Plass August 24, 1982 3:47 pm: Added CollectGarbage.