* Fixed a problem where ClassPag would not always place column headers below the reservation created by level pages.
* The readcsv interface -rc for reading SHP ADP classified TSV files now skips comments starting with '/', extracts the run date from the SDAT comment, keeps the last part of the image path (which usually has the last two digits of the order), and removes 'adt' extensions from the image path.
* The product configuration screen "Display Ad Directories" has a new field "Preserve path when importing ads" to preserve sort file image names with paths for missing ads. Also, if the import does not find an ad in the display ad directory, it retries the original image name if the original name has a path.
If an interface sends some ads in a directory built by an expression and other ads with a path, enter the expression as the display ads directory and enter the root of the path in the alternate display ads directory ending with '/+'.
Ending an alternate display ad directory with '+' uses it as a prefix without stripping the path from the sort file.
* Added a getadspng.sh interface script for use as the "Get Ads Command" for the SHP interface.
* readcsv now parses file name dates with the SHP interface.
* The makenwk.sh interface script has a new -x2 option to preserve the -## suffix in the file name of all ads.
* Improved the automatic wrapping of PDF ads. ClassPag now wraps some PDF ads that it could not wrap before, including ads that grow down from 0 and ads that have commands before setting the final geometry.
* Updated processxml for new SCS Product XML ad types.
* ClassPag now supports fractional ad scaling percentages.
This can help when reducing the heights of ad reservations by a precise value.
For example, if you needed to scale ads by 94.5%, you used to have to enter either 94 or 95 as the scale, and a 10 inch ad would end up 9.4 inches or 9.5 inches, which would differ by 0.05 inches (3.6 points) from the desired depth of 9.45 inches. You can now enter a scale factor of 94.5.
This change covers ad scale factors in the control record, in class records, and in the product configuration.
* Updated "Pages->View page dummies" to work with PGLAdBoss v15.
* Updated the page display module to the version used by Layout.
This adds some additional Spanish translations.
* The Setup -> Set Ad Colors window has a new DRAGGED context to assign a special color to dragged ads that are not locked.
* The SHP getadspng.sh interface script now accepts any three letter extension.
* The DRAGGED color now overrides the class color.
* The dialogs in Setup -> Set Class Colors and Setup -> Set Ad Colors no longer require setting all color entries. This makes it possible to use one method for setting borders and another method for setting backgrounds.
* The Setup -> Set Ad Colors window has a new "Apply Class" field that controls how the ad color interacts with the class color. The values are
BEFORE = apply the class color first and then the context color on top of it
AFTER = apply the context color first and then apply the class color on top of it
DEFBEFORE = like BEFORE but might ignore the class color based on product configuration settings
DEFAFTER = like AFTER but might ignore the class color based on product configuration settings (this is how ClassPag used to work)
DEF = same as DEFAFTER or leaving the field empty
NONE = do not apply the class color
* Updated the gs script in gs4-dist/gs4. The new script starts with "#!/bin/sh" instead of ":" and works better with some applications. If DISPLAY is not set, the new script no longer defaults to the vga device, which we no longer build into gs. If you have a /usr/local/bin/gs script, consider updating it with the new script.
* The "Just" field in page name records (to control square-offs) has a new value "MFEXP" that works like "MEXP" to build pages to the specified width and height, but "MFEXP" only expands the height of full pages and leaves the partial page with normal leading.
* Square-offs that request a vertical overflow page now work better.
* The SHP getadspng.sh interface script now removes log files.
* The minimum supported operating system is now CentOS 6.
* ClassPag places multi-column fillers in more places.
* The "Just" field in page name records (to control square-offs) options that expand square-offs now work better. Interactions with other options could have left some pages unexpanded.
* ClassPag no longer strips image file name extensions that end with a dot and digits. This fixes a problem where ClassPag would not find ads with file names like '123.2.eps'.
* Square-offs can now request a page from the back by using a negative first or last page.
* ClassPag now supports PDF images and dinks in live banners.
Expressions can write a file name into O_CPagCheckCacheImage and then read the result from I_CPagCheckCacheImage. ClassPag will search for the file.
If the file is EPS, ClassPag will return the full path.
If the file is PDF, ClassPag will return an EPS that Composition can use.
For example, to generate Composition to place an image, use
(O_CPagCheckCacheImage := "/u/displayads/autoa";
((I_CPagCheckCacheImage = "")? "":
("<zl 172t,171t,LogoFile:" // I_CPagCheckCacheImage // ">")))
To generate Composition to place a dink, use
(O_CPagDinkName := "9"; O_CPagCheckCacheImage := I_CPagDinkName;
((I_CPagCheckCacheImage = "")? "":
("<zl 172t,171t,LogoFile:" // I_CPagCheckCacheImage // ">")))
The Composition sequence "<zl,width,height,LogoFile:logo.eps>" places the logo with the specified width and height, which is useful if the logos are not always made to the exact size needed by the banner.
* ClassPag now supports unwrapping and segmenting multi-column ads created by QuarkXPress(R) for Windows 4.11 using the "Auto Segment Ads" value of "QXD4" on the "Legal and Segmented Ad Specifications" screen of the product configuration.
* When ClassPag unwraps and segments ads, it now uses the same test for the last segment of a column for generating pages and for previewing segments. This fixes a problem where the last segment of a column (according to the original wrapping) would show with "view box" but would not show on the page.
* When ClassPag unwraps and segments ads, if the configuration does not say to ignore the bounding box of all ads, ClassPag compares the bounding box of the wrapped EPS with the expected width from the number of columns that it detected in the wrapped EPS. If the results are within 25%, ClassPag scales the EPS according to that number of columns instead of scaling it to the width of 1 column. This fixes a problem where unwrapped segmented ads would be compressed by 50% or more. If the results are not within 25%, ClassPag leaves the ad unscaled, guessing that either the gutters in the EPS are not in proportion or that the EPS width is set to a large fixed value (in which case it is better to configure ClassPag to ignore the bounding box).
* Updated the SHP getadspng.sh interface script for a new naming convention.
* ClassPag no longer does as many checks for missing images on middle segments of autosegmented ads, since all of the segments point to the same image. This greatly reduces the number of image searches on products with autosegmented ads.
* ClassPag now expands '$' environment symbols only at the start of file names instead of anywhere in file names. This saves an extra scan over every file name that ClassPag opens.
* When ClassPag checks for conflicts from segmented ads that cross page boundaries, it now shows the conflict only in segments near the page boundary instead of every segment.
* When ClassPag counts ads with missing images, it now checks the image of autosegmented ads only once.
* Improved "QXD4" segmentation. It now detects break points on lines that start with negative letter spacing.
* Fixed a problem with negative leading in Composition introduced in the previous version.
* ClassPag now lines up ads if there are only two ads in the stack. It used to require more ads to divide the leading more ways.
* ClassPag distributes space a little better on squeezed pages with several one-column ads at the top of a column.
* ClassPag places multi-column fillers below ads in more cases instead of leaving them at the top of the ad stack.
* Updated SHP interface run date parsing in readcsv.
* When "Justify Proportionally" (on the "Vertical Spacing Specifications" page of the product configuration) is turned off, ClassPag now equalizes the leading between one column ads more accurately.
* The "Classified Heading Specifications" page of the product configuration has a new field "Fixed leading below" that keeps the leading below class headers inside columns at the default value when "Justify Proportionally" is turned off. The default value of the field is "N" to add space below class headers when justifying columns of ads.
* ClassPag now aligns tops of pages better that have columns that start with two class headers.
* Fixed a problem where the process to align ads at the bottom of columns or above multi-column ads could shift extra leading high enough in the ad stack to affect the alignment of ads near the top of the column.
* Improved justification of one column ads on the top stack when "Justify Proportionally" is turned off.
* Improved justification of single column class headers between wide ads. ClassPag no longer sometimes raises the headers up to the ad above them.
* Improved justification of single column ads above a single column island ad.
* The product configuration field "Line up ads above wide ads... Second ad" on the "Display Ad Specifications" page now defaults to "N" because it creates an inconsistent look with both proportional and equal spaced vertical justification. Also, ClassPag now ignores this field of "Line up ads above wide ads" is "N".
* Fixed a problem aligning ads above wide ads where the second ad from the bottom could end up with too much space above it.
* The "Add Leading" field in page name record (to control square-offs) has a second option to set leading between one-column ads. "YES", "DEF" and empty are the default and place leading as before. "MIN" reduces the leading to the configured leading and leaves any extra leading above the bottom ad. "MIN" can be useful to produce grids if the ads have modular sizes. "MIN" will not have its full effect on squeezed pages in columns where ads have less than their configured leading.
* Improved the page name "Add Leading" "MIN" setting. When a column has a wide ad at the bottom, the leading now goes above the wide ad. When a column ends with a class header and a single ad, the leading now goes above the class header.
* The "Flow parent under display ads" field on the "Classified Heading Placement" page of the product configuration no longer places a 1000 parent header if the top ad has class structure 1000 -> 1200 -> 1240 and the ad below it has class structure 1000 -> 1400. This fixes a problem where ClassPag could place unneeded parent headers.
* ClassPag is more consistent placing parent headers and main headers during drags when the product configuration requests them.
* Fixed a problem where ClassPag could place headers at the bottom of a column in products that have only multi-column parent class headers.
* The "Wide Filler Look Ahead" field on the "Display Ad Dummying Style" page of the product configuration now defaults its the maximum value (currently 100). It used to default to the display ad look ahead. The larger value helps ClassPag find better fillers in products with a large number of multi-column agate fillers.
* Fixed a 4GL issue that could cause postscript errors in banner logos with two consecutive backslashes in their postscript data.
* Fixed a problem where ClassPag could place ads under incompatible headers when shifting large ads to the tops of columns.
* The "Screen Display Preferences" page of the product configuration has a new field "Width of Ad Preview Image Inner Border" to set the width of the inner box for ads with preview images.
By default, when an ad has a preview image, ClassPag shows an outer border of 1 pixel in the border color and an inner border of twice the configured border width minus 1 in the box color, and then insets the preview image by twice the border width. This allows you to see both the border and box color of ads with previews.
For users who want a more consistent outer border between ads with and without images, the new field allows you to set the width of the inner border, and ClassPag will create an outer border with the normal outer border width as set by "Width of Ad Borders in Pixels".
Setting the new field "Width of Ad Preview Image Inner Border" to 0 or leaving it empty keeps the default.
Setting it larger than 0 uses that value for the inner border and the normal value for the outer border.
Setting it to -1 creates a normal outer border and no inner border.
* This release of ClassPag is the first to be built with gcc-8.3.0. See http://gcc.gnu.org/
* ClassPag now joins horizontal cut rules for one column ads above multi-column ads or for all ads when 'Preserve Rule Spacing' is enabled in the product configuration when the ads are not squeezed.
In those cases, the horizontal rule is at a fixed position instead of centered between the ads, so adjacent rules between adjacent ads will line up, even if the ads have different amounts of leading.
* The folio "Rotation Angle" can now be left empty. This makes it easier to modify old folios that have this field empty.
* Added an interface listads.sh script that takes a list of work areas and shows a list of ad image file names used by those work areas, one name per line. The names have no escapes or quotes. Here are examples with xargs and with tar.
listads.sh 1 | tr '\n' '\0' | xargs -0 ls -l | less
listads.sh 1 | tar --verbatim-files-from -T- -cjvf ads.tar
* ClassPag now fills pages better in classes that have multi-column line ads in several widths. If the current ad is too wide to fit in the current column of the page, ClassPag will now try smaller ads before advancing to a new page.
* The pagination tool bar has a new "Unkill ads" button. Clicking on the button opens an ad list showing killed ad. Dragging an ad from the list to a page will automatically unkill it. The "Unkill ads" button is hidden by default.
You can enable it by a right click on the tool bar or by setting "Unkill ad button" on the "Toolbar Button Preferences" page of the product configuration.
* Fixed a problem where ClassPag read only the first 6 characters of the 10 character Target Ad field in the sort file.
* Improved handling of target ad requests.
* Fixed an internal calculation with zoned ads.
* Improved recovery when redummying a page does not work.
* Fixed a problem in the edition parameters form where it would sometimes not create page information records if you changed the page range.
* Fixed an ad depth calculation when clearing pages.
* Aligned titles on three pages of the product configuration.
* The "Unkill ads" window now stays open after you unkill an ad.
This makes it faster to unkill several ads.
* When you kill ads, if the "Unkill ads" list is open, it refreshes to show the newly killed ads.
* Facing page requests now work more dependably when only one of the ads has an even or odd page request. ClassPag now assigns the opposite request to the facing ad.
* When you use the tool bar button to kill an ad on a filler or banner, ClassPag now checks that you have edit permission on that item type.
* When ClassPag imports SCS Product XML files, it replaces embedded control characters and new lines in text fields with spaces. This fixes a problem where embedded new lines in text fields could pass through to the sort file.
* Improved the text conversion when importing SCS Product XML files. This should produce better results on XML files with accented characters.
* Auto-wrapping of long WORD5 ads now ignores lines that print spaces far away from the current location.
This fixes a problem where ClassPag did not auto-wrap an ad that started by printing a space at the bottom.
* This release of ClassPag is the first to be built with gcc-9.1.0. See http://gcc.gnu.org/
* The "Start Request"/"Iniciar Solicitud" of the classification database and the classification fixup database has a new value "1" to restart on the first column of the first page. If you have several classes with only display ads, you can place them first, and then use a start request of "1" on the first class with line ads.
* The classification list has a new hotkey "Copy class title to seq number"/"Copiar titulo a orden" to set the sequence number of all of the classes in the open list (i.e. under the parent of the highlighted class) to their title. This can be useful to order a set of classes by their decriptive name.
* Fixed a problem where dummying classes using the Randomize "J" value would not have an effect with multi-pagination or level-pages.
* ClassPag now supports series ads. Use the position request SR. The target ad should be the ad number of the first ad in the series.
ClassPag extracts the series number from the digit suffix of the ad number. Every series should have an ad with a .1 suffix that starts the series. If the target ad is blank and the ad number ends with a dot and a digit, the series target is the ad number with the digit replaced by 1.
If any ads in the series are placed, ClassPag will try to place the remaining ads on their corresponding pages. If no ads in the series are placed, ClassPag searches for a starting page that satisfies the requests of all of the ads in the series.
The ad information window shows "Target" with the target ad number and its page number in parentheses and "SeriesNu" with the number in the series. If the ad is not on the correct page for the series, the window will show a flag "SERIES_PAGE Pg #", where # is correct page for the series.
If you click the tool bar button "Move all pages of square-off" and drag any series ad, all of the ads in the series will move. The ads keep their column position, so if the new pages have ads, you need to check the pages have enough space in their corresponding columns.
* The loadtape.sh script now ignores pre-installation backups, so if you copy a new kit and then run maketar.sh -p, loadtape.sh will still find the new kit.
* Added a maketarp.sh that makes pre-installation backups of system files, currently /usr/local, /u/comp, /u/scs, and /u/scs_cpag.
* Series ads with a KY request no longer unflow like line ads.
* ClassPag has a new "TOP" option to update the sequence number only on top level classes. "TOP" works like "SEQ" on classes assigned to the parent of "******" and like "LOAD" on other classes. This can be useful when the order of the top level classes depends on the day of the week or on the number of ads in the various classes, but the line-level classes have different sequence numbers every day (for example, if the sequence numbers come from a sequential numbering of the classes with ads), so the "SEQ" option could scramble the low level classes.
You can use the "TOP" option in the "Class Loading"/"Cargar de Clases" screen of the product configuration in "Ask to Load Saved Class Nesting"/"Preguntar a cargar nidos de clases" and "Load Import Nesting"/"Cargar nido para importación" and in the second screen of the control record in the three "Fix Classes ... Type"/"Clases Cargadas ... Tipo" fields.
* The class "Position Request" now supports "SR" series requests.
* Improved facing page requests. ClassPag now checks for enough open space on the page spread and is more careful with even and odd requests.
* On pages with a mix of multi-column and single column ads, placing a filler at the bottom of a column with a multi-column ad no longer prevents ClassPag from placing single column ads.
* Horizontal pagination works better when an ad blocks the flow. Now only the bad ad goes to an overflow page, instead of all of the following ads, and the bad ad is easier to identify.
--- Screen captures ---
Version 10.53 changes
Column headers no longer squeezed out by "level pages".
Version 10.54 changes
The product configuration screen "Display Ad Directories" has a new field "Preserve path when importing ads" to preserve sort file image names with paths for missing ads.
Version 10.56 changes
Improved the automatic wrapping of PDF ads.
Version 10.57 changes
ClassPag now supports fractional ad scaling percentages.
Version 10.59 changes
The Setup -> Set Ad Colors window has a new DRAGGED context to assign a special color to dragged ads that are not locked.
Version 10.61 changes
The Setup -> Set Ad Colors window has a new "Apply Class" field that controls how the ad color interacts with the class color.
Version 10.63 changes
ClassPag places multi-column fillers in more places.
Version 10.64 changes
Square-offs can now request a page from the back by using a negative first or last page.
Version 10.65 changes
ClassPag now supports PDF images and dinks in live banners. Expressions can write a file name into O_CPagCheckCacheImage and then read the result from I_CPagCheckCacheImage.
Example banner image.
Expression to place a PDF dink ad on the banner.
Expression to place a PDF image on the banner.
Improved wrapping of long ads.
Version 10.70 changes
The "Add Leading" field in page name recorVersion 10.70 changesd (to control square-offs) has a second option to set leading between one-column ads.
Version 10.74 changes
Example of automatically placed multi-column agate fillers.
Version 10.76 changes
The "Screen Display Preferences" page of the product configuration has a new field "Width of Ad Preview Image Inner Border" to set the width of the inner box for ads with preview images.
No ad borders
Default ad borders.
Wide ad borders.
The green outer border on the color circles ad is one pixel with the default above and wider with the new option below.
Ad border configuration.
Version 10.79 changes
The pagination tool bar has a new "Unkill ads" button.
"Unkill ads" list (Spanish version)
Version 10.85 changes
Example of loading class nestings using the class title as the sequence number.
Default class order using the sequence number in the interface file:
Updated class order using the class title as the sequence number:
Version 10.86 changes
Example of series ads
Version 10.88 changes
Toolbar button to load class nestings while updating the sequence numbers of only the top level classes.
The "TOP" option in various configuration fields to load class nestings. Note that the letters "T" = "LOAD" and "F" = "NO" because the field was originally boolean in ClassPag version 3.
Toolbar button to load class nestings (Spanish version)
Configuration fields to load class nestings (Spanish version)