AIS support:
AIS support is to be moved to (???)
Imager:
Error and Warning now come from a new interface, ImagerError. (These are also still exported to Imager.mesa for compatibility, but clients that need to reference one of these and that would otherwise not need to depend on Imager.mesa should migrate to the ImagerError interface).
Imager.StrokeJoint and Imager.StrokeEnd have been given some spare encoding space.
ImagerBackdoorExtras:
Folded into ImagerBackdoor
ImagerClipper:
New interface. Brings definition of Clipper data type down from ImagerBackdoor so it can be used at the lower levels. Note: ImagerBackdoor left unchanged (as of January 20, 1992); this will require a bit of extra consing for GetClipper and SetClipper, but avoids recompiling ImagerBackdoor. Revist when possible.
ImagerColor:
Sample renamed SampleValue; now REAL instead of CARDINAL.
Now supports color models defined in the Color Encoding Standard.
ImagerColorFns:
Decommissioned; for HSV and CMYK, see ImagerColor; for everything else, see Maureen.
ImagerColorPrivate:
Substantial reworking (simplification, I hope) of what it takes to implement a color operator, and the way in which color information comes out of a color operator.
The color operator class in ImagerColorPrivate has changed. Eventually, there will be provisions for a fast, general, table lookup for the implementation of TranslatePixels and Translate, so the class does not have a TranslatePixelsProc anymore. Also, the single-pixel translator uses sequences instead of callbacks (there's a scratch pool for these now).
(These changes should impact few clients apart from device implementations.)
ImagerDevice:
Added a second class record, the works class, to the device; this holds the procs that were formerly in ImagerDeviceWorks, and was done to allow different implementations at this level.
New DeviceClass proc, MaskPixelArray, that allows the device to get an untransformed, undecompressed bitmap mask; also corresponding new works proc of the same name.
Removed MaskThinVector (which now could be done through the works class).
device.state.allow now has FALSE as the initial values for everything, so that clients do not need to be as sensitive to additions.
Added GetBufferColorOperator, SetHalftoneProperties to device class.
Removed the clipper parameter from each of the works procedures and moved it to the device.
Renamed DeviceRep and DeviceParamRep to ensure that clients use the apropriate make procedures rather than direct allocation.
Added MaskedDashedStroke to works class (so that PDL emission does not lose).
ImagerDeviceWorks:
c.f. ImagerDevice above. Types moved to ImagerDevice. This interface now provides the default implementations for the works class of the device, with inline access to the functions via the works class.
ImagerError:
New interface to hold Error: ERROR and Warning: SIGNAL.
ErrorDesc type has been expanded to carry additional machine-sensible information on a proplist.
ImagerFont:
The XChar type is now Char.XCHAR. This means that selectors & constructors don't work anymore; calls to the Char interface are needed instead, i.e.:
xchar.code => Char.Code[xchar]
xchar.set => Char.Set[xchar]
[set: set, code: code] => Char.Make[set: set, code: code]
Also, the character set is 24 bits instead of 8 - inspect carefully any charset variables, and don't try to declare any arrays of 2**24 elements.
ImagerRasterExtras:
Folded into ImagerRaster
ImagerRealInline:
Decomissioned (use RealInline instead).
ImagerPen:
Saved the pen creation parameters in PenRep (for help in PDL emission).
ImagerPixel:
Added a propList to PixelMapRep.
ImagerSample:
Added ref field to RawDescriptor type.
Moved RawListTransfer from ImagerSampleExtras.
Decomissoned ImagerSampleExtras.MapFromVM (Impl still present; better not to introduce interface dependency on CountedVM. Has no PCedar clients anyway.)
ImagerScanConverterExtras:
Folded into ImagerScanConverter
ImagerSF:
Decomissioned (use SF instead).
ImagerStrokeExtras:
Folded into ImagerStroke
ImagerTransformation:
CISDeg from ImagerTransformationExtras; made EasyTransformation a non-INLINE
ImagerTransformationExtras:
Folded into ImagerTransformation
ImagerBitmapContext:
No longer copies the ImagerBrick.Brick type - clients must now refer to the ImagerBrick interface instead of ImagerBitmapContext for this type.
TO DO
new home for AIS support (done)
halftoning props in device class. (done)
dashed strokes in device class? (done)
Provision for new stroke ends and caps. (done - types in Imager are MD enumerations)
DeviceClipper(done)
ImagerTypeface - better control of registration order.(done)
PixelArray compression (done in Interpress)
Font home???
Add GetBufferColorOperator to device class. (done)
ImagerColorPrivate needs more work - the application of color operators needs to be separable into a potentially discontinuous pixel decoding and a continuous color space transformation. (done)
ImagerError: add ErrorCodeFromAtom, add demand parameter to AtomFromErrorCode