<<>> <> <> <> <> DIRECTORY Commander, CommanderOps, Convert, Imager, ImagerBitmapContext, ImagerFont, ImagerSample, IO, Process, Rope, ViewerPrivate; RTTest: CEDAR PROGRAM IMPORTS Commander, CommanderOps, Convert, Imager, ImagerBitmapContext, ImagerFont, ImagerSample, IO, Process, ViewerPrivate = BEGIN font: Imager.Font ~ ImagerFont.FindScaled["xerox/xc1-2-2/modern", 20]; colors: ARRAY BOOL OF RECORD [bg, fg: Imager.Color] ~ [ [Imager.black, Imager.white], [Imager.white, Imager.black]]; phase: BOOL ¬ FALSE; Test: PROC [bSize, sSize, n: NAT] RETURNS [bytesPerImage, total: INT] ~ { sm: ImagerSample.RasterSampleMap ~ ImagerSample.NewSampleMap[box: [[0, 0], [bSize, bSize]]]; sc: Imager.Context ~ ViewerPrivate.CreateContext[main]; bc: Imager.Context ~ ImagerBitmapContext.Create[deviceSpaceSize: [bSize, bSize], scanMode: [slow: down, fast: right], surfaceUnitsPerInch: [1, 1], pixelUnits: TRUE, fontCacheName: $Bitmap]; e: ImagerFont.Extents ~ ImagerFont.RopeBoundingBox[font, "XXXX"]; pos: Imager.VEC ~ [x: (bSize+e.leftExtent-e.rightExtent)/2, y: (bSize+e.descent-e.ascent)/2]; ImagerBitmapContext.SetBitmap[bc, sm]; bc.SetFont[font]; sc.ClipRectangleI[0, 0, sSize, sSize]; FOR i: NAT IN [0 .. n] DO bc.SetColor[colors[phase].bg]; bc.MaskRectangle[[0, 0, bSize, bSize]]; bc.SetColor[colors[phase].fg]; bc.SetXY[pos]; bc.ShowRope[IO.PutFR1["%04g", [integer[i]] ]]; sc.DrawBitmap[bitmap: sm, referencePoint: [bSize/2, bSize/2], scanMode: [down, right], position: [sSize/2, sSize/2]]; Process.CheckForAbort[]; phase ¬ NOT phase; ENDLOOP; bytesPerImage ¬ ImagerSample.WordsForMap[[bSize, bSize]]*BYTES[WORD]; total ¬ n*bytesPerImage; RETURN}; Cmd: Commander.CommandProc ~ { argv: CommanderOps.ArgumentVector ~ CommanderOps.Parse[cmd]; bSize: NAT ~ Convert.IntFromRope[argv[1]]; sSize: NAT ~ Convert.IntFromRope[argv[2]]; n: NAT ~ Convert.IntFromRope[argv[3]]; bytesPerImage, total: INT; [bytesPerImage, total] ¬ Test[bSize, sSize, n]; cmd.out.PutF["bytesPerImage=%g, total=%g.\n", [integer[bytesPerImage]], [integer[total]] ]; RETURN}; Commander.Register["RTTest", Cmd, "bSize, sSize, n: NAT"]; END.