Files
argyllcms/icc/log.txt
T
2026-08-20 20:28:40 +01:00

317 lines
12 KiB
Plaintext
Executable File

Change History: (See ArgyllCMS log.txt too)
3.0.0
Added new combined icmLu object with API that differs from earlier versions.
Changed lu->spaces() arguments to compact each colorspace information,
and to eliminate get_ranges() and get_lutranges() methods.
Other lu->spaces() arguments also change.
Renamed lutspaces() -> native_spaces()
Changed lu transform method names:
1 step:
lookup -> lookup_fwd
3 step:
lookup_in -> input_fwd
lookup_core -> core3_fwd
lookup_out -> output_fwd
lookup_inv_in -> input_bwd
lu2mono:
1 step:
fwd_lookup -> lookup_fwd
bwd_lookup -> lookup_bwd
5 step:
fwd_curve -> (input_fmt_fwd) + input_pch_fwd
fwd_map -> core5_fwd
fwd_abs -> (output_pch_fwd) + output_fmt_fwd
bwd_abs -> output_fmt_bwd + (output_pch_bwd)
bwd_map -> core5_bwd
bwd_curve -> input_pch_bwd + (input_fmt_bwd);
lu2matrix:
1 step:
fwd_lookup -> lookup_fwd
bwd_lookup -> lookup_bwd
5 step:
fwd_curve -> (input_fmt_fwd) + input_pch_fwd
fwd_matrix -> core5_fwd
fwd_abs -> (output_pch_fwd) + output_fmt_fwd
bwd_abs -> output_fmt_bwd = (output_pch_bwd)
bwd_matrix -> core5_bwd
bwd_curve -> input_pch_bwd + (input_fmt_bwd);
lu2lut:
5 step:
in_abs -> input_fmt_fwd
matrix -> XXXXXXXXXXXXX none. Combined with input & clut
input -> input_pch_fwd
clut -> core5_fwd
output -> output_pch_fwd
out_abs -> output_fmt_fwd
inv_out_abs -> output_fmt_bwd
inv_output -> output_pch_bwd
(clut) (clut not invertable)
inv_input -> input_pch_bwd
inv_matrix -> XXXXXXXXXXXXX none. Combined with clut & input
inv_in_abs -> input_fmt_bwd
Split out less icc specific source code into icc_util.[ch]
Add new TagType parsing code (icmSn*)
Old parsing code is labeled LEGACY
Switch header and main profile code to use new parsing code.
Changed implementation ICC version numbers to use icmTV
Added controls to format compatibility checking and warning (icmCompatFlags).
Added warning callback function to handle warnings.
Changed icclib API to use UTF-8 to communicate Unicode text.
icmTextDescription now uses *uc8Desc for string and uc8Count for its length.
Remove need to cast of tagtype object to icmBase
when invoking icmBase methods:
i.e. get_size(), read(), write(), del(), dump(), allocate()
Most tagtype members called "size" have been renamed "count".
icmProfileSequenceDesc struct now has pointer to TextDescriptions rather than
being embeded, and these have been renamed: device -> mfgDesc, model -> modelDesc.
icmData now uses icBinaryData and icAsciiData as type value.
icmText elment data renamed to desc.
icmColorantTable now uses allocated name strings.
icmMeasurement flare is now icMeasurementFlare enum.
icmScreening flags is now icScreening screeningFlags
NamedColor prefix/suffix/root strings need to have count set and allocate().
icmVideoCardGamma now uses double array to store data, rather than
being tag details dependent. tagType is now icVideoCardGammaFormat.
Converted red/green/blue gamma/min/max to arrays.
icmCurve icmCurveStyel flag -> icmCurveType ctype
Changed to use icmErr error to hold error code & message.
icm.err[] -> icc.e.m[]
icm.errc -> icc.e.c
Some functions now have a new first argument of *icmErr.
Note that it is treated as "sticky" so that several
functions can be called before checking for errors.
new_icmAllocStd()
new_icmFileStd_name()
new_icmFileStd_fp()
new_icmFileStd_name_a()
new_icmFileStd_fp_a()
new_icmFileMem_a()
new_icmFileMem_ad()
new_icmFileMem()
new_icmFileMem_d()
new_icmMD5_a()
new_icmMD5()
new_icc_a()
new_icc()
Renamed str2tag() -> icmstr2tag()
Renamed icmLuAlg -> icmTransformLookupAlgorithm
2.21
Automatically repair icmTextDescription strings have an allocation that is longer
than their size.
2.20
Add better cross compatibility with non-Argyll ICC profiles:
+ Use "wrong Von Kries" media white point adapation for non-Argyll non-display profile
+ Optionally create "wrong Von Kries" media white point adapation profiles
using the "ARGYLL_CREATE_WRONG_VON_KRIES_OUTPUT_CLASS_REL_WP" env. variable,
while maintaining ArgyllCMS compatibility using the 'arts' tag.
+ Implement proper absolute colorimetric intent for ICCV2 Display profiles
that use the ICCV4 style of have a media white of D50 and storing the
media chromatic trasnform in the 'chad' tag.
+ Optionally create such ICCV4 style V2 Display profiles by using the
"ARGYLL_CREATE_DISPLAY_PROFILE_WITH_CHAD" env. variable.
2.16
Clean up cLUT read code to make sanity checking
more explicit and remove redundant code.
Added special mode that interprets cLUT res of 0 as 256
for MadVR testing.
Change icc->read_tag() to only succeed if the tag type is
known, since the standard expectation of a non NULL
return type is that it is of a known type. Added new
method icc->read_tag_any() which will return a
icmSigUnknownType if the tag type is unknown.
2.14
Fix potential array bounds violation in icc/icc.c for malformed
cLUT profiles with zero input channels.
2.10
Added protection against crafted file integer overflows.
Many minor additions to support ArgyllCMS.
Further add V4 compatibility, with changes to PCS encoding.
2.06
Added MD5 checksum code for profile ID support.
2.05
Version in Argyll V0.51 release.
Started adding support for ICC V4. Not enabled yet.
Expanded internal/effective colorspace/ranges support
to be uniform between all the lookup types.
2.04
Fixed minor casting nits picked up by some compilers
(thanks to Keith Trummel).
Make intent selection for Matrix profiles and Gamut tables
more forgiving if not ICM_STRICT.
2.03
Added simple extention when dumping binary data tag to
dump ASCII as well if verb >= 4.
Added Makefile support for compiling under MAC OSX.
Added access to primitive read and write functions, so custom tag
data can be marshalled using standard encodings.
Expanded ICM_STRICT to encompass bad DateTime information in the header,
and also disable required tag checking on reading or lookups.
Changed default intent for Output profiles to perceptual from
colorimetric, since this would usually be expected.
Added workaround for faulty Kodak RGB matrix profiles, that
have their primary XYZ coordinates scaled to 100.0 rather than
1.0. This is enabled if ICM_STRICT is not defined.
Replaced Lab<->XYZ functions with simpler versions.
Expand icmFile implimentation to handle icmAlloc
Do check for header Magic number first.
Add convenience function that creates an RGB to XYZ transform
matrix from the device primaries and the white point.
Separated stdio versions of file and alloc to allow
compile without these.
Non-standard (ie. Apple) 5,6,7 & 8 channel color signatures
weren't being handled properly thruout the library.
2.02
Merged rename of [u]int64 to icm[Ui][I]nt64 (to work around
AIX 5.1L portability bug) from Raph Levien.
Fixed stray , in icmLookupOrder structure definition (from Dan Coby)
2.01
Change TextDescription code to not barf if #undef ICM_STRICT and
Apple scriptcode not padded to 67 bytes.
Add get_ranges() method to all Lu types, not just LuLut.
Fix bug in PCS override logic that was causing
reverse conversions to apply the wrong conversion.
Added Delta E convenience functions icmLabDE() and
icmCIE94() etc.
Merged Raph Levien's cleanups, to quiet gcc warnings.
Merged another couple of warning cleanups from Jouk Jansen.
2.00
Change absolute conversion to be white point only, and use
Bradford transform by default. (ie. we are now ignoring the
comment in section 6.4.22 of the 1998 spec. about the
media black point being used for absolute colorimetry,
ignoring the recommendation on page 118 in section E.5,
and are taking up the recommendation on page 124 in section
E.16 that a more sophisticated chromatic adaptation model be used.)
This is for better compatibility with other CMM's, and to
improve the results when using simple links between
profiles with non-D50 white points. Standard profiles
like sRGB will also be more accurate when interpreted
with absolute colorimetric intent.
This will cause some slight incompatibilty with previous
versions of icclib.
Added ColorSync 2.5 specific VideoCardGamma tag support
(from Neil Okamoto)
1.31
Added file I/O class to allow substitution of alternative ICC profile
file access. Provide standard file class instance, and memory image
instance of file I/O class as default and example.
Added an optional new_icc_a() object creator, that takes a memory
allocator class instance. This allows an alternate memory heap to
be used with the icc class.
Renamed object free() methods to del() for more consistency with new().
1.30
Added workaround for reading some Adobe profiles with confused header DateTime.
Enhanced tag allocate() methods so that they can resize allocations.
Enhanced icmLut_set_tables() to access grid points in a cache friendly order.
Fixed bug in check_icc_legal() that caused bogus errors, removed
uneccessary static declarations in icc.h, and fixed a bug in
icmTable_lookup_bwd() that effected both accuracy and speed. (Thanks to Andrei Frolov)
Removed icmAbsoluteColorimetricXYZ intent, and replaced it with
a PCS override capability. This adds a new parameter to get_luobj()
Added Lab translations of some XYZ "dump" strings.
Fix memory leak after failed tag read + rename_tag function
+ shared library support changes. (Thanks to Carles Llopis).
Changed all the public 2str utility routines to a single function
that can be used to interpret an enumeration or tag in a human
readable form.
1.23
Fixed important bug in Lut read/write. The matrix values had their
rows and columns switched. Not many profiles exercise this code.
Thanks to David Gillman for discovering this problem.
Fixup compiler complains about illegal enum values for icmCurveStyle,
and icmDataStyle. Malloc memory icmLut_lookup_clut_nl for gw[], so that
it is more friendly to systems with a limited stack. (Thanks to Dave White)
1.22 99/11/11 Snapshot of current code.
Added more hooks to support inherited implementation of
color conversion, used in Argyll to support reversing
multi-dimentional table lookups.
Cleaned up color conversion code to make it easier to follow.
Adding simplex interpolation for non-Lab style input space interpolation.
Fix Sun misalignment and realloc problems (Thanks to Allan N. Hessenflow)
Fixed endian problem with Unicode on read and write.
Expanded icmTextDescription_dump() to do hex dump of Unicode and ScriptCode.
Changed over to ICC.1:1998-09 .h file.
Started implementing ICC.1:1998-09, but not complete yet!
1.21 99/2/14
After re-reading Michael Bourgoin's 1998 SIGGRAPH notes,
I have consolidated the Lut input index, and table value encodings.
The default set_tables() scaling has been adjusted appropriately
for this correction of Lab encoding.
Trying to create an 8 bit XYZ Lut will now fail if icclib helper
functions are used to create it.
1.20 99/2/7
Added profile color lookup functon.
Added set_tables() support.
Various bug fixes and enhancements.