Harlequin RIP SDK
RasterDescription Struct Reference

The main structure describing the raster produced by the RIP. More...

#include "skinras.h"

Data Fields

double xResolution
 
double yResolution
 
HqBool imageNegate
 
int32 mediaSelect
 
int32 leftMargin
 
int32 rightMargin
 
int32 topMargin
 
int32 bottomMargin
 
int32 imageWidth
 
int32 imageHeight
 
int32 bandHeight
 
int32 noCopies
 
int32 jobNumber
 
int32 pageNumber
 
int32 pageNumberOffset
 
int32 pdfPageNumber
 
int32 ripID
 
int32 nTiles
 
uint8 jobName [512]
 
HqBool runLength
 
int32 outputAttributes
 
int32 screenDataCount
 
ScreenDatapScreenData
 
HqBool insertSheet
 
uint32 numChannels
 
int32 interleavingStyle
 
int32 separationStyle
 
uint32 rasterDepth
 
uint32 valuesPerComponent
 
uint8 processColorModel [64]
 
uint8 colorantFamily [64]
 
int32 nSeparations
 
uint8 pageBufferType [32]
 
uint8 outputTarget [32]
 
HqBool partialPaint
 
HqBool duplex
 
HqBool tumble
 
int32 orientation
 
HqBool collate
 
HqBool outputFaceUp
 
uint32 OptimizedPDFUsageCount
 
uint8 OptimizedPDFId [33]
 
HqBool OptimizedPDFPositionIndependent
 
struct {
   int32   y1
 Start line of band within entire sheet.
 
   int32   y2
 End line of band within entire sheet.
 
   int32   advance
 Lines to advance after outputting band.
 
band
 
int32 trim_start
 
int32 trim_end
 
HqBool trim_page
 
uint8 ColorName [1024]
 
intptr_t band_owner
 
int32 skinJobNumber
 
struct sw_datumrasterParams
 
int32 separationCount
 
int32 pageRelativeBBox [4]
 
uint8 jobNameUTF8 [512]
 
HqBool line_data_may_be_padded
 
HqBool force_high_byte_first
 
RASTER_LAYOUTraster_layout
 
int32 raster_sheet_index
 

Detailed Description

The main structure describing the raster produced by the RIP.

Field Documentation

◆ 

struct { ... } RasterDescription::band

When reading or writing, data for this particular band.

◆ band_owner

intptr_t RasterDescription::band_owner

Band owner for SWMSG_BANDS_HANDLED, in case the raster handler is returning bands to the RIP asynchronously.

◆ bandHeight

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.

◆ bottomMargin

int32 RasterDescription::bottomMargin

Bottom margin padding to be added or recorded by the raster handler, in pixels.

◆ collate

HqBool RasterDescription::collate

Whether to collate output.

◆ colorantFamily

uint8 RasterDescription::colorantFamily[64]

The colorant family to which the colorants of this raster belong

◆ ColorName

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.

◆ duplex

HqBool RasterDescription::duplex

Whether the output is to be printed duplex.

◆ force_high_byte_first

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.

◆ imageHeight

int32 RasterDescription::imageHeight

Height of the raster in pixels. This is a copy of the height from the raster layout, duplicated here for convenience.

◆ imageNegate

HqBool RasterDescription::imageNegate

TRUE if the raster handler should negate the image, FALSE if it should leave as-is.

◆ imageWidth

int32 RasterDescription::imageWidth

Width of the raster in pixels. This is a copy of the width from the raster layout, duplicated here for convenience.

◆ insertSheet

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.

◆ interleavingStyle

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:

  • interleavingStyle_monochrome (aka 1). There is only a single channel in the raster, but note that more than one colorant may be mapped onto that channel if separations are imposed. There may be more than one separation for a page, with different colorants for each raster.
  • interleavingStyle_pixel (aka 2). All colors of one pixel appear in raster memory before any colors of the next pixel.
  • interleavingStyle_band (aka 3). All pixels for each channel appear in raster memory as a set of contiguous padded scanlines. Each band contains as many repeated sets of scanlines as there are channels in the raster.
  • interleavingStyle_frame (aka 4). Each band contains a set of scanlines for a single channel. All of the bands for a single channel appear before all of the bands for the next channel. Each page contains as many repeated sets of bands as there are channels in the raster.
Note
Use the structure and sizes exposed in the RasterDescription::raster_layout field to explicitly extract line sizes, channels per plane, etc., in preference to making calculations based on this value.

◆ jobName

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.

◆ jobNameUTF8

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.

◆ jobNumber

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.

◆ leftMargin

int32 RasterDescription::leftMargin

Left margin padding to be added or recorded by the raster handler, in pixels.

◆ line_data_may_be_padded

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.

◆ mediaSelect

int32 RasterDescription::mediaSelect

The cassette or paper tray to be used (as determined from inputAttributes in setpagedevice).

◆ noCopies

int32 RasterDescription::noCopies

Number of copies of this page to be printed (in total).

◆ nSeparations

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.

◆ nTiles

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.

◆ numChannels

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.

◆ OptimizedPDFId

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.

◆ OptimizedPDFPositionIndependent

HqBool RasterDescription::OptimizedPDFPositionIndependent

This is a boolean indicating whether position independent HVD is active.

◆ OptimizedPDFUsageCount

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.

◆ orientation

int32 RasterDescription::orientation

integer: Orientation of the page image.

◆ outputAttributes

int32 RasterDescription::outputAttributes

Which bin we're placing output into as derived from OutputAttributes in setpagedevice.

◆ outputFaceUp

HqBool RasterDescription::outputFaceUp

Page delivery option.

◆ outputTarget

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).

◆ pageBufferType

uint8 RasterDescription::pageBufferType[ 32]

An indicator of the overall output methodology, copied from the /PageBufferType pagedevice key.

◆ pageNumber

int32 RasterDescription::pageNumber

Unique number for the page, reset to one at the start of each Core RIP pagedevice job.

◆ pageNumberOffset

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.

◆ pageRelativeBBox

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

[
]
int32 imageWidth
Definition: skinras.h:120
int32 imageHeight
Definition: skinras.h:124
int32 pageRelativeBBox[4]
Definition: skinras.h:439
int32 leftMargin
Definition: skinras.h:104
int32 topMargin
Definition: skinras.h:112

◆ partialPaint

HqBool RasterDescription::partialPaint

TRUE if this raster is a partial-paint, FALSE if this is the final paint for this page.

◆ pdfPageNumber

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.

◆ processColorModel

uint8 RasterDescription::processColorModel[64]

The ProcessColorModel of the device

◆ pScreenData

ScreenData* RasterDescription::pScreenData

Pointer to head of chain of screen data items (RLE only).

◆ raster_layout

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().

◆ raster_sheet_index

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).

◆ rasterDepth

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.

◆ rasterParams

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.

◆ rightMargin

int32 RasterDescription::rightMargin

Right margin padding to be added or recorded by the raster handler, in pixels

◆ ripID

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.

◆ runLength

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.

◆ screenDataCount

int32 RasterDescription::screenDataCount

Count of number of screens items in the RasterDescription::pScreenData chain (RLE only).

◆ separationCount

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.

◆ separationStyle

int32 RasterDescription::separationStyle

The separation style of the raster, indicating how colorants and channels are mapped onto separations.

This takes one of the values:

  • 0 (monochrome) All colors in the job are mapped to a single channel of a single separation.
  • 1 (black separations) Separations are produced, with each channel mapped to the black channel of the output, or an arbitrary channel if there is no black channel. Each separation's channels are mapped to channel/plane/frame combinations as indicated by interleavingStyle.
  • 2 (colored separations) Separations are produced, with each channel mapped to the appropriate channel of its own composite separation. The output must be configured to be able to render the colorants in the pagedevice's SeparationColorNames. Each composite separation's channels are mapped to channel/plane/frame combinations as indicated by interleavingStyle.
  • 3 (progressive separations) Separations are produced, with each channel mapped to the appropriate channel of its own composite separation, and all subsequent separations. The output must be configured to be able to render the colorants in the pagedevice's SeparationColorNames. Each composite separation's channels are mapped to channel/plane/frame combinations as indicated by interleavingStyle.
  • 4 (composite) A single composite separation will be produced, with each channel mapped to a channel/plane/frame combination as indicated by interleavingStyle.
Note
Use the structure and sizes exposed in the RasterDescription::raster_layout field to explicitly extract line sizes, channels per plane, etc., in preference to making calculations based on this value.

◆ skinJobNumber

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.

◆ topMargin

int32 RasterDescription::topMargin

Top margin padding to be added or recorded by the raster handler, in pixels.

◆ trim_end

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.

◆ trim_page

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.

◆ trim_start

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.

◆ tumble

HqBool RasterDescription::tumble

Affects duplex printing.

◆ valuesPerComponent

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.

◆ xResolution

double RasterDescription::xResolution

X (fast-scan) resolution in dpi.

◆ yResolution

double RasterDescription::yResolution

Y (slow-scan) resolution in dpi.


The documentation for this struct was generated from the following file: