[-]
[+]
|
Changed |
_service:tar_git:ImageMagick.spec
|
|
[-]
[+]
|
Changed |
_service
^
|
@@ -1,7 +1,7 @@
<services>
<service name="tar_git">
<param name="url">https://github.com/sailfishos-chum/ImageMagick.git</param>
- <param name="revision">7.1.1.27+obs1.1</param>
+ <param name="revision">7.1.1.28+obs1.0</param>
<!--
<param name="branch">obs</param>
-->
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/.github/workflows/release.yml
^
|
@@ -146,7 +146,7 @@
- name: Sign binaries
if: github.event_name != 'pull_request'
- uses: azure/azure-code-signing-action@v0.2.22
+ uses: azure/azure-code-signing-action@v0.3.0
with:
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
@@ -169,7 +169,7 @@
- name: Sign installer
if: github.event_name != 'pull_request'
- uses: azure/azure-code-signing-action@v0.2.22
+ uses: azure/azure-code-signing-action@v0.3.0
with:
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
@@ -302,7 +302,7 @@
- name: Sign executables
if: github.event_name != 'pull_request'
- uses: azure/azure-code-signing-action@v0.2.22
+ uses: azure/azure-code-signing-action@v0.3.0
with:
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/ImageMagick.spec.in
^
|
@@ -1,104 +1,193 @@
-%global VERSION @PACKAGE_BASE_VERSION@
-%global Patchlevel @MAGICK_PATCHLEVEL_VERSION@
+%bcond_without tests
-Name: @PACKAGE_NAME@
-Version: %{VERSION}
+%bcond_without libheif
+
+%if 0%{?flatpak}
+%bcond_with perl
+%else
+%bcond_without perl
+%endif
+
+# Disable automatic .la file removal
+%global __brp_remove_la_files %nil
+%global Version @PACKAGE_BASE_VERSION@
+%global Patchlevel @MAGICK_PATCHLEVEL_VERSION@
+%global libsover 10
+%global libcxxsover 5
+
+Name: ImageMagick
+Epoch: 1
+Version: %{Version}
Release: %{Patchlevel}
-Summary: Use ImageMagick to convert, edit, or compose bitmap images in a variety of formats. In addition resize, rotate, shear, distort and transform images.
-License: https://imagemagick.org/script/license.php
-Url: https://imagemagick.org/
-Source0: https://imagemagick.org/download/%{name}/%{name}-%{VERSION}-%{Patchlevel}.tar.xz
+Summary: Use ImageMagick to create, edit, convert, and display raster image files.
-BuildRequires: pkgconfig(bzip2), pkgconfig(freetype2), pkgconfig(libjpeg), pkgconfig(libpng)
-BuildRequires: pkgconfig(libtiff-4), giflib-devel, pkgconfig(zlib), perl-devel >= 5.8.1
+License: ImageMagick
+URL: https://imagemagick.org/
+Source0: https://imagemagick.org/archive/releases/%{name}-%{Version}-%{Patchlevel}.tar.xz
+
+BuildRequires: pkgconfig(bzip2)
+BuildRequires: pkgconfig(freetype2)
+BuildRequires: pkgconfig(libjpeg)
+BuildRequires: pkgconfig(libpng)
+BuildRequires: pkgconfig(libtiff-4)
+BuildRequires: giflib-devel
+BuildRequires: pkgconfig(zlib)
+%if %{with perl}
+BuildRequires: perl-devel >= 5.8.1
BuildRequires: perl-generators
-BuildRequires: libgs-devel, ghostscript-x11
+%endif
+%if 0%{?rhel} && 0%{?rhel} < 8
+BuildRequires: ghostscript-devel
+%else
+BuildRequires: libgs-devel
+%endif
BuildRequires: pkgconfig(ddjvuapi)
-BuildRequires: pkgconfig(libwmf), pkgconfig(jasper), libtool-ltdl-devel
-BuildRequires: pkgconfig(x11), pkgconfig(xext), pkgconfig(xt)
-BuildRequires: pkgconfig(lcms2), pkgconfig(libxml-2.0), pkgconfig(librsvg-2.0)
+BuildRequires: pkgconfig(libwmf)
+BuildRequires: pkgconfig(jasper)
+BuildRequires: libtool-ltdl-devel
+BuildRequires: pkgconfig(x11)
+BuildRequires: pkgconfig(xext)
+BuildRequires: pkgconfig(xt)
+BuildRequires: pkgconfig(lcms2)
+BuildRequires: pkgconfig(libxml-2.0)
+BuildRequires: pkgconfig(librsvg-2.0)
+%if 0%{?rhel} && 0%{?rhel} < 9
+BuildRequires: pkgconfig(IlmBase), pkgconfig(OpenEXR) < 2.5.6
+%else
BuildRequires: pkgconfig(OpenEXR)
-BuildRequires: pkgconfig(fftw3), pkgconfig(libwebp)
+%endif
+BuildRequires: pkgconfig(fftw3)
+BuildRequires: pkgconfig(libwebp)
BuildRequires: jbigkit-devel
+BuildRequires: pkgconfig(libjxl)
BuildRequires: pkgconfig(libopenjp2) >= 2.1.0
BuildRequires: pkgconfig(libcgraph) >= 2.9.0
BuildRequires: pkgconfig(raqm)
+%if 0%{?fedora} || 0%{?rhel} > 8
BuildRequires: pkgconfig(lqr-1)
+%endif
BuildRequires: pkgconfig(libraw) >= 0.14.8
BuildRequires: pkgconfig(libzstd)
+BuildRequires: pkgconfig(libzip) >= 1.0.0
+BuildRequires: pkgconfig(pango) >= 1.28.1
+BuildRequires: pkgconfig(pangocairo) >= 1.28.1
+BuildRequires: urw-base35-fonts-devel
BuildRequires: autoconf automake gcc gcc-c++
-
-Requires: %{name}-libs%{?_isa} = %{version}-%{release}
+BuildRequires: make
+BuildRequires: gnupg2
+# for doc
+BuildRequires: doxygen
+
+Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
+# allow smooth upgrade for 3rd party repository
+# providing latest version/soname as ImageMagick7
+Obsoletes: %{name}7 < %{epoch}:%{version}-%{release}
+Provides: %{name}7 = %{epoch}:%{version}-%{release}
%description
-ImageMagick® is a software suite to create, edit, compose, or convert bitmap images. It can read and write images in a variety of formats (over 200) including PNG, JPEG, JPEG-2000, GIF, TIFF, DPX, EXR, WebP, Postscript, PDF, and SVG. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.
-
-The functionality of ImageMagick is typically utilized from the command-line or you can use the features from programs written in your favorite language. Choose from these interfaces: G2F (Ada), MagickCore (C), MagickWand (C), ChMagick (Ch), Magick++ (C++), JMagick (Java), L-Magick (Lisp), Lua (LuaJIT), NMagick (Neko/haXe), Magick.NET (.NET), PascalMagick (Pascal), PerlMagick (Perl), MagickWand for PHP (PHP), IMagick (PHP), PythonMagick (Python), RMagick (Ruby), or TclMagick (Tcl/TK). With a language interface, use ImageMagick to modify or create images dynamically and automagically.
-
-ImageMagick utilizes multiple computational threads to increase performance and can read, process, or write mega-, giga-, or tera-pixel image sizes.
-
-ImageMagick is free software delivered as a ready-to-run binary distribution or as source code that you may use, copy, modify, and distribute in both open and proprietary applications. It is distributed under the Apache 2.0 license.
-
-The ImageMagick development process ensures a stable API and ABI. Before each ImageMagick release, we perform a comprehensive security assessment that includes memory error and thread data race detection to prevent security vulnerabilities.
+ImageMagick is a free and open-source software suite used for creating,
+editing, converting, and displaying raster image files. It can read and write
+over 200 different image file formats. ImageMagick is a powerful tool for
+working with images on the command line or through programming interfaces. It
+supports a wide range of image processing operations, including resizing,
+cropping, rotating, and various color manipulations.
+
+ImageMagick is widely used in web development, graphic design, and other
+areas where image processing is required. It provides a versatile and
+efficient way to handle a variety of image-related tasks. Additionally,
+ImageMagick has bindings for various programming languages, making it easy
+to integrate into software applications
+and workflows.
-The authoritative ImageMagick web site is https://imagemagick.org. The authoritative source code repository is http://git.imagemagick.org/repos/ImageMagick. We maintain a source code mirror at GitHub.
%package devel
-Summary: Library links and header files for ImageMagick application development
-Requires: %{name}%{?_isa} = %{version}-%{release}
-Requires: %{name}-libs%{?_isa} = %{version}-%{release}
+Summary: Library links and header files for ImageMagick app development
+Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
+Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
+Obsoletes: %{name}7-devel < %{epoch}:%{version}-%{release}
+Provides: %{name}7-devel = %{epoch}:%{version}-%{release}
%description devel
-ImageMagick-devel contains the library links and header files you'll
-need to develop ImageMagick applications. ImageMagick is an image
-manipulation program.
-
-If you want to create applications that will use ImageMagick code or
-APIs, you need to install ImageMagick-devel as well as ImageMagick.
-You do not need to install it if you just want to use ImageMagick,
-however.
+ImageMagick-devel contains the library links and header files you'll need to
+develop ImageMagick applications. ImageMagick is an image manipulation program.
+
+If you want to create applications that will use ImageMagick code or APIs,
+you need to install ImageMagick-devel as well as ImageMagick. You do not
+need to install it if you just want to use ImageMagick, however.
+
%package libs
Summary: ImageMagick libraries to link with
+Obsoletes: %{name}7-libs < %{epoch}:%{version}-%{release}
+Provides: %{name}7-libs = %{epoch}:%{version}-%{release}
+# These may be used for some functions
+Recommends: urw-base35-fonts
+# default font is OpenSans-Regular
+Recommends: open-sans-fonts
%description libs
This packages contains a shared libraries to use within other applications.
+
%package djvu
Summary: DjVu plugin for ImageMagick
-Requires: %{name}-libs%{?_isa} = %{version}-%{release}
+Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
+Obsoletes: %{name}7-djvu < %{epoch}:%{version}-%{release}
+Provides: %{name}7-djvu = %{epoch}:%{version}-%{release}
%description djvu
This packages contains a plugin for ImageMagick which makes it possible to
save and load DjvU files from ImageMagick and libMagickCore using applications.
+%if %{with libheif}
+%package heic
+Summary: HEIC plugin for ImageMagick
+BuildRequires: pkgconfig(libheif) >= 1.4.0
+%if 0%{?rhel} == 7
+# ensure we use our on EL-7
+Requires: libheif%{?_isa} >= 1.4.0
+%endif
+Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
+
+%description heic
+This packages contains a plugin for ImageMagick which makes it possible to
+save and load HEIC files from ImageMagick and libMagickCore using applications.
+%endif
+
+
%package doc
-Summary: ImageMagick HTML documentation
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/Magick++/lib/Color.cpp
^
|
@@ -239,7 +239,12 @@
setPixelType(target_color);
}
else
- _isValid = false;
+ {
+ _isValid = false;
+ _pixelOwn = false;
+ delete _pixel;
+ _pixel = nullptr;
+ }
ThrowPPException(false);
return(*this);
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/MagickCore/artifact.c
^
|
@@ -17,7 +17,7 @@
% March 2000 %
% %
% %
-% Copyright @ 2000 ImageMagick Studio LLC, a non-profit organization %
+% Copyright @ 1999 ImageMagick Studio LLC, a non-profit organization %
% dedicated to making software imaging solutions freely available. %
% %
% You may not use this file except in compliance with the License. You may %
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/MagickCore/cache-private.h
^
|
@@ -236,12 +236,12 @@
} CacheInfo;
static inline MagickBooleanType IsValidPixelOffset(const ssize_t x,
- const size_t a)
+ const size_t extent)
{
- if (a == 0)
+ if (extent == 0)
return(MagickTrue);
- if ((x >= (MAGICK_SSIZE_MAX/MaxPixelChannels/(ssize_t) a)) ||
- (x <= (MAGICK_SSIZE_MIN/MaxPixelChannels/(ssize_t) a)))
+ if ((x >= (MAGICK_SSIZE_MAX/(ssize_t) extent)) ||
+ (x <= (MAGICK_SSIZE_MIN/(ssize_t) extent)))
return(MagickFalse);
return(MagickTrue);
}
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/MagickCore/cache-view.c
^
|
@@ -23,7 +23,7 @@
% February 2000 %
% %
% %
-% Copyright @ 2000 ImageMagick Studio LLC, a non-profit organization %
+% Copyright @ 1999 ImageMagick Studio LLC, a non-profit organization %
% dedicated to making software imaging solutions freely available. %
% %
% You may not use this file except in compliance with the License. You may %
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/MagickCore/distort.c
^
|
@@ -2378,7 +2378,7 @@
" jj=jj%s(%lf*rr*rr*rr %+lf*rr*rr %+lf*rr %+lf);\n",
method == BarrelDistortion ? "*" : "/",coeff[4],coeff[5],coeff[6],
coeff[7]);
- (void) FormatLocaleFile(stderr," v.p{fx*ii+xc,fy*jj+yc}' \\\n");
+ (void) FormatLocaleFile(stderr," p{ii+xc,jj+yc}' \\\n");
}
default:
break;
@@ -2863,16 +2863,21 @@
}
else {
/* resample the source image to find its correct color */
- (void) ResamplePixelColor(resample_filter[id],s.x,s.y,&pixel,
+ status=ResamplePixelColor(resample_filter[id],s.x,s.y,&pixel,
exception);
- /* if validity between 0.0 and 1.0 mix result with invalid pixel */
- if ( validity < 1.0 ) {
- /* Do a blend of sample color and invalid pixel */
- /* should this be a 'Blend', or an 'Over' compose */
- CompositePixelInfoBlend(&pixel,validity,&invalid,(1.0-validity),
- &pixel);
- }
- SetPixelViaPixelInfo(distort_image,&pixel,q);
+ if (status == MagickFalse)
+ SetPixelViaPixelInfo(distort_image,&invalid,q);
+ else
+ {
+ /* if validity between 0.0 & 1.0 mix result with invalid pixel */
+ if ( validity < 1.0 ) {
+ /* Do a blend of sample color and invalid pixel */
+ /* should this be a 'Blend', or an 'Over' compose */
+ CompositePixelInfoBlend(&pixel,validity,&invalid,(1.0-validity),
+ &pixel);
+ }
+ SetPixelViaPixelInfo(distort_image,&pixel,q);
+ }
}
q+=GetPixelChannels(distort_image);
}
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/MagickCore/draw.c
^
|
@@ -2492,6 +2492,7 @@
*token;
const char
+ *p,
*q;
double
@@ -2523,13 +2524,6 @@
PrimitiveType
primitive_type;
- const char
- *p;
-
- ssize_t
- i,
- x;
-
SegmentInfo
bounds;
@@ -2543,10 +2537,12 @@
ssize_t
defsDepth,
+ i,
j,
k,
n,
- symbolDepth;
+ symbolDepth,
+ x;
StopInfo
*stops;
@@ -2743,7 +2739,13 @@
status=MagickFalse;
break;
}
- if (LocaleCompare(token,graphic_context[n]->id) == 0)
+ /*
+ Identify recursion.
+ */
+ for (i=0; i < n; i++)
+ if (LocaleCompare(token,graphic_context[i]->id) == 0)
+ break;
+ if (i < n)
break;
mvg_class=(const char *) GetValueFromSplayTree(macros,token);
if ((graphic_context[n]->render != MagickFalse) &&
@@ -3513,15 +3515,15 @@
(void) GetNextToken(q,&q,extent,token);
if (*token == ',')
(void) GetNextToken(q,&q,extent,token);
- region.width=(size_t) CastDoubleToLong(floor(GetDrawValue(
+ region.width=CastDoubleToUnsigned(floor(GetDrawValue(
token,&next_token)+0.5));
if (token == next_token)
ThrowPointExpectedException(token,exception);
(void) GetNextToken(q,&q,extent,token);
if (*token == ',')
(void) GetNextToken(q,&q,extent,token);
- region.height=CastDoubleToUnsigned(GetDrawValue(token,&next_token)+
- 0.5);
+ region.height=CastDoubleToUnsigned(GetDrawValue(token,
+ &next_token)+0.5);
if (token == next_token)
ThrowPointExpectedException(token,exception);
for (p=q; *q != '\0'; )
@@ -3943,21 +3945,21 @@
(void) GetNextToken(q,&q,extent,token);
if (*token == ',')
(void) GetNextToken(q,&q,extent,token);
- graphic_context[n]->viewbox.y=CastDoubleToLong(ceil(
- GetDrawValue(token,&next_token)-0.5));
+ graphic_context[n]->viewbox.y=CastDoubleToLong(
+ ceil(GetDrawValue(token,&next_token)-0.5));
if (token == next_token)
ThrowPointExpectedException(token,exception);
(void) GetNextToken(q,&q,extent,token);
if (*token == ',')
(void) GetNextToken(q,&q,extent,token);
- graphic_context[n]->viewbox.width=(size_t) CastDoubleToLong(
+ graphic_context[n]->viewbox.width=CastDoubleToUnsigned(
floor(GetDrawValue(token,&next_token)+0.5));
if (token == next_token)
ThrowPointExpectedException(token,exception);
(void) GetNextToken(q,&q,extent,token);
if (*token == ',')
(void) GetNextToken(q,&q,extent,token);
- graphic_context[n]->viewbox.height=(size_t) CastDoubleToLong(
+ graphic_context[n]->viewbox.height=(size_t) CastDoubleToUnsigned(
floor(GetDrawValue(token,&next_token)+0.5));
if (token == next_token)
ThrowPointExpectedException(token,exception);
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/MagickCore/geometry.c
^
|
@@ -487,6 +487,8 @@
int
status;
+ if (Pagesizes[i].extent == 0)
+ break; /* sentinel */
status=LocaleNCompare(Pagesizes[i].name,page_geometry,Pagesizes[i].extent);
if (status == 0)
{
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/MagickCore/identify.c
^
|
@@ -477,7 +477,6 @@
char
buffer[MagickPathExtent],
color[MagickPathExtent],
- iso8601[sizeof("9999-99-99T99:99:99Z")],
key[MagickPathExtent];
ChannelFeatures
@@ -535,9 +534,6 @@
struct stat
properties;
- struct tm
- timestamp;
-
assert(image != (Image *) NULL);
assert(image->signature == MagickCoreSignature);
if (IsEventLogging() != MagickFalse)
@@ -1670,15 +1666,29 @@
image->rows/elapsed_time+0.5),MagickFalse,"P",MagickPathExtent,buffer);
(void) FormatLocaleFile(file," Pixels per second: %s\n",buffer);
}
- (void) GetMagickUTCTime(&image->timestamp,×tamp);
- (void) strftime(iso8601,sizeof(iso8601),"%FT%TZ",×tamp);
- expired=' ';
- if (IsImageTTLExpired(image) != MagickFalse)
- expired='*';
- (void) FormatLocaleFile(file," Time-to-live: %g:%g:%g:%g%c %s\n",
- (double) (image->ttl/(3600*24)),(double) ((image->ttl % (24*3600))/3600),
- (double) ((image->ttl % 3600)/60),(double) ((image->ttl % 3600) % 60),
- expired,iso8601);
+ if (image->ttl != (time_t) 0)
+ {
+ char
+ iso8601[sizeof("9999-99-99T99:99:99Z")];
+
+ int
+ seconds;
+
+ struct tm
+ timestamp;
+
+ (void) GetMagickUTCTime(&image->ttl,×tamp);
+ (void) strftime(iso8601,sizeof(iso8601),"%FT%TZ",×tamp);
+ seconds=MagickMax((int)(image->ttl-GetMagickTime()),0);
+ expired=' ';
+ if (seconds == 0)
+ expired='*';
+ (void) FormatLocaleFile(file," Time-to-live: %g:%02g:%02g:%02g%c %s\n",
+ ceil((double) (seconds/(3600*24))),
+ ceil((double) ((seconds % (24*3600))/3600)),
+ ceil((double) ((seconds % 3600)/60)),
+ ceil((double) ((seconds % 3600) % 60)),expired,iso8601);
+ }
(void) FormatLocaleFile(file," User time: %0.3fu\n",user_time);
(void) FormatLocaleFile(file," Elapsed time: %lu:%02lu.%03lu\n",
(unsigned long) (elapsed_time/60.0),(unsigned long) ceil(fmod(elapsed_time,
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/MagickCore/image.c
^
|
@@ -140,6 +140,9 @@
Image
*image;
+ int
+ time_limit;
+
MagickStatusType
flags;
@@ -184,7 +187,9 @@
image->channel_map=AcquirePixelChannelMap();
image->blob=CloneBlobInfo((BlobInfo *) NULL);
image->timestamp=GetMagickTime();
- image->ttl=(time_t) GetMagickResourceLimit(TimeResource);
+ time_limit=(int) GetMagickResourceLimit(TimeResource);
+ if (time_limit > 0)
+ image->ttl=image->timestamp+time_limit;
image->debug=(GetLogEventMask() & (ImageEvent | TransformEvent | CoderEvent))
!= 0 ? MagickTrue : MagickFalse;
image->reference_count=1;
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/MagickCore/pixel.c
^
|
@@ -4432,9 +4432,12 @@
MagickExport MagickBooleanType InterpolatePixelChannel(
const Image *magick_restrict image,const CacheView_ *image_view,
- const PixelChannel channel,const PixelInterpolateMethod method,
- const double x,const double y,double *pixel,ExceptionInfo *exception)
+ const PixelChannel channel,const PixelInterpolateMethod method,const double x,
+ const double y,double *pixel,ExceptionInfo *exception)
{
+ const Quantum
+ *magick_restrict p;
+
double
alpha[16],
gamma,
@@ -4449,13 +4452,8 @@
PixelTrait
traits;
- const Quantum
- *magick_restrict p;
-
- ssize_t
- i;
-
ssize_t
+ i,
x_offset,
y_offset;
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/MagickCore/profile.c
^
|
@@ -1940,8 +1940,9 @@
return(MagickTrue);
#else
(void) profile;
- (void) ThrowMagickException(exception,GetMagickModule(),MissingDelegateError,
- "DelegateLibrarySupportNotBuiltIn","`%s' (XML)",image->filename);
+ (void) ThrowMagickException(exception,GetMagickModule(),
+ MissingDelegateWarning,"DelegateLibrarySupportNotBuiltIn","`%s' (XML)",
+ image->filename);
return(MagickFalse);
#endif
}
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/MagickCore/property.c
^
|
@@ -859,14 +859,15 @@
\
for ( ; component < components; component++) \
{ \
- extent=(size_t) ((ssize_t) extent+FormatLocaleString(buffer+extent, \
- MagickPathExtent-extent,format", ",(arg1),(arg2),(arg3),(arg4),(arg5), \
- (arg6))); \
+ if (component != 0) \
+ extent+=(size_t) FormatLocaleString(buffer+extent,MagickPathExtent- \
+ extent,", "); \
+ extent+=(size_t) FormatLocaleString(buffer+extent,MagickPathExtent- \
+ extent,format,(arg1),(arg2),(arg3),(arg4),(arg5),(arg6)); \
if (extent >= (MagickPathExtent-1)) \
extent=MagickPathExtent-1; \
} \
- if (extent > 1) \
- buffer[extent-2]='\0'; \
+ buffer[extent]='\0'; \
value=AcquireString(buffer); \
}
@@ -880,13 +881,15 @@
\
for ( ; component < components; component++) \
{ \
- extent=(size_t) ((ssize_t) extent-FormatLocaleString(buffer+extent, \
- MagickPathExtent-extent,format", ",arg)); \
+ if (component != 0) \
+ extent+=(size_t) FormatLocaleString(buffer+extent,MagickPathExtent- \
+ extent,", "); \
+ extent+=(size_t) FormatLocaleString(buffer+extent,MagickPathExtent- \
+ extent,format,arg); \
if (extent >= (MagickPathExtent-1)) \
extent=MagickPathExtent-1; \
} \
- if (extent > 1) \
- buffer[extent-2]='\0'; \
+ buffer[extent]='\0'; \
value=AcquireString(buffer); \
}
@@ -900,13 +903,15 @@
\
for ( ; component < components; component++) \
{ \
- extent=(size_t) ((ssize_t) extent+FormatLocaleString(buffer+extent, \
- MagickPathExtent-extent,format", ",(arg1),(arg2))); \
+ if (component != 0) \
+ extent+=(size_t) FormatLocaleString(buffer+extent,MagickPathExtent-\
+ extent,", "); \
+ extent+=(size_t) FormatLocaleString(buffer+extent,MagickPathExtent- \
+ extent,format,(arg1),(arg2)); \
if (extent >= (MagickPathExtent-1)) \
extent=MagickPathExtent-1; \
} \
- if (extent > 1) \
- buffer[extent-2]='\0'; \
+ buffer[extent]='\0'; \
value=AcquireString(buffer); \
}
@@ -1479,7 +1484,7 @@
if ((all != 0) || (tag == (size_t) tag_value))
{
char
- buffer[MagickPathExtent],
+ buffer[6*sizeof(double)+MagickPathExtent],
*value;
if ((p < exif) || (p > (exif+length-tag_bytes[format])))
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/MagickCore/quantize.c
^
|
@@ -2413,12 +2413,12 @@
KmeansInfo
**kmeans_info;
- ssize_t
- i;
-
size_t
number_threads;
+ ssize_t
+ i;
+
number_threads=(size_t) GetMagickResourceLimit(ThreadResource);
kmeans_info=(KmeansInfo **) AcquireQuantumMemory(number_threads,
sizeof(*kmeans_info));
@@ -2851,29 +2851,27 @@
return(ceil(x));
}
+static inline Quantum PosterizePixel(const Quantum pixel,const size_t levels)
+{
+ double posterize_pixel = QuantumRange*MagickRound(QuantumScale*(double)
+ pixel*(levels-1.0))/MagickMax(levels-1.0,1.0);
+ return(ClampToQuantum((MagickRealType) posterize_pixel));
+}
+
MagickExport MagickBooleanType PosterizeImage(Image *image,const size_t levels,
const DitherMethod dither_method,ExceptionInfo *exception)
{
#define PosterizeImageTag "Posterize/Image"
-#define PosterizePixel(pixel) ClampToQuantum((MagickRealType) QuantumRange*( \
- MagickRound(QuantumScale*(double) pixel*(levels-1)))/ \
- MagickMax((ssize_t) levels-1,1))
CacheView
*image_view;
MagickBooleanType
- status;
+ status = MagickTrue;
MagickOffsetType
progress;
- QuantizeInfo
- *quantize_info;
-
- ssize_t
- i;
-
ssize_t
y;
@@ -2883,95 +2881,178 @@
assert(exception->signature == MagickCoreSignature);
if (IsEventLogging() != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
- if (image->storage_class == PseudoClass)
-#if defined(MAGICKCORE_OPENMP_SUPPORT)
- #pragma omp parallel for schedule(static) shared(progress,status) \
- magick_number_threads(image,image,image->colors,1)
-#endif
- for (i=0; i < (ssize_t) image->colors; i++)
+
+ if (dither_method != NoDitherMethod && levels > 1) {
+ Image
+ *map_image;
+
+ ssize_t
+ i;
+
+ size_t
+ channels = 0,
+ numPoolCols;
+
+ for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
{
- /*
- Posterize colormap.
- */
- if ((GetPixelRedTraits(image) & UpdatePixelTrait) != 0)
- image->colormap[i].red=(double)
- PosterizePixel(image->colormap[i].red);
- if ((GetPixelGreenTraits(image) & UpdatePixelTrait) != 0)
- image->colormap[i].green=(double)
- PosterizePixel(image->colormap[i].green);
- if ((GetPixelBlueTraits(image) & UpdatePixelTrait) != 0)
- image->colormap[i].blue=(double)
- PosterizePixel(image->colormap[i].blue);
- if ((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0)
- image->colormap[i].alpha=(double)
- PosterizePixel(image->colormap[i].alpha);
+ PixelChannel channel = GetPixelChannelChannel(image,i);
+ PixelTrait traits = GetPixelChannelTraits(image,channel);
+ if ((traits & UpdatePixelTrait) != 0)
+ channels++;
}
- /*
- Posterize image.
- */
- status=MagickTrue;
- progress=0;
- image_view=AcquireAuthenticCacheView(image,exception);
-#if defined(MAGICKCORE_OPENMP_SUPPORT)
- #pragma omp parallel for schedule(static) shared(progress,status) \
- magick_number_threads(image,image,image->rows,1)
-#endif
- for (y=0; y < (ssize_t) image->rows; y++)
- {
- Quantum
- *magick_restrict q;
+ numPoolCols = pow (levels, channels);
- ssize_t
- x;
+ map_image = CloneImage(image, numPoolCols, 1, MagickTrue, exception);
+ if (map_image == (Image *) NULL)
+ return MagickFalse;
- if (status == MagickFalse)
- continue;
- q=GetCacheViewAuthenticPixels(image_view,0,y,image->columns,1,exception);
- if (q == (Quantum *) NULL)
- {
- status=MagickFalse;
- continue;
+ if (SetImageStorageClass (map_image, DirectClass, exception) == MagickFalse)
+ return MagickFalse;
+
+ { /* Populate the map image */
+ CacheView
+ *map_image_view;
+
+ Quantum
+ *magick_restrict q;
+
+ MagickRealType
+ valmult = QuantumRange / (levels - 1.0);
+
+ ssize_t
+ x, c;
+
+ map_image_view=AcquireAuthenticCacheView (map_image,exception);
+
+ q = GetCacheViewAuthenticPixels (map_image_view,0,0,numPoolCols,1,
+ exception);
+ if (q == (const Quantum *) NULL)
+ return MagickFalse;
+
+ for (x=0; x < (ssize_t) numPoolCols; x++) {
+ size_t rem = x;
+ for (c=0; c < (ssize_t) GetPixelChannels(image); c++) {
+ PixelChannel channel = GetPixelChannelChannel (image, c);
+ PixelTrait traits = GetPixelChannelTraits (image, channel);
+ if ((traits & UpdatePixelTrait) != 0) {
+ size_t val = rem % levels;
+ SetPixelChannel (map_image, channel, val * valmult, q);
+ rem = (rem - val) / levels;
+ }
+ }
+ q += GetPixelChannels (map_image);
}
- for (x=0; x < (ssize_t) image->columns; x++)
- {
- if ((GetPixelRedTraits(image) & UpdatePixelTrait) != 0)
- SetPixelRed(image,PosterizePixel(GetPixelRed(image,q)),q);
- if ((GetPixelGreenTraits(image) & UpdatePixelTrait) != 0)
- SetPixelGreen(image,PosterizePixel(GetPixelGreen(image,q)),q);
- if ((GetPixelBlueTraits(image) & UpdatePixelTrait) != 0)
- SetPixelBlue(image,PosterizePixel(GetPixelBlue(image,q)),q);
- if (((GetPixelBlackTraits(image) & UpdatePixelTrait) != 0) &&
- (image->colorspace == CMYKColorspace))
- SetPixelBlack(image,PosterizePixel(GetPixelBlack(image,q)),q);
- if (((GetPixelAlphaTraits(image) & UpdatePixelTrait) != 0) &&
- (image->alpha_trait != UndefinedPixelTrait))
- SetPixelAlpha(image,PosterizePixel(GetPixelAlpha(image,q)),q);
- q+=GetPixelChannels(image);
+ if (SyncCacheViewAuthenticPixels (map_image_view,exception) == MagickFalse)
+ return MagickFalse;
+ map_image_view = DestroyCacheView (map_image_view);
}
- if (SyncCacheViewAuthenticPixels(image_view,exception) == MagickFalse)
- status=MagickFalse;
- if (image->progress_monitor != (MagickProgressMonitor) NULL)
+
+ { /* Remap to the map_image. */
+ ImageInfo *ii = AcquireImageInfo ();
+ QuantizeInfo *quantize_info = AcquireQuantizeInfo (ii);
+ quantize_info->dither_method = dither_method;
+ (void) RemapImage (quantize_info, image, map_image, exception);
+ quantize_info=DestroyQuantizeInfo(quantize_info);
+ }
+ map_image = DestroyImage (map_image);
+
+ } else {
+ /* No dither. */
+ if (image->storage_class == PseudoClass)
{
- MagickBooleanType
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/MagickCore/registry.c
^
|
@@ -17,7 +17,7 @@
% March 2000 %
% %
% %
-% Copyright @ 2000 ImageMagick Studio LLC, a non-profit organization %
+% Copyright @ 1999 ImageMagick Studio LLC, a non-profit organization %
% dedicated to making software imaging solutions freely available. %
% %
% You may not use this file except in compliance with the License. You may %
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/MagickCore/resample.c
^
|
@@ -18,7 +18,7 @@
% August 2007 %
% %
% %
-% Copyright @ 2007 ImageMagick Studio LLC, a non-profit organization %
+% Copyright @ 1999 ImageMagick Studio LLC, a non-profit organization %
% dedicated to making software imaging solutions freely available. %
% %
% You may not use this file except in compliance with the License. You may %
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/MagickCore/timer-private.h
^
|
@@ -61,10 +61,9 @@
static inline MagickBooleanType IsImageTTLExpired(const Image* image)
{
- if ((image->ttl != (time_t) 0) &&
- (image->timestamp+image->ttl) < GetMagickTime())
- return(MagickTrue);
- return(MagickFalse);
+ if (image->ttl == (time_t) 0)
+ return(MagickFalse);
+ return(image->ttl < GetMagickTime() ? MagickTrue : MagickFalse);
}
static inline time_t ParseMagickTimeToLive(const char *time_to_live)
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/PerlMagick/Magick.xs
^
|
@@ -1993,6 +1993,12 @@
}
break;
}
+ if (LocaleNCompare(attribute,"registry:",9) == 0)
+ {
+ (void) SetImageRegistry(StringRegistryType,attribute+9,SvPV(sval,na),
+ exception);
+ break;
+ }
if (LocaleCompare(attribute,"render") == 0)
{
sp=SvPOK(sval) ? ParseCommandOption(MagickIntentOptions,MagickFalse,
@@ -2158,13 +2164,6 @@
(void) SetMagickResourceLimit(TimeResource,limit);
break;
}
- if (LocaleCompare(attribute,"title") == 0)
- {
- for ( ; image; image=image->next)
- (void) CopyMagickString(image->magick_filename,SvPV(sval,na),
- MaxTextExtent);
- break;
- }
if (LocaleCompare(attribute,"transparent-color") == 0)
{
(void) QueryColorCompliance(SvPV(sval,na),AllCompliance,&target_color,
@@ -5633,6 +5632,18 @@
PUSHs(s ? sv_2mortal(s) : &sv_undef);
continue;
}
+ if (LocaleNCompare(attribute,"registry:",9) == 0)
+ {
+ const char
+ *value;
+
+ value=(const char *) GetImageRegistry(StringRegistryType,
+ attribute+9,exception);
+ if (value != (const char *) NULL)
+ s=newSVpv(value,0);
+ PUSHs(s ? sv_2mortal(s) : &sv_undef);
+ continue;
+ }
if (LocaleCompare(attribute,"rows") == 0)
{
if (image != (Image *) NULL)
@@ -5717,13 +5728,6 @@
PUSHs(s ? sv_2mortal(s) : &sv_undef);
continue;
}
- if (LocaleCompare(attribute,"title") == 0)
- {
- if (image != (Image *) NULL)
- s=newSVpv(image->magick_filename,0);
- PUSHs(s ? sv_2mortal(s) : &sv_undef);
- continue;
- }
if (LocaleCompare(attribute,"total-ink-density") == 0)
{
s=newSViv(MAGICKCORE_QUANTUM_DEPTH);
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/PerlMagick/quantum/quantum.xs.in
^
|
@@ -1990,6 +1990,12 @@
}
break;
}
+ if (LocaleNCompare(attribute,"registry:",9) == 0)
+ {
+ (void) SetImageRegistry(StringRegistryType,attribute+9,SvPV(sval,na),
+ exception);
+ break;
+ }
if (LocaleCompare(attribute,"render") == 0)
{
sp=SvPOK(sval) ? ParseCommandOption(MagickIntentOptions,MagickFalse,
@@ -5634,6 +5640,18 @@
PUSHs(s ? sv_2mortal(s) : &sv_undef);
continue;
}
+ if (LocaleNCompare(attribute,"registry:",9) == 0)
+ {
+ const char
+ *value;
+
+ value=(const char *) GetImageRegistry(StringRegistryType,
+ attribute+9,exception);
+ if (value != (const char *) NULL)
+ s=newSVpv(value,0);
+ PUSHs(s ? sv_2mortal(s) : &sv_undef);
+ continue;
+ }
if (LocaleCompare(attribute,"rows") == 0)
{
if (image != (Image *) NULL)
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/coders/dds.c
^
|
@@ -1417,7 +1417,7 @@
status;
/*
- Only skip mipmaps for textures and cube maps
+ Only read mipmaps for textures and cube maps
*/
if (EOFBlob(image) != MagickFalse)
{
@@ -1567,7 +1567,7 @@
/*
Skip the mipmap images for compressed (DXTn) dds files
*/
-static MagickBooleanType SkipDXTMipmaps(Image *image,const DDSInfo *dds_info,
+static MagickBooleanType SkipMipmaps(Image *image,const DDSInfo *dds_info,
int texel_size,ExceptionInfo *exception)
{
/*
@@ -1605,10 +1605,10 @@
texel_size);
if (SeekBlob(image,offset,SEEK_CUR) < 0)
break;
- w=DIV2(w);
- h=DIV2(h);
if ((w == 1) && (h == 1))
break;
+ w=DIV2(w);
+ h=DIV2(h);
}
}
return(MagickTrue);
@@ -1624,7 +1624,7 @@
if (read_mipmaps != MagickFalse)
return(ReadMipmaps(image_info,image,dds_info,ReadDXT1Pixels,exception));
else
- return(SkipDXTMipmaps(image,dds_info,8,exception));
+ return(SkipMipmaps(image,dds_info,8,exception));
}
static MagickBooleanType ReadDXT3Pixels(Image *image,
@@ -1726,7 +1726,7 @@
if (read_mipmaps != MagickFalse)
return(ReadMipmaps(image_info,image,dds_info,ReadDXT3Pixels,exception));
else
- return(SkipDXTMipmaps(image,dds_info,16,exception));
+ return(SkipMipmaps(image,dds_info,16,exception));
}
static MagickBooleanType ReadDXT5Pixels(Image *image,
@@ -1841,7 +1841,7 @@
if (read_mipmaps != MagickFalse)
return(ReadMipmaps(image_info,image,dds_info,ReadDXT5Pixels,exception));
else
- return(SkipDXTMipmaps(image,dds_info,16,exception));
+ return(SkipMipmaps(image,dds_info,16,exception));
}
static unsigned char GetBit(const unsigned char *block,size_t *start_bit)
@@ -2148,7 +2148,7 @@
if (read_mipmaps != MagickFalse)
return(ReadMipmaps(image_info,image,dds_info,ReadBC5Pixels,exception));
else
- return(SkipDXTMipmaps(image,dds_info,16,exception));
+ return(SkipMipmaps(image,dds_info,16,exception));
}
static MagickBooleanType ReadBC7Pixels(Image *image,
@@ -2365,7 +2365,7 @@
if (read_mipmaps != MagickFalse)
return(ReadMipmaps(image_info,image,dds_info,ReadBC7Pixels,exception));
else
- return(SkipDXTMipmaps(image,dds_info,16,exception));
+ return(SkipMipmaps(image,dds_info,16,exception));
}
static MagickBooleanType ReadUncompressedRGBPixels(Image *image,
@@ -2955,10 +2955,7 @@
image->endian=LSBEndian;
image->depth=8;
if (image_info->ping != MagickFalse)
- {
- (void) CloseBlob(image);
- return(GetFirstImageInList(image));
- }
+ continue;
status=SetImageExtent(image,image->columns,image->rows,exception);
if (status == MagickFalse)
return(DestroyImageList(image));
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/coders/heic.c
^
|
@@ -79,6 +79,10 @@
#else
#include <libheif/heif.h>
#endif
+
+#define HEIC_COMPUTE_NUMERIC_VERSION(major,minor,patch) \
+ ((major<<24) | (minor<<16) | (patch<<8) | 0)
+
#endif

#if defined(MAGICKCORE_HEIC_DELEGATE)
@@ -564,7 +568,7 @@
if (filetype_check == heif_filetype_no)
ThrowReaderException(CoderError,"ImageTypeNotSupported");
(void) CloseBlob(image);
-#if LIBHEIF_NUMERIC_VERSION >= 0x010b0000
+#if LIBHEIF_NUMERIC_VERSION >= HEIC_COMPUTE_NUMERIC_VERSION(1,11,0)
if (heif_has_compatible_brand(magic,sizeof(magic), "avif") == 1)
(void) CopyMagickString(image->magick,"AVIF",MagickPathExtent);
#endif
@@ -727,7 +731,7 @@
*entry;
#if defined(MAGICKCORE_HEIC_DELEGATE)
-#if LIBHEIF_NUMERIC_VERSION >= 0x010e0000
+#if LIBHEIF_NUMERIC_VERSION >= HEIC_COMPUTE_NUMERIC_VERSION(1,14,0)
heif_init((struct heif_init_params *) NULL);
#endif
#endif
@@ -759,7 +763,7 @@
entry->flags|=CoderDecoderSeekableStreamFlag;
entry->flags^=CoderBlobSupportFlag;
(void) RegisterMagickInfo(entry);
-#if LIBHEIF_NUMERIC_VERSION > 0x01060200
+#if LIBHEIF_NUMERIC_VERSION > HEIC_COMPUTE_NUMERIC_VERSION(1,6,2)
entry=AcquireMagickInfo("HEIC","AVIF","AV1 Image File Format");
#if defined(MAGICKCORE_HEIC_DELEGATE)
if (heif_have_decoder_for_format(heif_compression_AV1))
@@ -800,13 +804,13 @@
*/
ModuleExport void UnregisterHEICImage(void)
{
-#if LIBHEIF_NUMERIC_VERSION > 0x01060200
+#if LIBHEIF_NUMERIC_VERSION > HEIC_COMPUTE_NUMERIC_VERSION(1,6,2)
(void) UnregisterMagickInfo("AVIF");
#endif
(void) UnregisterMagickInfo("HEIC");
(void) UnregisterMagickInfo("HEIF");
#if defined(MAGICKCORE_HEIC_DELEGATE)
-#if LIBHEIF_NUMERIC_VERSION >= 0x010e0000
+#if LIBHEIF_NUMERIC_VERSION >= HEIC_COMPUTE_NUMERIC_VERSION(1,14,0)
heif_deinit();
#endif
#endif
@@ -1172,7 +1176,7 @@
Image *image,ExceptionInfo *exception)
{
MagickBooleanType
-#if LIBHEIF_NUMERIC_VERSION > 0x01060200
+#if LIBHEIF_NUMERIC_VERSION > HEIC_COMPUTE_NUMERIC_VERSION(1,6,2)
encode_avif,
#endif
status;
@@ -1206,7 +1210,7 @@
return(status);
scene=0;
heif_context=heif_context_alloc();
-#if LIBHEIF_NUMERIC_VERSION > 0x01060200
+#if LIBHEIF_NUMERIC_VERSION > HEIC_COMPUTE_NUMERIC_VERSION(1,6,2)
encode_avif=(LocaleCompare(image_info->magick,"AVIF") == 0) ? MagickTrue :
MagickFalse;
#endif
@@ -1230,7 +1234,7 @@
/*
Get encoder for the specified format.
*/
-#if LIBHEIF_NUMERIC_VERSION > 0x01060200
+#if LIBHEIF_NUMERIC_VERSION > HEIC_COMPUTE_NUMERIC_VERSION(1,6,2)
if (encode_avif != MagickFalse)
error=heif_context_get_encoder_for_format(heif_context,
heif_compression_AV1,&heif_encoder);
@@ -1305,7 +1309,7 @@
status=IsHEIFSuccess(image,&error,exception);
if (status == MagickFalse)
break;
-#if LIBHEIF_NUMERIC_VERSION > 0x01060200
+#if LIBHEIF_NUMERIC_VERSION > HEIC_COMPUTE_NUMERIC_VERSION(1,6,2)
if (encode_avif != MagickFalse)
{
const char
@@ -1330,7 +1334,7 @@
}
#endif
options=heif_encoding_options_alloc();
-#if LIBHEIF_NUMERIC_VERSION >= 0x010e0000
+#if LIBHEIF_NUMERIC_VERSION >= HEIC_COMPUTE_NUMERIC_VERSION(1,14,0)
if (image->orientation != UndefinedOrientation)
options->image_orientation=(enum heif_orientation) image->orientation;
#endif
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/coders/jxl.c
^
|
@@ -64,6 +64,7 @@
#include <jxl/decode.h>
#include <jxl/encode.h>
#include <jxl/thread_parallel_runner.h>
+#include <jxl/version.h>
#endif

/*
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/coders/miff.c
^
|
@@ -622,7 +622,7 @@
Get the keyword value.
*/
c=ReadBlobByte(image);
- while ((c != (int) '}') && (c != EOF))
+ while ((c != (int) '{') && (c != (int) '}') && (c != EOF))
{
if ((size_t) (p-options+1) >= length)
{
@@ -639,7 +639,7 @@
if (c == '\\')
{
c=ReadBlobByte(image);
- if (c == (int) '}')
+ if ((c == (int) '{') || (c == (int) '}'))
{
*p++=(char) c;
c=ReadBlobByte(image);
@@ -2408,19 +2408,20 @@
length=strlen(value);
for (i=0; i < (ssize_t) length; i++)
if ((isspace((int) ((unsigned char) value[i])) != 0) ||
- (value[i] == '}'))
+ (value[i] == '{') || (value[i] == '}'))
break;
if ((i == (ssize_t) length) && (i != 0))
(void) WriteBlob(image,length,(const unsigned char *) value);
else
{
(void) WriteBlobByte(image,'{');
- if (strchr(value,'}') == (char *) NULL)
+ if ((strchr(value,'{') == (char *) NULL) &&
+ (strchr(value,'}') == (char *) NULL))
(void) WriteBlob(image,length,(const unsigned char *) value);
else
for (i=0; i < (ssize_t) length; i++)
{
- if (value[i] == (int) '}')
+ if ((value[i] == (int) '{') || (value[i] == (int) '}'))
(void) WriteBlobByte(image,'\\');
(void) WriteBlobByte(image,(unsigned char) value[i]);
}
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/coders/mpc.c
^
|
@@ -307,7 +307,7 @@
Get the keyword value.
*/
c=ReadBlobByte(image);
- while ((c != (int) '}') && (c != EOF))
+ while ((c != (int) '{') && (c != (int) '}') && (c != EOF))
{
if ((size_t) (p-options+1) >= length)
{
@@ -324,7 +324,7 @@
if (c == '\\')
{
c=ReadBlobByte(image);
- if (c == (int) '}')
+ if ((c == (int) '{') || (c == (int) '}'))
{
*p++=(char) c;
c=ReadBlobByte(image);
@@ -1419,12 +1419,13 @@
else
{
(void) WriteBlobByte(image,'{');
- if (strchr(value,'}') == (char *) NULL)
+ if ((strchr(value,'{') == (char *) NULL) &&
+ (strchr(value,'}') == (char *) NULL))
(void) WriteBlob(image,length,(const unsigned char *) value);
else
for (i=0; i < (ssize_t) length; i++)
{
- if (value[i] == (int) '}')
+ if ((value[i] == (int) '{') || (value[i] == (int) '}'))
(void) WriteBlobByte(image,'\\');
(void) WriteBlobByte(image,(unsigned char) value[i]);
}
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/coders/psd.c
^
|
@@ -1618,6 +1618,9 @@
(void) FormatLocaleString(message,MagickPathExtent,"%.20g",(double)
layer_info->opacity);
(void) SetImageArtifact(layer_info->image,"psd:layer.opacity",message);
+ (void) FormatLocaleString(message,MagickPathExtent,"%.20g",(double)
+ layer_info->visible);
+ (void) SetImageArtifact(layer_info->image,"psd:layer.visible",message);
(void) SetImageProperty(layer_info->image,"label",(char *) layer_info->name,
exception);
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/coders/svg.c
^
|
@@ -1900,7 +1900,7 @@
(void) FormatLocaleFile(svg_info->file,"fill-opacity 1\n");
(void) FormatLocaleFile(svg_info->file,"stroke \"none\"\n");
(void) FormatLocaleFile(svg_info->file,"stroke-width 1\n");
- (void) FormatLocaleFile(svg_info->file,"stroke-opacity 1\n");
+ (void) FormatLocaleFile(svg_info->file,"stroke-opacity 0\n");
(void) FormatLocaleFile(svg_info->file,"fill-rule nonzero\n");
break;
}
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/coders/webp.c
^
|
@@ -576,9 +576,12 @@
blob_size=(size_t) GetBlobSize(image);
if (length > blob_size)
{
- if (length-blob_size != 12)
+ size_t
+ delta=length-blob_size;
+
+ if (delta != 12 && delta != (12 + 8))
ThrowWEBPException(CorruptImageError,"InsufficientImageDataInFile");
- length-=12;
+ length-=delta;
WriteWebPLSBWord(header+4,length-8);
}
stream=(unsigned char *) AcquireQuantumMemory(length,sizeof(*stream));
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/configure
^
|
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for ImageMagick 7.1.1-27.
+# Generated by GNU Autoconf 2.71 for ImageMagick 7.1.1-28.
#
# Report bugs to <https://github.com/ImageMagick/ImageMagick/issues>.
#
@@ -621,8 +621,8 @@
# Identity of this package.
PACKAGE_NAME='ImageMagick'
PACKAGE_TARNAME='ImageMagick'
-PACKAGE_VERSION='7.1.1-27'
-PACKAGE_STRING='ImageMagick 7.1.1-27'
+PACKAGE_VERSION='7.1.1-28'
+PACKAGE_STRING='ImageMagick 7.1.1-28'
PACKAGE_BUGREPORT='https://github.com/ImageMagick/ImageMagick/issues'
PACKAGE_URL='https://imagemagick.org'
@@ -1915,7 +1915,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures ImageMagick 7.1.1-27 to adapt to many kinds of systems.
+\`configure' configures ImageMagick 7.1.1-28 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1991,7 +1991,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of ImageMagick 7.1.1-27:";;
+ short | recursive ) echo "Configuration of ImageMagick 7.1.1-28:";;
esac
cat <<\_ACEOF
@@ -2312,7 +2312,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-ImageMagick configure 7.1.1-27
+ImageMagick configure 7.1.1-28
generated by GNU Autoconf 2.71
Copyright (C) 2021 Free Software Foundation, Inc.
@@ -3263,7 +3263,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by ImageMagick $as_me 7.1.1-27, which was
+It was created by ImageMagick $as_me 7.1.1-28, which was
generated by GNU Autoconf 2.71. Invocation command line was
$ $0$ac_configure_args_raw
@@ -4879,7 +4879,7 @@
# Define the identity of the package.
PACKAGE='ImageMagick'
- VERSION='7.1.1-27'
+ VERSION='7.1.1-28'
# Some tools Automake needs.
@@ -5183,11 +5183,11 @@
MAGICK_MICRO_VERSION=1
-MAGICK_PATCHLEVEL_VERSION=27
+MAGICK_PATCHLEVEL_VERSION=28
-MAGICK_VERSION=7.1.1-27
+MAGICK_VERSION=7.1.1-28
-MAGICK_GIT_REVISION=9c64c662f:20240120
+MAGICK_GIT_REVISION=b20675898:20240211
# Substitute library versioning
@@ -5209,19 +5209,19 @@
PACKAGE_BASE_VERSION=7.1.1
-PACKAGE_PATCHLEVEL_VERSION=27
+PACKAGE_PATCHLEVEL_VERSION=28
if test "n" = 'y'; then
- PACKAGE_VERSION_ADDENDUM='-27 (Beta)'
+ PACKAGE_VERSION_ADDENDUM='-28 (Beta)'
else
- PACKAGE_VERSION_ADDENDUM=-27
+ PACKAGE_VERSION_ADDENDUM=-28
fi
PACKAGE_LIB_VERSION=0x711
-PACKAGE_LIB_VERSION_NUMBER=7,1,1,27
+PACKAGE_LIB_VERSION_NUMBER=7,1,1,28
-PACKAGE_RELEASE_DATE=2024-01-20
+PACKAGE_RELEASE_DATE=2024-02-11
# Ensure that make can run correctly
@@ -38893,7 +38893,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by ImageMagick $as_me 7.1.1-27, which was
+This file was extended by ImageMagick $as_me 7.1.1-28, which was
generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -38962,7 +38962,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
-ImageMagick config.status 7.1.1-27
+ImageMagick config.status 7.1.1-28
configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\"
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/m4/version.m4
^
|
@@ -27,7 +27,7 @@
m4_define([magick_major_version], [7])
m4_define([magick_minor_version], [1])
m4_define([magick_micro_version], [1])
-m4_define([magick_patchlevel_version], [27])
+m4_define([magick_patchlevel_version], [28])
m4_define([magick_is_beta], [n])
m4_define([magick_bugreport],
[https://github.com/ImageMagick/ImageMagick/issues])
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick-7.1.1.28+obs1.0.tar.xz/upstream/www/links.html
^
|
@@ -164,10 +164,10 @@
<h2><a class="anchor" id="other-projects"></a>Other Projects</h2>
<ul>
- <dd class="col-md-8"><a href="https://urban-warrior.org/WizardsToolkit">Wizard's Toolkit</a></dd>
+ <dd class="col-md-8"><a href="https://urban-warrior.org">Wizard's Toolkit</a></dd>
<dd class="col-md-8"><a href="https://github.com/MolotovCherry/Android-ImageMagick7">ImageMagick API on the Android Platform</a></dd>
<dd class="col-md-8"><a href="../archive/iOS/">ImageMagick API on the iOS / iPhone Platform</a></dd>
- <dd class="col-md-8"><a href="https://urban-warrior.org/">The Tao of the Spiritual Warrior</a></dd>
+ <dd class="col-md-8"><a href="https://spiritual-warrior.org">The Tao of the Spiritual Warrior</a></dd>
</ul>
</div>
</div>
|
[-]
[+]
|
Changed |
_service:tar_git:ImageMagick.yaml
^
|
@@ -1,7 +1,7 @@
Name: ImageMagick
### DO NOT FORGET TO BUMP mfr_revision below !!!
### Also, the builds script needs this to not be a macro
-Version: 7.1.1.27
+Version: 7.1.1.28
Release: 1.1
Summary: Viewer and Converter for Images
Group: Applications/Multimedia
@@ -39,7 +39,7 @@
Macros:
#- 'debug_build;0'
- - 'mfr_revision;27'
+ - 'mfr_revision;28'
- 'maj;7'
- 'mfr_version;%{maj}.1.1'
- 'quantum_depth;16'
|