Example of a PostScript device type to implement photoink splitting. This example is unusual in that it is split into two files. The photoinksplitter.c file is in skintest. It contains the device specific code for light/dark splitting algorithms. The photoinkdev.c file (this file) contains boilerplate code for a PostScript device that acts as the intermediary between the RIP and the photoink splitting algorithms. This file is not expected to require any changes. More...
#include "skinkit.h"
#include "devutils.h"
#include "kitdevs.h"
#include "rdrapi.h"
#include "ripthread.h"
#include "skindevs.h"
#include "photoinkdev.h"
Data Structures | |
struct | pi_data_t |
Typedefs | |
typedef struct pi_data_t | pi_data_t |
Functions | |
HqBool | register_photoink_splitter (photoink_splitter_fn *splitter) |
Register the photoink splitter function. More... | |
Example of a PostScript device type to implement photoink splitting. This example is unusual in that it is split into two files. The photoinksplitter.c file is in skintest. It contains the device specific code for light/dark splitting algorithms. The photoinkdev.c file (this file) contains boilerplate code for a PostScript device that acts as the intermediary between the RIP and the photoink splitting algorithms. This file is not expected to require any changes.
The PostScript device is expected to be called using a protocol of setting a tint value for the primary component, opening a pseudo-file on the device using the component name as the file name, then executing the 'file', e.g. assuming the %photoink% device has been instantiated:
(%photoink%) << /Tint 0.2 >> setdevparams % Sets a tint value of 0.2 (%photoink%C) run % Open and execute the 'C' pseudo-file for cyan. The % result is that the split values for the 0.2 tint % are left on the stack as binary tokens. % The 'C' pseudo-file is automatically closed.
The photoink device function calls resulting from this fragment are:
set_param -> open_file -> read_file -> close_file
The first read from the pseudo-file (it is performed as part of file execution) will obtain the split values for the current tint value and leave them on the stack as binary tokens. Binary token handling must be enabled in the RIP, the example photoink TestConfig shows how to do this.
The photoink splitting is implemented in skintest via the pi_splitter() function. This should be implemented if the photoink device is to function. It may be stubbed in some flavours of rip.
HqBool register_photoink_splitter | ( | photoink_splitter_fn * | splitter | ) |
Register the photoink splitter function.
[in] | splitter | The splitter function to use for the photoink device. |
TRUE | for success; |
FALSE | otherwise. |