Skip to content

Commit d9884d8

Browse files
committed
CHANGES.md: Only include changes in libppd
1 parent 6b1a7bc commit d9884d8

1 file changed

Lines changed: 1 addition & 273 deletions

File tree

CHANGES.md

Lines changed: 1 addition & 273 deletions
Original file line numberDiff line numberDiff line change
@@ -1,175 +1,7 @@
1-
# CHANGES - OpenPrinting CUPS Filters v2.0b1 - 2022-11-14
1+
# CHANGES - libppd v2.0b1 - 2022-11-14
22

33
## CHANGES IN V2.0b1 (TBA)
44

5-
### libcupsfilters
6-
7-
- Introduced the filter functions concept converting filter
8-
executables into library functions with common call scheme, moving
9-
their core functionality into libcupsfilters and allowing easier use
10-
by Printer Applications. Common data about the printer and the job
11-
are supplied via a data structure, which is the same for each filter
12-
in a chain of filters. The data structure can be extended via named
13-
extensions.
14-
15-
- Converted nearly all filters to filter functions, only exceptions
16-
are rastertoescpx, rastertopclx, commandtoescpx, commandtopclx, and
17-
foomatic-rip. The latter is deeply involved with Foomatic PPDs and
18-
the others are legacy printer drivers. Filter functions which
19-
output PostScript are implemented in libppd.
20-
21-
- Converted CUPS' rastertopwg filter into the cfFilterRasterToPWG()
22-
filter function.
23-
24-
- Created new cfFilterPWGToRaster() filter function primarily to print
25-
raster input (PWG Raster, Apple Raster, images) to CUPS Raster
26-
drivers in driver-retro-fitting Printer Applications.
27-
28-
- Converted all filter functions to completely work without PPD files,
29-
using only printer and job IPP attributes and an option list for
30-
options not mappable to IPP attributes. For some filter functions
31-
there are also wrappers for a more comprehensive PPD file support in
32-
libppd.
33-
34-
- Added concept of callback functions for logging, for the filter
35-
functions not spitting their log to stderr.
36-
37-
- Added concept of callback functions for telling that a job is
38-
cancelled so that filter functions can return early. This change is
39-
to get more flexibility and especially to support the
40-
papplJobIsCanceled() of PAPPL.
41-
42-
- Added new streaming mode triggered by the boolean
43-
"filter-streaming-mode" option. In this mode a filter (function) is
44-
supposed to avoid everything which prevents the job data from
45-
streaming, as loading the whole job (or good part of it) into a
46-
temporary file or into memory, interpreting PDF, pre-checking input
47-
file type or zero-page jobs, ... This is mainly to be used by
48-
Printer Applications when they do raster printing in streaming mode,
49-
to run with lowest resources possible. Currently
50-
cfFilterGhostscript() and cfFilterPDFToPDF() got a streaming
51-
mode. In streaming mode PostScript (not PDF) is assumed as input and
52-
no zero-page-job check is done, and all QPDF processing (page
53-
management, page size adjustment, ...) is skipped and only JCL
54-
according to the PPD added.
55-
56-
- Added raster-only PDF and PCLm output support to the ghostscript()
57-
filter function. Note that PCLm does not support back side
58-
orientation for duplex.
59-
60-
- cfFilterPDFToPDF(): Introduced new "input-page-ranges" attribute
61-
(Issue #365, Pull request #444, #445).
62-
63-
- Added cfFilterChain() filter function to run several filter
64-
functions in a chain.
65-
66-
- Added filterPOpen() and filterPClose() functions which similar to
67-
popen() and pclose() create a file descriptor which either takes
68-
data to feed into a filter function or provides data coming out of a
69-
filter function.
70-
71-
- Added new cfFilterExternal() filter function which calls an external
72-
CUPS filter (or backend) executable specified in the parameters, for
73-
example a legacy or proprietary printer driver which cannot be
74-
converted into a filter function. Backends can be run both for job
75-
execution or in their discovery mode. The environment in which the
76-
external executable is running is resembling CUPS as best as
77-
possible.
78-
79-
- Added support for the back and side channels which CUPS uses for
80-
additional communication between the filters and the backend into
81-
the filter function infrastructure. Now filter functions can use
82-
these channels and also CUPS filters or backends called via the
83-
cfFilterExternal() function. Printer Applications can easily create
84-
the needed pipes via the new function cfFilterOpenBackAndSidePipes()
85-
and close them via cfFilterCloseBackAndSidePipes() and filter
86-
functions used as classic CUPS filters get the appropriate file
87-
descriptors supplied by ihe ppdFilterCUPSWrapper() function of
88-
libppd.
89-
90-
- Added the cfFilterUniversal() filter function which allows a single
91-
CUPS filter executable which auto-creates chains of filter function
92-
calls to convert any input data format into any other output data
93-
format. So CUPS can call a single filter for any conversion, taking
94-
up less resources. Thanks to Pranshu Kharkwal for this excellent
95-
GSoC project (Pull request #421).
96-
97-
- Added functions to read out IPP attributes from the job and check
98-
them against the IPP attributes (capabilities) of the printer:
99-
cfIPPAttrEnumValForPrinter(), cfIPPAttrIntValForPrinter(),
100-
cfIPPAttrResolutionForPrinter()
101-
102-
- Added functions cfGenerateSizes() and cfGetPageDimensions() to match
103-
input page sizes with the page sizes available on the printer
104-
according to printer IPP attributes.
105-
106-
- Moved IEEE1284-device-ID-related functions into the public API of
107-
libcupsfilters, also made the internal functions public and renamed
108-
them all to cfIEEE1284...(), moved test1284 to cupsfilters/.
109-
110-
- Extended cfIEEE1284NormalizeMakeAndModel() to a universal function
111-
to clean up and normalize make/model strings (also device IDs) to
112-
get human-readable, machine-readable, or easily sortable make/model
113-
strings. Also allow supplying a regular expression to extract driver
114-
information when the input string is a PPD's *NickName.
115-
116-
- When calling filters without having printer attributes, improved
117-
understanding of color mode options/attributes. Options
118-
"output-mode", "OutputMode", "print-color-mode", and choices "auto",
119-
"color", "auto-monochrome", "process-monochrome", and "bi-level" are
120-
supported now and default color mode is RGB 8-bit color and not
121-
1-bit monochrome.
122-
123-
- When parsing IPP attributes/options map the color spaces the same
124-
way as in the PPD generator (Issue #326, Pull request #327).
125-
126-
- Added new oneBitToGrayLine() API function which converts a line of
127-
1-bit monochrome pixels into 8-bit grayscale format
128-
(cupsfilters/bitmap.[ch]).
129-
130-
- Removed support for asymmetric image resolutions ("ppi=XXXxYYY") in
131-
cfFilterImageToPDF() and cfFilterImageToRaster() as CUPS does not
132-
support this (Issue #347, Pull request #361, OpenPrinting CUPS issue
133-
#115).
134-
135-
- Removed now obsolete apply_filters() API function to call a chain of
136-
external CUPS filter executables, as we have filter functions now
137-
and even can call one or another filter executable (or even backend)
138-
via cfFilterExternal().
139-
140-
- Build system, README: Require CUPS 2.2.2+ and QPDF 10.3.2+. Removed
141-
now unneeded ./configure switches for PCLm support in QPDF and for
142-
use of the urftopdf filter for old CUPS versions.
143-
144-
- Renamed function/data type/constant names to get a consistent API:
145-
Functions start with "cf" and the name is in camel-case, data types
146-
start with "cf_" and are all-lowercase with "_" separators,
147-
constants start with "CF_" and are all-uppercase, also with "_"
148-
separators.
149-
150-
- Bumped soname to 2, as we have a new API now.
151-
152-
- Build system: Remove '-D_PPD_DEPRECATED=""' from the compiling
153-
command lines of the source files which use libcups. The flag is not
154-
supported any more for longer times already and all the PPD-related
155-
functions deprecated by CUPS have moved into libppd now.
156-
157-
- Older versions of libcups (< 2.3.1) had the enum name for
158-
fold-accordion finishings mistyped. Added a workaround.
159-
160-
- Added support for Sharp-proprietary "ARDuplex" PPD option name for
161-
double-sided printing.
162-
163-
- Build system: Add files in gitignore that are generated by
164-
"autogen.sh", "configure", and "make" (Pull request #336).
165-
166-
- Fixed possible crash bug in oneBitLine() function.
167-
168-
- In ghostscript() pass on LD_LIBRARY_PATH to Ghostscript
169-
170-
171-
### libppd
172-
1735
- Added the new libppd library overtaking all the PPD handling
1746
functions from libcups, CUPS' ppdc utility (PPD compiler using *.drv
1757
files), and the PPD file collection handling functionality from
@@ -294,107 +126,3 @@
294126
- Fixed PPD memory leak caused by "emulators" field not freed
295127
(OpenPrinting CUPS issue #124). - Make "True" in boolean options
296128
case-insensitive (OpenPrinting CUPS pull request #106).
297-
298-
299-
### cups-filters
300-
301-
- Converted nearly all filters to filter functions, only exceptions
302-
are rastertoescpx, rastertopclx, commandtoescpx, commandtopclx, and
303-
foomatic-rip. The latter is deeply involved with Foomatic PPDs and
304-
the others are legacy printer drivers.
305-
306-
- Replaced all the filters converted to filter functions by a simple
307-
wrapper executable using ppdFilterCUPSWrapper() for backward
308-
compatibility with CUPS 2.x.
309-
310-
- Added new streaming mode triggered by the boolean
311-
"filter-streaming-mode" option. In this mode a filter (function) is
312-
supposed to avoid everything which prevents the job data from
313-
streaming, as loading the whole job (or good part of it) into a
314-
temporary file or into memory, interpreting PDF, pre-checking input
315-
file type or zero-page jobs, ... This is mainly to be used by
316-
Printer Applications when they do raster printing in streaming mode,
317-
to run with lowest resources possible. Currently foomatic-rip,
318-
ghostscript, and pdftopdf got a streaming mode. For the former two
319-
PostScript (not PDF) is assumed as input and no zero-page-job check
320-
is done, in the latter all QPDF processing (page management, page
321-
size adjustment, ...) is skipped and only JCL according to the PPD
322-
added.
323-
324-
- The CUPS filter imagetops uses the cfFilterImageToPS() filter
325-
function now.
326-
327-
- driverless, driverless-fax, Added IPP Fax Out support. Now printer
328-
setup tools list an additional fax "driver". A fax queue is created
329-
by selecting this driver. Jobs have to be sent with "-o phone=12345"
330-
to supply the destination phone number (Pull request #280, #293,
331-
#296, #302, #304, #305, #306, #309, Issue #298, #308).
332-
333-
- sys5ippprinter, cups-browsed: Removed sys5ippprinter, as CUPS does
334-
not support System V interface scripts any more. This first approach
335-
of PPD-less printing was also not actually made use of.
336-
337-
- urftopdf: Removed as we require CUPS 2.2.2+ now which supports Apple
338-
Raster by itself.
339-
340-
- Build system, README: Require CUPS 2.2.2+ and QPDF 10.3.2+. Removed
341-
now unneeded ./configure switches for PCLm support in QPDF and for
342-
use of the urftopdf filter for old CUPS versions.
343-
344-
- Sample PPDs: Renamed source directory from "ppd/" to "ppdfiles/"
345-
346-
- Build system: Added missing library dependencies to the filters to
347-
make parallel builds work (Issue #319).
348-
349-
- Build system: Remove '-D_PPD_DEPRECATED=""' from the compiling
350-
command lines of the source files which use libcups. The flag is not
351-
supported any more for longer times already and all the PPD-related
352-
functions deprecated by CUPS have moved into libppd now.
353-
354-
- Build system: Add files in gitignore that are generated by
355-
"autogen.sh", "configure", and "make" (Pull request #336).
356-
357-
358-
### braille-printer-app
359-
360-
- textbrftoindex: Fix control character filtering (Pull
361-
request #409)
362-
363-
- Build system: Remove '-D_PPD_DEPRECATED=""' from the
364-
compiling command lines of the source files which use
365-
libcups. The flag is not supported any more for longer times
366-
already and all the PPD-related functions deprecated by CUPS
367-
have moved into libppd now.
368-
369-
- Build system: Add files in gitignore that are generated by
370-
"autogen.sh", "configure", and "make" (Pull request #336).
371-
372-
373-
### cups-browsed
374-
375-
- Added multi-threaded operation, the Avahi resolver callback (which
376-
examines the remote printer, registers it, checks whether we want a
377-
local queue for it, adds it to a cluster, ...) and the
378-
creation/modification of a local CUPS queue is now done in separate
379-
threads, so that these processes can get executed in parallel to
380-
keep the local queues up-to-date more timely and to not overload the
381-
system's resources. Thanks a lot to Mohit Mohan who did this work
382-
as Google Summer of Code 2020 project
383-
(https://github.com/mohitmo/GSoC-2020-Documentation).
384-
385-
- Let the implicitclass backend use filter functions instead of
386-
calling filter executables.
387-
388-
- Build system, README.md: Require CUPS 2.2.2+ and QPDF 10.3.2+.
389-
Removed now unneeded ./configure switches for PCLm support in QPDF
390-
and for use of the urftopdf filter for old CUPS versions.
391-
392-
- Build system: Remove '-D_PPD_DEPRECATED=""' from the compiling
393-
command lines of the source files which use libcups. The flag is not
394-
supported any more for longer times already and all the PPD-related
395-
functions deprecated by CUPS have moved into libppd now.
396-
397-
- Build system: Add files in gitignore that are generated by
398-
"autogen.sh", "configure", and "make" (Pull request #336).
399-
400-
- implicitclass: Added "#include <signal.h>" (Issue #335).

0 commit comments

Comments
 (0)