diff --git a/magick/effect.c b/magick/effect.c
index 6bd0f57..49ac136 100644
--- a/magick/effect.c
+++ b/magick/effect.c
@@ -2166,9 +2166,6 @@
*filter_view,
*image_view;
- KernelInfo
- *normal_kernel;
-
Image
*filter_image;
@@ -2233,14 +2230,7 @@
}
message=DestroyString(message);
}
- normal_kernel=CloneKernelInfo(kernel);
- if (normal_kernel == (KernelInfo *) NULL)
- {
- filter_image=DestroyImage(filter_image);
- ThrowImageException(ResourceLimitError,"MemoryAllocationFailed");
- }
- ScaleKernelInfo(normal_kernel,1.0,NormalizeValue);
- status=AccelerateConvolveImage(image,normal_kernel,filter_image,exception);
+ status=AccelerateConvolveImage(image,kernel,filter_image,exception);
if (status == MagickTrue)
return(filter_image);
/*
@@ -2277,9 +2267,9 @@
if (status == MagickFalse)
continue;
- p=GetCacheViewVirtualPixels(image_view,-((long) normal_kernel->width/2L),
- y-(long) (normal_kernel->height/2L),image->columns+normal_kernel->width,
- normal_kernel->height,exception);
+ p=GetCacheViewVirtualPixels(image_view,-((long) kernel->width/2L),
+ y-(long) (kernel->height/2L),image->columns+kernel->width,kernel->height,
+ exception);
q=GetCacheViewAuthenticPixels(filter_view,0,y,filter_image->columns,1,
exception);
if ((p == (const PixelPacket *) NULL) || (q == (PixelPacket *) NULL))
@@ -2307,20 +2297,20 @@
u;
pixel=bias;
- k=normal_kernel->values;
+ k=kernel->values;
kernel_pixels=p;
if (((channel & OpacityChannel) == 0) || (image->matte == MagickFalse))
{
- for (v=0; v < (long) normal_kernel->width; v++)
+ for (v=0; v < (long) kernel->width; v++)
{
- for (u=0; u < (long) normal_kernel->height; u++)
+ for (u=0; u < (long) kernel->height; u++)
{
pixel.red+=(*k)*kernel_pixels[u].red;
pixel.green+=(*k)*kernel_pixels[u].green;
pixel.blue+=(*k)*kernel_pixels[u].blue;
k++;
}
- kernel_pixels+=image->columns+normal_kernel->width;
+ kernel_pixels+=image->columns+kernel->width;
}
if ((channel & RedChannel) != 0)
SetRedPixelComponent(q,ClampRedPixelComponent(&pixel));
@@ -2330,16 +2320,16 @@
SetBluePixelComponent(q,ClampBluePixelComponent(&pixel));
if ((channel & OpacityChannel) != 0)
{
- k=normal_kernel->values;
+ k=kernel->values;
kernel_pixels=p;
- for (v=0; v < (long) normal_kernel->width; v++)
+ for (v=0; v < (long) kernel->width; v++)
{
- for (u=0; u < (long) normal_kernel->height; u++)
+ for (u=0; u < (long) kernel->height; u++)
{
pixel.opacity+=(*k)*kernel_pixels[u].opacity;
k++;
}
- kernel_pixels+=image->columns+normal_kernel->width;
+ kernel_pixels+=image->columns+kernel->width;
}
SetOpacityPixelComponent(q,ClampOpacityPixelComponent(&pixel));
}
@@ -2349,16 +2339,16 @@
register const IndexPacket
*restrict kernel_indexes;
- k=normal_kernel->values;
+ k=kernel->values;
kernel_indexes=indexes;
- for (v=0; v < (long) normal_kernel->width; v++)
+ for (v=0; v < (long) kernel->width; v++)
{
- for (u=0; u < (long) normal_kernel->height; u++)
+ for (u=0; u < (long) kernel->height; u++)
{
pixel.index+=(*k)*kernel_indexes[u];
k++;
}
- kernel_indexes+=image->columns+normal_kernel->width;
+ kernel_indexes+=image->columns+kernel->width;
}
filter_indexes[x]=ClampToQuantum(pixel.index);
}
@@ -2370,9 +2360,9 @@
gamma;
gamma=0.0;
- for (v=0; v < (long) normal_kernel->width; v++)
+ for (v=0; v < (long) kernel->width; v++)
{
- for (u=0; u < (long) normal_kernel->height; u++)
+ for (u=0; u < (long) kernel->height; u++)
{
alpha=(MagickRealType) (QuantumScale*(QuantumRange-
kernel_pixels[u].opacity));
@@ -2382,7 +2372,7 @@
gamma+=(*k)*alpha;
k++;
}
- kernel_pixels+=image->columns+normal_kernel->width;
+ kernel_pixels+=image->columns+kernel->width;
}
gamma=1.0/(fabs((double) gamma) <= MagickEpsilon ? 1.0 : gamma);
if ((channel & RedChannel) != 0)
@@ -2393,16 +2383,16 @@
q->blue=ClampToQuantum(gamma*GetBluePixelComponent(&pixel));
if ((channel & OpacityChannel) != 0)
{
- k=normal_kernel->values;
+ k=kernel->values;
kernel_pixels=p;
- for (v=0; v < (long) normal_kernel->width; v++)
+ for (v=0; v < (long) kernel->width; v++)
{
- for (u=0; u < (long) normal_kernel->height; u++)
+ for (u=0; u < (long) kernel->height; u++)
{
pixel.opacity+=(*k)*kernel_pixels[u].opacity;
k++;
}
- kernel_pixels+=image->columns+normal_kernel->width;
+ kernel_pixels+=image->columns+kernel->width;
}
SetOpacityPixelComponent(q,ClampOpacityPixelComponent(&pixel));
}
@@ -2412,20 +2402,20 @@
register const IndexPacket
*restrict kernel_indexes;
- k=normal_kernel->values;
+ k=kernel->values;
kernel_pixels=p;
kernel_indexes=indexes;
- for (v=0; v < (long) normal_kernel->width; v++)
+ for (v=0; v < (long) kernel->width; v++)
{
- for (u=0; u < (long) normal_kernel->height; u++)
+ for (u=0; u < (long) kernel->height; u++)
{
alpha=(MagickRealType) (QuantumScale*(QuantumRange-
kernel_pixels[u].opacity));
pixel.index+=(*k)*alpha*kernel_indexes[u];
k++;
}
- kernel_pixels+=image->columns+normal_kernel->width;
- kernel_indexes+=image->columns+normal_kernel->width;
+ kernel_pixels+=image->columns+kernel->width;
+ kernel_indexes+=image->columns+kernel->width;
}
filter_indexes[x]=ClampToQuantum(gamma*
GetIndexPixelComponent(&pixel));
@@ -2453,7 +2443,6 @@
filter_image->type=image->type;
filter_view=DestroyCacheView(filter_view);
image_view=DestroyCacheView(image_view);
- normal_kernel=DestroyKernelInfo(normal_kernel);
if (status == MagickFalse)
filter_image=DestroyImage(filter_image);
return(filter_image);