Once the filter is enabled in the Plug-In Preferences panel, LaserWriter 8 calls the exported routines, which control the filter’s user interface. At this point, a filter’s psOutputFilterPostFlight routine is called to allow the filter to dispose of any memory it allocated during its operation. A single file can contain multiple plug-in libraries. For example, a filter may not be passed data it normally would be passed because a filter earlier in the chain decided not to write that piece of data. Filters can set criteria that LaserWriter 8 uses to determine whether to run that filter’s user interface by providing a psPanelSetCriteria routine. Doing only that would pass the data unmodified to the next filter and would insert no additional data. To add data to the stream, a filter calls psWriteNextFilter with the data to be added to the stream.

Uploader: Gardaran
Date Added: 27 September 2009
File Size: 59.28 Mb
Operating Systems: Windows NT/2000/XP/2003/2003/7/8/10 MacOS 10/X
Downloads: 53343
Price: Free* [*Free Regsitration Required]

Laserwriter 8.7 Download

Filters must use this routine to identify the data that they write lqserwriter new and unique. When displaying a panel for a given filter, LaserWriter 8 can handle some of the management of the user interface portion of the filter if it contains a kPanelDescriptionType resource describing the DITL ID.

For the filter information dialog in Figure 4, the name of the filter is “SampleFilter. LaserWriter 8 uses these resources to display information about a filter when the user clicks on the small button corresponding to the filter in the Plug-In Preferences panel.

This is used by PostScript generators to emit output for a given subsection over a series of writes, yet still identify the data as one conceptual block of data.

Once a filter is lasereriter in the chain of output filters, the psOutputFilterWrite routine is called for every write of PostScript data to the output filter. Frequently a filter wants to inject some data before or after a particular point in the PostScript output stream.


Once a filter’s criteria have been passed, the filter is loaded and has the opportunity to add one or more panels to the Print Dialog. The call to psOutputFilterPreFlight can be used for several purposes.

An example of this is the way the LaserWriter 8 driver reports status during printing by looking at the PSPosition data written to the output stream by the PrintingLib routines which convert QuickDraw drawing into PostScript data. In almost all cases, the data has the same PSSection value as the original data write but it may correspond to a different PSSubsection value and therefore to different info data and ID values.

The filter information dialog contains the name of the filter as contained in the kPluginResourceInfoType resource described in the section Filter Plug-In Requirements above. Failure to add either or both of these collection items is equivalent to saying that these criteria are not important for that filter. These routines are only called when the LaserWriter 8.

The LaserWriter 8 Print Dialog makes use of three optional filter plug-in resources during its execution.

OS /Download Laserwriter 8? – Apple Community

This document is organized into several major sections. There are no constraints on the library name beyond those imposed by the Code Fragment Manager. To allow this flexibility, there are a number of routines, and, at first glance, it isn’t obvious when each routine is called. Since multiple filters may be contained in a single file and the filter name may have nothing to do with the name of the file containing the paserwriter, the file name containing the filter is also displayed.

When this box is unchecked, all filter controls become inactive. If the user clicks on the Save Settings button at the bottom left of the dialog, the filter saves its current settings as part of the default settings for that printer. The section Sample Code discusses the two sample filters provided as part lasrewriter this technote. This routine lasrewriter requires a filter to specify the data needed for each panel. Because the communication channel isn’t established and no job queries have been generated, the communication channel characteristics aren’t fully known.


The routines specific to a given panel provide a lot of flexibility and power in order to allow a filter to configure itself and manage its user interface. To avoid conflicts between filters, the user interface code requires each filter to have laserwritdr unique 4-byte signature. The most likely action taken by a filter is to insert data into the PostScript output stream at a certain point in the job stream; however, the filter output API is powerful enough to allow significant changes to the output stream as it laserwrter being filtered.

This aspect of the filter’s execution will be referred to here as the “filter UI execution. If a filter provides this resource, LaserWriter 8 ensures all referenced checkboxes and radio buttons are appropriately selected and unselected.

Filters must be careful to skip parsing of the data in this situation. The filter information dialog also displays the version of the filter and some informative text describing the filter. The user interface code uses this signature to ensure that a filter’s UI settings are saved as a unique collection item in the jobInfo collection.

Users can enable or disable each filter using the checkbox associated with that filter. These code fragments can intercept the PostScript output data stream generated by LaserWriter 8 and add, remove, or modify the data before it is transmitted to the output device. When one or more filters is installed, the LaserWriter 8.