317 lines
12 KiB
Plaintext
Executable File
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.
|