News
ImagerScaled: December 28, 1990
Thanks to Jane Chang for noticing that the (inline) implementation of Scaled.Floor is incorrect for negative arguments; to repair this without massive recompilation, I intoduced a new version of the interface with a new name (ImagerScaled), and changed the Imager implementation to use it.
ImagerFontWorks.MapChar: December 21, 1990
Bug fix; was not returning success=TRUE unless an explicit MapChar proc was present in the typeface class (although it had done most of the work).
Code tightening: December
18, 1990
RRA worked over ImagerManhattanImpl, ImagerPenImpl, ImagerPixelImpl, ImagerSampleImpl.
ICFFile transformation bug fixed: December 3, 1990
ImagerFontScalingHintsImpl.ApplyHints was changed to do Transform instead of TransformVec; the way it was written, it ignored the translation component of the font's transformation.
ImagerRasterExtras.GetFontAtom: November 6, 1990
New procedure (for benefit of ImagerX11ContextImpl). Clients of ImagerRasterExtras will need to be re-compiled (I think PS is the only client of this).
Incremental stroke generation: November 6, 1990
Changed ImagerDeviceWorksImpl to scan-convert sections of a compound stroke trajectory (such a can come from a dashed stroke) as separate pieces, rather than as one huge outline. This can cut the memory requirement by a lot (but it does not speed it up much - a little more work needs to be done).
Tolerance adjustment: October 25, 1990
Raised tolerance in ImagerPath.ConicToCurves to reduce the number of pieces generated. (ImagerPathImpl) The only Imager operations this could effect are dashed strokes, but the Postscript flattening operation will be somewhat less aggressive.
Floating point tweaks: October 11, 1990
RRA introduced new ImagerRealInline interface, and used it in FunctionCacheImpl, ImagerStrokeImpl, ImagerScanConverterImpl.
Inline floating point (second try): September 26, 1990
ImagerScanConverterImpl modified to do more floating point inline; this showed a 50% improvement in one scan-converter-bound Interpress master. (Other modules still use out-of-line floating point, but don't seem to be as critical.)
Brick calculation tweaked: September 18, 1990
ImagerBrick.BrickFromFilter now samples at the center of each pixel, instead of at the corner.
Inline floating point retracted: September 7, 1990
Some strangeness turned up with the inline floating point version, so the Imager has been rebuilt without it.
Inline floating point: September 7, 1990
Ken Pier took the time to generate the mountain of .switches files needed to generate the floating point inline.
Performance bug fix: September 7, 1990
ImagerScanConverterImpl:
Due to a missing RETURN in ParTo, curved segments outside of the clipping bounds were causing a horrble number of line segments to get generated. One test case was 100 times faster after this was fixed.
Change: August 25, 1990
ImagerInterchange, ImagerRasterExtras:
Added these interfaces to aid interconversion of Imager and PSGraphics contexts.
Bug fix: August 15, 1990
ImagerPenImpl:
Added catch for ImagerTransformation.NumericalInstability in MakeTransformedCircle.
Bug fix: July 19, 1990
ImagerColorImpl:
The DataEqual procedure was set to DataEqualGrayLinear rather than DataEqualGrayDensity. Found by Shawn Coogan:ROCH803:Xerox, who is using some version of the MasterBlaster imager.
Change: July 19, 1990
ImagerTypefaceImpl:
The font substitution strategy is changed to make it more robust. The second pass through the typeface creators (with substitute: TRUE) has been eliminated (none of the creators took advantage of that, anyway), and there is now a list of font names to try as a substitute, rather than just a single name. Also, the substitute font should no longer get re-internalized every time a substitution happens.
Bug fix: June 22, 1990
ImagerSampleImpl:
Fixed ApplyToSamples (had bug that caused SAMPLEDBLACK(clear) to do the wrong thing on the color display). Now calls RasterOp, so it's faster, too.
Bug fixes: June 20, 1990
Bugs found in the course of porting FontEdit...
ImagerDeviceProcs: *
NEW INTERFACE*
This new interface provides procedures for reducing special cases to more general ones, for the bebfit of Device implementations that find they need to fall back on a more general case. (Exported by ImagerDeviceWorksImpl; at present only one of these procedures is actually implemented.)
ImagerSampleImpl:
Due to a bad boundary condition in RasterOp (i.e., when fSize=0), it was possible for a memory smash to occur when BasicTransfer was called with fSize=0 and sSize > 0. This is avoided now, but RasterOp still ought to be fixed sometime.
Changes: May 7, 1990
These changes came about during the visit of some of the MasterBlaster crew, and were primarily to address the (relatively small number of) deficiencies in the MasterBlaster/PCedar Postscript implementations.
ImagerTypeface: *
INTERFACE
CHANGE*
Added MapChar proc to typeface class.
ImagerStroke: *
INTERFACE
CHANGE*
Removed SquareEndWithNoDirection SIGNAL.
Added EndCode, JointCode types and their interpretations.
Added closed: BOOL parameter to MeasurePath, Dashes
ImagerFDTypeface, ImagerFDBuild: *RECOMPILED INTERFACES*
ImagerStrokeExtras: *
NEW INTERFACE*
Procs for support of ImagerDeviceWorksImpl.FastHardMaskSampledBits. (not incorporated into ImagerStroke, beacause their general usefulness is not yet clear.)
ImagerFontWorks: *
NEW INTERFACE*
Procs for getting masks out of fonts.
ImagerCDTypefaceImpl: Added an implementation for typeface.class.MakeCharMask.
ImagerDeviceWorksImpl: Changes for new handling of SquareEndWithNoDirection. Character set 1B `reserved' for PostScript user-defined characters. Fixed holes in ImagerDeviceWorksImpl.FastHardMaskSampledBits case by ensuring that the pieces are always fat enough to touch.
ImagerFontWorksImpl: New impl.
ICFFileFontFormat, ImagerICFFileTypefaceImpl, ImagerFontScalingHints, ImagerFontScalingHintsImpl: Reinstated/re-ported.
ImagerMaskCaptureImpl: Bug fix in capturing bounding boxes of null masks.
ImagerImpl, ImagerRasterImpl, ImagerStrokeImpl, ImagerFontImpl: tracked/implemented interface changes.
Changes: February 28, 1990
Changed ImagerSys.RawHash to not ignore leftover bytes at the end (this proc was formerly used only with fullword data, but now programs want it to work for strings). Also, a modulus of 0 should be OK, and means to return a fullword hash.
Changes: February 27, 1990
Added implementations for some ImagerScanConverter procedures that were formerly unbound.
Changes: February 19, 1990
Now uses PFS for font lookup. Font file names start with /imagerfonts/; the PFS prefix map is initialized (by PFSPrefixMapInit) to point this at the same old place we have been using, but now you can use prefix maps to get all or part of your font environment from a different place.
Fixed a bug in font-caching that caused a NIL dereference for some large characters.
Fixed a performance bug in the Interceptor code; this should lead to a big improvement in X11Viewers, and a smaller but perhaps noticeable improvement for software-cursor RawViewers.
Changes: ???
The following is de-implemented in PCedar:
Certain fonts, namely the XC*-*-* fonts, may have multiple files to describe all the characters, rather than have one huge file for the whole font. For instance, the collection of files
[]<>7.0>Fonts>Xerox>XC1-2-2>Modern-bold.cd-c0
[]<>7.0>Fonts>Xerox>XC1-2-2>Modern-bold.cd-c41
[]<>7.0>Fonts>Xerox>XC1-2-2>Modern-bold.cd-c356
[]<>7.0>Fonts>Xerox>XC1-2-2>Modern-bold.cd-c357
[]<>7.0>Fonts>Xerox>XC1-2-2>Modern-bold.cd-c360
[]<>7.0>Fonts>Xerox>XC1-2-2>Modern-bold.cd-c361
together might describe the single font Xerox/XC1-2-2/Modern-bold. For this kind of font, the extension must match "cd*"; the part that matches the "*" is not used internally. Character set information is derived from the family names inside the font files, by interpreting the last three characters of the family name as octal digits. If this is not present and it is a raster font, the resolutionY is checked as well (for compatibility with product Print Server fonts). These files may contain splines or rasters, and multiple splines and rasters may be combined into a single dictionary. Thus, for example, another way of composing the above font is
[]<>7.0>Fonts>Xerox>XC1-2-2>Modern-bold.cd-splines
[]<>7.0>Fonts>Xerox>XC1-2-2>Modern-bold.cd-kanjiA-300bpi
[]<>7.0>Fonts>Xerox>XC1-2-2>Modern-bold.cd-kanjiB-300bpi
[]<>7.0>Fonts>Xerox>XC1-2-2>Modern-bold.cd-c0-300bpi
[]<>7.0>Fonts>Xerox>XC1-2-2>Modern-bold.cd-c0-72bpi
In this fictional example, the "cd-splines" file contains character descriptions for many character sets (but not the kanji sets). The kanji characters exist only as rasters, and are bulky enough that patitioning them into two files makes sense. The common rasters in character set 0 are provided in raster form at two common resolutions.