ELSE {
context: Imager.Context;
argument: REF REAL ← NEW[REAL ← radius];
circle: GGBasicTypes.Circle;
dummySize: NAT ← 0;
side: INT ← 2*(Real.Fix[radius+1.0]+1); -- round up and add 1
bitmap: Bitmap ← ImagerSample.NewSampleMap[[max: [side, side]]];
cachedCircle: CachedCircle ← NEW[CachedCircleObj ← [bitmap: bitmap, cw: side, ch: side]];
pixelmapRepRef: PixelMapRepRef ← NEW[PixelMapRep ← [
ref: bitmap.ref, pointer: bitmap.base, words: LONG[bitmap.wordsPerLine]*bitmap.height,
lgBitsPerPixel: 0, rast: bitmap.wordsPerLine, lines: bitmap.height
]];
pixelmapRef: PixelMapRef ← NEW[PixelMap ← [
sOrigin: 0, fOrigin: 0, sMin: 0, fMin: 0,
sSize: bitmap.height, fSize: bitmap.width, refRep: pixelmapRepRef
] ];
ImagerPixelMap.Clear[pixelmapRef^];
context ← ImagerBitmapContext.Create[[side, side], [down, right], [72.0, 72.0], TRUE];
ImagerBitmapContext.SetBitmap[context, bitmap];
context.SetColor[Imager.white];
context.MaskRectangle[ImagerBackdoor.GetBounds[context]];
context.SetColor[alignmentColor];
context.SetStrokeWidth[1.0];
circle ← GGCircles.CircleFromPointAndRadius[ [side/2, side/2], radius];
GGShapes.DrawCircle[dc: context, circle: circle ];
FunctionCache.Insert[x: x, argument: argument, value: pixelmapRef, size: pixelmapRepRef.words, clientID: $GGCircle];
FunctionCache.Insert[x: x, argument: argument, value: cachedCircle, size: ImagerSample.WordsForMap[[side, side], 1] + 2, clientID: $GGCircle];
};