#include "MagickCore/pixel-accessor.h"
#include "MagickCore/pixel-private.h"
-static inline double MagickOver_(const double p,
- const double alpha,const double q,const double beta)
+static inline double MagickOver_(const double p,const double alpha,
+ const double q,const double beta)
{
double
Da,
gamma=PerceptibleReciprocal(gamma);
for (i=0; i < (ssize_t) GetPixelChannels(image); i++)
{
+ double
+ pixel;
+
PixelChannel
channel;
traits=GetPixelChannelTraits(image,channel);
if (traits == UndefinedPixelTrait)
continue;
+ if (((traits & CopyPixelTrait) != 0) || (GetPixelMask(image,q) != 0) ||
+ (fabs(alpha-TransparentAlpha) < MagickEpsilon))
+ {
+ composite[i]=q[i];
+ continue;
+ }
switch (channel)
{
case RedPixelChannel:
{
- composite[i]=ClampToQuantum(gamma*MagickOver_((double) p->red,
- alpha,(double) q[i],beta));
+ pixel=gamma*MagickOver_((double) p->red,alpha,(double) q[i],beta);
break;
}
case GreenPixelChannel:
{
- composite[i]=ClampToQuantum(gamma*MagickOver_((double) p->green,
- alpha,(double) q[i],beta));
+ pixel=gamma*MagickOver_((double) p->green,alpha,(double) q[i],beta);
break;
}
case BluePixelChannel:
{
- composite[i]=ClampToQuantum(gamma*MagickOver_((double) p->blue,
- alpha,(double) q[i],beta));
+ pixel=gamma*MagickOver_((double) p->blue,alpha,(double) q[i],beta);
break;
}
case BlackPixelChannel:
{
- composite[i]=ClampToQuantum(gamma*MagickOver_((double) p->black,
- alpha,(double) q[i],beta));
+ pixel=gamma*MagickOver_((double) p->black,alpha,(double) q[i],beta);
break;
}
case AlphaPixelChannel:
{
- composite[i]=ClampToQuantum(QuantumRange*(Sa*(-Da)+Sa+Da));
+ pixel=QuantumRange*(Sa*(-Da)+Sa+Da);
break;
}
default:
+ {
+ pixel=(double) q[i];
break;
+ }
}
+ composite[i]=ClampToQuantum(pixel);
}
}
-static inline void CompositePixelInfoOver(const PixelInfo *p,
- const double alpha,const PixelInfo *q,const double beta,PixelInfo *composite)
+static inline void CompositePixelInfoOver(const PixelInfo *p,const double alpha,
+ const PixelInfo *q,const double beta,PixelInfo *composite)
{
double
Da,
/*
Compose pixel p over pixel q with the given opacities.
*/
- if (fabs(alpha-OpaqueAlpha) < MagickEpsilon)
+ if (fabs(alpha-TransparentAlpha) < MagickEpsilon)
{
*composite=(*p);
return;
return(value < 0.0 ? 0.0 : (value > 1.0) ? 1.0 : value);
}
-static inline void CompositePixelInfoPlus(const PixelInfo *p,
- const double alpha,const PixelInfo *q,const double beta,PixelInfo *composite)
+static inline void CompositePixelInfoPlus(const PixelInfo *p,const double alpha,
+ const PixelInfo *q,const double beta,PixelInfo *composite)
{
double
Da,