The ScreenPro product supports screens implemented using a number of different technologies. These features can be configured via a configuration file stored in the screen folder. The format used for this configuration file is TOML (Tom's Obvious, Minimal Language). The purpose of this document is to describe the basics of the TOML format, together with the specific configuration options available to ScreenPro.

TOML basics

The TOML configuration file format is designed to be in some sense "minimal", easy to read, and with straightforward semantics. It is similar to and inspired by the Windows .ini file format, but with a more formal specification. TOML is available across platforms.

A TOML file must be a valid UTF-8 Unicode document. The format is basically line based, although some information may cross multiple lines. A line is ended with either LF (0x0a) or CRLF (0x0d0a). Comments can be included, with a hash (#) symbol marking the rest of the input line as a comment.

TOML syntax largely consists of key = "value" pairs.

Values can be any one of the following data types:

String, Integer, Float, Boolean, Datetime, Array, and Table.

Examples of each of these data types are:

    key1 = "This is a string"          # String example

    key2 = 123456                      # Integer example

    key3 = 123.456                     # Float example

    key4 = true                        # Boolean example

    key5 = 1979-05-27 07:32:00Z        # Datetime example

    key6 = [ 1, 2 ]                    # Array example

    key7 = { x = 10, y = 20 }          # Table example

The other main syntactic entity is

 [section name]

The section name defines the name of a table for all succeeding key/value pairs, until either EOF or the start of another table.

The TOML parser used for reading configurations is currently a syntactic subset of the full TOML specification; not all of the advanced TOML features are needed or supported.

ScreenPro configuration options

ScreenPro configuration options are stored in a file named config.txt within the Screen folder.

The configuration options are organized into sections: those that apply to all channels and those that apply to an individual channel. Those that apply to all channels are under section [all], while those that apply to an individual channel are under a section for that particular channel index. For example, if an option is specific to Channel Index 0, it is under the section [0]. Any configuration entry that is not under a section is treated as being part of the [all] section. Typically, but not always, each channel index is mapped to an individual color separation.

Some configuration options can be part of the [all] section and part of individual sections. In v3.0.0, any setting in a later section always overrides settings in early sections. In v3.1.0 onwards, the individual channel section always takes precedence.

Enabling additional screening features is likely to increase the time taken to screen images. Enable features only if the quality benefit is deemed to justify the additional screening time.

AIS and HDS configuration options

The following table lists all configuration entries that apply to AIS and HDS screens. The Version column denotes the earliest version where that configuration setting is relevant.

Field name

Type

ScopeDefault

Description

Version
maxChannelIntegerAll channels only15Index of the maximum channel. Up to 16 channels are supported (that is, more than 15 are not supported).v3.0.0
black100BooleanAll channels onlytrue

When set to true, screening preserves the 100% output level after screening for any 100% input level, even if ink limiting is also being applied in the screen config. All other levels are unaffected.

v3.0.0
screenInXDimBooleanAll channels onlyfalseSpecifies whether the direction of the screen cache pattern runs vertically down the value (y) axis or horizontally across the value (x) axis. This does not affect the direction of the nozzles.v3.0.0
calibrationMethodStringAll channels onlyNone

The screening technology supports four methods of calibration, specified by the values of None, Table, Web, and Mixed: 
None = no calibration is applied during screening;
Table = linearization tables are used for all channels;
Web = PrintFlat calibration tables are used for all channels;
Mixed indicates that each channel can use either a linearization, a calibration, or nothing at all, depending on whether a linearization (see linData key) or a calibration (see webData key) is specified for that channel, or nothing at all. If both linData and webData are specified, then the calibration (webData) setting takes preference. Note: Table and Web are currently only supported for 8-bit contone input. When screening 16-bit contone input with Table or Web setting, it is screened as None; the linearization or calibration is not applied .

v3.0.0
tiffCalibrationBooleanAll channels onlyfalseSet to true when using calibrations or linearization generated with PrintFlat Create. Set to false when using older table-based linearization.v3.0.0
nozzlesInXDimBooleanAll channels onlyfalse

Specifies whether the printer nozzle array is orientated vertically down the y-axis (false) or horizontally across the x-axis (true) of the page. This affects the orientation in which PrintFlat calibrations are applied, altering the axis used for indexing into the arrays of calibration data.

v3.0.0
tileCalibrationBooleanAll channels onlyfalseWhen true, applies the PrintFlat calibration repeatedly (for multi-pass printing systems).v3.0.0
detailScaleBoolean or FloatAll channels onlyfalse

The screening technology includes the ability to post-process the screened output raster and attempts to adjust it to enhance the detail within the image. Set the key to false to disable this feature. Set the value to true to enable the feature with a default scaling parameter 1.0. Otherwise, you can set it to a floating-point value in the range 1.2 <= value < 2.0, to enable detail enhancement with the given value.

v3.0.0
imageFilteringBooleanAll channels onlyfalse

AIS screening technology includes the ability to pre-filter the input image using a 3x3 box filter. This parameter controls whether filtering is turned on or not.

v3.0.0
decoherenceLimitIntegerAll channels only255When enabled, screening performs a print-quality optimization for multi-pass printing. This involves a decoherence process that randomly swaps adjacent output pixels at levels above the value set. To enable the feature, set the entry to a value less than 128v3.0.0
nozzleOutKeyStringAll channels onlyNot presentThe key is normally created by merging a PFC package generated by PrintFlat Create for the purpose of NozzleOut compensation. If present, ScreenPro matches the decrypted content of its value against the permit used to start ScreenPro when compensation is requested. If they match, NozzleOut functionality is enabled; otherwise, ScreenPro issues a license error. The key has no function if no NozzleOut functionality is required.v3.1.0
nozzleCountIntegerAll channels onlyNot presentThe key specifies the total number of nozzles. It is mandatory when nozzle out functionality is enabled and right or centre aligned offset is used.  Error code SP_NO_NOZZLECOUNT will be returned otherwise. For left alignment, if it is not provided, the height (when nozzle run is vertical) or width (when nozzle run is horizontal) is assumed as the nozzle count.v3.2.0
screenTypeStringAll channels or  individual channelRequired

Configures which screens are used. Valid values are Mirror, Pearl, Opal, and Custom. When using HDS screens, this must be set to CustomNote: When using Opal and Custom settings, the relevant Binfiles must also be present in the screen folder and correctly referenced in the channel index sections (see Binfile).

v3.0.0
maxDropsIntegerAll channels or  individual channelRequired

Screening works by converting values within a continuous-tone input image into discrete ink-drop values. This parameter controls the maximum ink-drop value that you create for any given screen. So, if pure binary screening is required (that is, an ink-drop can either be on or off), set maxDrops to 1. The number of different values that a screened output pixel can take is maxDrops+1 (that is, from 0 up to and including maxDrops.

v3.0.0
screenProportionFloatAll channels or  individual channelRequired

This setting is deprecated in v3.1.0. For v3.0.0, it should always be present and set to 1.0.

v3.0.0
failedNozzlesInteger; ArrayAll channels or  individual channelEmpty list

A list of all nozzles that have been marked as failing. The screening code can then attempt to compensate for these failures by increasing the ink levels in neighboring nozzles. Note: Nozzles in the array are numbered starting from 1. The maximum supported number of entries in the Array is 2000.

v3.1.0
compensationModeIntegerAll channels or  individual channel0

Specifies the way NozzleOut compensation is carried out. Valid numbers are 0, 1, or 2

  • 0: no compensation;
  • 1: compensate on the side prior to the dead nozzle only;
  • 2: compensate on both sides of the dead nozzle.

When set to 0, ScreenPro takes no action for the failed nozzle array.

v3.1.0
compensationLevelIntegerAll channels or  individual channel0Specifies how many neighboring nozzles to compensate. Valid numbers are between 0 and 5 (inclusive). When set to 0 and compensationMode is not 0, failed nozzles are cleared during screening but no compensation is made, providing a method to turn off individual nozzles in screening.v3.1.0
compensationScalingBooleanAll channels or  individual channelfalseWhen set to true, ScreenPro reduces the compensation based on the failed nozzle density.v3.1.0
compensationFactorFloatAll channels or  individual channel1.0

Specify the proportion of the failed nozzle density to use to compensate its neighbors. Must be in the range of 0.0 and 1.0. When set to 1.0, the full density of the failed nozzle is used for compensation; when set to 0.0, no compensation is made.

v3.1.0
compensationCurveInteger; ArrayAll channels or  individual channelNot presentIf present, it must be an integer array of 256 fixed entries with values between 0 and 255. The array specifies the amount of compensation for each gray level. If present together with compensationScaling and/or compensationFactor in the screen config, this setting takes the precedence and other settings are ignored.v3.1.0
dropFileStringAll channels or  individual channelNo drop fileThis key specifies the filename for a file containing the drop table. It must refer to a file within the screening folder. See Drop-level control for more details.v3.0.0
dropLevelsFloat ArrayAll channels or  individual channelRequired (unless dropFile key is specified)

Specifies a list of minimum and maximum input value pairs for each drop level. The screening algorithm then uses these values to decide how to map input values to ink levels. The list must contain (maxDrops + 1) * 2 entries exactly.  See Drop-level control for more details.

v3.0.0
binfileStringIndividual channel onlyRequired for screens of type Opal and Custom.

This key specifies the filename for the binfile containing the screening tile for that channel index (color separation). It must refer to a file within the screening folder. This key typically has different values from one channel index (color separation) to the next.

v3.0.0
linDataStringIndividual channel onlyRequired if  calibrationMethod is set to Table 

When calibrationMethod is set to Table or Mixed, this entry specifies, by filename, a single linearization table for that channel index. It must refer to a file within the screening folder. This key typically has different values from one channel index (color separation) to the next.

v3.0.0
webDataStringIndividual channel onlyRequired if  calibrationMethod is set to Web 

When calibrationMethod is set to Web or Mixed, this entry specifies, by filename, a single calibration table for that channel index. It must refer to a file within the screening folder. This key typically has different values from one channel index (color separation) to the next.

v3.0.0

Legacy (Chameleon and Chimera) configuration options

The key and table names that have meaning for Chameleon and Chimera configurations follow:

Field name

Type

ScopeDefault

Description

screenTypeStringAll channelsRequired

Configures which screens are used. Valid values for the key are Chameleon or Chimera.

maxDropsIntegerAll channels Required

Screening works by converting values within a continuous-tone input image into discrete ink-drop values. This parameter controls the maximum ink-drop value that screening can create for any given screen. Where Chameleon or Chimera screens are to be used, this is generally the value used to create the screening tiles.

maxChannelIntegerAll channels RequiredIndex of the maximum channel. Must not be greater than 255.
binfileStringIndividual channel onlyRequired

This key specifies the filename for the file containing the screening tile for the separation. It refers to a file within the screening folder. This key typically has different values from one channel to the next. An individual entry must be present for each individual channel of all channels specified by the maxChannel.

serpentineBooleanAll channels falseApplicable for Chimera screens only. If set to true, ScreenPro uses a variation of the underlining error diffusion algorithm for screening.
Example
#
# File : Chameleon1drop/config.txt
# Basic 1 drop Chameleon screenset.
#
[all]
screenType = "Chameleon"
maxDrops = 1
maxChannel = 6
[0]
binfile = "0.bin"
[1]
binfile = "1.bin"
[2]
binfile = "2.bin"
[3]
binfile = "3.bin"
[4]
binfile = "4.bin"
[5]
binfile = "5.bin"
[6]
binfile = "6.bin"
# EOF

CODE