The Harlequin RIP SDK has four major components. The SDK library, application layers, and examples are collectively referred to as the "skin" (i.e., everything outside of the "core"):
The Harlequin RIP core library is an operating system independent component, containing the core of the Harlequin RIP, along with some integrated libraries and support components. The core library depends on the skin to provide necessary platform integration functions. The core library is supplied by Global Graphics as a dynamic-link library (DLL, dylib or shareable object depending on the platform). This component is secured, and may not be modified by customers. However, there is a lot of flexibility to customise and modify the behavior of the RIP, either through configuration (see Configuring the Harlequin RIP), adding or replacing devices (see DEVICE interface), or replacing or intercepting interfaces (see Priorities, overriding, hiding, and filtering). The core library provides a number of utility functions that are used by the other components, and may also be used by your code (see Harlequin core library utility functions).
The core library and Windows stub library and debug symbols, if supplied, are in the bin/
directory in the distribution. The header files for the core library are in the lib/interface/
directory in the distribution.
The core library requires a number of devices and other functions to integrate with the operating system and environment. These functions are provided by the Harlequin RIP SDK library. The SDK library is provided as source code, but there will also be a pre-built library in the bin/
directory of the distribution. The SDK library source code is in the lib/skinkit/
directory in the distribution. The header files for the SDK library are in the lib/skinkit/export/
directory in the distribution.
The SDK library is built as a static library. It can also be re-built from source code using the supplied Makefile
. On Windows a Visual Studio solution is supplied, which can be used to build the SDK library and/or application layer as desired.
The SDK library can alternatively be built as a dynamic library, but this option should not be used by customers without Global Graphics' approval. In particular, this is only suitable for RIPs secured using the "LDK" method, and not for RIPs secured using the "LE" method.
Global Graphics expects that you will retain the SDK code in the skinkit/
directory as-is, but replace or modify the application layer.
The SDK code is intended to be simple and clear, while showing a wide range of capabilities of the Harlequin RIP. Not all of the capabilities shown will be relevant to your application. Sometimes this means the code may not be as efficient, or as specific, as would be beneficial for use in your production environment.
The SDK layer is built as a library, so the application layer can be built by linking to a library rather than re-compiling all source code every time. You may find it easier to take the pre-compiled SDK library and the SDK header files and include those in your application build system, rather than integrating the SDK source code into your build system.
The distribution contains two functional RIP applications, provided as examples of how to integrate the Harlequin RIP SDK.
Global Graphics expects that you may want to discard or modify the application code layer to suit your needs.
The lib/skintest/
directory in the distribution contains the "clrip" application source code. This is a fully-functional command-line RIP that can accept jobs, configure the RIP for different resolutions, page sizes, color modes, and interleave formats, and output rasters.
The clrip application can accept input from the command line, but can also monitor one or more hot folders. clrip supports TIFF and RAW output by default, and may support other output formats depending on your configuration. Output may be written to files, sent to a TCP/IP socket, or diverted to a data sink for performance testing or pre-flighting applications.
The clrip application may include Scalable RIP functionality, allowing it to distribute RIPping across multiple processes.
The clrip application includes example color management and halftone modules that demonstrate how to integrate alternate color management systems or halftoning methods into the Harlequin RIP.
The lib/skinmin/
directory in the distribution contains the "minrip" application source code. This application demonstrates the minimum source code required to link the RIP core library and SDK, start a RIP with a fixed configuration, run jobs from the command line, and pass rasters to callbacks. It may be easier to understand how to start from this minimal example and add required functionality, rather than determining what features are not needed and how to remove them from the clrip application.
The Harlequin RIP SDK contains examples of color management modules and halftone modules integrated into the clrip application layer.
The color management modules examples show use of alternate color management libraries (LittleCMS is used as an example), and also of implementing custom colorspaces through a module.
The halftone module examples show simple implementations of multi-level dispersed halftones.
Global Graphics expects that you will copy and rename these example modules, and adapt them to suit your own needs.