The main structure describing the raster produced by the RIP. More...
#include "skinras.h"
The main structure describing the raster produced by the RIP.
struct { ... } RasterDescription::band |
When reading or writing, data for this particular band.
intptr_t RasterDescription::band_owner |
Band owner for SWMSG_BANDS_HANDLED, in case the raster handler is returning bands to the RIP asynchronously.
int32 RasterDescription::bandHeight |
Scanlines in a band. This is a copy of the bandheight from the raster layout, duplicated here for convenience. For band interleaved formats this height is height for a single channel.
int32 RasterDescription::bottomMargin |
Bottom margin padding to be added or recorded by the raster handler, in pixels.
HqBool RasterDescription::collate |
Whether to collate output.
uint8 RasterDescription::colorantFamily[64] |
The colorant family to which the colorants of this raster belong
uint8 RasterDescription::ColorName[1024] |
A representative name for this raster. If the raster represents a single colorant, then the colorant name will be used. If the raster is composite, or there are more than one colorants mapped onto a channel, then the name will include whether the page was composite, progressive, or separations, and maybe if it is the sole raster for the page or one of a number of rasters. The name will be unique for this page.
HqBool RasterDescription::duplex |
Whether the output is to be printed duplex.
HqBool RasterDescription::force_high_byte_first |
Depending on the output format selected, the RIP outputs data in native machine byte/halfword/word/double word units, with the leftmost bit in the high bit of the chosed word size. On architectures that store data low byte first, this may result in unexpected pixel orders for output devices that require the leftmost pixel first. The plane's packing unit indicates the native machine word size that the RIP used to create the raster.
If the raster backend requires the data to be presented with the leftmost pixel in the first data byte, it should set this to TRUE in the raster sheet start or raster start call. If this is TRUE, the SDK will swap RIP output as necessary before writing bands to the raster callback to ensure that the data is presented leftmost pixel first (high byte first). The SDK will not modify the plane's packing unit, this will still indicate the word size originally used by the RIP to write the data.
int32 RasterDescription::imageHeight |
Height of the raster in pixels. This is a copy of the height from the raster layout, duplicated here for convenience.
HqBool RasterDescription::imageNegate |
TRUE if the raster handler should negate the image, FALSE if it should leave as-is.
int32 RasterDescription::imageWidth |
Width of the raster in pixels. This is a copy of the width from the raster layout, duplicated here for convenience.
HqBool RasterDescription::insertSheet |
This boolean indicates that the raster is a special sheet that should not normally go through the normal mechanical route on a printer; for example, a transparent cover sheet. The interpretation of this parameter depends on the raster hander. Most implementations will issue a blank page. insertSheet is TRUE if this raster represents a special sheet, FALSE normally. This value is derived from InsertSheet in setpagedevice.
int32 RasterDescription::interleavingStyle |
The interleaving style of the raster, indicating how colorants are laid out in the raster data.
This takes one of the values:
uint8 RasterDescription::jobName[512] |
Zero terminated string containing the name of the job. The job name is typically not the filename or stream name indicating the job's source, but a name set from the job's metadata.
uint8 RasterDescription::jobNameUTF8[512] |
Zero terminated string containing the UTF-8 representation of jobName, if it can be determined. Will be empty if the UTF-8 representation cannot be determined.
int32 RasterDescription::jobNumber |
Core RIP pagedevice's notion of the unique number for this job. A core RIP job is defined by a trip around the core server loop. This number may not match the job number as submitted by the RIP skin, because a single input file may contain more than one core server loop iteration. This is typically the case for PostScript configuration or installation jobs using startjob
or exitserver
, and for configuration-only jobs submitted through the input queue or SwLeJobStart(). This is not the same as the job ID submitted by SwLeJobStart() or the inputq_print_job() functions: see RasterDescription::skinJobNumber for these.
int32 RasterDescription::leftMargin |
Left margin padding to be added or recorded by the raster handler, in pixels.
HqBool RasterDescription::line_data_may_be_padded |
If the raster backend can handle line padding itself, then it should set this to TRUE in the raster sheet start or raster start call. Otherwise, the SDK will write bands to the raster callback one line at a time if the number of bytes in a line of raster do not match the padded width of the raster.
int32 RasterDescription::mediaSelect |
The cassette or paper tray to be used (as determined from inputAttributes in setpagedevice).
int32 RasterDescription::noCopies |
Number of copies of this page to be printed (in total).
int32 RasterDescription::nSeparations |
The number of separations in this page, after separation omission. This is the same as RasterDescription::raster_layout->n_rendered_sheets. It is convenient to have this in the raster description, to be able to test if the separation is the last sheet of a page if the raster description is packed.
int32 RasterDescription::nTiles |
Farm RIP number of tiles on this page. This is zero if not running in a Scalable RIP environment or there are no tiles on this page.
uint32 RasterDescription::numChannels |
The total number of rendered colorant channels in all planes in this separation. Note that some of these may not have valid data, for example anonymised channels where the last colorant of a required channel was removed by separation omission.
uint8 RasterDescription::OptimizedPDFId[33] |
If this does not contain an empty string, it contains a 32-character hexadecimal string representing a unique ID for this page. If an ID was presented, the page should be stored for later use. It will have another page or pages placed on top of it later.
HqBool RasterDescription::OptimizedPDFPositionIndependent |
This is a boolean indicating whether position independent HVD is active.
uint32 RasterDescription::OptimizedPDFUsageCount |
A count of how many times this page is used as a base layer by other pages when eHVD is enabled. The raster handler can use this to determine how many times a page uses this layer, and request deletion of the base page once all of the pages using it have been processed. The raster handler needs to note all of the pages and layers associated with a job, and remove them all once the job is complete or fails.
int32 RasterDescription::orientation |
integer: Orientation of the page image.
int32 RasterDescription::outputAttributes |
Which bin we're placing output into as derived from OutputAttributes in setpagedevice
.
HqBool RasterDescription::outputFaceUp |
Page delivery option.
uint8 RasterDescription::outputTarget[32] |
The output target for the raster handler. Some raster handlers may be able to deliver the raster to different destinations (e.g., file, network socket, memory, data sink).
uint8 RasterDescription::pageBufferType[ 32] |
An indicator of the overall output methodology, copied from the /PageBufferType pagedevice key.
int32 RasterDescription::pageNumber |
Unique number for the page, reset to one at the start of each Core RIP pagedevice job.
int32 RasterDescription::pageNumberOffset |
An offset supplied by the user or configuration that can be added to the page number to identify a page extracted from a range. This is just passed through from the pagebuffer device, the RIP itself does not ascribe semantics to it or set it itself. HHR Scalable RIP configuration uses this offset to identify page ranges in jobs split across multiple processes, so the OEM should not set page offsets if using a Scalable RIP.
int32 RasterDescription::pageRelativeBBox[4] |
If ImagingBBox or TileDeviceBBox was used (e.g. for tiling or HVD elements), then this is the relative offset from the position of the raster to the page raster bbox. If there is one of these restrictions, the x1,y1 offsets will be zero or negative, and the x2,y2 offsets will be zero or positive. If none of these restrictions were specified, or the restriction matched the raster for the entire PageSize, then the bbox entries will all be zero.
The page raster area is
HqBool RasterDescription::partialPaint |
TRUE if this raster is a partial-paint, FALSE if this is the final paint for this page.
int32 RasterDescription::pdfPageNumber |
For PDF input, the number of the page in the PDF corresponding to this page of output, or zero for blank pages inserted as part of PageOrder blocks. For non-PDF input, this will be negative.
uint8 RasterDescription::processColorModel[64] |
The ProcessColorModel of the device
ScreenData* RasterDescription::pScreenData |
Pointer to head of chain of screen data items (RLE only).
RASTER_LAYOUT* RasterDescription::raster_layout |
Full details of the raster layout for this entire render pass. This pointer is owned by the caller to any SDK function taking a RasterDescription. If the raster backend needs to store this for longer than one call, it should either acquire a reference using raster_layout_acquire() (and release the reference when it no longer needs access to the layout), or it should copy the layout into its own memory using raster_layout_copy().
int32 RasterDescription::raster_sheet_index |
Index of the current separation layout in the raster_layout->sheets[] array. This will be negative if the call is not part of rendering a separation (including when making blank page calls).
uint32 RasterDescription::rasterDepth |
The number of bits per channel. This may be 1, 2, 4, or 8 for screened data. It may be 1, 2, 4, 8, or 16 for contone data. It may be 8 or 10 for monochrome RLE data, and 10 or 12 for color RLE data.
This field will only be valid if the number of bits per channel is the same for all rendered channels in the separation. If the number of bits per channel differs between rendered channels in the separation, this field will be zero. The number of bits per channel will be the same for all rendered channels for all normal RIP configurations.
struct sw_datum* RasterDescription::rasterParams |
Optional structured data for raster parameters. If the raster backend wishes to access these parameters after the page is finished, it should either unpack them into its own variables, or use the sw_data_api::retain() and sw_data_api::release() functions to preserve the data tree.
int32 RasterDescription::rightMargin |
Right margin padding to be added or recorded by the raster handler, in pixels
int32 RasterDescription::ripID |
Farm RIP ID in a Scalable RIP or RIP Farm environment. This is zero if not running in a Scalable RIP environment, or greater than zero when running as a Scalable RIP's Farm RIP.
HqBool RasterDescription::runLength |
This is a boolean indicating if the raster is run-length encoded. It is TRUE if the raster uses the Harlequin RLE format, FALSE if the raster is a contone tonemap or screened bitmap.
int32 RasterDescription::screenDataCount |
Count of number of screens items in the RasterDescription::pScreenData chain (RLE only).
int32 RasterDescription::separationCount |
The current (1-based) separation index, taking into account separation omission. This count will equal RasterDescription::nSeparations when outputting the final separation of a non-blank page. It will be zero when testing blank page handling using the raster backend API's SwLeBLANKPAGECALLBACK function.
int32 RasterDescription::separationStyle |
The separation style of the raster, indicating how colorants and channels are mapped onto separations.
This takes one of the values:
int32 RasterDescription::skinJobNumber |
The job number created or supplied to the skin when submitting a job through SwLeJobStart() or inputq_print_job(). This job number will be attached to the SWTLT_SKIN_JOB timeline as the SW_SKIN_JOB_NUMBER_CTXT context. In a Scalable RIP, this is also the Scalable RIP job ID.
int32 RasterDescription::topMargin |
Top margin padding to be added or recorded by the raster handler, in pixels.
int32 RasterDescription::trim_end |
If trim_page is true, the raster data output may be smaller than imageHeight, because blank bands may be removed from the start and end of the page. This is the zero-based index of the last line of raster actually output. If the entire page is trimmed out, this index will be -1. The raster backend may change whether blank bands may be trimmed by setting the RASTER_REQUIREMENTS::write_empty_bands field in the SwLeRASTERREQUIREMENTS call.
HqBool RasterDescription::trim_page |
This is a boolean indicating whether blank lines may have been trimmed from top and bottom of page. It will only be TRUE if the pagedevice parameter TrimPage was enabled.
int32 RasterDescription::trim_start |
If trim_page is true, the raster data output may be smaller than imageHeight, because blank bands may be removed from the start and end of the page. This is the zero-based index of the first line of the raster actually output. If the entire page is trimmed out, this index will be the page height. The raster backend may change whether blank bands may be trimmed by setting the RASTER_REQUIREMENTS::write_empty_bands field in the SwLeRASTERREQUIREMENTS call.
HqBool RasterDescription::tumble |
Affects duplex printing.
uint32 RasterDescription::valuesPerComponent |
Number of values per component. This will be less than or equal to 2**rasterDepth. The number of values stored in each component may not fill the full range of RasterDescription::rasterDepth, especially for 16-bit output, where the range 0–0xff00 (0–65280) is often used.
This field will only be valid if the number of values per component is the same for all rendered channels in the separation. If the number of values per component differs between rendered channels in the separation, this field will be zero. The number of values per component will be the same for all rendered channels for all normal RIP configurations.
double RasterDescription::xResolution |
X (fast-scan) resolution in dpi.
double RasterDescription::yResolution |
Y (slow-scan) resolution in dpi.