Versions 17UV and 17US were released on April 4, 2025 - modified 'writeCxF3' method of 'Chart.pm' to update the 'numberCorePatches' value in the 'CustomAttributes' hash, so that i1Profiler reads the correct number of patches when opening the saved file (v2.39). 2024-03-20 - modified 'ink_ref_colors' function of 'press_curve_16.4U_example.plx' to call 'name' method of chart before looping through names/indexes. 2024-03-23 - modified 'onyx' method of 'cvst.pm' to use '_transform' function and the direction flag (v0.63). 2024-04-12 - modified '_readChart' function of 'Chart.pm' to guess text encoding for '_readChartASCII' function. added support for 'encoding' hash key. see snippet 'text_encoding.plx' for details (v2.40). 2024-07-29 - modified 'write' and 'writeASCII' functions of 'Chart.pm' to set text file encoding from value stored in the object header. added support for 'encoding' hash key. (v2.41). 2024-07-30 - added snippet 'apply_curves_to_ref_profile4.plx' to develop improved versions of functions to support 'adjust_profile_path:' setting, formerly 'adjusted_profile_path:' setting. 2024-08-09 - modified 'main' and 'load_settings' functions of 'press_curve_16.4U_example.plx' to used the new setting name, 'adjust_profile_path:'. 2024-08-09 - modified the 'write_curve_adj_data' function of 'press_curve_16.4U_example.plx' to call the 'ICC::Shared::filterPath' function on the folder path, so output message is consistent with other functions. 2024-08-09 - modified the 'write_curve_adj_profile' of 'press_curve_16.4U_example.plx' by adopting the conventions and hash keys of the 'output_path:' setting. the paths to the source and destination profiles are specified individually. settings are added to control the application of curves to 'A2B' and 'B2A' tags. the default behavior is now to output a profile equivalent to a new profile made from the curve adjusted data. for more info, see the snippet 'apply_curves_to_ref_profile4.plx'. 2024-08-09 - modified the 'output_name' function of 'press_curve_16.4U_example.plx' by adding an optional 'path_key' parameter, so this function may be used by 'write_curve_adj_profile' function. 2024-08-09 - modified the 'PressCal_Media_Profile.yml' basic setting by replacing the 'adjusted_profile_path:' setting with an 'adjust_profile_path:' setting. added comments explaining what the setting does. 2024-08-09 - modified 'identify' method of 'Chart.pm' to incude the 'P2P75' test chart (v2.42). 2024-08-10 - modified the 'write_curve_adj_data' function of 'press_curve_16.4U_example.plx' to warn if device values are < 0% or > 100%. 2024-08-11 - modified 'grade' function of 'press_curve_16.4U_example.plx' by adding 'title' key/value to $opt hash. the title of the grading graphs is changed from 'xxx SCTV curve' to 'xxx SCTV ramp', etc. it was misleading to call these graphs curves, as they actually showed the measured values. 2024-08-11 - modified 'delta_graph' function of 'press_curve_16.4U_example.plx' to recognize the 'title' value in the $opt hash. 2024-08-11 - modified 'main' and 'ink_ramp' functions of 'press_curve_16.4U_example.plx' to include any 'minus' tokens from the 'select:' setting in the selection for various ink ramps. this allows us to remove bad samples from SCTV or TVI curves. 2024-08-24 - modified 'graph' method of 'Chart.pm' to fix a bug where very small OBA effect values would cause the graph to be all zeros. fixed the regex that splits the context and row (v2.43). 2024-09-27 - added 'press_curve_17U_example.plx'. 2024-11-09 - recompiled Perl XS modules as universal bundles (x86_64 and arm64e) for Perl versions 5.30 and 5.34. 2024-11-09 - added .dmg source folders for PressCal_17UV (Perl 5.30) and PressCal_17US (Perl 5.34). 2024-11-09 - modified PressCal's TextMate commands to run PressCal (versions 17UV and 17US) in the native machine mode ('arm64e' on Macs with Apple Silicon). 2024-11-16 - renamed 'add_li_constraints' function of 'press_curve_17U_example.plx' to 'add_opt_constraints', and modified to create 'natural' curves by means of Levmar 'le' constraints. see snippet 'bernstein_natural_curve.plx' for details. 2024-11-28 - modified 'main' and 'endpoint' functions of 'press_curve_17U_example.plx' to add 'hl_nat' and 'sh_nat' parameters to curve set header, based on 'natural:' setting and RGB mode. 2024-11-28 - renamed 'add_li_constraints_bern' function of 'press_curve_17U_example.plx' to 'add_opt_constraints_bern', and modified to create 'natural' curves by means of Levmar 'le' constraints. see snippet 'bernstein_natural_curve.plx' for details. 2024-11-29 - modified 'main' function of 'press_curve_17U_example.plx' to add 'hl_nat' and 'sh_nat' keys to curve set header, based on 'natural:' setting and RGB mode. 2024-11-29 - modified 'make_SCTV_curve', 'make_TVI_curve', and 'make_G7K_curve' functions of 'press_curve_17U_example.plx' by adding 'hl_nat' and 'sh_nat' parameters when calling 'add_li_constraints_bern' function. - modified 'def_settings' function of 'press_curve_17U_example.plx' to 'return(<<'EOF')', to prevent variable interpolation. 2024-12-08 - modified 'load_settings' function of 'press_curve_17U_example.plx' to support 'udf:' setting, which adds a user-defined function to calculate color differences (errors). 2024-12-08 - added function 'func_exists' to 'press_curve_17U_example.plx'. 2024-12-09 - modified 'main' function of 'press_curve_17U_example.plx' to use 'func_exists' to verify 'deltaE:' setting. 2024-12-09 - modified 'ink_balance' function of 'press_curve_17U_example.plx' to use 'func_exists' to verify 'ink_deltaE:' setting. 2024-12-09 - modified 'grade', 'make_SCTV_coordinates', 'make_TVI_coordinates', 'make_Lab_coordinates' and 'delta_graph' functions of 'press_curve_17U_example.plx', do that sample numbers are displayed in graph 'tool tips'. this allows users to remove bad samples using the 'minus' sample selection token. 2024-12-14 - modified TextMate commands in PressCal_17UV to run 'x86_64' architecture on macOS 11 (Big Sur) (because Perl is 'x86_64' and 'arm64' – no 'arm64e'). 2024-12-21 - modified 'new' method of 'Chart.pm' to disable warnings when returning error messages (v2.44). 2024-12-26 - modified 'main' function of 'press_curve_17U_example.plx' to report errors that occurred when creating the press measurement object. 2024-12-26 - modified 'new' and '_new_from_array' methods of 'Multi.pm' to optionally return error messages and disable warnings (v0.12). 2024-12-27 - modified 'main' function of 'press_curve_17U_example.plx' to report errors that occurred when creating a 'Mutli' profile object. 2024-12-27 - modified 'multi_chart' function of 'press_curve_17U_example.plx' to report errors that occurred when creating the press measurement object. 2024-12-28 - modified 'press_curve_17U_example.plx' to require Perl version 5.26 or later, to accomodate recently added functions in POSIX and List::Util modules. 2024-12-29 - replaced 'num2deg' function of 'press_curve_17U_example.plx' with 'dev2deg' function. modified 'main', 'make_SCTV_curve', 'make_TVI_curve', and 'process' functions to incorporate 'dev2deg'. 2024-12-29 - modified 'dump_curves' function of 'press_curve_17U_example.plx' to print large coefficients and curves of varied degrees. 2024-12-29 - modified 'parse_tokens' function of 'Shared.pm' to disable error reporting and test $@ for eval() errors (v0.61). 2025-01-06 - added 'output_path' function to 'press_curve_17U_example.plx' (see snippet 'output_path_setting2.plx'). 2025-01-06 - modified 'write_curves' function of 'press_curve_17U_example.plx' to utilize 'output_path' function, enabling the curve path format to be set by the 'output:' and/or 'output_path:' settings. 2025-01-06 - modified 'load_settings' function of 'press_curve_17U_example.plx' to improve error handling. 2025-01-07 - modified 'parse_tokens' function of 'Shared.pm' to enable poetry optimization for eval(), to match 'load_settings' function (v0.62). 2025-01-12 - modified 'onyx' method of 'cvst.pm' to support 'ink_map' hash key (v0.64). 2025-01-12 - added 'resolve_path' function to 'press_curve_17U_example.plx'. common code to process several settings allowing scalar or hash values. see snippet 'write_functions.plx'. 2025-01-18 - modified 'write_curves', 'write_resolved_data', 'write_curve_adj_data', 'write_curve_adj_profile' and 'stats' functions of 'press_curve_17U_example.plx' to use 'output_path' and 'resolve_path' functions. this factors a large amount of inconsistent code. 2025-01-19 - modfied 'write_curve_adj_data' function of 'press_curve_17U_example.plx' to clone the chart object before adjusting the device data. 2025-01-19 - modfied 'write_curve_adj_profile' function of 'press_curve_17U_example.plx' to clone the profile object before adjusting the tags. 2025-01-19 - modfied 'write_curve_adj_profile' function of 'press_curve_17U_example.plx' to control modification of the 'desc' tag with the 'desc' hash key. 2025-01-19 - modified 'output_path' function of 'press_curve_17U_example.plx' so that 'time' and 'index' are mutually exclusive. if both are specified, 'time' is used. 2025-01-23 - added snippet 'apply_curves_to_ref_profile5.plx', which uses v17U functions. 2025-01-23 - modified 'load_settings' function of 'press_curve_17U_example.plx' to accept hash value for 'plate_curve_path:' setting. 2025-01-24 - modified 'main' function of 'press_curve_17U_example.plx' to accept hash value for 'plate_curve_path:' setting. the hash keys are 'path' and 'ink_map'. the 'ink_map' option replaces code that adjusted the ink channels of the plate curves to match the press data. 2025-01-25 - added 'merge_curves' function to 'press_curve_17U_example.plx' to combine plate curves with normally computed tone curves. 2025-01-31 - added 'convert_to_bern' function to 'press_curve_17U_example.plx' to convert 'curv' or 'spline' curves to 'bern' curves. 2025-01-31 - modified 'main', 'make_SCTV_ref_curves', 'make_SCTV_curve', 'make_TVI_curve', 'make_G7K_curve', 'write_curves', 'write_curve_adj_data', 'write_stats', 'ced_errs' functions of 'press_curve_17U_example.plx' to change the handling of plate curves. instead of 'backing out' the plate curves from device data, they are now merged with the tone curves before outputting in various formats. plate curves no longer affect any other outputs. a graph is added to display the merged tone curves when plate curves are used. 2025-01-31 - modified 'make_SCTV_ref_curves' function of 'press_curve_17U_example.plx' to make an array of 'bern.pm' curves, for use when optimizing SCTV curves. see snippet 'sctv4_presscal.plx'. 2025-02-02 - modified 'main', 'make_SCTV_curve', and 'func_SCTV_curve' functions of 'press_curve_17U_example.plx' to utilize the SCTV reference curves produced by the revised 'make_SCTV_ref_curves' function. 2025-02-02 - modified 'write_curve_adj_data' and 'write_curve_adj_profile' to verify that 'source' objects are valid. 2025-02-04 - added several plate curve example files to the 'Data' folder. updated the 'PressCal_Flexo.yml' basic setting to use them. 2025-02-04 - modified 'write_curve_adj_data' function of 'press_curve_17U_example.plx' to delete linked XML objects before cloning the press object. 2025-02-26 - modified 'bern.pm' by adding 'scale' method and many related changes (see snippet 'bern_scale_function.plx') (v0.44). 2025-03-09 - modified 'apply_endpoints', 'make_SCTV_curve', 'make_TVI_curve', and 'make_G7K_curve' functions of 'press_curve_17U_example.plx' to use the new 'scale' method of 'bern.pm' to implement the 'highlight:' and 'shadow:' settings. 2025-03-09 - added 'blend_sctv', 'blend_func', and 'blend_func_graph' functions to 'press_curve_17U_example.plx'. modified 'main' and 'load_settings' functions to implement 'blend_sctv:' setting. 2025-03-13 - modified 'main' function of 'press_curve_17U_example.plx' to support 'combined' key for 'adjust_path:' and 'adjust_profile_path:' settings. 2025-03-15 - modified 'process' function of 'press_curve_17U_example.plx' to calculate the print contrast metric. 2025-03-16 - added 'write_process' function to 'press_curve_17U_example.plx', to replace the 'process' function. 'write_process' shares settings handling with other 'write...' functions. 2025-03-17 - modified 'write_curves' function of 'press_curve_17U_example.plx' by removing the 'process' curve format option. 2025-03-17 - modified 'efi' method of 'cvst.pm' to clip the transform output values (v0.65). 2025-03-20 - modify 'scale' method of 'bern.pm' to use single values, forward transform y = mx + b, reverse transform x = (y - b)/m (v0.45). 2025-03-23 - modified 'ced_errs' function of 'press_curve_17U_example.plx' to limit device values to highlight: and shadow: settings, so that 'after' CED graph is correct. 2025-03-25 - modified 'apply_endpoints' function of 'press_curve_17U_example.plx' to return if endpoints are undefined. 2025-03-25 - added snippet 'ced_errors_function.plx' to rework and test 'ced_errs' function of 'press_curve_17U_example.plx'. 2025-03-27 - modified 'write_stats' function of 'press_curve_17U_example.plx' to limit device values to highlight: and shadow: settings. 2025-03-28 - modified 'write_stats' function of 'press_curve_17U_example.plx' to work correctly with RGB data. 2025-03-30 - modified 'write_process' function of 'press_curve_17U_example.plx' to skip with RGB data. 2025-03-30 - modified 'merge_curves' function of 'press_curve_17U_example.plx' to make merged curve set from plate curves, merging normal curves according to the ink map. 2025-04-12 - modified 'main' function of 'press_curve_17U_example.plx' to validate plate curve ink map for new 'merge_curves' function. 2025-04-12 - restored various plate curve files to built-in data. 2025-04-13 - modified plate curve settings of 'PressCal_Flexo.yml'. 2025-04-13 Versions 16.4CU and 16.4CUV were released on March 8, 2024 - modified '_files' function of 'Chart.pm' by adding 'sort' to processing of file list, so files are in alphabetical order (v2.38). 2024-03-03 - modified 'main' function to truncate or extend plate curve object when the number of curves is different from the number of press inks (thanks to Steve Simpson of Olberding). 2024-03-08 Versions 16.4BU and 16.4BUV were released on January 1, 2024 - modified '_readChartICC' function of 'Chart.pm' to read Onyx profiles (v2.35). 2023-12-25 - modified 'writeTIFF' method of 'Chart.pm' to write Photoshop image resource block (IRB), when supplied in hash parameter (v2.36). 2023-12-26 - modified 'writeTIFF' method of 'Chart.pm' to write tag 338 (ExtraSamples) when there are alpha or spot channels (v2.37). 2023-12-31 - added 'onyx' method to 'cvst.pm', to write curves as an Onyx .Lin file (v0.62). 2024-01-01 - modified '_options' function of 'cvst.pm' to include entry for 'onyx' method. 2024-01-01 - added '_read_onyx' function to 'cvst.pm' to parse Onyx .Lin files. 2024-01-01 - modified '_new_from_file' function of 'cvst.pm' to process Onyx .Lin files. 2024-01-01 - modified 'write_curves' function to include 'onyx' curve format. 2024-01-01 Versions 16.4AU and 16.4AUV were released on November 27, 2023 - modified '_files' function of 'Chart.pm' by replacing the 'bsd_glob' function, to eliminate risk of unintended wildcard stuff (v2.34). 2023-11-04 - added 'count' method to 'clrt.pm' module. (v0.13) 2023-11-10 - added 'PDF::API2::Resource::ColorSpace::Profile' module, to create a DeviceN colorspace in a PDF. 2023-11-25 - added 'colorspace_profile' method to 'PDF::API2' module. 2023-11-25 Versions 16.4U and 16.4UV were released on October 30, 2023 - modified 'ink_ref_colors' function to fix error printing the names of multiple search results. 2023-07-11 - modified 'multi_chart' function by adding 'P' (append) option for modifier. 2023-07-15 - modified 'main' function by removing code supporting 'press_path:' setting as a hash (revert changes made on 2023-01-15). 2023-07-15 - modified '_readICCZXML', '_writeICCZXML', 'text', 'size' and 'new' methods of 'ZXML.pm' module to accomodate format change by X-Rite (v0.23). 2023-09-27 - added PDF::API2 modules for creating and modifying PDFs. 2023-10-21 - added 'output_name' function, to modify file names according to expanded 'output_path:' settings. 2023-10-25 - modified various functions to call 'output_name' function. 2023-10-25 - modified 'add_colorimetry' function by removing all code that wrote press data. 2023-10-27 - added 'write_resolved_data' function to support new 'export_data:' setting. 2023-10-27 - made various minor changes to improve the format of the PressCal log. 2023-10-30 Versions 16.3DU and 16.3DUV were released on July 1, 2023 - modified 'multi_chart' function to verify the number of chart ink channels equals the number of map indices. 2023-06-18 - modified 'named_curve' function by adding support for L-curves. see 'PressGen_curves.plx'. 2023-07-01 - modified 'add_colorimetry', 'load_settings' and 'main' functions to support the 'resolved_path:' setting. 2023-07-01 Versions 16.3CU and 16.3CUV were released on June 8, 2023 - modified 'writeTIFF' method of 'Chart.pm' by changing the sprintf format from '%s%x' to '%s%X', so that nCLR fields are A-F, rather than a-f (v 2.33). 2023-05-27 - modified 'named_curve' function by changing the 'fit' function to just the middle Bernstein parameters. 2023-06-07 - modified the 'main' function to use $Labr when printing the initial sample list before optimization. 2023-06-07 - modified 'multi_chart' function to allow mapping channels to be 'undef', which sets their device value to 0. this is used when the test chart is printed with some inks missing, an unusual occurence. 2023-06-08 Versions 16.3BU and 16.3BUV were released on May 16, 2023 - modified 'ink_map' function to compute 'all_sp' and 'all_si' values. 2023-05-16 - added 'map_array' function. same as 'map_matrix' except input and output values are arrays. - modified 'make_Lab_coordinates', 'make_grayaxis_coordinates', 'grayaxis_slice', 'all_samples' and 'main' functions to compute mapped device values correctly when the reference profile has more channels than the press measurements. - modified 'main' function to compute and print the initial error values using mapped device values rather than unmapped (bug). Versions 16.3AU and 16.3AUV were released on May 4, 2023 - modified '_readChartICC' function of 'Chart.pm' to read data tags from profiles with 'lcms' creator (v 2.31). 2023-02-23 - modified 'ink_ref_colors' function by changing instances of 'sctv_reference:' to 'ink_ref_colors:'. 2023-02-25 - modified 'ink_ref_colors' function to check if @s is empty (no match). 2023-03-01 - added private scripts 'PressCal_realistic_n-color_charts.plx' and 'PressCal_realistic_fine-tune_spots.plx'. 2023-04-01 - added private scripts 'PressCal_cmyk_from_n-color_data.plx' and 'PressCal_merge_profiles.plx'. 2023-04-24 - added private script 'PressCal_evaluate_n-color_charts.plx'. 2023-05-02 - modified 'device' method of 'Chart.pm' by eliminating redundant '|| spot($self, $hash)' check. 2023-05-03 - modified 'spot' method of 'Chart.pm' by adding $flg variable for success of match. the scope of $1 variable is global, which allows external code to set $1 (v2.32). - modified 'write_curve_adj_profile' function by merging regex into test for bad path. - modified 'ink_balance' function to make default 'Color.pm' object if press object has none. 2023-05-04 Version 16.3U was released on October 11, 2022 - added PressCalC5 and PressCalF39 test charts. 2021-11-25 - added handheld i1Pro 3 test charts. 2021-11-25 - added 'PressCal_Flexo.yml' basic setting. 2021-12-01 - added flexo measurement test data. - added PressCalC5, PressCalF39, GMG FlexoChart V1, and GMG FlexoChart V2 charts to 'identity' function of 'Chart.pm'. 2021-12-02 - modified '_readChartASCII' function of 'Chart.pm' by setting the input record separator to "\012" for Windows files. this allows us to read corrupt ASCII data files from GMG and EFI, where some lines end in CR-LF and others end in LF only. - modified '_readChartMerge' function of 'Chart.pm' by adding 'my $s = $_;' within 'map' code blocks, to avoid altering $_ (Perl best practices). - modified 'main' function to check results of 'fit_gamma()' before computing maximum x-scale. compute and plot 'after' graph only if 'before' graph was successful. - modified 'main' function by moving 'write_curve_adj_data()' to the end of the function, so that press device data will be intact for other functions. - added 'ink_ref_colors:' setting for manual input of reference colors, especially spot colors. 2021-12-27 - added support for specifying spot colors with measurement, Adobe Swatch Exchange (.ase), and CxF/X-4 files. - added spot color test data. - modified 'ink_balance' function to support non-D50 illuminants. 2022-01-08 - modified 'ink_balance' function to support spot colors. - modified 'ink_balance' function to plot spectral reflectance graphs of each ink. 2022-02-05 - added determination of ink color names from measurements. 2022-02-16 - modified tone curve plots, TVI/SCTV plots, and spectral reflectance plots to use actual ink colors, including spot colors. 2022-02-18 - added support for CAT16, Sharp, and CMCCAT2000 chromatic adaptation transforms (CATs). 2022-02-20 - added check of reference profile CAT to be sure it matches measurement colorimetry. - added 'sctv_reference:' setting to specify reference tone ramps for SCTV curves, e.g. CxF/X-4 files. 2022-03-03 - modified computation of SCTV curves to optionally support reference tone ramps. - changed default 'ink_deltaE:' setting to 'dE00'. 2022-03-11 - added endpoint support for TVI and SCTV curves. 2022-05-05 - added support for named plate curves. 2022-05-15 - fixed a bug that caused plate curves to be incorrectly applied to TVI and SCTV curves. 2022-05-17 - modified grade functions to work without a reference profile. 2022-05-29 - added spot color grading. 2022-06-07 - modified CMYK grading function to work with all process colors. 2022-06-09 - added tests for psd 2022 to grading database. - added tests for ISO 12647-6 to grading database. 2022-06-10 - added tests for ISO 12647-8 to grading database. 2022-06-12 - added 'nospot' selection token. 2022-06-11 - added 'nocmy' selection token, to remove problematic CMY samples. 2022-06-18 - added support for multiple reference profiles (using Multi.pm module) 2022-06-17 - added support for multiple test charts. 2022-06-21 - added 'PressCal_Extended_Gamut.yml' and 'PressCal_Multi.yml' basic settings. - added 'ignore' option for the 'condition:' setting (for non-OBA medias). 2022-06-27 - added check for paper white variation with multiple test charts. 2022-07-01 - added option to normalize multiple test charts. 2022-07-01 - added 'PressCal_RGB.yml' basic setting. 2022-07-02 - added RGB test data. 2022-07-03. - made various changes to obtain correct results with RGB data. 2022-07-03 - fixed degree estimate for SCTV and TVI curves. 2022-07-05 - fixed printing of optimized curve parameters. 2022-07-05 - fixed long-standing bug in 'fit_gamma' function for making CED graphs. 2022-07-09 - fixed error/warning trap subroutines, which failed occasionally. 2022-07-20 - added checking of date parameters and checking of date parsing function to 'Chart.pm'. 2022-07-21 - fixed 'ink_colors' function to work correctly with RGB data. 2022-07-28 - fixed 'solid_ink_colors' function, which misbehaved when there were multiple solid ink samples. 2022-08-02 - added 'check_bundle' function, which checks for and fixes multiple PressCal bundles. 2022-08-07 - added 'default_browser' function to determine default web browser without using System Events app. 2022-08-07 - added 'process' output token, to print process control data, per FIRST methodology. 2022-08-15 - added Idealliance ECG test charts to 'identity' function of 'Chart.pm'. 2022-08-22 - modified 'fit_gamma' function by using a better initial estimate of k and theta parameters. 2022-08-27 - improved the implementation of 'highlight:' and 'shadow:' settings by using the 'input' array of 'bern' objects. 2022-08-29 - added X-Rite and Pantone ECG Test charts to 'identity' function of 'Chart.pm'. 2022-09-01 - added 'profile' option to 'sctv_reference:' setting. 2022-09-01 - modified 'rt' selection token of 'Chart.pm' to support alternate calculations of round-trip differences. 2022-09-04 - added Stefano d'Andrea's FlexoCheck chart to 'identity' function of 'Chart.pm'. 2022-09-30 - modified '_readChart' function of 'Chart.pm' to correctly read ASCII files with utf-8 encoding, and the '\xA1' character (degree symbol with latin-1 encoding). 2022-11-01 - fixed 'load_settings' function, so that 'adjusted_profile_path:' setting works with a hash parameter. 2022-11-04 - added 'equios' output token to support Screen Equios DFE. 2022-11-05 - added 'linearity:' setting to control tone mapping contrast. 2022-11-08 - added 'Normalize.yml' basic setting. 2022-11-11 - added 'hybrid' output token to support Hybrid PACKZ DFE. 2023-01-05 - added a PressCal distribution that uses Perl 5.30, to run on newer versions of macOS. 2023-01-05 - added support for 'press_path:' setting to be a hash reference. 2023-01-15 - removed support for supplemental press paths, replaced by 'APPEND' option in hash. 2023-01-15 Version 16.2BU was released on May 22, 2022 - Updated ICC::Profile library to latest version. - Modified 'opt_curves' and 'func_opt_curves' functions to re-compute the final $Labr values in 'opt_curves'. - Fixed bug where curves are unpinned if reference profile is undefined ('endpoints' function was not called unless profile is defined) (Gerry Gerlach). - Added print 'degree:', 'highlight:' and 'shadow:' settings if reference profile is undefined. - Fixed bug where plate curves aren't applied to SCTV, TVI, and G7K curves (Gerry Gerlach). - Change instances of Template error '$tt->error()' to '$tt->error->info()' in 'cvst.pm' and 'Chart.pm'. - Fixed cmd-K function (dump grade database) which failed on newer macOS versions ('Experimental keys on scalar is now forbidden' Perl error). - Modified 'main' function to check results of 'fit_gamma()' function before computing maximum x-scale. Compute and plot 'after' graph only if 'before' graph was successful. - Modified 'main' function by moving 'write_curve_adj_data()' to the end of the function, so that press device data will be intact for other uses. - Fixed 'ink_map' bug, where type 'F' TVI curves were not recognized. - Fixed bug causing error when not enough samples to compute error distribution, when grading (see SCTV basic setting). Version 16.2U was released on October 31, 2021 - Modified the TextMate commands to launch Perl version 5.18 - Added 'Minimal' basic setting. - Code signed the .dmg file and its contents. - Notarized and stapled the .dmg file. Version 16.1U was released on March 28, 2021 - Fixed the fitting of gamma CDF to color error quantiles, which failed occasionally. - Fixed the 'ink_deltaE:' setting, which was non-functional. - Added plots of cumulative error distribution, before and after optimization, to curve building tool (cmd-R). - Added settings, 'ced_select' and 'ced_ink_map:', to control the sample selection for cumulative error distribution. - Suppressed long printout of missing color samples in G7 colorspace grading. - Added optional printout of solid ink colors in L*C*h color, with deltaCh and deltaH color errors ('print_LCh:' setting). - Added support for supplemental press data ('press_path2:' setting). - Added calculation of highlight dot retention to grading tool (cmd-I). - Added 'highlight:' and 'shadow:' constraints for SCTV, TVI and G7K curve optimization. - Added script to dump grading database (cmd-K). - Suppressed opening of graphs when run from command line (CLI). - Added 'Dissimilar' basic setting. - Added user manual sections for all basic settings. - Added user manual section on command line interface (CLI). - Added user manual section on custom grading. - Added new document on customization. - Additional built-in profiles and data sets. - Many small refinements and fixes. Version 16U was released on June 28, 2020 - New grading tool (cmd-I) to determine compliance with standards and guidelines. - Solid ink colors and aim points are graphed, with interactive display of values. - TVI/SCTV ramps are graphed, with interactive display of values. - Gray balance ramps are graphed, with interactive display of values. - Sequential ink ramps are automatically located. - Chart type, colorspace and ink colors are automatically identified. - Added ink balance tool (cmd-B) for determining optimum ink densities. - Spectral solid ink model provides useful measures of ink trapping. - Solid ink samples are automatically chosen to form the tightest cluster. - Added Basic Settings files for grading and calibrating ink jet proofs. - Added function to apply curves to ICC reference profiles. - TVI and SCTV curves now optimized using the Levenberg-Marquardt algorithm. - RGB profiles, data sets, and curves are now supported. - Individual CGATS files with M0, M1, M2 or M3 measurements are automatically combined. - Added script to open built-in data folder (cmd-D). - Additional built-in profiles and data sets. - Many small refinements and fixes. Version 15U was released on May 20, 2019 - Added saving curve set object in settings folder, and using 'last' to select plate curves. - Added 'g7', 'plus', 'minus', 'nosub', 'nobin', and 'max' sample selection tokens. - Modified the 'iso', 'g7' and 'cmy' sample selection tokens to have an optional limit parameter. - Added the capability to read/write CxF/X-4 files (using the data aggregator utility). - Added 'ink_map:' setting and functionality. - Added the capability to make TVI curves (ISO 12647-2:2004 and ISO 12647-2:2013) - Added the capability to make black NPDC curves. - Added the OBA effect option to the 'condition:' setting. - Added 'rendering:' setting and functionality. - Added 'cgats' curve format option. - Added 'navigator' curve format - push calibration for Harlequin RIPs. - Renamed 'xitron' curve format to 'sierra'. - Added 'gb_fade:' setting and functionality - mimics the gray balance fade control of Curve4. - Added 'color:' setting and functionality - complete CIE 015:2018 colorimetry functions. - Added the 'auto' option to the 'condition:' setting. - Added the 'highlight:' and 'shadow:' settings, to replace the 'mode:' setting. - Updated the built-in test data to include CMYKOGV measurements and profile. - Added the 'stats:' setting and functionality - outputs a tab delimited file for statistical analysis. - Added command line interface (CLI). - Added one-click install using TextMate bundle, run from YAML settings file. - Added the 'dLCh' option for the 'deltaE:' setting - optimizes the G7 grayscale pass/fail metrics. - Changed the L*a*b* values used for optimization from media-relative to absolute colorimetry. Version 12U was released on September 26, 2018 - Combined version 3 with several other scripts into a universal tool (12U). - Replaced the Newton-Gauss optimization with the Levenberg-Marquardt optimization (levmar).