#
# $Id: history,v 1.4 1994/03/19 09:27:15 heinz Exp heinz $
#

This is the history from the original 1.7 source up to now:

    2.0 HWG internal

        - SAS/C 6.x compatibility

        - Added 24 bit capabilites. Note that any of the 24 plane ptrs can
          be set to NULL to achieve "partial" rendering of bitplanes. This
          way you can render e.g. a 300 dpi A4 24 bit image one plane
          at a time even on a small machine doing 24 passes. Afterwards you
          could combine the planes on HD to a full image. This seems to be
          easier than rendering clips with a depth of 24 bit.

        - sethalftonephase.

        - integrated Tom Rokicki's fixes.

        - handling of illegal type 3 encodings (well sort of).


    2.1 HWG still not public

        - After a virtual memory restore the current font setup was totally
          messed up, which resulted in a invalidfont error in the best case.
          Worse cases were possible.
          I fixed this by removing a few global (Yuck!) font variables and
          integrating them into the graphics state. As a side effect calls
          to show are now faster.

        - For errstackoverflow and errdictstackoverflow the stacks were not
          cleared as the should be according to Adobe.  The fix for the
          operandstack is complete. For the dictstack and execstack there
          might be still a problem. I currently have no idea how to solve
          multiple stack overflows and the Adobe manual doesn't really tell
          what should happen if the execution stack runs over its limit.

        - For the first time I put it into RCS.

    22  HWG still not public

        - The new local/global VM scheme seems to be working now.
          The dictstack is like in a level 2 implementation now.
          The overhead needed triggers an increase of memory use of about
          80% for all objects. I don't see a way to reduce this if I want
          to keep going to level 2. No idea yet on how to implement a nice
          garbage collection without adding _major_ overhead to object
          handling. At least a restore does a true memory free now.

        - New operators: setglobal, currentglobal, gcheck, scheck,
                         glyphshow, <<, >>, undef, arct,
                         setstrokeadjust, currentstrokeadjust,
                         setbbox.

        - Neither setbbox nor the strokeadjust stuff is tested.

        - The strokeadjust stuff doesn't really do a decent strokeadjust
          currently. It is more of an experiment right now.

        - GlobalFontDirectory is now there, (Shared variant, too).

        - putinterval now deals with packed arrays.

        - execstack now correctly clears the attributes for all copied
          objects.

        - dictionaries conform to level 2 now and expand as needed.

        - undef is implemented. It doesn't reduce the dictionary size. It
          just invalidates the entry. (Note: This is not a typenull!)

        - null is no longer an operator but a constant.

        - The complete system name table according to the adobe reference
          manual appendix F is now implemented.

        - The object types are now numbered according to the red book,
          page 113, table 3.14.

        - Hashing in nametoken() should be a little faster now.

        - clippath will no longer return an empty clipping path. Instead
          it will return a zero area path at (0,0) device space.

        - <~ASCII85~> implemented, not tested.

        - Some speedups in scantoken.

        - Only PaintTypes 0 and 2 are accepted now, not tested.

        - CDevProc handling put in, not tested.

        - added 'a' and '+' modes to file opening, not tested.

        - defineuserobject/undefineuserobject/execuserobject, not tested.

        - filter mechanism in place, eexec runs on top of it now.
          dct, ccittfax, and lzw filters missing, proc and string input not
          tried.

        - Real BlueValues with a zero fractional part are now accepted to
          allow use of broken fonts.

        - /loadfont in init.ps discards garbage on the operand stack left
          by the font.

        - filenameforall implemented. I need this functionality for the
          resource ops. Limited testing.

        - setobjectformat, currentobjectformat implemented. Not tested.

        - error handling should be pretty much level 2 compliant now
          except for "binary" and stackoverflow handling inside the error
          handler itself. Not really tested.
          stackoverflow handling inside the error functions is a nasty one,
          as we don't have Level 2 compliant expanding stacks. This
          actually doesn't matter, as even a "true" level 2 interpreter
          could run out of memory in that situation. It seems to be an
          obscure and undefined case. I handle it my way. At least it
          should not crash.

        - character showing could be a little faster now. Hashing for
          it does not need multiplications anymore. It uses shifts and
          additions.

        - status should handle a string arg now. Not tested.

        - renamefile, deletefile, fileposition, setfileposition
          implemented. Not tested.

    22.3 HWG still not public

        - callextfunc now no longer public. It is nasty stuff anyway.

        - Now the names @vmhwm, @prompts instead of vmhwm, prompts.

        - many internal speedups and simplifications. Don Knuth said that
          "premature optimization is the root of all evil.". This is of
          course true, but I mainly cleaned up quite some code to make
          it more readable to me and "reduced" definitely unneeded type
          sizes. The speedups came as a positive side effect, though they
          are probably not that noticeable with standard PostScript code.

        - imaging and filling now in separate source files. It was all too
          big IMHO.

        - For displays with less than 100 dpi on at least one axis, a
          default halftone frequency of 30 instead of 60 is chosen now.
          This gives at least some halftoning on screen as default which
          makes many pictures look much nicer. I am not sure that this
          conforms to the B&W book where it is said that 60 is returned as
          default, but it gives better results for B.J.User. So what the
          heck ...

        - When grestore behaves like a noop because there is nothing to
          restore, the halftone screens are no longer invalidated.

        - copy is now level 2 compliant for dictionaries. No attribute
          changes anymore for the destination.

        - There was some unlogical code in calclogicaldepth (pun intended)
          which IMHO could have failed under special circumstances. Should
          be safer now.

        - When closing an eexec file, the dictstack is popped only if there
          is sysdict on top of it. Anything else is silently ignored to
          avoid recursion caused by the error handler (which can cause
          files to be closed, too).

        - Implemented a ForceBold mechanism for type 1 fonts. If
          ForceBold is true and a stem would be rendered 1 pixel wide
          because its width is >= 1.3 and < 1.5 it will be thickened to two
          pixels. 1.3 seems to give visually acceptable results. 1.25
          as limit for rounding up looks pretty unreadable already.

    22.4 HWG still not public

        - StdXW and StemSnapX implemented. "Snapping" should work when the
          delta to the actual width is less than 1.0 _pixel_.

        - Implemented FamilyBlues and FamilyOtherBlues.

        - selectfont is now built in and behaves correctly.

        - Major rework of the font machinery to help adding the composite font
          extensions. Now most of the vars needed for rendering are cached
          at setfont time. I trade memory for speed.

    22.5 HWG still not public

        - Moved the ForceBold limit up to 1.4. 1.3 just doesn't look too good.

        - Major rework of the font caching. The font cache size can now be
          changed (needed for setcacheparams) and with a tiny little change
          the efficiency of the font cache has gone up it seems.

        - Implemented setcacheparams, currentcacheparams.

    22.6 HWG still not public

        - Setup internals for the implementation of User Parameters. This causes
          changes to VM handling, font handling, and the interpreter stack setup.
          All other values are currently noops.

        - currentuserparams, setuserparams, setvmthreshold implemented.
          Currently we don't have any garbage collection. So the value you set with
          setvmthreshold does nothing.

    22.7 HWG still not public

        - Somewhere in 22.7 I went to SAS/C 6.51.

    22.8 HWG still not public

        - xshow, yshow, xyshow implemented. Seem to work well.

        - missing flush in error message output added.

        - rectfill, rectclip, rectstroke.

        - half a ton of const keywords added to many functions.

        - setgstate, gstate, currentgstate. Not tested.

        - forall should no longer enumerate read protected keys.
          I am not exactly sure that this is correct behaviour, though.

        - kshow resets the current font after executing the proc if
          necessary.

        - findresource will behave as in a "small memory" situation as
          Adobe names it. That is, it will never fiddle with the VM mode
          even for type 3 fonts, unlike e.g. Display PostScript does
          according to Adobe.

        - moved definefont and undefinefont over to using resource
          primitives. I don't even know right now if it will compile. ;^)
          Uhm, as you see, undefinefont should be available now, too.

        - Implemented @RegisterDiskResource to tell HWGPOST what external
          resources are available.

        - findfont is using resources now, too.

        - init.ps is setting up the disk resources now!

        - eexec should behave like run now. It should automatically close
          the file it creates on EOF _and_ on any other termination! This
          should fix "{eexec} stopped" like constructs which used to leave
          systemdict on the dictionary stack.

        - findfont, definefont, and undefinefont are now defined in terms
          of resource operators as described in the R&W book.

        - ISOLatin1Encoding, StandardEncoding, and findencoding are now
          defined in terms of resource operators as described in the R&W
          book.

        - Split up font handling and show handling even more. Another
          source file postshow.c is now available.

    22.9 HWG still not public

        - minor cosmetic reworks in some publically visible files

    22.10 HWG first public beta release



*** EOT ***
