<<>> <> <> <> <<>> <> <<>> <> <<>> <> <<>> < PixelMap conversion, or via the FastTranslatePixelsProc, or both. Usually, if only one is done, it should be the FastTranslatePixelsProc, because MakeAccelerator will provide a FastTranslateProc that layers on top of it.>> <<>> <<>> DIRECTORY ImagerColor USING [ColorOperator], ImagerColorPrivate USING [ColorTransform, TranslateProc], ImagerPixel USING [PixelMap, PixelProc], ImagerPixelArray USING [PixelArray], Prop USING [PropList]; ImagerColorTranslateWorks: CEDAR DEFINITIONS ~ BEGIN OPEN ImagerColorPrivate, ImagerColor, ImagerPixel, ImagerPixelArray; ColorTransformAccelerator: TYPE = REF ColorTransformAcceleratorRep; <> ColorTransformAcceleratorRep: TYPE = RECORD [ slot: INT, -- determines probe order; choose sparsely name: ATOM, -- for human consumption fastTranslate: FastTranslateProc ¬, fastTranslatePixels: FastTranslatePixelsProc ¬ NIL, propList: Prop.PropList ¬ NIL ]; FastTranslateProc: TYPE = PROC [self: ColorTransformAccelerator, colorOperator: ColorOperator, transform: ColorTransform, pa: PixelArray] RETURNS [PixelMap]; <> FastTranslatePixelsProc: TYPE = PROC [self: ColorTransformAccelerator, colorOperator: ColorOperator, transform: ColorTransform, maxIn: PixelProc, translateAction: PROC [translate: TranslateProc]] RETURNS [done: BOOL ¬ TRUE]; <> MakeAccelerator: PROC [ slot: INT, name: ATOM, fastTranslate: FastTranslateProc ¬ NIL, fastTranslatePixels: FastTranslatePixelsProc ¬ NIL, propList: Prop.PropList ¬ NIL] RETURNS [ColorTransformAccelerator]; RegisterAccelerator: PROC [ColorTransformAccelerator]; RemoveAccelerator: PROC [slot: INT] RETURNS [ColorTransformAccelerator]; <> UnregisterAccelerators: PROC; <> GetAccelerators: PROC RETURNS [LIST OF READONLY ColorTransformAccelerator]; <> END.