Copyright (C) 1997, 1998 Aladdin Enterprises. All rights reserved. Unauthorized use, copying, and/or distribution prohibited. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - This file, NEWS-PCL, describes the changes in the most recent releases of PCL5e/c, entries are made in reverse chronological order. This news file differs from other Aladdin news files it is automatically generated from the revision control logs. The dates provided for each entry are the dates the sources were committed to the source code repository. Version 1.04 (12/01/98) ====================== Mon Nov 30 23:23:29 1998 Henry Stiles * pcl_msvc.mak: adds new drivers for MSVC builds. * pcpage.c: removed unused variable. * pgchar.c, pgdraw.c, pgmisc.h: adds accessor function to get the current pen for character fill edge mode. * pcursor.c, pcjob.c: adds stdlib and documents its use for atoi(). * Anomalies.txt: updates for fixed bugs and a spell check. * pcl_ugcc.mak: changes order of devices. Thu Nov 26 19:54:46 1998 Henry Stiles * pcfont.c, pcjob.c, pcpage.c: changed to use pjl_compare() instead of strcmp(). * pcl_ugcc.mak: asynchronous drivers are now included by default on unix platforms. * Anomalies.txt: updated for recent bug fixes. Tue Nov 24 23:24:22 1998 Henry Stiles * rtraster.c, rtgmode.c, pcwhtidx.c, pcwhtidx.h, pcuptrn.c, pcpatrn.c, pcpatrn.h, pcindxed.h, pcpalet.h, pcindxed.c: changes #inlclude to 8.3 * Attic/pcwhtindx.h, Attic/pcindexed.c, Attic/pcindexed.h, Attic/pcwhtindx.c: removes >8.3 file names. * pgdraw.c: hpgl_rm_vector_fill was not handled properly. * pgframe.c: factors out common code for side effect of changing the picture frame. And fixes a fixes bug where we were not setting the default plot size correctly. * pginit.c: provides initialization for the plot size being set. * pcindxed.h, pcwhtidx.c, pcwhtidx.h, pcindxed.c, pcl.mak: canonicalizes filenames to 8.3 and fixes clean makes for msvc. Thu Nov 19 06:16:42 1998 Henry Stiles * pgdraw.c: We now correctly implement the background of hpgl/2 vector fills. Strangely HP draws the backgrounds with an opaque or transparent white depending on the current transparency mode. * pcursor.c: pcl support for pjl formlines. * pgconfig.c, pggeom.h: hpgl_PS command #ifdef in for the sole purpose of being able to print large plot sizes for RTL customers. * pcpage.c, pcstate.h: First cut at wide a4 implementation. Sun Nov 8 09:00:53 1998 Henry Stiles * NEWS-PCL: *** empty log message *** Thu Nov 5 21:50:43 1998 Henry Stiles * pgvector.c: bezier curves appear to be hardwired to no joins - they do not use the current LA setting for join type * pgdraw.c, pgchar.c: fixes for character edging the pen was not being defaulted correctly in CF and the hpgl/2 drawing machinery was filling the character in addition to stroking hpgl/2 vector fills Thu Nov 5 06:57:31 1998 Marcos H. Woehrmann * pcfont.c: Added /winnt/fonts/ to tt font search path. Version 1.03 (11/06/98) ===================== Thu Nov 5 21:50:43 1998 Red Hat Linux User * pgvector.c: bezier curves appear to be hardwired to no joins - they do not use the current LA setting for join type * pgdraw.c, pgchar.c: fixes for character edging the pen was not being defaulted correctly in CF and the hpgl/2 drawing machinery was filling the character in addition to stroking hpgl/2 vector fills Thu Nov 5 06:57:31 1998 marcos * pcfont.c: Added /winnt/fonts/ to tt font search path. Thu Nov 5 05:48:16 1998 Red Hat Linux User * pcpage.c: adds a call to erase page after new paper size is called. Tue Nov 3 08:01:38 1998 Red Hat Linux User * pctext.c, pcfsel.c: returns in error instead of noting an error if symbol mapping fails * pcmain.c: forgetting to close the device at the end of processing Fri Oct 30 22:49:06 1998 Red Hat Linux User * pccsbase.c: normalizes ranges to (0,1) for independent color spaces Sun Oct 25 08:05:36 1998 Red Hat Linux User * pcmain.c: proper usage of debugging memory switches * rtraster.c: better bit twiddling for performance Fri Oct 16 15:41:39 1998 Red Hat Linux User * pcmain.c: "canocalizes" args to **args. * pgdraw.h: adds prototype for exported function hpgl_close_path(). * pglabel.c: corrects a parameter mismatch with fetching the next character. This code was not updated when the gs text interface changed in 550. * pcpage.c, pcsfont.c: removes an incorrect const qualifier. * pccsbase.c, pcindexed.c: corrects improper aggregate initialization. * pcl.mak: reviewed and added new include file dependencies. * pgstate.h: removes obsolete boolean which detected a path * pcjob.c, pcmtx3.c, pcommand.c, pgdraw.c, pcbiptrn.c, pccrd.c, pcfont.c, pctext.c, pcuptrn.c, rtraster.c, rtrstcmp.c: adds include files for correct prototypes we also corrected a problem in correctly detecting if a path was actually being rendered Wed Oct 14 20:50:48 1998 Red Hat Linux User * pcpatrn.c: fixes benevolant type mismatch Tue Oct 6 17:49:00 1998 Red Hat Linux User * pcmtx3.h: changes math.h to math_h. Version 1.02 (10/05/98) ===================== Mon Oct 5 02:12:39 1998 Red Hat Linux User * pcstate.h, pcsymbol.h, pcmain.c, pcommand.c, pcpage.c, pcfsel.c, pcjob.c, pclfont.c, pcfont.c: Updates for getting intitial state from the pjl environment. * pcl_ugcc.mak: adds contone color laserjet device for testing purposes Sun Oct 4 06:50:52 1998 Red Hat Linux User * pgpoly.c, pgdraw.c, pctext.c: a more conservative approach to page ejecting. The have_page boolean was being updated to true unnecessarily * pcfsel.c: Did not score symbol set correctly during font selection. Version 1.01 (9/26/98) ===================== Sat Sep 26 18:50:50 1998 Red Hat Linux User * Attic/pcl_conf.mak, pcl.mak, pcl_msvc.mak, pcl_top.mak, pcl_watc.mak: changes to support msvc builds Version 1.00 (9/18/98) ======================= Fri Sep 18 06:22:58 1998 Henry Stiles * All files * Removes ghostscript license and replaces it with the shorter Aladdin license notice. * pcindexed.h, rtgmode.c, pcfrgrnd.c, pcindexed.c: Changes a variable name from fixed to pfixed to avoid a spurious warning from the Solaris C compiler. * pcl.mak: corrected typos in dependency lists and removes ghostscript copyright notice. Tue Sep 15 07:04:00 1998 Henry Stiles * pcl_ugcc.mak: adds tiff devices to the makefile. * Anomalies.txt: A new file that describes known anomalies. Mon Sep 14 05:28:27 1998 Henry Stiles * pcpatrn.c: sets pen to 1 if the pen number equals the number of entries in the palette. Sun Sep 13 05:51:08 1998 Henry Stiles * rtraster.c, rtrstcmp.c, pgdraw.c, pcpatxfm.c, pcrect.c, pctext.c, pcwhtindx.c, pgcolor.c, pgconfig.c, pcl.mak, pcl_ugcc.mak, pcmain.c, pcmtx3.c, pcpalet.c, pcpatrn.c, pcht.c, pcindexed.c, pccid.c, pccprint.c, pccsbase.c: adds color laserjet driver, fixes makefile header file dependency typos and, removes unused variables. Sat Sep 12 08:09:46 1998 Henry Stiles * pcpage.c: modification so that pcl can request page sizes. * pcparam.h: modifications so pcl can request page sizes. Fri Sep 11 03:42:59 1998 Henry Stiles * pcpage.c, pcparam.h: reverts page device media changes to support cljet5. Thu Sep 10 17:07:39 1998 Henry Stiles * pcl_msvc.mak: adds broken msvc files for shipment to johnd's. * pcpatrn.c: removes SGI NFS null from the end of a file. * pcl_ugcc.mak: removes cljet driver temporarily. Tue Sep 8 07:35:55 1998 Red Hat Linux User * pcl.mak: adds .h file dependencies. * pcl_top.mak: changes to not compile main with debug. * pcsymbol.c: We were allocating extra for the symbol set codes but they are actually allocated through the structure allocation since the symbol code array is defined statically. * pctext.c: Modified the handling of the right text margin. It turns out that the case of no-line-wrap must be handle differently that the case in which line wrapping is enabled. * pcpatrn.c: Fixed typo in pattern_set_shade_gl: a solid pattern should be used for an unrecognized intensity if the intensity is > 0, not <= 0. This gave rise to an anomally on panel 1815 of the PCL 5c FTS. * pcpalet.c: Modified invocations of pcl_crd_build_default_crd to pass a pcl_state_t pointer rather than a memory structure pointer; see pccrd.h above. * pcmain.c: Modified code to not always define DEBUG. * pcindexed.c: Modified the code to handle the situation in which the black and white reference points for a component are the same. This is tested in the PCL 5c FTS. * pcht.h, pcht.c: Changed from a single color mapping device to multiple color mapping devices, one for each mapping type. This is needed because the rendering method used by the foreground may be different from that used by the palette (which, in turn, is used by a raster), so it is necessary to have two different color mapping device present at the same time. Added support for table-dither (mask, non-monotonic) halftones to be used with the (not fixed) built-in rendering methods. Added code to allow device-specific halftones and re-mapping arrays encoded as gs_param dictionaries to be read from the device on start-up. Added support for table dither halftones. Also provided a structure descriptor for pcl_ht_builtin_dither_t structures, as these may now need to be allocated when read from a device. * pccrd.c, pccrd.h: Added facility to read a device-specific CRD encoded as a gs_param dictionary. Changed the operand to pcl_crd_build_default_crd from a memory pointer to a pcl_state_t pointer. This is necessary to allow the default dictionary to be read from a device. Mon Sep 7 02:02:19 1998 Henry Stiles * pcsfont.c: bad revision. Sun Sep 6 19:50:14 1998 Henry Stiles * pcsymbol.c: fixes memory allocation problem introduced because a new field was added to the symbol set data structure. Sat Sep 5 05:55:09 1998 Henry Stiles * pcpage.c, pcparam.h, pcommand.c, pcl_sgi.mak, pcl_ugcc.mak: modifications to support paper size specification from pcl. Fri Sep 4 02:47:44 1998 Red Hat Linux User * pcl.mak: add new header file dependencies. Fri Sep 4 02:45:08 1998 Henry Stiles * pcl.mak: update documentation. Fri Sep 4 02:39:01 1998 Red Hat Linux User * pcl_top.mak: adds decmap device. * pcsymbol.c: Modified pcsymbol_do_reset to support overlay macros. * pcbiptrn.c, pcbiptrn.h: Modified the shade pattern for the 11% - 20% case; this had been entered incorrectly previously. Added the "un-solid" pattern. This is a masked patter that has no foreground pixels. It is used with GL/2, as a solid white foreground is transparent in GL/2 (if GL's "source transparency" is set), but opaque in PCL. Added prototype for the pcl_pattern_get_unsolid_pattern. * pccprint.c: Modified the code for the pixel placement operator for the new manner in which pixel placement information is kept in the PCL state. Modified the pccprint_do_reset routine to support overlay macros. * pcdraw.c: Added code to handle GL/2's source transparency separately from PCL's pattern transparency. The two parameters have the same effect (all GL/2 objects are masks, and hence do not support notion of "source" transparency similar to PCL's), but must be maintained independently in the PCL-GL/2 state. Turned off fill-adjust for all PCL objects. This used to (incorrectly) implement pixel placement, which is now implemented directly for rectangles (the only object affected by pixel placement for most printers (the CLJ 5/5M allows pixel placement to also affect scalable characters)). * pcht.c: Modified to support color-mapping as part of a rendering method, and to support monochrome mode. As part of this change, the never-used device field of the rend_info_t structure is replaced with a color mapping parameter, which is used with a color-mapping forwarding device that is always present. To support monochrome mode, the nature of the remapping array has been change somewhat, and the render_method field of the pcl_ht_t structure modified to be the mapped rather than raw rendering method. Fields for print mode (monochrome or color) and raw rendering method have been added to the PCL state. * pcht.h: Added prototype for the new procedure pcl_ht_set_print_mode, which can be used to set monochrome or colored print mode. Changed the render_method field/operand to be unsigned. * pcindexed.h, pcindexed.c: Generalixed the pcl_cs_indexed_0_is_{black | white} routines to check for the blackness or whiteness of any entry. The routines are now know as pcl_cs_indexed_is_{black | white}. Replaced prototypes for pcl_cs_indexed_0_is_{black | white} with those for pcl_cs_indexed_is_{black | white}. Defined macros to correspond to the former prototypes, for backwards compatibility. * pcfont.c, pcmacros.c, pcjob.c: Modified pcmacros_do_reset to support overlay macros. * pcmain.c: Added a pair of calls to gs_reclaim prior to running the first job. This is very important; until gs_reclaim is called for the first time, freed string objects are not recovered. Hence, the memory they use is lost. Added some debugging code to assist with memory leak detection. * pcmisc.c: Modified pcmisc_do_reset to support overlay marcos. * pcommand.c: Modifed pcl_init_state for the deletion of the grid_adjust field and the addition of the addition of the monochrome_mode and render_mode fields in the graphic state. * pcpage.c: Modified print quality command ( * o # Q) to home the cursor. Modified pcpage_do_reset to support overlay macros. * pcpalet.c: Added command for setting monochrome/normal print mode. Modified pcl_palette_set_render_method to reflect the addition of the render_mode field in the PCL state. Modified palette_do_reset to support overlay macros. * pcpalet.h: Changed render_method operand to be unsigned. * pcpatrn.c: Modified pattern_set_gl_RF to account for the fact that patterns defined with the RF command may be either masked or colored patterns, and in the former case are fully transparent if GL/2's source transparency is set and the current pen is white. Also modified this routine to use the current pen if the pattern does not exist, even if the applicable SV or FT command specified using pen 1 (this requires a hack regarding the interpretation of the current pen operand when it is negative). Modified several other pattern_set_*_gl routines for mask patterns (shades, cross-hatch, user-defined) to make these fully transparent if the current pen is white. Also modified pattern_do_reset to support overlay macros. * pcrect.c: Moved implementation of pixel placement for PCL objects to this module (rectangles are the only PCL object affected by pixel placement in this and most other PCL interpreters, including most but not all HP implementations. Modified pcrect_do_reset to support overlay macros. * pcsfont.c: Modified pcsfont_do_reset to support overlay macros. * pcstate.h: Added pcl_pattern_transparent field, so that PCL's pattern transparency setting and GL/2's source transparency setting may be separately maintained. Added the render_mode and monochrome_mode fields, to support the monochrome/normal print mode selection command. Replaced the grid_adjust field with the pp_mode field. * pcstatus.c: Modified pcsymbol_do_reset to support overlay macros. * pctext.c: Removed no longer needed invocation of gs_setfilladjust (for PCL, fill adjust is now always set to 0). Modified pctext_do_reset to support overlay macros. * pcuptrn.c: Modified pcl_pattern_RF to handle both colored and uncolored patterns created via the RF command. * pcursor.c: Modified pcursor_do_reset to support overlay macros. * pgconfig.c: Split the hpgl_DF command into two sections, one of which is accessible separately to support the reset required for overlay macros. * pgdraw.c: Modified the handling of patterns generated with the RF command to allow both colored and uncolored variations. Modified the manner in which the current pen is specified for uncolored patterns generated via the RF command. If pen 1 is desired, the opposite of the current pen is specified, to allow for the possibility that the pattern may not exist. Changed the handling of fill adjust to reflect the replacement of the grid_adjust state parameter with pp_mode (note that the actual implementation of pixel placement for GL objects is still broken). * pginit.c: Added support for overlay macros. * pglfill.c: Modified hpgl_FT to read and use the second optional parameter for mode 11 patterns (this is contrary to the documentation, but consistent with the SV command and has been empirically verified on two HP PCL implementations). Modified hpgl_RF to allow for both colored and uncolored patterns. * pgmand.h: Added prototype for the new procedure hpgl_reset_overlay. This is used to reset the GL/2 state prior to the execution of an overlay macro. * pgstate.h: 1. Replaced the su_ union with the sp_ structure, and made the latter part of the fp_ structure consistent with the sp_ structure. Though not documented as such, for fills other than line fills the FT and SV commands are symmetric. 2. Added the is_mask field to the rf_ structure. This is used to support uncolored patterns created via the RF command. * rtgmode.c: Modified gmode_do_reset to support overlay macros. Tue Aug 25 19:18:59 1998 Henry Stiles * pcl.mak: adds code to clean up gs generated files. Mon Aug 24 08:03:18 1998 Henry Stiles * pcl.mak: removed device files from current working source directory that should not exist there in the first place... Mon Aug 24 07:36:32 1998 Red Hat Linux User * pglabel.c: whitespace difference. * pcwhtindx.c: Fixed a bug/memory leak in pcl_cmap_map_raster. If a new raster array was allocated to hold the re-mapped pattern data, its pointer was never being placed in *pout_pixinfo. * pcuptrn.c: 1. Modified code to support (up to) two rendered instances per pattern: one mask and one colored. 2. Modified the reset code to clear the pattern cache. This is an attempt to limit memory fragmenation. * pcpatrn.h: Modified the pattern structure to be able to hold two rendered instances: one colored and one uncolored. This is an attempt to reduce memory thrashing due to the frequent and unnecessary re-allocation of mask patterns. * pcpatrn.c: Modified to the pattern handling code to allow for two rendered instances per pattern: one mask and one colored. This is an attempt to reduce memory thrashing due to the frequent and unnecessary re-allocation of mask patterns. * pcpalet.c: 1. Fixed a pair of memory-related problems in the push/pop palette code: pop palettes were erroneously getting an extra reference, and the palette stack global was not being set to NULL after the palette had been cleared. 2. Removed code in build_default_palette that undefined the current palette before redefining it. This avoids a release/allocate operation for a dictionary entry that otherwise would confuse the memory leak detection tool. 3. Fixed a bug in a never-used case in pcl_palette_PW. If the palette does not exist when this routine is called, it is created, but in the earlier code the ppalet pointer was not being updated after the creation. 4. Modified clear_palette_store to leave the current palette alone if it already is the default palette. This simplifies work with the memory leak detector. This change also moves the invocation of the build_default_palette routine to this procedure from its various callers. * pcmain.c: Moved the reporting points for the memory leak detection code to more convenient locations. * pcht.c: Fixed a memory leak in set_threshold_ht. A fourth threshold string was being generated to handle the case of a 4-color output device, but this was overwritting the red-component threshold array allocated previously. Not output error occurred because the two arrays were meant to be the same, but the previously allocated array could no longer be freed. * pcfsel.c: *** empty log message *** * pccolor.c: Modified the set color component and assign color index commands to be permitted but ignored in raster graphics mode (i.e.: they do not end raster graphics mode). This is contrary to the documentation but matches the behavior of the CLJ 5/5M and DJ 1600C/CM. The effect is visible in PCL 5c FTS panel 845. * pcindexed.c: Fixed bug in pcl_cs_indexed_update_lookup_tbl. A new indexed color space may have been created via the "unshare" operation, but the color space pointer was never being updated. Hence, the lookup table was being modified in the old color space. This bug is visible on PCL 5c FTS panels 2410 and 2411. * pcmain.c, pcindexed.c, pcl.mak, pcht.c, pcfsel.c, pccolor.c: *** empty log message *** Sun Aug 23 05:30:05 1998 Henry Stiles * pgdraw.c: Work around to stroke lines gl/2 style fills individually instead of accumulating the entire fill in one path. This guarantees that a fixed amount of memory will be used for fills. It was changed to fix fts 1462 which creates a path that is much to large, not due to the size of the graphical object being filled but the algorithm fills from GL/2's anchor corner and clips the resulting fill to the graphical object. We should find the equivalent maximum value for the anchor corner such that the coordinates are less than the X and Y origin coordinates of the bounding box of the object being filled. Sun Aug 23 05:10:18 1998 Red Hat Linux User * rtraster.c: Modified to properly (if quite slowly) handle the case of a raster with source transaprency off but pattern transparency on. * pcwhtindx.c: Modified pcl_cmap_create_remap_ary to potentially provide a remap array if source of pattern transparency is set. This is necessary to support the "two part" image structure required for rendering images with opaque source\ s but transparent patterns. Also removed a remnant of the temporary hack that made all rasters opaque. * pctext.c: fills in a missing else. * pcpatrn.h: Added the "colored" bit to the pattern object, to indicate if it was rendered as a colored pattern. * pcpatrn.c: 1. Moved the retained copy of the special white base color space to pccsbase.c, and the retained copy of the default halftone to pcht.c. This improves modularity and simplifies work with memory leak detection tools. 2. Modified the rendering of uncolored, transparent, foreground patterns. If the halftone or color rendering dictionary in the foreground varies from that in the current palette, these must be rendered as colored patterns (because the graphic library's state cannot retain two halftones). 3. Plugged a memory leak in render_pattern: the pattern instance of the previous pattern was not being released. 4. Added stub for the driver configuratioin command. This will absorb any data provided. * pcpalet.c: Modified to retain a copy of the default palette, and to set the default drawing color during initialization. This reduces memory thrashing slightly and simplies work with memory leak detection tools. * pcpage.c: Modified new_page_size to reset the default transformation in the graphic state. This is necessary for devices that feed different size sheets in different directions. * pcmain.c: Removed initialization of the PCL coordinate system; this is now handled in pcpage.c * pcindexed.h: Changed the third operand of pcl_cs_indexed_build_special to be a const byte pointer rather than a byte pointer. Also added the prototype for the new initialization routine pcl_cs_indexed_init. * pcindexed.c: Modified default pen widths to be in plotter units rather than millemeters. Also modified to retain the default indexed color space. This reduces memory thrashing slightly, and makes working with memory leak detection tools simpler. The latter change requires the addition of the an intialization procedure, pcl_cs_indexed_init. * pcht.c: Modified to provide a default transfer map (color lookup table) for the default (K) component of the output. This is necessary to properly handle cases in which the provided transfer function for the other components is an inverting function, for otherwise the results will be very black. Also modified to maintain a copy of the default halftone, which is allocated at boot time. This reduces memory trhashing slight, but more significantly it greatly simplifies working with the memory leak detection tools. * pcfrgrnd.c: Modified to retain a copy of the default foreground. This reduces memory thrashing slightly, and more significantly simplifies work with memory leak detection tools. * pcdraw.c: Modified pcl_grestore to release the references held by the pcl_gstate_ids_t structure that will be discarded. This plugs a major memory leak. VS: ---------------------------------------------------------------------- * pccsbase.h: Added prototype for initialization routine pcl_cs_base_init. * pccsbase.c: Modified to keep a copy of the special "white" color space. Previously, this was kept in pcpatrn.c, which was not ideal from a modularity point of view. As part of the change, an initialization routine, pcl_cs_base_init, has been added. Thu Aug 20 20:56:10 1998 Henry Stiles * Anomalies.txt: remove cvs anomalies * pglabel.c, pcindexed.c, pcmain.c: changes default translation (pcmain.c) to put pcl's origin correctly on devices that have a non-zero imageable area. Also, pcl was not using the default plu to initialize line width and the character code was not properly initializing the line width prior to stroking "stroke" font characters.