Image
*image;
+ MagickBooleanType
+ matte;
+
+ ColorspaceType
+ colorspace;
+
ExceptionInfo
*exception;
ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
(void) ResetMagickMemory(resample_filter,0,sizeof(*resample_filter));
+ resample_filter->exception=exception;
resample_filter->image=ReferenceImage((Image *) image);
+ resample_filter->matte=image->matte;
resample_filter->view=AcquireCacheView(resample_filter->image);
- resample_filter->exception=exception;
resample_filter->debug=IsEventLogging();
resample_filter->signature=MagickSignature;
GetMagickPixelPacket(resample_filter->image,pixels+i);
SetMagickPixelPacket(resample_filter->image,p,indexes+i,pixels+i);
alpha[i]=1.0;
- if (resample_filter->image->matte != MagickFalse)
+ if (resample_filter->matte != MagickFalse)
{
alpha[i]=QuantumScale*((MagickRealType) GetAlphaPixelComponent(p));
pixels[i].red*=alpha[i];
pixels[i].green*=alpha[i];
pixels[i].blue*=alpha[i];
- if (resample_filter->image->colorspace == CMYKColorspace)
+ if (pixels[i].colorspace == CMYKColorspace)
pixels[i].index*=alpha[i];
}
gamma=alpha[i];
pixel->green+=gamma*0.0625*pixels[i].green;
pixel->blue+=gamma*0.0625*pixels[i].blue;
pixel->opacity+=0.0625*pixels[i].opacity;
- if (resample_filter->image->colorspace == CMYKColorspace)
+ if (pixel->colorspace == CMYKColorspace)
pixel->index+=gamma*0.0625*pixels[i].index;
p++;
}
GetMagickPixelPacket(resample_filter->image,pixels+i);
SetMagickPixelPacket(resample_filter->image,p,indexes+i,pixels+i);
alpha[i]=1.0;
- if (resample_filter->image->matte != MagickFalse)
+ if (resample_filter->matte != MagickFalse)
{
alpha[i]=QuantumScale*((MagickRealType) GetAlphaPixelComponent(p));
pixels[i].red*=alpha[i];
pixels[i].green*=alpha[i];
pixels[i].blue*=alpha[i];
- if (resample_filter->image->colorspace == CMYKColorspace)
+ if (pixels[i].colorspace == CMYKColorspace)
pixels[i].index*=alpha[i];
}
p++;
pixels[i].opacity=(MagickRealType) p[i].opacity;
alpha[i]=1.0;
}
- if (resample_filter->image->matte != MagickFalse)
+ if (resample_filter->matte != MagickFalse)
for (i=0; i < 4L; i++)
{
alpha[i]=QuantumScale*((MagickRealType) QuantumRange-p[i].opacity);
for (i=0; i < 4L; i++)
{
pixels[i].index=(MagickRealType) indexes[i];
- if (resample_filter->image->colorspace == CMYKColorspace)
+ if (pixels[i].colorspace == CMYKColorspace)
pixels[i].index*=alpha[i];
}
delta.x=x-floor(x);
pixel->opacity=(epsilon.y*(epsilon.x*pixels[0].opacity+delta.x*
pixels[1].opacity)+delta.y*(epsilon.x*pixels[2].opacity+delta.x*
pixels[3].opacity));
- if (resample_filter->image->colorspace == CMYKColorspace)
+ if (pixel->colorspace == CMYKColorspace)
pixel->index=gamma*(epsilon.y*(epsilon.x*pixels[0].index+delta.x*
pixels[1].index)+delta.y*(epsilon.x*pixels[2].index+delta.x*
pixels[3].index));
GetMagickPixelPacket(resample_filter->image,pixels+i);
SetMagickPixelPacket(resample_filter->image,p,indexes+i,pixels+i);
alpha[i]=1.0;
- if (resample_filter->image->matte != MagickFalse)
+ if (resample_filter->matte != MagickFalse)
{
alpha[i]=QuantumScale*((MagickRealType) GetAlphaPixelComponent(p));
pixels[i].red*=alpha[i];
pixels[i].green*=alpha[i];
pixels[i].blue*=alpha[i];
- if (resample_filter->image->colorspace == CMYKColorspace)
+ if (pixels[i].colorspace == CMYKColorspace)
pixels[i].index*=alpha[i];
}
p++;
pixels[3].blue,pixels[0].blue);
pixel->opacity=gamma*MeshInterpolate(&delta,pixels[2].opacity,
pixels[3].opacity,pixels[0].opacity);
- if (resample_filter->image->colorspace == CMYKColorspace)
+ if (pixel->colorspace == CMYKColorspace)
pixel->index=gamma*MeshInterpolate(&delta,pixels[2].index,
pixels[3].index,pixels[0].index);
}
pixels[0].blue,pixels[3].blue);
pixel->opacity=gamma*MeshInterpolate(&delta,pixels[1].opacity,
pixels[0].opacity,pixels[3].opacity);
- if (resample_filter->image->colorspace == CMYKColorspace)
+ if (pixel->colorspace == CMYKColorspace)
pixel->index=gamma*MeshInterpolate(&delta,pixels[1].index,
pixels[0].index,pixels[3].index);
}
pixels[1].blue,pixels[2].blue);
pixel->opacity=gamma*MeshInterpolate(&delta,pixels[0].opacity,
pixels[1].opacity,pixels[2].opacity);
- if (resample_filter->image->colorspace == CMYKColorspace)
+ if (pixel->colorspace == CMYKColorspace)
pixel->index=gamma*MeshInterpolate(&delta,pixels[0].index,
pixels[1].index,pixels[2].index);
}
pixels[2].blue,pixels[1].blue);
pixel->opacity=gamma*MeshInterpolate(&delta,pixels[3].opacity,
pixels[2].opacity,pixels[1].opacity);
- if (resample_filter->image->colorspace == CMYKColorspace)
+ if (pixel->colorspace == CMYKColorspace)
pixel->index=gamma*MeshInterpolate(&delta,pixels[3].index,
pixels[2].index,pixels[1].index);
}
GetMagickPixelPacket(resample_filter->image,pixels+n);
SetMagickPixelPacket(resample_filter->image,p,indexes+n,pixels+n);
alpha[n]=1.0;
- if (resample_filter->image->matte != MagickFalse)
+ if (resample_filter->matte != MagickFalse)
{
alpha[n]=QuantumScale*((MagickRealType)
GetAlphaPixelComponent(p));
pixels[n].red*=alpha[n];
pixels[n].green*=alpha[n];
pixels[n].blue*=alpha[n];
- if (resample_filter->image->colorspace == CMYKColorspace)
+ if (pixels[i].colorspace == CMYKColorspace)
pixels[n].index*=alpha[n];
}
dx=CubicWeightingFunction(delta.x-(MagickRealType) j);
pixel->red+=gamma*dx*dy*pixels[n].red;
pixel->green+=gamma*dx*dy*pixels[n].green;
pixel->blue+=gamma*dx*dy*pixels[n].blue;
- if (resample_filter->image->matte != MagickFalse)
+ if (resample_filter->matte != MagickFalse)
pixel->opacity+=dx*dy*pixels[n].opacity;
- if (resample_filter->image->colorspace == CMYKColorspace)
+ if (pixel->colorspace == CMYKColorspace)
pixel->index+=gamma*dx*dy*pixels[n].index;
n++;
p++;
divisor_c = 0.0;
divisor_m = 0.0;
pixel->red = pixel->green = pixel->blue = 0.0;
- if (resample_filter->image->matte != MagickFalse) pixel->opacity = 0.0;
- if (resample_filter->image->colorspace == CMYKColorspace) pixel->index = 0.0;
+ if (resample_filter->matte != MagickFalse) pixel->opacity = 0.0;
+ if (pixel->colorspace == CMYKColorspace) pixel->index = 0.0;
/*
Determine the parellelogram bounding box fitted to the ellipse
pixel->opacity += weight*pixels->opacity;
divisor_m += weight;
- if (resample_filter->image->matte != MagickFalse)
+ if (resample_filter->matte != MagickFalse)
weight *= QuantumScale*((MagickRealType)(QuantumRange-pixels->opacity));
pixel->red += weight*pixels->red;
pixel->green += weight*pixels->green;
pixel->blue += weight*pixels->blue;
- if (resample_filter->image->colorspace == CMYKColorspace)
+ if (pixel->colorspace == CMYKColorspace)
pixel->index += weight*(*indexes);
divisor_c += weight;
pixel->red = (MagickRealType) ClampToQuantum(divisor_c*pixel->red);
pixel->green = (MagickRealType) ClampToQuantum(divisor_c*pixel->green);
pixel->blue = (MagickRealType) ClampToQuantum(divisor_c*pixel->blue);
- if (resample_filter->image->colorspace == CMYKColorspace)
+ if (pixel->colorspace == CMYKColorspace)
pixel->index = (MagickRealType) ClampToQuantum(divisor_c*pixel->index);
return(MagickTrue);
}
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
-% SetResampleFilterInterpolateMethod() changes the interpolation method
-% associated with the specified resample filter.
+% SetResampleFilterInterpolateMethod() sets the resample filter interpolation
+% method.
%
% The format of the SetResampleFilterInterpolateMethod method is:
%
assert(resample_filter != (ResampleFilter *) NULL);
assert(resample_filter->signature == MagickSignature);
assert(resample_filter->image != (Image *) NULL);
-
if (resample_filter->debug != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",
resample_filter->image->filename);
-
resample_filter->interpolate=method;
-
+ return(MagickTrue);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% %
+% %
+% S e t R e s a m p l e F i l t e r M a t t e %
+% %
+% %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% SetResampleFilterColorspace() sets the resample filter matte.
+%
+% The format of the SetResampleFilterColorspace method is:
+%
+% MagickBooleanType SetResampleFilterColorspace(
+% ResampleFilter *resample_filter,const MagickBooleanType matte)
+%
+% A description of each parameter follows:
+%
+% o resample_filter: the resample filter.
+%
+% o matte: the filter matte.
+%
+*/
+MagickExport MagickBooleanType SetResampleFilterMatte(
+ ResampleFilter *resample_filter,const MagickBooleanType matte)
+{
+ assert(resample_filter != (ResampleFilter *) NULL);
+ assert(resample_filter->signature == MagickSignature);
+ assert(resample_filter->image != (Image *) NULL);
+ if (resample_filter->debug != MagickFalse)
+ (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",
+ resample_filter->image->filename);
+ resample_filter->matte=matte;
return(MagickTrue);
}
\f