The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
ICC Modules Revisions

2018-09-12

- uploaded the v0.7 distribution to CPAN.

2018-09-17

- modified the regex in '_files' function of 'Chart.pm' and '_readICCprofile' function of 'Profile.pm' that converts '~~' to the ICC folder path. now uses s/^~~/ICC::Shared::getICCPath()/e; the original regex failed in Perl 5.10.0.

2018-10-01

- modified the 'select_token' method of 'Chart.pm' by changing the meaning of the second 'gray' parameter to be maximum CMY total ink, and adding the 'cmy' token, here is an improved G7 sample selection using the new sets, select: gray(2, 220) cmy(70) k (v1.80).

2018-10-10

- modified '_getrows' function of 'Chart.pm' to return 'undef' if row length not specified in chart, enabled by 'undef' hash key.

- modified 'select_token' method of 'Chart.pm' to warn when the 'nr' token is needed.

2018-10-29

- modified 'select_token' method of 'Chart.pm' by restoring the 'gray' token to its original function (C* and L* limits).

2018-11-15

- modified 'select_token' method of 'Chart.pm' by adding the 'g7' selection token.

2018-11-16

- modified 'select_token' method of 'Chart.pm' by adding the 'plus' and 'minus' selection tokens.

2018-11-20

- modified 'select_token' method of 'Chart.pm' by modifying the 'iso', 'g7' and 'cmy' tokens to have an optional limit parameter.

2018-11-25
 
- modified '_readChartCxF3' and '_makeCxF3readops' functions of 'Chart.pm' by replacing split(/ /, ...) with split(' ', ...). this invokes the 'AWK' behavior of 'split' so that leading spaces are discarded, and the regex is /\s+/.

2018-12-01

- added snippet 'cxf_namespaces.plx' to develop 'Chart.pm' modifications to read and write CxF/X-4 files.

2018-12-16

- updated the CxF3 functions of 'Chart.pm' with changes developed in 'cxf_namespaces.plx'. added code to locate namespaces, wherever they are defined. added support for reading files with default namespace (no prefix). modified 'findnodes' queries to use a common XML::LibXML::XPathContext object. added the functions '_readCxF3customres' and '_writeCxF3customres' to read and write custom resources, in particular, 'SpotInkCharacterisation' for CxF/X-4 files. added the '_writeCxF3node' function. (v1.90).

- added 'spot' method to 'Chart.pm'. updated 'device' method to include spot colors.

- updated 'data_aggregator.plx' to support CxF/X-4 spot color files.

2019-01-06

- modified 'add_density' method of 'Chart.pm' to support the 'oba' hash key, similar to the 'add_xyz' method.

- modified 'add_density' entry of 'Chart.pod' to include the 'oba' hash key.

- modified 'PCS.pm' to use 'XYZ2xyz' function to convert input white/black point arrays.

2019-01-09

- added '_map_array' function to 'Chart.pm'.

2019-01-13

- modified 'cvst.pm' by adding 'cgats' method to write curves as a CGATS text file (Gerry Gerlach).

2019-01-14

- modified '_readICCprofile' function of 'Profile.pm' to verify the file path (v 0.72) (Gerry Gerlach).

2019-01-19

- modified 'select_token' method of 'Chart.pm' by adding the 'binary' token.

2019-01-24

- modified 'Profile.pm' by removing 'ICC::Support::Image' from optional module list. this stops warnings about not loading this private module.

2019-01-27

- modified '_readChart' and '_readChartASCII' functions of 'Chart.pm' by moving the code that detects line endings to '_readChartASCII'. this fixes a problem that occured when reading charts embedded in certain profiles.

- fixed bugs in the 'spot' method of 'Chart.pm', which also affected the 'device' method (v1.91).

2019-01-29

- added 'spot' method entries to 'Chart.pod'.

2019-01-30

- added 'navigator' method to 'cvst.pm', to write Harlequin curves as Postscript file for push calibration (see Harlequin tech note Hqn081). added template 'cvst_navigtor.tt2'. (Jeffrey Piestrak)

- renamed 'xitron' method of 'cvst.pm' to 'sierra', since Xitron sells both the Sierra and Navigator RIPs.

2019-01-31

- modified 'prinergy' method of 'cvst.pm' to use the 'Template.pm' module. added template 'cvst_prinergy.tt2'. removed 'Prinergy.yml' and 'Preferences' folder. (v0.43).

2019-02-05

- added snippet 'CIE_2018_illum_to_YAML.plx'. updated the data file 'CIE_illums_380-780_x_5.yml' with new CIE 015:2018 illuminants. added new data file, 'CIE_HR_illums_380-780_x_1.yml', containing high-resolution illuminants for fluorescent and LED lamps.

- updated 'Color.pod' and 'Chart.pod' with new CIE 015:2018 illuminants.

2019-02-08

- modified 'add_xyz', 'add_lab' and 'add_ctv' methods of 'Chart.pm' to ignore existing XYZ, L*a*b*, or CTV data, if colorimetry parameters are present in the hash. new values will be computed from spectral data, if possible (Gerry Gerlach).

2019-02-16

- modified 'parajac' method of 'cvst.pm' to optionally accept a matrix as the 'slice' value (see 'cvst_parajac_matrix.plx).

2019-02-23

- modified 'select_token' method of 'Chart.pm' to better handle ink maps (v1.93).

2019-03-02

- modified 'select_token' method of 'Chart.pm' by adding the 'nosub' and 'nobin' tokens, which remove substrate and binary samples (v1.94).

2019-03-11

- modified 'select_token' method of 'Chart.pm' to skip 'nok', 'nosub', and 'nobin' filtering when sample array was empty.

2019-03-25

- modified 'iso_18620' method of 'cvst.pm' to support the 'origin' hash option, which forces the curve output to be 0, when the input is 0.

- modified '_readChartICC' function of 'Chart.pm' to read 'Generic.pm' objects, in addition to 'text.pm' objects, for 'targ' (EFI) tags.

2019-03-26

- modified 'cvst.pm' by adding '_read_icpro' function to read Esko .icpro/.dgc file sets.

2019-04-01

- modified '_readChart' function of 'Chart.pm' to recogonize Barbieri CxF3 files by matching the schema URL.

2019-04-02

- modified 'select_token' method of 'Chart.pm' by adding the 'max' token, which removes samples exceeding maximum device values.

2019-05-07

- modified 'setFile' function of 'Shared.pm' to check for SetFile function in /Library/Developer/CommandLineTools/ directory.

2019-05-11

- replaced the 'dCh' function of 'Shared.pm' with the 'dLCh' function.

2019-06-10

- updated RGraph library (v5.01) in distribution.

- updated 'cvst_graph_svg.tt2' template to use new RGraph library.

- updated 'graph' function of 'cvst.pm' to use new RGraph library (v0.47).

2019-06-13

- modified 'graph' function of 'cvst.pm'. cleaned up the 'qx()' calls, eliminated variables used for Windows.

2019-06-14

- updated 'graph' function of 'cvst.pm' and 'cvst_graph_svg.tt2' to show in/out values as tooltips.

2019-06-15

- modified 'graph' function of 'cvst.pm' by adding 'sleep' and 'copyjs' options, to coordinate with 'graph_ab'.

2019-06-16

- modified 'graph' function of 'cvst.pm' by adding 'yscalemin' and 'yscalemax' option keys.

2019-06-23

- modified 'test' method of 'Chart.pm' to combine class and context parameters into a single test string, 'context|class'.

- modified 'test' method of 'Chart.pm' by making the regex hash a state variable.

- modified 'Chart.pm' by changing all instances of '|| croak' and '|| carp' to 'or croak' and 'or carp'.

- modified 'Chart.pod' for changes in the 'test' method.

2019-06-24

- modified 'write', 'writeASCII', 'writeTIFF', 'writeASE', and '_makeCxF3writeops' methods of 'Chart.pm' to map non-numeric column slice entries using the 'test' method.

- modified 'Chart.pod' for changes in the above write methods.

2019-06-25

- modified 'keyword' method of 'Chart.pm' so existing 'KEYWORD' entries are not overwritten when adding new 'KEYWORD' entries.

- modified 'write' method of 'Chart.pm' to write 'KEYWORD' entries, if those keywords used in the header section.

- modified 'write' method of 'Chart.pm' by adding 'standard' key to optional hash.


2019-06-29

- modified 'select_token' method of 'Chart.pm' by adding the 'solid' token, which selects the individual solid ink samples.

2019-06-30

- modified 'select_token' method of 'Chart.pm' by modifying the 'ramps' token to optionally take the ink channels as parameters, e.g. ramps(0 .. 3). this replaces the 'ink' token.

- modified 'select_token' method of 'Chart.pm' by adding the 'inks' token, which selects samples containing only the specified ink channels, e.g. inks(4, 5, 7).

- modified 'mluc.pm' module by adding the 'array' method.

- modified 'test_classes' function  of '60_Chart.t' to reflect changes in the 'test' method, combining the context with the class, e.g. 'M0_Measurement|SPECTRAL'.

2019-07-07

- modified 'select_token' method of 'Chart.pm' to skip 'nok' filter if black channel is unmapped.

- modified 'select_token' method of 'Chart.pm' so the 'nosub' filter works correctly with RGB charts.

2019-07-28

- modified 'test' method of 'Chart.pm' by adding 'REFL' regex, to test for reflectance/transmittance data.

2019-08-01

- added snippet 'firefox_fix.plx', to develop a fix for Firefox wackiness opening a set of tabs.

2019-08-02

- modified 'graph' method of 'cvst.pm' by adding the 'open' option, and returning the file paths, so opening the graphs may be deferred.

2019-08-05

- added 'open_files' function to 'cvst.pm', which copies JavaScripts and opens graph files.

2019-08-10

- modified 'Profile.pm' by eliminating the message 'opened as generic' when opening a profile.

2019-08-13

- added snippet 'chart_signature.plx' to develop the 'signature' method.

- added 'signature' method to 'Chart.pm', computes an MD5 hex digest from device values.

2019-08-14

- modified 'open_files' function of 'cvst.pm' to pause after opening first graph in Firefox.

2019-08-16

- added snippet 'chart_signature2.plx' to gather information about various test charts.

- added 'sort' method to 'Chart.pm', sorts a row slice according to device values.

2019-08-17

- modified 'select_template' method of 'Chart.pm' to used the 'sort' method.

2019-08-19

- modified '_getRowLength' function of 'Chart.pm' to multiply the number of rows by the number of pages for 'CxF3' files.

2019-08-22

- added snippet 'chart_read_merged_test.plx' to develop function to combine charts with different measurement conditions (M0, M1, M2, etc.)

- modified 'Chart.pm' by adding the '_readChartMerge' function, and modifying the 'new' method to recognize the 'MERGE' hash value.

2019-08-31

- modified 'open_files' function of 'cvst.pm' to wait until the first file is fully opened with Firefox.

2019-09-01

- added snippet 'chart_signature3.plx' to develop the 'identity' method.

- modified 'Chart.pm' module by adding the 'identity' method, to determine the chart ID from its device values.

2019-09-15

- modified 'ramp' method of 'Chart.pm' by adding the 'invert_rgb' hash option, which inverts RGB data.

2019-09-16

- modified 'select_token' method of 'Chart.pm' to skip warning 'ink map missing %s channel(s)' for RGB charts.

2019-09-17

- modified '_readChartCxF3' and '_makeCxF3readops' functions of 'Chart.pm' to read old-style CxF3 files created by 'Curve4'. see 'CxF3_programming_notes.txt'.

- added '_readCxF3cleanup' function to 'Chart.pm', used by '_readChartCxF3' to fix contexts of old-style CxF3 files created by 'Curve4'.

- modified 'CxF3_template.xml' by removing 'DeviceFilter' and 'DeviceIllumination' nodes, leaving just an empty 'Device' node.

- modified '_readCxF3colorspec' and '_writeCxF3colorspec' functions of 'Chart.pm' by updating the ASCII => CxF3 mapping tables.

- modified '_writeCxF3colorspec' function of 'Chart.pm' to fix bug making new nodes, when adding nodes not in the template.

- modified '_writeCxF3colorspec' function of 'Chart.pm' to add 'DeviceFilter' and 'DeviceIllumination' nodes if not already added previously from the file header array. the nodes must be added in that order, i1Profiler is finicky.

2019-09-19

- modified '_readChartCxF3' function of 'Chart.pm' by adding mode variable to better control the linking of Object nodes.

2019-09-23

- added snippet 'invert_ink_map.plx'.

- added function '_invert_ink_map' to 'Chart.pm'.

- modified 'select_token' method of 'Chart.pm' to call '_invert_ink_map' function.

2019-09-26

- added snippet 'invert_ink_map2.plx'.

- modified '_invert_ink_map' function  and 'select_token' method of 'Chart.pm' with changes from 'invert_ink_map2.plx'.

2019-09-28

- updated 'graph' method of 'cvst.pm' to use same color mapping as 'delta_graph' function.

2019-10-09

- added 'dLab' function to 'Shared.pm' module.

2019-11-03

- modified '_makeCxF3readops' function of 'Chart.pm' to restore copy of 'SAMPLE_NAME' fields for named color decks, which was disabled with change made on 2019-09-17, to suppress multiple 'SAMPLE_NAME' fields in Curve4 files.

2019-11-16

- modifed 'ICC::Shared' module by adding the 'dH' color difference function.

2019-11-30

- modified the 'select_token' method of 'Chart.pm' to use better algorithm for removing duplicate samples.

- modified the 'select_token' method of 'Chart.pm' to check for missing ink channels.

2019-12-01

- modified 'Chart.pm' by adding the 'it8' token to the 'select_token' method.

2019-12-08

- modified 'select_token' method of 'Chart.pm' to filter out non-numeric token parameters.