GraphicsMagick: 5 new changesets
GraphicsMagick Commits <[email protected]> Wed, 15 Jan 2025 10:39:56 -0600
| Newsgroups | gmane.comp.video.graphicsmagick.cvs |
|---|---|
| Message-ID | <mailman.47888.1736959211.7833.graphicsmagick-commit@lists.sourceforge.net> |
changeset fa9f006357ed in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=fa9f006357ed summary: Added tag GraphicsMagick-1_3_42 for changeset 8f02b37bc3d6 changeset ed87ccf127ac in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=ed87ccf127ac summary: Added tag GraphicsMagick-1_3_43 for changeset 8f02b37bc3d6 changeset bbb58ab3081d in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=bbb58ab3081d summary: Removed tag GraphicsMagick-1_3_42 changeset a131be50667e in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=a131be50667e summary: Added tag GraphicsMagick-1_3_42 for changeset 6ae1ff7cda9d changeset 5165261111c1 in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=5165261111c1 summary: JPEG: Properly invert CMYK components when writing. diffstat: .hgtags | 7 + ChangeLog | 14 +++ Makefile.am | 2 +- Makefile.in | 4 +- NEWS.txt | 5 +- VisualMagick/installer/inc/version.isx | 4 +- coders/jpeg.c | 122 ++++++++++++++++++++++++-------- magick/version.h | 4 +- www/ChangeLog.html | 22 ++++- www/INSTALL-unix.html | 12 ++- www/INSTALL-unix.rst | 12 ++- www/Makefile.am | 2 +- www/NEWS.html | 4 +- 13 files changed, 159 insertions(+), 55 deletions(-) diffs (485 lines): diff -r e5d4aab85dc2 -r 5165261111c1 .hgtags --- a/.hgtags Mon Jan 06 10:43:14 2025 -0600 +++ b/.hgtags Wed Jan 15 10:39:15 2025 -0600 @@ -74,3 +74,10 @@ 24d85185b7a3b5a5e9cc74ebf7d0e94ca60d7157 ImageMagick-5_2_6 bc8483ab69f9a2752475e122fa60dc024040b865 ImageMagick-5_2_7 c4404631fa1c5235083ddff0653ad93c10e4829b ImageMagick-5_2_5 +8f02b37bc3d6a9af4e7ce7e108d261c8ba754fb8 GraphicsMagick-1_3_42 +eff5b40bc7702651ceffbe0eeb26d5cd278abf95 GraphicsMagick-1_3_43 +8f02b37bc3d6a9af4e7ce7e108d261c8ba754fb8 GraphicsMagick-1_3_43 +8f02b37bc3d6a9af4e7ce7e108d261c8ba754fb8 GraphicsMagick-1_3_42 +0000000000000000000000000000000000000000 GraphicsMagick-1_3_42 +0000000000000000000000000000000000000000 GraphicsMagick-1_3_42 +6ae1ff7cda9d507484bb17adfd889d06600a96ca GraphicsMagick-1_3_42 diff -r e5d4aab85dc2 -r 5165261111c1 ChangeLog --- a/ChangeLog Mon Jan 06 10:43:14 2025 -0600 +++ b/ChangeLog Wed Jan 15 10:39:15 2025 -0600 @@ -1,3 +1,17 @@ +2025-01-15 Bob Friesenhahn <[email protected]> + + * NEWS.txt: Update the news. + + * coders/jpeg.c (WriteJPEGImage): Properly invert CMYK components + when writing. Addresses SourceForge bug #751 "all CMYK colorspace + image become black-white inverted". This bug was introduced in + GraphicsMagick 1.3.43. Existing files which appear "corrupt" due + to this issue may be salvaged by using the -negate command like + "gm convert bad-cmyk.jpg -negate good-cmyk.jpg". + + * www/INSTALL-unix.rst: Document the Docutils version necessary to + format reStructuredText files to HTML format. + 2025-01-06 Bob Friesenhahn <[email protected]> * www/wand/Makefile.am ($(WWWWANDAPIDIR)/%.apirst): Pass an diff -r e5d4aab85dc2 -r 5165261111c1 Makefile.am --- a/Makefile.am Mon Jan 06 10:43:14 2025 -0600 +++ b/Makefile.am Wed Jan 15 10:39:15 2025 -0600 @@ -153,7 +153,7 @@ $(TESTS_EXTRA_DIST) \ $(UTILITIES_EXTRA_DIST) \ $(WAND_EXTRA_DIST) \ - $(WWWW_EXTRA_DIST) \ + $(WWW_EXTRA_DIST) \ $(WWWAPI_EXTRA_DIST) \ $(WWWWANDAPI_EXTRA_DIST) diff -r e5d4aab85dc2 -r 5165261111c1 Makefile.in --- a/Makefile.in Mon Jan 06 10:43:14 2025 -0600 +++ b/Makefile.in Wed Jan 15 10:39:15 2025 -0600 @@ -2896,7 +2896,7 @@ $(TESTS_EXTRA_DIST) \ $(UTILITIES_EXTRA_DIST) \ $(WAND_EXTRA_DIST) \ - $(WWWW_EXTRA_DIST) \ + $(WWW_EXTRA_DIST) \ $(WWWAPI_EXTRA_DIST) \ $(WWWWANDAPI_EXTRA_DIST) @@ -4707,7 +4707,7 @@ $(WWWDIR)/utilities.html\ $(WWWDIR)/wand/wand.html -WWWW_EXTRA_DIST = $(WWW_HTML_FILES) $(WWW_RST_FILES) +WWW_EXTRA_DIST = $(WWW_HTML_FILES) $(WWW_RST_FILES) WWW_MAINTAINER_TARGETS = $(WWW_HTML_FILES) $(WWWDIR)/color.html @MAINTAINER_MODE_TRUE@NAMED_COLORS = $(top_srcdir)/scripts/named_colors.py @MAINTAINER_MODE_TRUE@RST2HTML5 = $(top_srcdir)/scripts/rst2html5.py diff -r e5d4aab85dc2 -r 5165261111c1 NEWS.txt --- a/NEWS.txt Mon Jan 06 10:43:14 2025 -0600 +++ b/NEWS.txt Wed Jan 15 10:39:15 2025 -0600 @@ -6,7 +6,7 @@ GraphicsMagick News =================== -This file was last updated to reflect changes up to January 4, 2025. +This file was last updated to reflect changes up to January 15, 2025. Please note that this file records news for the associated development branch and that each development branch has its own NEWS file. See the @@ -45,6 +45,9 @@ image is indicated to be opaque. This avoids issues with code which assumes that the opacity channel is always initialized. +* JPEG: Since GraphicsMagick 1.3.43, CMYK JPEG has been writing + inverted. This bug is now fixed. + * TclMagick: The TclMagick build uses the latest TEA tcl.m4 macros, while modernizing the Automake and Autoconf files. Many defects in the C code are corrected. The libttkcommon "shim" library, diff -r e5d4aab85dc2 -r 5165261111c1 VisualMagick/installer/inc/version.isx --- a/VisualMagick/installer/inc/version.isx Mon Jan 06 10:43:14 2025 -0600 +++ b/VisualMagick/installer/inc/version.isx Wed Jan 15 10:39:15 2025 -0600 @@ -10,5 +10,5 @@ #define public MagickPackageName "GraphicsMagick" #define public MagickPackageVersion "1.4" -#define public MagickPackageVersionAddendum ".020250106" -#define public MagickPackageReleaseDate "snapshot-20250106" +#define public MagickPackageVersionAddendum ".020250115" +#define public MagickPackageReleaseDate "snapshot-20250115" diff -r e5d4aab85dc2 -r 5165261111c1 coders/jpeg.c --- a/coders/jpeg.c Mon Jan 06 10:43:14 2025 -0600 +++ b/coders/jpeg.c Wed Jan 15 10:39:15 2025 -0600 @@ -2832,13 +2832,19 @@ } (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " Write JPEG Image: image->orientation = %d",image->orientation); + " Write JPEG Image: image->orientation = %d", + image->orientation); /* Transform image to user-requested colorspace. */ if (UndefinedColorspace != image_info->colorspace) { + if (image->logging) + (void) LogMagickEvent(CoderEvent,GetMagickModule(), + " Transforming colorspace from %s to %s", + ColorspaceTypeToString(image->colorspace), + ColorspaceTypeToString(image_info->colorspace)); (void) TransformColorspace(image,image_info->colorspace); } /* @@ -2849,6 +2855,10 @@ else if (IsRGBCompatibleColorspace(image->colorspace) && !IsRGBColorspace(image->colorspace)) { + if (image->logging) + (void) LogMagickEvent(CoderEvent,GetMagickModule(), + " Transforming colorspace from %s to RGB", + ColorspaceTypeToString(image->colorspace)); (void) TransformColorspace(image,RGBColorspace); } @@ -3038,6 +3048,9 @@ #endif /* if defined(HAVE_JPEG_ENABLE_LOSSLESS) && HAVE_JPEG_ENABLE_LOSSLESS */ #endif /* if defined(HAVE_JPEG16_WRITE_SCANLINES) && HAVE_JPEG16_WRITE_SCANLINES */ } + if (image->logging) + (void) LogMagickEvent(CoderEvent,GetMagickModule(), + " Set data precision: %u", jpeg_info.data_precision); } } if ((image->x_resolution == 0) || (image->y_resolution == 0)) @@ -3088,15 +3101,40 @@ if ((value=AccessDefinition(image_info,"jpeg","dct-method"))) { if (LocaleCompare(value,"ISLOW") == 0) - jpeg_info.dct_method=JDCT_ISLOW; + { + jpeg_info.dct_method=JDCT_ISLOW; + if (image->logging) + (void) LogMagickEvent(CoderEvent,GetMagickModule(), + " Set DCT method ISLOW"); + } else if (LocaleCompare(value,"IFAST") == 0) - jpeg_info.dct_method=JDCT_IFAST; + { + jpeg_info.dct_method=JDCT_IFAST; + if (image->logging) + (void) LogMagickEvent(CoderEvent,GetMagickModule(), + " Set DCT method IFAST"); + } else if (LocaleCompare(value,"FLOAT") == 0) - jpeg_info.dct_method=JDCT_FLOAT; + { + jpeg_info.dct_method=JDCT_FLOAT; + if (image->logging) + (void) LogMagickEvent(CoderEvent,GetMagickModule(), + " Set DCT method FLOAT"); + } else if (LocaleCompare(value,"DEFAULT") == 0) - jpeg_info.dct_method=JDCT_DEFAULT; + { + jpeg_info.dct_method=JDCT_DEFAULT; + if (image->logging) + (void) LogMagickEvent(CoderEvent,GetMagickModule(), + " Set DCT method DEFAULT"); + } else if (LocaleCompare(value,"FASTEST") == 0) - jpeg_info.dct_method=JDCT_FASTEST; + { + jpeg_info.dct_method=JDCT_FASTEST; + if (image->logging) + (void) LogMagickEvent(CoderEvent,GetMagickModule(), + " Set DCT method FASTEST"); + } } } @@ -3113,9 +3151,19 @@ if ((value=AccessDefinition(image_info,"jpeg","arithmetic-coding"))) { if (LocaleCompare(value,"FALSE") == 0) - jpeg_info.arith_code = False; + { + jpeg_info.arith_code = False; + if (image->logging) + (void) LogMagickEvent(CoderEvent,GetMagickModule(), + " Disabled arithmetic coding"); + } else - jpeg_info.arith_code = True; + { + jpeg_info.arith_code = True; + if (image->logging) + (void) LogMagickEvent(CoderEvent,GetMagickModule(), + " Enabled arithmetic coding"); + } } if (!jpeg_info.arith_code) /* jpeg_info.optimize_coding must not be set to enable arithmetic. */ #endif /* if defined(C_ARITH_CODING_SUPPORTED) */ @@ -3123,9 +3171,19 @@ if ((value=AccessDefinition(image_info,"jpeg","optimize-coding"))) { if (LocaleCompare(value,"FALSE") == 0) - jpeg_info.optimize_coding=MagickFalse; + { + jpeg_info.optimize_coding=MagickFalse; + if (image->logging) + (void) LogMagickEvent(CoderEvent,GetMagickModule(), + " Disabled optimize coding"); + } else - jpeg_info.optimize_coding=MagickTrue; + { + jpeg_info.optimize_coding=MagickTrue; + if (image->logging) + (void) LogMagickEvent(CoderEvent,GetMagickModule(), + " Enabled optimize coding"); + } } else { @@ -3144,7 +3202,7 @@ huffman_memory=0; if (image->logging) (void) LogMagickEvent(CoderEvent,GetMagickModule(), - "Huffman optimization is %s", + " Huffman optimization is %s", (jpeg_info.optimize_coding ? "enabled" : "disabled")); } } @@ -3164,7 +3222,7 @@ #else if (image->logging) (void) LogMagickEvent(CoderEvent,GetMagickModule(), - "Interlace: nonprogressive"); + "Interlace: nonprogressive"); #endif if (image->logging) (void) LogMagickEvent(CoderEvent,GetMagickModule(), @@ -3436,7 +3494,9 @@ if (image->logging) (void) LogMagickEvent(CoderEvent,GetMagickModule(), - "Writing %u bit %s samples...", + "Writing %d components, %u bits per component," + " with colorspace %s...", + jpeg_info.input_components, jpeg_info.data_precision, JPEGColorSpaceToString(jpeg_info.in_color_space)); @@ -3493,10 +3553,10 @@ i=0; for (x=0; x < (long) image->columns; x++) { - jpeg_pixels.t.j16[i++] = (J16SAMPLE)(ScaleQuantumToShort(p->red)); - jpeg_pixels.t.j16[i++] = (J16SAMPLE)(ScaleQuantumToShort(p->green)); - jpeg_pixels.t.j16[i++] = (J16SAMPLE)(ScaleQuantumToShort(p->blue)); - jpeg_pixels.t.j16[i++] = (J16SAMPLE)(ScaleQuantumToShort(p->opacity)); + jpeg_pixels.t.j16[i++] = (J16SAMPLE)(65535U-ScaleQuantumToShort(p->red)); + jpeg_pixels.t.j16[i++] = (J16SAMPLE)(65535U-ScaleQuantumToShort(p->green)); + jpeg_pixels.t.j16[i++] = (J16SAMPLE)(65535U-ScaleQuantumToShort(p->blue)); + jpeg_pixels.t.j16[i++] = (J16SAMPLE)(65535U-ScaleQuantumToShort(p->opacity)); p++; } } /* End deep JCS_CMYK */ @@ -3553,10 +3613,10 @@ i=0; for (x=0; x < (long) image->columns; x++) { - jpeg_pixels.t.j12[i++] = (J12SAMPLE)(ScaleQuantumToShort(p->red)/16); - jpeg_pixels.t.j12[i++] = (J12SAMPLE)(ScaleQuantumToShort(p->green)/16); - jpeg_pixels.t.j12[i++] = (J12SAMPLE)(ScaleQuantumToShort(p->blue)/16); - jpeg_pixels.t.j12[i++] = (J12SAMPLE)(ScaleQuantumToShort(p->opacity)/16); + jpeg_pixels.t.j12[i++] = (J12SAMPLE)(4095U-ScaleQuantumToShort(p->red)/16); + jpeg_pixels.t.j12[i++] = (J12SAMPLE)(4095U-ScaleQuantumToShort(p->green)/16); + jpeg_pixels.t.j12[i++] = (J12SAMPLE)(4095U-ScaleQuantumToShort(p->blue)/16); + jpeg_pixels.t.j12[i++] = (J12SAMPLE)(4095U-ScaleQuantumToShort(p->opacity)/16); p++; } } /* End deep JCS_CMYK */ @@ -3570,7 +3630,7 @@ scanline[1]; if (jpeg_info.in_color_space == JCS_GRAYSCALE) - { /* Start deep JCS_GRAYSCALE */ + { /* Start traditional JCS_GRAYSCALE */ if (image->is_grayscale) { i=0; @@ -3589,10 +3649,10 @@ p++; } } - } /* End deep JCS_GRAYSCALE */ + } /* End traditional JCS_GRAYSCALE */ else if ((jpeg_info.in_color_space == JCS_RGB) || (jpeg_info.in_color_space == JCS_YCbCr)) - { /* Start deep JCS_RGB || JCS_YCbCr */ + { /* Start traditional JCS_RGB || JCS_YCbCr */ i=0; for (x=0; x < (long) image->columns; x++) { @@ -3601,19 +3661,19 @@ jpeg_pixels.t.j[i++]=(JSAMPLE)(ScaleQuantumToChar(p->blue)); p++; } - } /* End deep JCS_RGB || JCS_YCbCr */ + } /* End traditional JCS_RGB || JCS_YCbCr */ else if (jpeg_info.in_color_space == JCS_CMYK) - { /* Start deep JCS_CMYK */ + { /* Start traditional JCS_CMYK */ i=0; for (x=0; x < (long) image->columns; x++) { - jpeg_pixels.t.j[i++]=(JSAMPLE)(ScaleQuantumToChar(p->red)); - jpeg_pixels.t.j[i++]=(JSAMPLE)(ScaleQuantumToChar(p->green)); - jpeg_pixels.t.j[i++]=(JSAMPLE)(ScaleQuantumToChar(p->blue)); - jpeg_pixels.t.j[i++]=(JSAMPLE)(ScaleQuantumToChar(p->opacity)); + jpeg_pixels.t.j[i++]=(JSAMPLE)(ScaleQuantumToChar(MaxRGB-p->red)); + jpeg_pixels.t.j[i++]=(JSAMPLE)(ScaleQuantumToChar(MaxRGB-p->green)); + jpeg_pixels.t.j[i++]=(JSAMPLE)(ScaleQuantumToChar(MaxRGB-p->blue)); + jpeg_pixels.t.j[i++]=(JSAMPLE)(ScaleQuantumToChar(MaxRGB-p->opacity)); p++; } - } /* End deep JCS_CMYK */ + } /* End traditional JCS_CMYK */ scanline[0]=(JSAMPROW) jpeg_pixels.t.j; (void) jpeg_write_scanlines(&jpeg_info,scanline,1); diff -r e5d4aab85dc2 -r 5165261111c1 magick/version.h --- a/magick/version.h Mon Jan 06 10:43:14 2025 -0600 +++ b/magick/version.h Wed Jan 15 10:39:15 2025 -0600 @@ -38,8 +38,8 @@ #define MagickLibVersion 0x282502 #define MagickLibVersionText "1.4" #define MagickLibVersionNumber 28,25,2 -#define MagickChangeDate "20250106" -#define MagickReleaseDate "snapshot-20250106" +#define MagickChangeDate "20250115" +#define MagickReleaseDate "snapshot-20250115" /* The MagickLibInterfaceNewest and MagickLibInterfaceOldest defines diff -r e5d4aab85dc2 -r 5165261111c1 www/ChangeLog.html --- a/www/ChangeLog.html Mon Jan 06 10:43:14 2025 -0600 +++ b/www/ChangeLog.html Wed Jan 15 10:39:15 2025 -0600 @@ -38,15 +38,25 @@ <main id="graphicsmagick-changelog"> <h1 class="title">GraphicsMagick ChangeLog</h1> +<p>2025-01-15 Bob Friesenhahn <<a class="reference external" href="mailto:bfriesen%40simple.dallas.tx.us">bfriesen<span>@</span>simple<span>.</span>dallas<span>.</span>tx<span>.</span>us</a>></p> +<blockquote> +<ul class="simple"> +<li><p>NEWS.txt: Update the news.</p></li> +<li><p>coders/jpeg.c (WriteJPEGImage): Properly invert CMYK components +when writing. Addresses SourceForge bug #751 "all CMYK colorspace +image become black-white inverted". This bug was introduced in +GraphicsMagick 1.3.43. Existing files which appear "corrupt" due +to this issue may be salvaged by using the -negate command like +"gm convert bad-cmyk.jpg -negate good-cmyk.jpg".</p></li> +<li><p>www/INSTALL-unix.rst: Document the Docutils version necessary to +format reStructuredText files to HTML format.</p></li> +</ul> +</blockquote> <p>2025-01-06 Bob Friesenhahn <<a class="reference external" href="mailto:bfriesen%40simple.dallas.tx.us">bfriesen<span>@</span>simple<span>.</span>dallas<span>.</span>tx<span>.</span>us</a>></p> <blockquote> <ul class="simple"> -<li><p>www/wand/Makefile.am ($(WWWWANDAPIDIR)/%.apirst): Use -$(abs_top_srcdir) rather than $(top_srcdir) for the --include-rst -argument when invoking format_c_api_doc.py to assure correct -function if the build tree was configured using a relative path to -the source directory, and the current working directory is -changed.</p></li> +<li><p>www/wand/Makefile.am ($(WWWWANDAPIDIR)/%.apirst): Pass an +absolute path to format_c_api_doc.py --include-rst argument.</p></li> <li><p>magick/magick_endian.c (MagickReverseBits): Function has never been used for anything. Mark it as deprecated. MagickGetBitRevTable(): Function has never been used for anything. diff -r e5d4aab85dc2 -r 5165261111c1 www/INSTALL-unix.html --- a/www/INSTALL-unix.html Mon Jan 06 10:43:14 2025 -0600 +++ b/www/INSTALL-unix.html Wed Jan 15 10:39:15 2025 -0600 @@ -261,8 +261,10 @@ </dd> <dt><kbd><span class="option">--enable-maintainer-mode</span></kbd></dt> <dd><p>enable additional Makefile rules which update generated files -included in the distribution. Requires GNU make as well as a -number of utilities and tools.</p> +included in the distribution. Requires GNU make, Python 3, as well +as a number of common development utilities and tools. Python 3 +Docutils (0.17.1 or later) are required to format ".rst" +reStructuredText files to HTML format.</p> </dd> <dt><kbd><span class="option">--enable-quantum-library-names</span></kbd></dt> <dd><p>shared library name includes quantum depth to allow shared @@ -920,8 +922,10 @@ <pre class="literal-block">dcraw, fonts-urw-base35, ghostscript, hp2xx, ttf-mscorefonts-installer</pre> <p>These additional packages are useful in order to maintain -GraphicsMagick itself:</p> -<pre class="literal-block">autoconf, automake, graphviz, libtool, docutils-common, python, m4</pre> +GraphicsMagick itself (see the <span class="docutils literal"><span class="pre">--enable-maintainer-mode</span></span> configure +option):</p> +<pre class="literal-block">autoconf, automake, graphviz, libtool, python3-docutils, +docutils-common, python3, m4</pre> </section> </section> <section id="building-under-cygwin"> diff -r e5d4aab85dc2 -r 5165261111c1 www/INSTALL-unix.rst --- a/www/INSTALL-unix.rst Mon Jan 06 10:43:14 2025 -0600 +++ b/www/INSTALL-unix.rst Wed Jan 15 10:39:15 2025 -0600 @@ -245,8 +245,10 @@ --enable-maintainer-mode enable additional Makefile rules which update generated files - included in the distribution. Requires GNU make as well as a - number of utilities and tools. + included in the distribution. Requires GNU make, Python 3, as well + as a number of common development utilities and tools. Python 3 + Docutils (0.17.1 or later) are required to format ".rst" + reStructuredText files to HTML format. --enable-quantum-library-names @@ -898,9 +900,11 @@ ttf-mscorefonts-installer These additional packages are useful in order to maintain -GraphicsMagick itself:: +GraphicsMagick itself (see the ``--enable-maintainer-mode`` configure +option):: - autoconf, automake, graphviz, libtool, docutils-common, python, m4 + autoconf, automake, graphviz, libtool, python3-docutils, + docutils-common, python3, m4 Building under Cygwin diff -r e5d4aab85dc2 -r 5165261111c1 www/Makefile.am --- a/www/Makefile.am Mon Jan 06 10:43:14 2025 -0600 +++ b/www/Makefile.am Wed Jan 15 10:39:15 2025 -0600 @@ -249,7 +249,7 @@ $(WWWDIR)/utilities.html\ $(WWWDIR)/wand/wand.html -WWWW_EXTRA_DIST=$(WWW_HTML_FILES) $(WWW_RST_FILES) +WWW_EXTRA_DIST=$(WWW_HTML_FILES) $(WWW_RST_FILES) WWW_MAINTAINER_TARGETS=$(WWW_HTML_FILES) $(WWWDIR)/color.html diff -r e5d4aab85dc2 -r 5165261111c1 www/NEWS.html --- a/www/NEWS.html Mon Jan 06 10:43:14 2025 -0600 +++ b/www/NEWS.html Wed Jan 15 10:39:15 2025 -0600 @@ -41,7 +41,7 @@ <!-- -*- mode: rst -*- --> <!-- This text is in reStucturedText format, so it may look a bit odd. --> <!-- See http://docutils.sourceforge.net/rst.html for details. --> -<p>This file was last updated to reflect changes up to January 4, 2025.</p> +<p>This file was last updated to reflect changes up to January 15, 2025.</p> <p>Please note that this file records news for the associated development branch and that each development branch has its own NEWS file. See the ChangeLog file, and/or the Mercurial changesets, for full details.</p> @@ -125,6 +125,8 @@ <li><p>BMP: Assure that the opacity channel is initialized, even if the image is indicated to be opaque. This avoids issues with code which assumes that the opacity channel is always initialized.</p></li> +<li><p>JPEG: Since GraphicsMagick 1.3.43, CMYK JPEG has been writing +inverted. This bug is now fixed.</p></li> <li><p>TclMagick: The TclMagick build uses the latest TEA tcl.m4 macros, while modernizing the Automake and Autoconf files. Many defects in the C code are corrected. The libttkcommon "shim" library,