Created Date: Oct 07, 2020 11:13
Last Modifed Date: Oct 04, 2021 14:26

The ScreenPro Direct application processes images through a pipeline, which consists of several plugin-based stages. In almost all cases, you require an input plugin and an output plugin. Input reads the image file and output submits to the hardware interface.

Diagram 1 displays a pipeline which takes 8-bits per pixel (bpp) continuous tone TIFF input and outputs to Meteor Head Driver hardware.

Diagram 1: Number of threads configurable for each plugin 

  1. Preload_Plugin.dll – Opens the image file and populates the image metadata.
  2. Input_Plugin.dll – Loads the raster data into memory and closes the file.
  3. Screening_Plugin.dll – Screens the raster using the ScreenPro engine.
  4. Pack_Plugin.dll – Packs the raster data to the required bpp for output.
  5. Meteor_Output_Plugin.dll – Performs final raster formatting for the Meteor hardware, then submits the data to be printed. This plugin also provides the interface required for status monitoring.

ScreenPro Direct must be started from its own directory (as opposed to via a supplied path) and requires one command-line argument: a path to a valid configuration file. The application starts and awaits socket connections before proceeding (see Socket Interface for detailed information on how to use the socket interface).

Supported input file types


ScreenPro Direct supports TIFF files (with a .tif or .tiff extension), as well as an XML file format.


The XML format allows images to be grouped into a job with all planes present. The Screening attributes allow different screening types to be assigned to each plane individually.

XML format example

XML Format Example

<?xml version="1.0"?>
		<Plugins Input="" Output="" />
		<Plane Number="1">
				<Screening Type="" Directory="Screens\2drop_mirror_example" Screen="" NumberOfDrops=""/>
		<Plane Number="2">
				<Screening Type="" Directory="Screens\2drop_mirror_example" Screen="" NumberOfDrops=""/>
		<Plane Number="3">
				<Screening Type="" Directory="Screens\2drop_mirror_example" Screen="" NumberOfDrops=""/>
		<Plane Number="4">
				<Screening Type="" Directory="Screens\2drop_mirror_example" Screen="" NumberOfDrops=""/>

Configuration file

ScreenPro Direct uses a JSON (JavaScript Object Notation) format configuration file to allow the user to exercise control over all aspects of the ScreenPro Direct application. The file is organized as a single top-level object containing multiple "section" sub-objects. The section sub-objects contain the options themselves.





The line stride alignment for the output format.


The target bits per pixels (bpp) for the output format.

CheckPhotometricBoolean value (0=false, 1=true). When enabled and the TIFF input file has the  MinIsBlack photometric setting, the image is inverted before being screened. Please note that this inversion process has an adverse impact on performance. For performance consideration, we recommend that you use MinIsWhite TIFF input files, if possible.


The number of bytes to reserve at the start of a loaded raster (that is, before the pixel data begins). This would typically be hardware-dependent and allow space for hardware metadata to be assigned.


Power of two value. The input raster data is line padded to this value when it's loaded.


Boolean value (0=false, 1=true). When running a shared memory workflow, setting this flag to true prevents a submission from being processed if the job page count has not been defined. You should turn this on if any stages in the pipeline require access to the job's page count.

Default value is 0


The length of time (seconds) to wait for the page count to be defined if WaitForPageCount is turned on.

The default value is 5. A value of 0 is overwritten with the default (5). Changing this value is only recommended if there is an issue. Five seconds should be more than enough to have the page count defined.



A percentage cap (%) for the output buffer level (if supported). If 0, the entire buffer is used.


Boolean value (0=false, 1=true). If true, the hardware is connected when the application starts. This means that sockets can send command and status requests without a running print run. The connection remains for the lifetime of the ScreenPro Direct application.


The output mode to run the output plugin (currently only supported by Meteor).



Boolean (0=false, 1=true). If true, the output plugin attempts to write out an XML report on the level counts in the printed job. The report outputs relative to the output plugin shared library and is named LevelCount_<JobID>.xml.


Boolean value (0=false, 1=true). This sends EMPTY\n to the command socket when the hardware buffers are empty. It is used to hint when an IDLE command can be sent, following a print run.


Specifies the config file (currently only Meteor support available) with which to host the output print engine.


(Used if supported by Hardware (Meteor))

The default controller which all hardware queries are routed through.

Defaults to 1 if not set.

OutputDirectoryThe destination directory for file-based output (if supported). The TIFF output plugin supports this. Note: The directory MUST exist; otherwise the job fails.


The percentage level to send a Product Detect (PD) hint. This sends PD\n to the command socket when the hardware buffers reach the specified value. It also sends if the job has finished and Product Detect has not yet been hinted (a scenario when the amount of data does not fill the hardware buffers to the specified value). Setting to 0 disables this feature.


The lowest plane number this ScreenPro Direct instance is driving. The TotalPlanes value is used to calculate the other planes being driven from this instance.


A comma-separated list of the plane numbers you want to process if you are running an XML file containing multiple plane definitions. For example, if you have four planes and you want planes one and two, you would have "PlaneNumbers_XML": "1,2".

PreserveInputFilenameBoolean value (0=false, 1=true). If true, and the Preload_Plugin is in the pipeline, any TIFF files outputted have the same name as the input TIFF file. All file extensions are assumed to mean TIFF input except .bmp (treated as BMP file input).


Boolean value (0=false, 1=true). Denotes the web direction of travel.


The cross web offset index at the start of a print run (pixels).


The down web offset index at the start of a print run (pixels).


The total number of planes that the instance is driving. For example, in a four-plane system with two planes per PC the TotalPlanes value would be 2 in each config.
Note: The plane numbers driven by each PC must be ascending and consecutive.



Boolean value (0=false, 1=true). When enabled, TIFF output generates with "Palette" photometric setting with a color mapping table used to amplify the small pixel values (drop sizes) so that you can view them properly in viewers. 

CompressionName of the compression method as a string. Currently only FastLZ is supported.  If the entry presents and has the value FastLZ, the TIFF output is LZW-compressed. Otherwise, the TIFF output is uncompressed. 



Boolean value (0=false, 1=true). Denotes whether to use a deterministic style of packing or an indeterministic, but faster, packing method.



Boolean value (0=false, 1=true). If true, a line showing the current state of the pipeline is printed to the screen several times per second. This is disabled by default so that other output is easier to see.


A representation of the image pipeline to construct. It includes the plugin to load (which must include the .dll extension, even on Linux) and a thread count to assign (enclosed in square brackets). A pipe character "|" separates each stage. For example:


Note: Once Global Graphics engineers set this up, you can edit only the thread count.

StreamDelayBoolean value (0=false, 1=true). If true, the output plugin will not start working until all pipeline stages are full (or no more submissions occur). This is useful (when used with the None_Output_Plugin plugin and ThroughputTarget) to create an accurate simulation of a press draining raster data.
ThroughputTargetWhen outputting to the None_Output_Plugin, ThroughputTarget regulates the data consumption to better simulate a real press. The units are MB/s (Megabytes per second). If this were set to 400, the None_Output_Plugin would consume data at 400MB/s.


CalibrationJustificationJustification when applying a PrintFlat calibration and/or using NozzleOut compensation (see the ScreenPro User Guide for more information). Valid values are 0 (Left), 1 (Center), or 2 (Right). Any other value result in a config error. Default is 0.
CalibrationOffsetNozzle offset when applying a PrintFlat calibration and/or using NozzleOut compensation (see the ScreenPro User Guide for more information). Applicable for all justifications. Default is 0.


The directory from which ScreenPro loads its screen set. (See the ScreenPro User Guide).



The license string.



ScreenPro Direct opens the specified port number to listen for connections and receive commands.


(Microsoft Windows only) If no traffic is detected on the command socket within the specified number of milliseconds, both command and status sockets are disconnected and prompted for reconnect. If set to 0 (the default), the timeout is considered unlimited.


The number of connections to wait for on startup. If 0, it automatically sets to 1, as you must have a command-socket connection.


ScreenPro Direct opens the specified port number to listen for connections and receive status requests.


(Microsoft Windows only) If no traffic is detected on the status socket within the requested time, both command and status sockets are disconnected and prompted for reconnect. If set to 0 (the default), the timeout is considered unlimited.


The number of connections to wait for on startup. If set to 0, the status socket is bypassed.




The maximum number of items in any of the pipeline queues. The lower this number is, the less memory the application uses at runtime.

Interacting with PrintFlat

When using screens with PrintFlat calibrations or linearizations and/or making use of NozzleOut compensation, you must supply ScreenPro Direct with your PrintFlat credentials, which are checked against those encoded in the calibrations/linearizations and/or your nozzleOutKey (for NozzleOut compensation) at the start of a Print Run. (See the ScreenPro User Guide for more information.)

For more information about setting your PrintFlat credentials, see Socket interface and Using the ScreenPro Direct API.