<> <> DIRECTORY Real USING [FixI, Float], UnifiedFonts USING [FONT], ImagerBasic USING [Pair, IntPair], ImagerTransform USING [IntTransform, InverseIntTransform, Transform, InverseTransform], ImagerDisplay USING [ContextData], Imager USING [Context]; ImagerDisplayCharactersImpl: CEDAR PROGRAM IMPORTS ImagerTransform, Real EXPORTS Imager = BEGIN NotImplementedYet: PUBLIC SIGNAL = CODE; <> << Affect current position.>> SetCP: PUBLIC PROC [context: Imager.Context, cp: ImagerBasic.Pair] = { displayContext: ImagerDisplay.ContextData = NARROW[context.data]; cp _ ImagerTransform.Transform[cp, displayContext.transform]; displayContext.currentPosition _ [ Real.FixI[cp.x], Real.FixI[cp.y] ]; }; GetCP: PUBLIC PROC [context: Imager.Context] RETURNS [cp: ImagerBasic.Pair] = { displayContext: ImagerDisplay.ContextData = NARROW[context.data]; cp _ [ Real.Float[displayContext.currentPosition.x], Real.Float[displayContext.currentPosition.y] ]; cp _ ImagerTransform.InverseTransform[cp, displayContext.transform]; }; <> SetIntCP: PUBLIC PROC [context: Imager.Context, cp: ImagerBasic.IntPair] = { displayContext: ImagerDisplay.ContextData = NARROW[context.data]; displayContext.currentPosition _ ImagerTransform.IntTransform[ cp, displayContext.transform]; }; GetIntCP: PUBLIC PROC [context: Imager.Context] RETURNS [cp: ImagerBasic.IntPair] = { displayContext: ImagerDisplay.ContextData = NARROW[context.data]; cp _ ImagerTransform.InverseIntTransform[ displayContext.currentPosition, displayContext.transform]; }; <> MaskChar: PUBLIC PROC [context: Imager.Context, font: UnifiedFonts.FONT, char: CHAR] = { }; MaskCharacters: PUBLIC PROC [ context: Imager.Context, font: UnifiedFonts.FONT, characters: REF, -- may be a Rope.ROPE or a REF TEXT start: INT _ 0, length: INT _ LAST[INT] ] = {}; <> <> END.