~
BEGIN
ScanMode:
TYPE ~
MACHINE
DEPENDENT {
slowRightFastUp,
slowDownFastRight,
slowLeftFastDown,
slowUpFastLeft,
slowRightFastDown,
slowDownFastLeft,
slowLeftFastUp,
slowUpFastRight
};
CString:
TYPE = CStrings.CString;
MatchCString: PROC [s: CStrings.CString, text: REF TEXT] RETURNS [BOOL];
AtomFromCString:
PROC [s: CStrings.CString]
RETURNS [
ATOM];
SetupStandardParams: SetupStandardParamsProc;
SetupStandardParamsProc:
TYPE =
PROC [
s: SetupHandle,
sSizeDevice: CARDINAL,
fSizeDevice: CARDINAL,
scanMode: ScanMode,
surfaceUnitsPerInchX: REAL,
surfaceUnitsPerInchY: REAL
] RETURNS [CII.RES];
DefaultSetupArrayParamSize: SetupArrayParamSizeProc; -- default impl - returns accessError
SetupArrayParamSizeProc: TYPE = PROC [s: SetupHandle, name: CString, size: CARDINAL] RETURNS [CII.RES];
DefaultSetupIntParam: SetupIntParamProc; -- default impl - returns accessError
SetupIntParamProc: TYPE = PROC [s: SetupHandle, name: CString, index: CARDINAL, value: INT] RETURNS [CII.RES];
DefaultSetupFloatParam: SetupFloatParamProc; -- default impl - returns accessError
SetupFloatParamProc: TYPE = PROC [s: SetupHandle, name: CString, index: CARDINAL, value: REAL] RETURNS [CII.RES];
DefaultSetupNameParam: SetupNameParamProc; -- default impl - returns accessError
SetupNameParamProc: TYPE = PROC [s: SetupHandle, name: CString, index: CARDINAL, value: CString] RETURNS [CII.RES];
DefaultCreateHandleFromRasters: CreateHandleFromRastersProc; -- default impl - returns accessError
CreateHandleFromRastersProc:
TYPE =
PROC [
s: SetupHandle,
logicalDevice: CARDINAL,
nRasters: CARDINAL,
rasters: POINTER TO ARRAY [0..0) OF CII.RasterRep,
handleResult: POINTER TO CII.Handle
] RETURNS [CII.RES];
DestroySetupObjectProc:
TYPE =
PROC [s: SetupHandle]
RETURNS [
CII.
RES];
CreateSetupHandle:
PROC [
data: REF,
SetupArrayParamSize: SetupArrayParamSizeProc ¬ DefaultSetupArrayParamSize,
SetupIntParam: SetupIntParamProc ¬ DefaultSetupIntParam,
SetupFloatParam: SetupFloatParamProc ¬ DefaultSetupFloatParam,
SetupNameParam: SetupNameParamProc ¬ DefaultSetupNameParam,
CreateHandleFromRasters: CreateHandleFromRastersProc ¬ DefaultCreateHandleFromRasters
] RETURNS [SetupHandle];
SetupHandle: TYPE = REF SetupObjectRep;
SetupObjectRep:
TYPE =
RECORD [
data: REF SetupHandleDataRep,
procs: SEQUENCE COMPUTED CARDINAL OF CII.CProc
];
SetupHandleData: TYPE = REF SetupHandleDataRep;
SetupHandleDataRep:
TYPE =
RECORD [
data: REF ANY, -- For the more device-specific data
sSizeDevice: CARDINAL,
fSizeDevice: CARDINAL,
scanMode: ImagerTransformation.ScanMode,
surfaceUnitsPerInchX: REAL,
surfaceUnitsPerInchY: REAL
];
ScanModeTranslate:
PROC [scanMode: ScanMode]
RETURNS [ImagerTransformation.ScanMode];
StateRep:
TYPE ~
RECORD [
refTab: RefTab.Ref ¬ NIL, -- Things passed out to clients & not destroyed, w/ ref counts
device: ImagerDevice.Device,
initialTransformation: ImagerTransformation.Transformation ¬ NIL, -- for GetInitialMatrix
savedDevice: ImagerDevice.Device ¬ NIL, -- For use during BuildClipper scope
color: ImagerColor.Color, -- color that has been set by the client
dcolor: ImagerColor.Color, -- color that has been pushed into the device
transformation: ImagerTransformation.Transformation, -- client to device
viewClipper: ImagerDevice.DeviceClipper,
clientClipper: ImagerClipper.Clipper,
halftoneProperties: REF HalftonePropertiesRep, -- set by the client
dhalftoneProperties: REF HalftonePropertiesRep, -- pushed into the device
cp: ImagerDeviceVector.DVec,
scratchDesc: ImagerSample.RasterSampleMap,
cleanups: LIST OF CII.CleanupObject
];
HalftonePropertiesRep:
TYPE =
RECORD [
p: ImagerBrick.HalftoneProperties
];
The following are for the benefit of Cedar-language implementations of the cii interface.
ValidateClipper:
PROC [state:
REF StateRep];
PixelMapFromRasters: UNSAFE PROC [samplesPerPixel: CARD, buffers: POINTER TO ARRAY[0..0) OF POINTER TO CII.RasterRep] RETURNS [ImagerPixel.PixelMap];
MakeSampleMap:
UNSAFE PROC [raster:
POINTER
TO
CII.RasterRep, scratch: ImagerSample.RasterSampleMap ¬
NIL]
RETURNS [ImagerSample.RasterSampleMap];