(v13) Tiling method API
This page applies to Harlequin v13.1r0 and later; and to Harlequin Core but not Harlequin MultiRIP
From Harlequin v13.0r0, each instance of the tiling method API defines an algorithm to produce a series of device-space tile bounding boxes, given a page or element number, a device-space bounding box, and configuration parameters for the algorithm.
The PostScript language configuration for Tiling is described in Tiling in the Harlequin Core in the Extensions manual.
For information and a diagram regarding PageRelativeBBox, see the Harlequin SDK Developer's Guide, Section, “RasterDescription” (and search for int32 PageRelativeBBox [4]).
The RIP makes a call on the tiling method API when configured for tiling using the settilingparams operator. An initial call validates parameters during settilingparams. When a page or element configured for tiling is about to be rendered, additional calls start a tiling iteration, count the number of remaining tiles in a tiling iteration, get a number of the remaining tiles in the tiling iteration, and ends the tiling iteration.
More than one tiling iteration may be in progress simultaneously, so tiling methods should use the iteration handles to contextualize their operation.
The tiling method API is defined in the SDK file lib/interface/core/tileapi.h.
Instances of the tiling method API are defined in SDK source files lib/skinkit/src/tiling_error.c
, lib/skinkit/src/tiling_rectangular.c
, and lib/skinkit/src/tiling_explicit.c
.
NOTE: For details regarding each method call in the tiling API, see the SDK Doxygen documentation.
Register the structure defining each tiling method instance in RDR by name, in the
RDR_NAMES_TILEAPI namespace:
#include "skinkit.h" #include "tileapi.h" #include "rdrapi.h"
// ...define the methods for this API instance... static sw_tiling_api_20190924 my_tiling_method = {
validate_params,
start_tiling, count_tiles, get_tiles, end_tiling,
} ;
HqBool register_my_tiling_method(void)
{
return SwRegisterNamedRDR(RDR_NAMES_TILEAPI, CSTRING_AND_LENGTH("MyTiling"),
20190924 /*Tiling API version*/, &my_tiling_method, sizeof(my_tiling_method), SW_RDR_NORMAL) == SW_RDR_SUCCESS ;
}
You can register the tiling method instance at any time before making the settilingparams call to configure it. In the HHR clrip example integration, the Error, Rectangular, and Explicit tiling instances are registered just before RIP startup, by calling the RegisterTilingMethods
() function in lib/skintest/src/skintest.c
. The RIP core looks up the configured method for a particular context (/Page, /HVDPage, or
/HVDElement) by getting the /Method key from the current tiling parameters dictionary, extracting a char pointer and length from the resulting name or string, and looking up the named instance in RDR.